SwirlDB:模块化优先、基于CRDT的嵌入式数据库
SwirlDB: Modular-first, CRDT-based embedded database

原始链接: https://docs.swirldb.org/

统一的特性,不同的实现。 浏览器和服务器都实现了相同的存储特性: ``` trait DocumentStorage { async fn save(&self, key: &str, data: &[u8]) -> Result<()>; async fn load(&self, key: &str) -> Result>>; // ... } trait ChangeLog { async fn append_change(&self, namespace_id: &str, change: Change) -> Result<()>; async fn get_changes_since(&self, namespace_id: &str, since: i64) -> Result>; // ... } ``` 浏览器:localStorage + IndexedDB 实现 服务器:redb + 内存实现 相同的流程。相同的API。只是不同的后端。

## SwirlDB:一种新型嵌入式数据库 SwirlDB 是一种新型的、模块化的、基于 CRDT 的嵌入式数据库,专为服务器和浏览器环境设计(swirldb.org)。它因其类似于 PouchDB 的适配器架构,从而实现灵活的数据处理而备受 Hacker News 的关注。 初步反馈积极,有用户指出它可能非常适合需要 AES GCM 字段级别加密的应用程序——尽管此功能目前尚在计划中,尚未实现。然而,关于诸如外键之类的关系数据库功能仍然存在疑问,有人想知道它是否仅限于键值存储。 浏览器库的大小(约 830KB)也是讨论的焦点。该帖子还提醒大家,Y Combinator 2026 年冬季批次的申请现已开放。
相关文章

原文

Unified Traits, Different Implementations

Both browser and server implement the same storage traits:

trait DocumentStorage {
    async fn save(&self, key: &str, data: &[u8]) -> Result<()>;
    async fn load(&self, key: &str) -> Result<Option<Vec<u8>>>;
    // ...
}

trait ChangeLog {
    async fn append_change(&self, namespace_id: &str, change: Change) -> Result<()>;
    async fn get_changes_since(&self, namespace_id: &str, since: i64) -> Result<Vec<Change>>;
    // ...
}

Browser: localStorage + IndexedDB implementations

Server: redb + memory implementations

Same workflows. Same APIs. Just different backends.

联系我们 contact @ memedata.com