Skip to content

[Discussion] Database Engine Flexibility & Git-style Versioning (Dolt, SQLite, LibSQL) #14

@ElecTwix

Description

@ElecTwix

A discussion on r/golang suggested exploring Dolt (a MySQL-compatible database with Git-style versioning) as an alternative or supplement to SQLite.

Context:

  • Currently, we use SQLite for its zero-config, embedded, and single-file nature, which is ideal for a local-first desktop application.
  • We already leverage some LibSQL features and are considering Turso for future cloud-sync capabilities.
  • We maintain relatively simple SQL to ensure broader compatibility.

Points for Discussion:

  1. Versioning & Rollbacks: Dolt provides Git-style branching, merging, and rollbacks at the database level. Would this be more robust than our current application-layer undo/redo logic?
  2. Embedded Requirements: Can Dolt (or other engines) run in a zero-CGO, embedded mode that fits our single-binary distribution model?
  3. Database Agnosticism: Should we further abstract our data access layer to support multiple backends (e.g., SQLite for local, Dolt for versioned flows, Turso for sync)?
  4. Trade-offs: Binary size, performance overhead, and 'no-CGO' compatibility.

We want to keep the foundation stable with SQLite for now, but this is an open thread to evaluate these architectural shifts as the project grows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions