SlateDB — An embedded database built on object storage
docs discord github ★3k
Build reliably on<br>object storage.
SlateDB is an OSS embedded key-value database and LSM-engine built on object storage.
Read the docs GitHub
+ add your logo used by
Object storage is the foundation that holds up modern cloud native systems: strongly consistent, absurdly durable, and priced like background noise. SlateDB embeds within your system and provides online, transactional access to object storage. Build a database, a cache, a feature store, a ledger, a workflow engine or anything on top of object storage and SlateDB is the layer that makes the writes correct, the reads fast, and the ops boring.
the engine
Fig. 1<br>Fig. 2<br>Fig. 3<br>Fig. 4
Zero-disk architecture<br>Persist data directly to object storage. Keep 99.999999999% durability and cost profile of S3-class storage without local disks or cross-AZ storage traffic.
Flexible deployment<br>SlateDB ensures a single writer through a formally verified manifest fencing protocol but supports multiple readers for read-side scaling. Compaction can run embedded or as a separate process to ensure separate concerns.
Transactional semantics<br>Transactions, snapshots, and optimistic concurrency control mechanisms ensure that SlateDB is suitable for the most demanding trnasactional workloads.
Tunable performance<br>Writes can trade between API request cost and durability latency while reads can leverage hybrid memory/disk caching to avoid cold latency penalties.
I Zero-disk architecture object storage native design II Flexible deployment single-writer, multi-reader III Transactional semantics suitable for OLTP workloads IV Tunable performance latency and cost controls
quickstart<br>full quickstart →
rustgojavanodepython<br>$ cargo add slatedb tokio --features tokio/macros,tokio/rt-multi-thread<br>use slatedb::Db;<br>use slatedb::object_store::memory::InMemory;
let store = std::sync::Arc::new(InMemory::new());<br>let db = Db::builder("demo", store).build().await?;
db.put(b"hello", b"world").await?;<br>let value = db.get(b"hello").await?;<br>$ go get slatedb.io/slatedb-go<br>store, _ := slatedb.ObjectStoreResolve("memory:///")<br>builder := slatedb.NewDbBuilder("demo", store)<br>db, _ := builder.Build()
db.Put([]byte("hello"), []byte("world"))<br>value, _ := db.Get([]byte("hello"))<br>$ implementation 'io.slatedb:slatedb-uniffi'<br>ObjectStore store = ObjectStore.resolve("memory:///");<br>DbBuilder builder = new DbBuilder("demo", store);<br>Db db = builder.build().get();
db.put("hello".getBytes(), "world".getBytes()).get();<br>byte[] value = db.get("hello".getBytes()).get();<br>$ npm install @slatedb/uniffi<br>const store = ObjectStore.resolve("memory:///");<br>const builder = new DbBuilder("demo", store);<br>const db = await builder.build();
await db.put(Buffer.from("hello"), Buffer.from("world"));<br>const value = await db.get(Buffer.from("hello"));<br>$ pip install slatedb<br>store = ObjectStore.resolve("memory:///")<br>builder = DbBuilder("demo", store)<br>db = await builder.build()
await db.put(b"hello", b"world")<br>value = await db.get(b"hello")
Ready to build?
The full reference covers architecture, operations, tutorials, and the RFC archive.
Read the docs View on GitHub