38 comments

  • jdub 3 days ago ago

    What an impressive release!

    It makes me very curious.

    Delivered to GitHub fully-formed: A grand total of 9 commits (mostly docs and CI fixes), all in the last 5 hours, and v0.1.0 released 3 hours ago.

    No external database/storage-layer dependencies, so it's not "just" a CLI/server/parser wrapper around other libraries doing the "real work".

    It appears to have a substantial test suite (76% code coverage, not skipping the scary bits), and great documentation.

    There's a bit of context on https://github.com/stoolap but not much else about the author, project goals, relationship to other systems, e.g. it could be the data layer for something else.

    (Interestingly, there's an archived stoolap-go repo with a very similar Go implementation of a columnar/hybrid database, so this is not the author's "first draft".)

    • murat3ok 2 days ago ago

      The Go version was my first attempt. Hit some performance walls I couldn't solve cleanly, so I rewrote the whole thing in Rust over the past 6 months. Got about 5x speedup and the concurrency story is way better with ownership.

      The git history thing honestly my commits were a mess after months of work. Dead ends, experiments, "fix fix fix" commits. Figured I'd start clean for release. In hindsight, probably should have kept the ugly history looks less suspicious than one big commit.

      Goal is basically SQLite but with real MVCC and analytical features (window functions, parallel queries). Something you can embed but that doesn't choke on concurrent writes or complex queries.

      Community kill me here but other side thank you for the positive comment here.

      • jdub a day ago ago

        Yay, glad you found the discussion (well, the good bits), and thanks for the answer. It's cool work!

      • ctrust a day ago ago

        Very interesting. Roughly speaking, how does performance compare to SQLite?

    • esafak 2 days ago ago

      I too am curious how to the first commit came about: https://github.com/stoolap/stoolap/commit/768eb836de0ff072b8...

      Note to owner: CI is broken.

    • forgotpwd16 3 days ago ago

      Can assume they worked on this last few months when they stopped development in the, now archived, Go attempt, but they scrapped the entire git history on publication. Still, even if consider heavy AI use, looks like they put quite the effort in this.

  • Sytten 3 days ago ago

    In the same area, I am tracking the Rust rewrite of sqlite by Turso [1]. The big advantage is the file format compatibility.

    [1] https://github.com/tursodatabase/turso

  • Arcuru 3 days ago ago

    > Time-Travel Queries: Query historical data at any point in time:

    The example here looks like it may be storing the full history of transactions? Is that right? That's a pretty high cost to pay for something that's not touted as a marquee feature.

    I'm working on a DB[1] that stores full transaction history but it's so that I can support decentralized synchronization. It's in service of my marquee feature so I need to pay the cost of storing history, but I'm surprised that Stoolap also seems to be doing it for a local embedded database.

    [1] https://github.com/arcuru/eidetica

    • rich_sasha 2 days ago ago

      I would imagine (but haven't looked at it at all) that it's a byproduct of an append only data format. Then having a historical PoV is cheap - you simply disregard changes after a certain time.

      Append-only has many other benefits, including zero contention between many readers and (single) writers. In the vanilla version, writers still contend though.

      • hansvm a day ago ago

        I think their point is that system timestamps for that append-only format aren't good enough. You need logical timestamps corresponding to increasing transaction ids.

  • rich_sasha 3 days ago ago

    Looks very interesting!

    Some comparison to another embedded SQL DB, i.e. sqlite3, would be useful. How abusable is it? What tradeoffs are taken? Etc.

  • edf13 2 days ago ago

    Sounds very interesting - I’ve used SQLite in a few Rust based projects where performance was the deciding factor… a perf comparison with this would be very useful

  • dash2 2 days ago ago

    I think the name is not good. It sounds like "stool app". Among other things, "stool" means poo.

    • duttish 2 days ago ago

      Yea, my first association was stool -> poo.

      I've been trying to think of what other meaning they could have gone for but got nothing. Stoo lap? Sto olap?

      • bronlund 2 days ago ago

        SQL Transactional Objects OnLine Analytical Processing. My best guess so far.

      • bronlund 2 days ago ago

        SQL Tool something something?

    • kolektiv 2 days ago ago

      Another voice basically begging them to change the name here, yeah. It might be quite interesting as a tool, but please...

    • dominotw 2 days ago ago

      they are even highlighting a in green after stool to break the word into stool.

      i am guessing its a joke?

    • 2 days ago ago
      [deleted]
    • 2 days ago ago
      [deleted]
  • bronlund 2 days ago ago

    Bold name choice.

    • skylurk 2 days ago ago

      I read it as stool lab...

      Stoolap: we index your shit

  • kekqqq 2 days ago ago

    The project is very new, with two days of unique days with commits and 11 commits in its history. I would bet it is vibecoded.

    • jdub 2 days ago ago

      Don't let "AI" make you jump at shadows. Maybe, but probably not.

      The first commit was pretty fully-formed, which without "AI" glasses on just means someone did a whole bunch of work before exposing/releasing their work.

  • andrewl 2 days ago ago

    As a big fan, and user, of SQLite, this looks like something to watch. And I agree with the comments about the unfortunate name. Just yesterday there was a post here about bad names for software:

    https://news.ycombinator.com/item?id=46234806

  • seg_lol 3 days ago ago

        Initial release: Stoolap - A Modern Embedded SQL Database in Pure Rust
        
        Stoolap is a high-performance embedded SQL database featuring:
        
        Core Features:
        - Full ACID transactions with MVCC (READ COMMITTED & SNAPSHOT isolation)
        - Cost-based query optimizer with adaptive execution
        - Parallel query execution via Rayon
        - 101+ built-in functions (string, math, date/time, JSON, aggregate, window)
        - Multiple index types: B-tree, Hash, Bitmap (auto-selected or explicit)
        - Multi-column composite indexes
        - WAL + snapshots with crash recovery
        
        SQL Support:
        - JOINs (INNER, LEFT, RIGHT, FULL OUTER, CROSS)
        - Subqueries (scalar, IN, EXISTS, correlated)
        - Common Table Expressions (WITH and WITH RECURSIVE)
        - Window functions (ROW_NUMBER, RANK, LAG, LEAD, etc.)
        - ROLLUP, CUBE, GROUPING SETS
        - Temporal queries (AS OF TIMESTAMP/TRANSACTION)
        - Views, RETURNING clause, ON DUPLICATE KEY UPDATE
        
        104K lines of Rust | No C dependencies | Full documentation at stoolap.io
  • JohnCClarke 2 days ago ago

    Excited for this! A couple of questions:

    1. What is the resolution of timestamps (milli-, micro-, nano-seconds)? 2. Any plans for supporting large data BLOBs (e.g. PostgreSQL TOAST)? This would open up a lot of use cases and would be really interesting to make compatible with the in-memory emphasis for the atomic data types.

  • DoctorOW 2 days ago ago

    Comments especially feel vibe coded. Not necessarily bad, just not something I would trust with prod data.

        /// Create a new empty row
        pub fn new() -> Self {
            Self { values: Vec::new() }
        }
    • Klonoar 2 days ago ago

      This particular bit doesn't scream vibe-coded to me at all.

      In fact it looks like a generic comment I'd write and come back to later.

      • spoiler a day ago ago

        I generally like—and write—these types of doc comments myself. It just looks nicer in docs/intellisense.

        I'm a big proponent of "everything public should have a doc comment," even if it's a short sentence. Doesn't hurt to have it. I never understood people who are allergic to comments.

        The fact LLMs add comments is one of the few non-sloppy things they do, IMO

  • sudarshnachakra 2 days ago ago

    Does this support concurrent writers (unlike sqlite)? Quite an impressive feature set for a one-person project.

    Also is this a single file DB? If so is the format stable?

  • kiliancs 2 days ago ago

    I would be interested in seeing numbers backing the high performance claims.

  • riku_iki 2 days ago ago

    Any benchmarks to compare to sqlite and pg?

  • GlacierFox 2 days ago ago

    Stoolap? Sounds disgusting.

  • huflungdung 2 days ago ago

    [dead]

  • ITniggah 2 days ago ago

    [flagged]