[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73318":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":24,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":15,"starSnapshotCount":15,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},73318,"slatedb","slatedb\u002Fslatedb","A cloud native embedded storage engine built on object storage.","https:\u002F\u002Fslatedb.io",null,"Rust",3094,245,30,134,0,17,34,130,51,29.17,"Apache License 2.0",false,"main",true,[26,27,28,29,30,31,32],"database","embedded-database","lsm-tree","object-storage","rocksdb","rust","storage-engine","2026-06-12 02:03:11","\u003Ca href=\"https:\u002F\u002Fslatedb.io\">\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fblob\u002Fmain\u002Fwebsite\u002Fpublic\u002Fimg\u002Fslatedb-gh-banner.png?raw=true\" alt=\"SlateDB\" width=\"100%\">\n\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Fcrates.io\u002Fcrates\u002Fslatedb\">![Crates.io Version](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Fslatedb?style=flat-square)\u003C\u002Fa>\n![GitHub License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fslatedb\u002Fslatedb?style=flat-square)\n\u003Ca href=\"https:\u002F\u002Fslatedb.io\">![slatedb.io](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fsite-slatedb.io-00A1FF?style=flat-square)\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FmHYmGy5MgA\">![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1232385660460204122?style=flat-square)\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fdocs.rs\u002Fslatedb\u002Flatest\u002Fslatedb\u002F\">![Docs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-docs.rs-00A1FF?style=flat-square)\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.dosu.com\u002Fslatedb\u002Fslatedb\u002Fask\">![Dosu](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbot-dosu.dev-dd404a?style=flat-square)\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fopencollective.com\u002Fcommonhaus-foundation\u002Fprojects\u002Fslatedb\">![OpenCollective](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdonate-opencollective.com-287233?style=flat-square)\u003C\u002Fa>\n\n## Introduction\n\n[SlateDB](https:\u002F\u002Fslatedb.io) is an embedded storage engine built as a [log-structured merge-tree](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLog-structured_merge-tree). Unlike traditional LSM-tree storage engines, SlateDB writes data to object storage (S3, GCS, ABS, MinIO, Tigris, and so on). Leveraging object storage allows SlateDB to provide bottomless storage capacity, high durability, and easy replication. The trade-off is that object storage has a higher latency and higher API cost than local disk.\n\nTo mitigate high write API costs (PUTs), SlateDB batches writes. Rather than writing every `put()` call to object storage, MemTables are flushed periodically to object storage as a string-sorted table (SST). The flush interval is configurable.\n\n`put()` returns a `Future` that resolves when the data is durably persisted. Clients that prefer lower latency at the cost of durability can instead use `put_with_options` with `await_durable` set to `false`.\n\nTo mitigate read latency and read API costs (GETs), SlateDB will use standard LSM-tree caching techniques: in-memory block caches, compression, bloom filters, and local SST disk caches.\n\nCheckout [slatedb.io](https:\u002F\u002Fslatedb.io) to learn more.\n\n## Get Started\n\nAdd the following to your `Cargo.toml`:\n\n```toml\n[dependencies]\nslatedb = \"*\"\ntokio = \"*\"\n```\n\nThen you can use SlateDB in your Rust code:\n\n```rust\nuse slatedb::{Db, Error};\nuse slatedb::object_store::{ObjectStore, memory::InMemory};\nuse std::sync::Arc;\n\n#[tokio::main]\nasync fn main() -> Result\u003C(), Error> {\n    \u002F\u002F Setup\n    let object_store: Arc\u003Cdyn ObjectStore> = Arc::new(InMemory::new());\n    let kv_store = Db::open(\"\u002Ftmp\u002Ftest_kv_store\", object_store).await?;\n\n    \u002F\u002F Put\n    let key = b\"test_key\";\n    let value = b\"test_value\";\n    kv_store.put(key, value).await?;\n\n    \u002F\u002F Get\n    assert_eq!(\n        kv_store.get(key).await?,\n        Some(\"test_value\".into())\n    );\n\n    \u002F\u002F Delete\n    kv_store.delete(key).await?;\n    assert!(kv_store.get(key).await?.is_none());\n\n    kv_store.put(b\"test_key1\", b\"test_value1\").await?;\n    kv_store.put(b\"test_key2\", b\"test_value2\").await?;\n    kv_store.put(b\"test_key3\", b\"test_value3\").await?;\n    kv_store.put(b\"test_key4\", b\"test_value4\").await?;\n\n    \u002F\u002F Scan over unbound range\n    let mut iter = kv_store.scan::\u003CVec\u003Cu8>, _>(..).await?;\n    let mut count = 1;\n    while let Ok(Some(item)) = iter.next().await {\n        assert_eq!(\n            item.key,\n            format!(\"test_key{count}\").into_bytes()\n        );\n        assert_eq!(\n            item.value,\n            format!(\"test_value{count}\").into_bytes()\n        );\n        count += 1;\n    }\n\n    \u002F\u002F Scan over bound range\n    let mut iter = kv_store.scan(\"test_key1\"..=\"test_key2\").await?;\n    let item = iter.next().await?.expect(\"missing test_key1\");\n    assert_eq!(item.key.as_ref(), b\"test_key1\");\n    assert_eq!(item.value.as_ref(), b\"test_value1\");\n    let item = iter.next().await?.expect(\"missing test_key2\");\n    assert_eq!(item.key.as_ref(), b\"test_key2\");\n    assert_eq!(item.value.as_ref(), b\"test_value2\");\n\n    \u002F\u002F Seek ahead to next key\n    let mut iter = kv_store.scan::\u003CVec\u003Cu8>, _>(..).await?;\n    let next_key = b\"test_key4\";\n    iter.seek(next_key).await?;\n    let item = iter.next().await?.expect(\"missing test_key4\");\n    assert_eq!(item.key.as_ref(), b\"test_key4\");\n    assert_eq!(item.value.as_ref(), b\"test_value4\");\n    assert_eq!(iter.next().await?, None);\n\n    \u002F\u002F Close\n    kv_store.close().await?;\n\n    Ok(())\n}\n```\n\nSlateDB uses the [`object_store`](https:\u002F\u002Fdocs.rs\u002Fobject_store\u002Flatest\u002Fobject_store\u002F) crate to interact with object storage, and therefore supports any object storage that implements the `ObjectStore` trait. You can use the crate in your project to interact with any object storage that implements the `ObjectStore` trait. SlateDB also re-exports the [`object_store`](https:\u002F\u002Fdocs.rs\u002Fobject_store\u002Flatest\u002Fobject_store\u002F) crate for your convenience.\n\n## Documentation\n\nVisit [slatedb.io](https:\u002F\u002Fslatedb.io) to learn more.\n\n## Bindings\n\n- [Go](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Ftree\u002Fmain\u002Fbindings\u002Fgo) (official)\n- [Java](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Ftree\u002Fmain\u002Fbindings\u002Fjava) (official)\n- [Node.js \u002F TypeScript](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Ftree\u002Fmain\u002Fbindings\u002Fnode) (official)\n- [.NET](https:\u002F\u002Fgithub.com\u002FPulsy-Global\u002Fslatedb-dotnet)\n- [.NET](https:\u002F\u002Fgithub.com\u002Fdotstream\u002Fslatedb-csharp-binding)\n- [Python](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Ftree\u002Fmain\u002Fbindings\u002Fpython) (official)\n- [Ruby](https:\u002F\u002Fgithub.com\u002Fcatkins\u002Fslatedb-rb)\n- [TypeScript](https:\u002F\u002Fgithub.com\u002Fgadget-inc\u002Fslatedb-node)\n\n## Features\n\n- [x] Basic API (get, put, delete)\n- [x] SSTs on object storage\n- [x] Range queries ([#8](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fissues\u002F8))\n- [x] Block cache ([#15](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fissues\u002F15))\n- [x] Disk cache ([#9](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fissues\u002F9))\n- [x] Compression ([#10](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fissues\u002F10))\n- [x] Bloom filters ([#11](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fissues\u002F11))\n- [x] Manifest persistence ([#14](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fissues\u002F14))\n- [x] Compaction ([#7](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fissues\u002F7))\n- [x] Transactions ([#785](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fissues\u002F785))\n- [x] Merge operator ([#328](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fissues\u002F328))\n- [x] Clones ([#49](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fissues\u002F49))\n- [ ] Range deletions ([#577](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fissues\u002F577))\n- [x] Change data capture (CDC) ([#249](https:\u002F\u002Fgithub.com\u002Fslatedb\u002Fslatedb\u002Fissues\u002F249))\n- [ ] Database splitting\n- [ ] Database merging\n\n## Projects\n\nCheck out [CONTRIBUTING.md](CONTRIBUTING.md) for fun (and useful) projects to work on.\n\n## Release Schedule\n\nSlateDB follows Semantic Versioning. We release new versions approximately every 2 months at the end of each even month (February, April, and so on). We guarantee forward\u002Fbackward compatibility for storage formats between adjacent versions, but we do not currently guarantee API compatibility at this time (we reserve the right to break compile-time API compatibility).\n\n## Adopters\n\nSee who's using SlateDB.\n\n- [Dropbox](https:\u002F\u002Fwww.dropbox.com)\n- [Embucket](https:\u002F\u002Fwww.embucket.com)\n- [Gadget](https:\u002F\u002Fgadget.dev)\n- [Goldsky](https:\u002F\u002Fgoldsky.com)\n- [HelixDB](https:\u002F\u002Fgithub.com\u002FHelixDB\u002Fhelix-db)\n- [Malstrom](https:\u002F\u002Fgithub.com\u002FMalstromDevelopers\u002Fmalstrom)\n- [Massive](https:\u002F\u002Fmassive.com)\n- [Merklemap](https:\u002F\u002Fmerklemap.com)\n- [OpenData](https:\u002F\u002Fwww.opendata.dev)\n- [Responsive](https:\u002F\u002Fresponsive.dev)\n- [s2-lite](https:\u002F\u002Fgithub.com\u002Fs2-streamstore\u002Fs2)\n- [SQLync](https:\u002F\u002Fsqlync.com)\n- [Storrito](https:\u002F\u002Fstorrito.com)\n- [Tensorlake](https:\u002F\u002Fwww.tensorlake.ai)\n- [Volga](https:\u002F\u002Fgithub.com\u002Fvolga-project\u002Fvolga)\n- [ZeroFS](https:\u002F\u002Fzerofs.net)\n\n## Talks\n\n- [SlateDB - Object native LSM tree](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=KEtVKZMPY0Q) (Almog Gavra, 2026)\n- [Internals of SlateDB: An Embedded Key-Value Store Built on Object Storage](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=gcTRXZeKbNg) (Vignesh Chandramohan, 2025)\n- [Internals of SlateDB — by Vignesh Chandramohan](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=qqF_zFWqFYk) (Vignesh Chandramohan, 2025)\n- [Database Internals - SlateDB](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=wEAcNoJOBFI) (Chris Riccomini, 2024)\n- [Building a Cloud Native LSM on Object Storage](https:\u002F\u002Fwww.p99conf.io\u002Fsession\u002Fbuilding-a-cloud-native-lsm-on-object-storage\u002F) (Rohan Desai\u002FChris Riccomini, 2024)\n\n## Infrastructure Sponsors\n\nThanks to the following companies for donating services and infrastructure to the SlateDB project.\n\n- **[Pulumi](https:\u002F\u002Fwww.pulumi.com\u002F)** - Open source platform for automating, securing, and managing cloud resources, configuration, and secrets.\n- **[Tigris](https:\u002F\u002Fwww.tigrisdata.com\u002F)** – Globally distributed S3-compatible object storage service.\n\n## License\n\nSlateDB is licensed under the Apache License, Version 2.0.\n\n## Foundation\n\nSlateDB is a member of the [Commonhaus Foundation](https:\u002F\u002Fwww.commonhaus.org\u002F).\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fgithub.com\u002Fcommonhaus\u002Fartwork\u002Fblob\u002Fmain\u002Ffoundation\u002Fbrand\u002Fpng\u002FCF_logo_horizontal_single_reverse_200px.png?raw=true\">\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fcommonhaus\u002Fartwork\u002Fblob\u002Fmain\u002Ffoundation\u002Fbrand\u002Fpng\u002FCF_logo_horizontal_single_default_200px.png?raw=true\">\n\u003C\u002Fpicture>\n","SlateDB 是一个基于对象存储构建的云原生嵌入式存储引擎。它采用日志结构合并树（LSM-tree）作为核心数据结构，支持将数据写入到如S3、GCS等对象存储服务中，从而提供几乎无限的存储容量、高耐久性和易于复制的特点。为了解决对象存储带来的较高延迟和API成本问题，SlateDB通过批量写入以及使用内存块缓存、压缩、布隆过滤器和本地SST磁盘缓存等技术来优化性能。`put()`操作返回一个`Future`，只有当数据被持久化后才会完成。对于需要较低延迟但可以牺牲一定耐久性的场景，用户可以选择不等待持久化的写入选项。SlateDB适用于需要大规模数据存储且对数据一致性有一定要求的应用场景，尤其是那些能够利用云基础设施优势的项目。",2,"2026-06-11 03:44:59","high_star"]