SQLite as a Document Database (2020)

(dgl.cx)

58 points | by lioeters 4 days ago

4 comments

  • stanac 1 hour ago
    I am using SQLite as document db for a side project for years now. Made a custom repository base class that can also store blobs in separate columns, so this type of data is not part of the json document. Today there is also jsonb [1], as far as I remember all functions work the same for json and jsonb.

    Also the repo class stores write and delete timestamps as separate columns so I can have CDC. CDC is used for building cached view models and is pushed to object storage every 5 minutes for backup as NDJSON. Another process on home server is restoring the db every couple of minutes for second backup and ready to use DB in case it's needed.

    I know there are things like Litestream, I wanted something in process and something that can send alerts on failed backups.

    [1] https://sqlite.org/jsonb.html

  • delduca 55 minutes ago
    In my personal project (a game) I use an indexed key + a JSONB to store the save state, which comes from Lua.

    So I can have cassette.propxyz = {1, 2, “abc”, true}

    And

    local anotherprop = cassette.leprop

    • nonethewiser 34 minutes ago
      Are you doing this because you also use SQLite for other relational data?
      • delduca 33 minutes ago
        Possibly yes, otherwise I could use another simple solution
  • smalltorch 34 minutes ago
    Is this new or something? Works amazing as a document backend.
  • antonvs 13 minutes ago
    > (Aside: The hard bit may be getting a new enough SQLite, at the time of writing Homebrew on macOS has it, else you likely need to use an unstable source like nixpkgs-unstable.)

    Or just download the source and build it! (Gasp!)