tags | |
---|---|
|
Non-exhaustive
Workloads that provide a synchronization mechanism between a local and remote state store.
Typically, some service sits in front of the primary data store, consuming its changes via CDC/Redo log/WAL etc. That service distributes changes to clients, who have an local store of some kind (sqlite, indexeddb, custom) with a matching or compatible schema. The client and service communicate via a network protocol (http, ws, etc) and the service may provide conflict resolution (crdt/ot or something else). The clients can either speak the protocol directly, and/or can use an SDK.
Most of these only support “web tech” SDKs, where the clients are presumed to be browser applications, but this pendulum is swinging to WASM.
- SDK/client languages and runtimes
- Backend type
- Source database support
- Replica persistence type
- Protocol wire type
- Synchronization protocol, reactivity
- Licensing and hosting
- e2e encryption
- local-first, or offline supported
- WASM
- How can one use it with backend runtimes and have that be reactive on the frontend?
#### refined criteria
1. capabilities
2. audience
3. architecture
4. ???
Actyx Local-First Cooperation based on Event Sourcing
Actyx is a decentralized event database, streaming and processing engine that allows you to easily build ++local-first cooperative++ apps
… durable event stream storage in peer-to-peer network using ++libp2p++ and ++ipfs-embed++
- mobile fe: android; fe: win/mac/lin desktop
- backend: Rust
- runtime: docker
- protocol: protobuf
- arch: pure p2p, event sourcing
- doesn't depend on any central components (servers, databases, or cloud)
- Small pieces of code — they are called local-twins — contain the logic. Any app on any device can summon any twin at any time. Actyx automatically synchronizes the twins within the local network.
- Code
Any Sync (Anytype) the everything app for those who celebrate trust & autonomy
An open-source protocol designed to create high-performance, local-first, peer-to-peer, end-to-end encrypted applications that facilitate seamless collaboration among multiple users and devices
- Local first
- Protocol: CRDT DAGs, local p2p via mDNS
- Security: e2e, creators’ controlled keys; CR is on-device; Ed25519 algorithm for signing
- File storage in IPLD
- component arch: four types of nodes: sync, file, consensus and coordinator nodes
- Code
Convex the sync platform that replaces your backend and client state management ($ hosted option) BaaS
- hosted open-source BaaS
- Hosted; They do not recommend running this yourself (wtf??)
This repository is the wild west open source version
- Official React/Typescript SDK, as well as wide runtime support (python, rust, swift, etc)
- Convex backend is a combination of rust crates and typescript modules, exposes an HTTP API for clients.
- Not sure if the non-TS runtimes support all the Functions stuff
- Local database, optimistic concurrency, Table and Document objects
- Functions:
-
Functions run on the backend and are written in JavaScript (or TypeScript). They are automatically available as APIs accessed through client libraries.
-
Queries (reactive, realtime), Mutations (transactional), Actions (web service calls etc)
- Philosophy: The Software-defined Database
- Docs, Code
DriftDB real-time data backend that runs on the edge
DriftDB is a real-time data backend that runs on the edge … a keyed, ordered broadcast stream with replays and compaction.
DriftDB is useful any time you wish you could connect directly from one browser to another, or from a non-web-connected backend (e.g. background task) to a browser.
DriftDB is intended for use cases where a relatively small number of clients need to share some state over a relatively short period of time. For example, it could be used to build a shared whiteboard, or act as a signaling server for WebRTC. Room state is currently persisted for 24 hours after the last write.
-
hosting in Cloudflare DO or Jamsocket
-
js/react client
-
API Server (Rust)
-
Worker impl in Rust using Cloudflare Durable Object persistence
-
API is websocket or http protocol
-
Not updated recently, unsure of status
DXOS build real-time, collaborative apps which run entirely on the client, and communicate peer-to-peer, without servers
- Pivoted SDK effort to realtime collaborative editor product for now (12/2024)
- TS/React client SDK, on pause for now; not ready for use
- ECHO: realtime database with transparent data replication and conflict resolution
ECHO (The Eventually Consistent Hierarchical Object store) is a peer-to-peer graph database written in TypeScript.
- HALO: keychain for identiity/auth
- MESH: decentralized p2p protocol via WebRTC
- Code, Interesting Architectures
Electric Clojure full-stack differential dataflow for UI TBD
Electric is a new way to build rich, interactive web products that simply have too much interactivity, realtime streaming, and too rich network connections to be able to write all the frontend/backend network plumbing by hand. With Electric, you can compose your client and server expressions directly (i.e. in the same function), and the Electric compiler macros will infer at compile time the implied frontend/backend boundary and generate the corresponding full-stack app.
Evolu Local-First Platform Designed for Privacy, Ease of Use, and No Vendor Lock-In
Evolu Server is a simple message buffer and storage generic (the same) for all Evolu apps. Only UserId, NodeId, and messages timestamps are visible. Everything else is encrypted.
- Typescript sdk
- Ships Typescript backend, or BYO
- Local SQLite with CRDT-based protocol to backend server which hosts a sqlite that only stores metadata
- e2e encrypted
- Docs, Code
Fireproof Realtime database. Runs anywhere ($ hosted option)
Fireproof uses immutable data and distributed protocols to offer a new kind of database that:
- can be embedded in any page or app, with a flexible data ownership model
- can be hosted on any cloud
- uses cryptographically verifiable protocols (what plants crave)
… a decentralized realtime database that stores documents using prolly-trees
- JS/TS client SDK
- reactive using WebRTC
- eventually consistent
- encrypted, immutable files for storage
- Sync via ledger, using content-addressable archive (CAR) files in remote storage backends (including IPFS, PartyKit, S3)
- CRDT for conflict resolution
- Docs, Code, Interesting Architectures
Instant a modern Firebase … giving your frontend a real-time database ($ hosted option)
- Hosting provider
- Web client SDKs only (js, react etc)
- Replication from local IndexedDB to postgres via a Clojure backend
- Docs
Jazz an open-source toolkit for building apps with distributed state* *($ hosted option)
- ts client
- websocket protocol
- local store sqlite or indexeddb
- https://jazz.tools/docs/react
- https://github.com/garden-co/jazz
Kinto generic JSON document store with sharing and synchronisation capabilities from Mozilla
Kinto is a minimalist JSON storage service with synchronisation and sharing abilities. It is meant to be easy to use and easy to self-host.
... used at Mozilla for Firefox Sync
- Ships JS client
- Local store is json documents.
- HTTP api
- persists into postgres using python backend
- Docs
Liveblocks platform for adding collaborative editing, comments, and notifications into your application ($ hosted option)
- Typescript
- Mostly a components vendor that uses their APIs - commercial
- Storage: Liveblocks Storage is a realtime sync engine designed for multiplayer creative tools such as Figma, Pitch, and Spline.
LiveList
,LiveMap
, andLiveObject
conflict-free data types can be used to build all sorts of multiplayer tools. - Yjs: Liveblocks Yjs is a realtime sync engine designed for building collaborative text editors such as Notion and Google Docs.
- Docs, Code
Livestore from jschickling, closed EA atm in Expo
OctoBase light-weight, scalable, data engine written in Rust
- AFFiNE data layer
- CRDT via y-octo, compatible with blocksuite from AFFiNE
- Storage layer-agnostic CRDT data and object store (sqlite, postgres, s3 wip)
- Collaboration protocols (websocket, webrtc, libp2p wip)
- js, java, swift clients (“bindings”)
- it is immature and may have some lock-in.
PartyKit open source deployment platform for AI agents, multiplayer and local-first apps, games and websites from Cloudflare ($ hosted option)
- Bought by Cloudflare, hosted in DO
- web tech
- Backend is a wasm module hosted in a durable object, in whatever wasm source lang desired (ie not python probably), implementing your “Party” biz logic
- Can run an yjs server on the DO, opening up the possibility for a python app on the client side (ypy)
Phoenix live view TBD
- Examples
- <https://github.com/thisistonydang/liveview-svelte-pwa>
Pocketbase Open Source realtime backend in 1 file
Open Source realtime backend in 1 file with database, auth, files, and admin
- js and dart client sdks
- pen source Go backend that includes … embedded SQLite, reactivity, rest api
- local embedded SQLite+WAL. Suggest using Litestream for replication if needed, and suggest fly.io for hosting
Prisma Pulse distribute change events to your application at scale, enabling ($ commercial only)
- From Prisma typescript ORM vendor, who is offering a managed Postgres (EA)
- Works with BYO databases (postgres-based)
- Not an open source product
Redwood a highly-configurable, distributed, realtime database and application server
A highly-configurable, distributed, realtime database that manages a state tree shared among many peers.
- pre-alpha
- TS client sdk
- uses Braid protocol (http), on an IETF standards track
- backend is golang
- https://github.com/redwood/redwood
Replicache - client-side sync framework for arbitrary backends ($ hosted option)
Replicache is a client-side sync framework for building realtime, collaborative web apps with zero-latency user interfaces. It works with most backend stacks.
- Hosting + open interface and some open components, license required for use
- Typescript SDK
- Supports arbitrary backends, as long as they use a database that supports snapshot isolation. Ships a default Typescript backend, and defines an interface for building custom backends.
- Replicache sync protocol
- Replica data is persisted in the browser/client via XXXXX.
- “Mutators”, applied optimistically (locally) and then authoritatively (remotely), transaction is completed locally when the remote acks the write.
- “Subscriptions” at the query level, with reactivity in the client.
- “Poke” interface for push/pull streaming
- Requires a license, but is free for non-commercial. Closed source client, ships with default implementations of interfaces they’ve defined which you can use to BYO
- Docs
RxDB Store data locally to build high performance realtime applications that sync data with the backend and even work when offline ($ licensed functionality)
-
javascript sdk
-
uses a custom replication protocol that can support arbitrary backends, like hosted postgres from supabase extension
-
has free edition but advanced features require a license
-
good for react native and mobile dev
Scale A framework for building high-performance plugin systems into any application, powered by WebAssembly.
- found them through a pycon columbia 2024 session
- guest plugin runtimes: Go, rust, ts
- host app runtimes: go, ts
- Audience: embedding behavior into an application using wasm
- Code
ShareDB Realtime database backend based on Operational Transformation (OT)
- JS client SDK and backend
- can persist to DBs like Mongo/Postgres
- Protocol is OT-based
- Designed for DerbyJS MVC framework
SKDB an embedded SQL database that stays in sync ($ hosted option)
- TS client, reactive, conflict resolution, React client
- Defines their own language sklang
- sqlite is in there somewhere, it is opaque
- Cloud offering in the works (2024-Dec)
- Docs, Code
SQLSync a collaborative offline-first wrapper around SQLite prototype
SQLSync is a collaborative offline-first wrapper around SQLite
currently usable for prototypes
- js/ts client using sqlsync-worker, “reducer” in rust (wasm); ships React lib
- Reactive query subscriptions
- Rust (wasm) backend controlling persistence (demo in Cloudflare)
- active development, very interesting maybe later.
- Eventually consistent replicas using optimistic r/w
Supabase an open source Firebase alternative ($ hosted option)
- Entire stack is open source and self-hostable
- not local first
- typescript services
- docker or npm runtime
- Postgres db, Postgres HTTP API wrapper, Realtime subscriptions, TS and PG Functions,File store, Vector embeddings, management dashboard, cli
- https://github.com/supabase/supabase Main repo
- realtime-py A Python Client for Phoenix Channels
- realtime Broadcast, Presence, and Postgres Changes via WebSockets
- postgres-meta A RESTful API for managing your Postgres
- HarryET/supa-manager: Manage self-hosted Supabase instances with an easy to use API & Web Portal (soon)
hosted postgres; has a Realtime product that appears to be open source, and it has a python SDK as well as js/ts. Realtime is Elixir, just like Electric
TinyBase reactive data store for local-first apps
- JS/TS SDK, but has a lot of persistence architecture options.
- Multiple persistence architecture options with tinybase
- Has a local Store (JSON-serialized, supports transactions), which can be optionally wired to some Persister that’s local (browser storage, WASM dbms etc) or remote (server dbms etc).
- Remote persistence uses websockets, requires a backend (ships a few defaults, one using Cloudflare Durable Objects)
- The local Store can be a MergeableStore, that together with a Synchronizer can provide client-client or client-server replication. Ships with a default CRDT Merge/Sync impl, but supports third-party sync using a custom Persister (Yjs, Automerge).
- Persisters by default only receive changes made in-process (other clients of the Persister), but can be set to poll in order to receive changes made to the database by other clients.
- Docs
Triplit an open-source database that syncs data between server and browser in real-time ($ hosted option)
- js/ts SDK
- has an open source server impl with pluggable storage engines like sqlite and leveldb.
- Protocol is http
- Ships default JS impl
- Cloud hosting relationship with Railway
- offline mode, rather than localfirst; clients do optimistic writes and are considered a cache
Verdant a framework and philosophy for small, sustainable, human web apps
- js/ts only for the clients
- supports syncing to one or more server-side sqlite databases.
- Source can be IndexedDB
- js SDK is reactive
- Docs, Code
These components might be (an in some cases are) used as part of a data layer for a Sync Platform.
Y-Sweet
- https://github.com/jamsocket/y-sweet
- realtime CRDT-based document store, backed by S3.
ReadySet transparent cache (postgres, mysql)
- a transparent database cache for Postgres & MySQL that gives you the performance and scalability of an in-memory key-value store without requiring that you rewrite your app or manually handle cache invalidation
- it keeps cached query results in sync with your database automatically by utilizing your database’s replication stream. It is wire-compatible with Postgres and MySQL and can be used along with your current ORM or database client.
- rust
- docker, linux binary
- Integrates with Supabase via an extension
- https://github.com/readysettech/readyset
To local embedded replicas (PGLite, SQLite/LibSQL)
Electric SQL + PGLite/SQlite syncs little subsets of your Postgres data into local apps and services ($ hosted option)
- TS and Elixir client SDKs
- Backend in Elixir, fronting a Postgres instance
- Electric Protocol over HTTP, sync and stream
- Local database is SQLite in wasm; PGLite is supported but only for local reads atm (Dec-2024)
- Docs, Code
Turso LibSQL ($ hosted option)
- Wide client runtime support
- LibSQL client-side
- LibSQL Server (sqld) source SQLite
- Edge hosted option
- Docs, Code (libsql)
Powersync a service and set of client SDKs that keeps backend databases in sync with on-device embedded SQLite databases ($ hosted option)
- Hosted
- js, React, flutter SDKs
- postgres db source
- typescript backend uses WAL, depends on mongodb internally
- local replica is sqlite (maybe wasm?)
- Docs, Code
SQLedge Replicate postgres to SQLite on the edge (updated fork pgreplsql)
- state: alpha, no commits since 2023
- written in Go
SQLedge uses Postgres logical replication to stream the changes in a source Postgres database to a SQLite database that can run on the edge. SQLedge serves reads from its local SQLite database, and forwards writes to the upstream Postgres server that it's replicating from
Sequin Postgres CDC to Sink ($ hosted offering, paywall features)
Sequin is a tool for change data capture (CDC) in Postgres. Sequin makes it easy to stream Postgres rows and changes to streaming platforms and queues (e.g. Kafka and SQS). You can backfill existing rows and stream new changes in real-time.
Sequin even supports native sinks (HTTP GET and webhooks), so you can get started without any other infrastructure.
- Replicates postgres changes to Kafka, SQS, Redis, Webhook, HTTP Pull, and others
- Elixir
- https://github.com/sequinstream/sequin
- https://sequin.io/docs/sync-process/overview
- Hosted offering supports more databases and other connectors`
Litestream Fully-replicated database with no pain and little cost
Litestream is a streaming replication tool for SQLite databases. It runs as a separate background process and continuously copies write-ahead log pages from disk to one or more replicas
Vlcn / cr-sqlite Convergent, Replicated SQLite. Multi-writer and CRDT support for SQLite ✅ how-to
- SQLite extension
node, deno, browser (wasm), python, c, rust; CR at the table layer (“CRR”), future to allow partial sync]
Moribund. Developer went full time with offline replication vendor. Interesting project. Devil in details.
CR-SQLite is a ++run-time loadable extension(opens in a new tab)++ for ++SQLite(opens in a new tab)++ and ++libSQL(opens in a new tab)++. It allows merging different SQLite databases together that have taken independent writes.
cr-sqlite adds multi-master replication and partition tolerance to SQLite via conflict free replicated data types (++CRDTs(opens in a new tab)++) and/or causally ordered event logs.
cr-sqlite
is distributed as a ++run time loadable extension(opens in a new tab)++ for SQLite and can be used with any language that has SQLite bindings.++cr-sqlite++ is network agnostic. You can use ++crsql_changes++ to pull changes from one database, ship them over any protocol you like, then use ++crsql_changes++ on the other end to apply the changes. In any case, a WebSocket implementation is provided for convenience ++here++ and an overview of writing your own network code ++here++.
IceFireDB a DB storage and retrieval protocol built for web3.0
- SQLite, SQLProxy, NoSQL, RedisProxy, and PubSub impls
- SQLite impl: IceFireDB SQLite is a decentralized SQLite database designed to facilitate the construction of a global distributed database system. It allows users to write data to IceFireDB using the MySQL protocol. The data is stored in an SQLite database and automatically synchronized among nodes through P2P networking.
- https://github.com/IceFireDB/IceFireDB
Expo SQLite
- <https://github.com/expo/expo/tree/main/packages/expo-sqlite>
LiteFS FUSE-based file system for replicating SQLite databases across a cluster of machines from fly.io
- Docs, Code, fly.io project
- distributed file system that transparently replicates SQLite databases
- Fly.io recommends Turso for hosting
FUSE file system: intercepts file system calls to record transactions.
Leader election: currently implemented by ++Consul++ using sessions
HTTP server: provides an API for replica nodes to receive changes.
rqlite lightweight, user-friendly, distributed relational database built on SQLite
Go server impl, wide client lang support. Uses Raft for cluster consensus; each node can recv writes, but they will be forwarded to the leader synchronously to perform the actual write and then wait for consensus (latency considerations); reads might be serviceable by followers, given the consistency settings. sqlite is just a storage engine. protocol is HTTP. FAQ, sqlalchemy engine
All writes go to the Raft leader (rqlite makes sure this happens transparently if you don't initially contact the Leader node)
rqlite is a distributed relational database that combines the simplicity of SQLite with the robustness of a fault-tolerant, highly available system. It's developer-friendly, its operation is straightforward, and it's designed for reliability with minimal complexity.
dqlite a fast, embedded, persistent SQL database with Raft consensus that is perfect for fault-tolerant IoT and Edge devices
- Canonical project (source), another raft consensus sqlite cluster
ChiselStore - ChiselStore is an embeddable, distributed SQLite for Rust, powered by Little Raft.
ha-sqlite - High-availability sqlite database service based on raft.
raft-sqlite - Raft backend using SQLite.
ReSqlite - ReSqlite is an extension of Sqlite that aims to add basic replication functionality to Sqlite database.
tqlite - Distributed SQL database with replication, fault-tolerance, tunable consistency and leader election.
pgEdge distributed PostgreSQL, optimized for the network edge ($ hosted option)
- uses spock, not sure how the replica works
- Code
EDB BDR PostgreSQL extension providing multi-master replication and data distribution with advanced conflict management ($ commercial?)
- Commercial product, but seem to be a few docker containers that use it on github
BDR is a PostgreSQL extension providing multi-master replication and data distribution with advanced conflict management, data-loss protection, and throughput up to 5X faster than native logical replication, and enables distributed Postgres clusters with high availability up to five 9s.
EDB PGD multi-master replication and data distribution with advanced conflict management ($ commercial?) fork of pglogical
PGD provides loosely coupled, multimaster logical replication using a mesh topology.
pglogical extension provides logical streaming replication for PostgreSQL, using a publish/subscribe model
- Based on BDR
While pglogical is actively maintained, EnterpriseDB (which acquired 2ndQuadrant in 2020) focuses new feature development on a descendant of pglogical: ++Postgres Distributed++
replicates schema changes as well as data Go binary that monitors WAL, support buffering WAL to kafka for scaling dist by xata.io, a serverless postgres vendor pgstream and wal2json to emit webhooks on CDC events: https://xata.io/blog/postgres-webhooks-with-pgstream
java+kafka stack
PostgreSQL HA documentation
Citus Distributed PostgreSQL as an extension
TiDB open-source, cloud-native, distributed SQL database ($ hosted option)
is this one lost??
- horizontal scaled with two-phase commit distributed transactions
- clustering via raft
- mysql interface
- golang
- docker, k8s operator
- Apache2.0
- https://github.com/pingcap/tidb
Patroni A template for PostgreSQL High Availability with Etcd, Consul, ZooKeeper, or Kubernetes
- https://github.com/patroni/patroni
- Can integrate their HA with a Citus distributed cluster
PGLite Run a full Postgres database locally in WASM with reactivity and live sync from ElectricSQL
- Postgres in WASM
- Can integrate with ElectricSQL for reads, writes being worked on
- IndexedDB and OPFS storage
- Code
PoloDB is an embedded document database.
- PoloDB is a library written in Rust that implements a lightweight ++MongoDB++.
- https://github.com/PoloDB/PoloDB
- https://www.polodb.org/docs
Pouch very cool, couchdb implementation for the browser. awesome sync, but targets web runtime. Supposedly can replicate with other similar impls like Couchbase
SurrealDB Build real-time apps faster with the world's most powerful multi-model database
- Embeds in the browser, and has the tits features
- EXCEPT for replication
- capabilities: multi-model
- https://github.com/surrealdb/surrealdb.wasm
- Local (wasm) and remote, lots of crazy features
- Has graph and vector and unstructured
Bolt DB (forks)
- An embedded key/value database for Go.
- Ben Johnson’s original project before moving on to fly/LiteFS/etc
- https://github.com/etcd-io/bbolt
chDB a fast in-process SQL OLAP Engine powered by ClickHouse.
- You can use it when you want to get the power of ClickHouse in a programming language without needing to connect to a ClickHouse server.
- client runtimes: python, go, rust, nodejs, bun
- https://clickhouse.com/docs/en/chdb
… that are within the sync ecosystem
Cockroach cloud native, distributed SQL database designed for high availability, effortless scale, and control over data placement ($ hosted option) new mandatory telemetry for free version
- supports postgres wire protocol
- multi-master
- no wasm
- Hosted cloud
- consensus based
- Docs, Code
CockroachDB is a multi-master distributed database. It uses a distributed consensus protocol (an extended version of Raft) to maintain consistency across multiple nodes, where any node can accept both read and write operations.
- True multi-master architecture
- Every node can handle reads and writes
- No primary/secondary distinction
- Automatic load balancing
- Consistency Model
- Serializable isolation level
- Strong consistency (CP in CAP theorem)
- ACID transactions across nodes
- Replication
- Automatic sharding
- Range-based data distribution
- Configurable replication factor
- Conflict Resolution
- Timestamp-based conflict resolution
- Uses hybrid logical clocks
- Automatic handling of concurrent writes
AntidoteDB A planet scale, highly available, transactional database built on CRDT technology ($ hosted option)
- AntidoteDB is a highly available geo-replicated key-value database. AntidoteDB provides features that help programmers to write correct applications while having the same performance and horizontal scalability as AP/NoSQL databases. Furthermore, AntidoteDB operations are based on the principle of synchronization-free execution by using Conflict-free replicated datatypes (CRDTs).
- Code
Fauna true serverless database ($ commercial only)
true serverless database that combines document flexibility with relational power, automatic scaling, and zero operational overhead.
Firebase (Google) ($ commercial only)
- Multi-master, and we have PouchDB and Couchbase-lite/sync-gateway
- Seamless multi-master syncing database with an intuitive HTTP/JSON API
- https://github.com/apache/couchdb
- https://docs.couchdb.org/
Defra DB Peer-to-Peer Edge Database
- ++MerkleCRDTs++ and the content-addressability of ++IPLD++
- It's the core data storage system for the Source Network Ecosystem, built with IPLD, LibP2P, CRDTs, and Semantic open web properties.
- https://github.com/sourcenetwork/defradb
- audience: decentralized web
Chotki An LSM database turned a CRDT database
- audience: dec-web, blockchain
- Internally, it is ++pebble db++running CRDT natively, using the ++Replicated Data Interchange++ format (RDX). Chotki is sync-centric and causally consistent. That means, Chotki replicas can sync master-master, either incrementally in real-time or stay offline to diff-sync periodically. Chotki API is REST/object based, no SQL yet.
- https://github.com/drpcorg/chotki
- written in Go
Clickhouse TBD
- [clickhouse-local](https://clickhouse.com/docs/en/chdb/guides/clickhouse-local) cli with embedded db
FoundationDB (Apple)
- caps: multi-model, single master cluster
- FoundationDB is a distributed database designed to handle large volumes of structured data across clusters of commodity servers. It organizes data as an ordered key-value store and employs ACID transactions for all operations.
- https://github.com/apple/foundationdb/
- https://apple.github.io/foundationdb/
TigerBeetle The financial transactions database designed for mission critical safety and performance.
- TigerBeetle is an Online Transaction Processing (OLTP) database built for safety and performance. It is not a general purpose database like PostgreSQL or MySQL. Instead, TigerBeetle works alongside your general purpose database, which we refer to as an Online General Purpose (OLGP) database.
- Clustered replicas
- https://docs.tigerbeetle.com/coding/system-architecture/
- [[Interesting Architectures]]
greptimedb An open-source, cloud-native, unified time series database for metrics, logs and events with SQL/PromQL supported ($ hosted option)
- GreptimeDB is an open-source unified & cost-effective time-series database for Metrics, Logs, and Events (also Traces in plan).
- Built for k8s, Single-master
While multiple nodes can handle reads, write operations are coordinated through primary nodes.
- Write operations have defined routing paths
- Read operations can be distributed
- Uses etcd for metadata consensus
- Optimized for time-series data
- Regional distribution possible
- Eventual consistency mode
- https://github.com/GreptimeTeam/greptimedb
Kuzu DB graph database ✅
- Embeddable property graph database management system built for query speed and scalability. Implements Cypher.
- Python sdk, in addition to others
- https://github.com/kuzudb/kuzu
- arch: (source db) reader, kafka, transfer (local db)
- lang: golang
- docker, go binary
- Various OLTP sources (Postgres, MongoDB etc) and OLAP destinations (Snowflake, s3 etc)
- No sqlite
- https://artie.com/docs/quickstart
- https://github.com/artie-labs
- new, and used for ETL workloads
- Cloudflare D1
- Supabase Postgres (and others) ($ commercial)
- Neon hosted postgres ($ commercial)
- Railway ($ commercial)
- Fly Postgres ($ commercial)
- SQlite and wa-sqlite
Duckdb DuckDB is an analytical in-process SQL database management system ($ hosting option)
- DXOS Editor
- Liveblocks components
- Blocksuite (AFFiNE)
- Yjs A CRDT framework with a powerful abstraction of shared data
- Automerge a library of data structures for building collaborative applications
- Loro Make your JSON data collaborative and version-controlled with CRDTs
- Rust, JS (via WASM), and Swift
- rich text CRDT
- hierarchy data with movable tree algo
- Diamond Types The world's fastest CRDT. WIP.
- rust, js (wasm)
- impl of the Diamond Types sequence crdt
- Various Dart implementations of CRDTs and SQL databases
- sqlite_crdt , sql_crdt, postgres_crdt, others
- Targets mobile
- Watermelon reactive database framework
- NATS Connective Technology for Adaptive Edge & Distributed Systems
- Socket.io Realtime application framework https://github.com/socketio/socket.io
- Deepstream a fast and secure data-sync realtime server
for mobile, web & iot https://github.com/deepstreamIO - Nchan (Nginx) Fast, horizontally scalable, multiprocess pub/sub queuing server and proxy for HTTP, long-polling, Websockets and EventSource (SSE) https://github.com/slact/nchan
Gun An open source cybersecurity protocol for syncing decentralized graph data
- Javascript impl
- audience: p2p, dec
- caps: e2ee
- https://gun.eco/docs/API
- https://github.com/amark/gun
GUN is an ++ecosystem++ of tools that let you build ++community run++ and ++encrypted applications++ - like an Open Source Firebase or a Decentralized Dropbox. The ++Internet Archive++ and ++100s of other apps++ run GUN in-production.
Multiplayer by default with realtime p2p state synchronization!
Graph data lets you use key/value, tables, documents, videos, & more!
Local-first, offline, and decentralized with end-to-end encryption.
- e2e encryption
Holepunch Pears Holepunch is a platform for creating apps that don’t use any servers whatsoever
- pretty interesting; massively distributed shit, not for me for now.
- https://docs.pears.com
- js runtime
Pear by Holepunch is a combined Peer-to-Peer (P2P) Runtime, Development & Deployment tool.
OrbitDB Peer-to-Peer Databases for the Decentralized Web
- too much tuna: Interesting Architectures IPFS based
Needs much more work
SQL.js A javascript library to run SQLite on the web.
- uses ++emscripten++ to compile ++SQLite++ to webassembly
- uses a ++virtual database file stored in memory++, and thus doesn't persist the changes made to the database; However, it allows you to import any existing sqlite file, and to export the created database as a ++JavaScript typed array++.
- https://github.com/sql-js/sql.js
SQLite, wasm, WebRTC (PoC)
- Private peer-to-peer collaborative databases in the browser using SQLite (WebAssembly) and WebRTC.
- https://github.com/adhamsalama/sqlite-wasm-webrtc
jawsm JavaScript to WASM compiler (experimental)
WasmEdge Runtime
- For compiled languages (e.g., C and Rust), WasmEdge WebAssembly provides a safe, secure, isolated, and containerized runtime as opposed to Native Client (NaCl).
- For interpreted or managed languages (e.g., JavaScript and Python), WasmEdge WebAssembly provides a secure, fast, lightweight, and containerized runtime instead of Docker + guest OS + native interpreter.
- WASM VM
- A cloud native WebAssembly runtime. A secure, lightweight, portable and high-performance alternative to Linux containers.
- Lightweight database clients in the WasmEdge Runtime:
- https://github.com/WasmEdge/wasmedge-db-examples
-
Source Network Own the internet of the future, with decentralized tools and infrastructure that prioritize data interoperability, privacy preservation, and trustless ownership
-
Various components like DefraDB, some graphql, a blockchain etc
-
AFFiNE project
-
Braid lots of useful low level stuff
Braid: Working Group for Interoperable State Synchronization
-
https://github.com/tablelandnetwork/awesome-decentralized-database
-
RemoteStorage old AF
-
RhizomeDB DEAD
-
Statecraft dead?
-
synQL not updated in a while
-
CRStore js only, built on cr-sqlite, not much movement lately. one guy
Conflict-free replicated store.
algorithms like egwalker have access to all the information they need to do that. We store character-by-character editing traces from all users. And we store when all changes happened (in causal order, like a git DAG). This is far more information than git has. So it should be very possible to build a CRDT which uses this information to detects & mark conflict ranges when branches are merged. Then we can allow users to manually resolve conflicts.
Lies I was Told About Collaborative Editing, Part 1: Algorithms for offline editing / Moment devlog
Lies I was told about collab editing, Part 1: Algorithms for offline editing | Hacker News