#in-memory #database-schema #durable #storage #page #high-concurrency

darkbird

受Erlang Mnesia启发的,具有高并发、实时、内存存储功能的DarkBird

27个稳定版本 (5个主要版本)

6.2.4 2023年12月21日
6.2.0 2023年10月27日
6.1.8 2023年7月21日
6.1.0 2023年2月18日
1.1.2 2022年7月5日

#460数据库接口

Download history 33/week @ 2024-03-11 9/week @ 2024-03-18 15/week @ 2024-03-25 48/week @ 2024-04-01 37/week @ 2024-04-08 8/week @ 2024-04-22 1/week @ 2024-04-29 8/week @ 2024-05-20 1/week @ 2024-05-27 21/week @ 2024-06-03 26/week @ 2024-06-10 10/week @ 2024-06-17 7/week @ 2024-06-24

每月下载量64
用于http-cache-darkbird

Apache-2.0

160KB
4K SLoC

DarkBird

DarkBird是一个文档型实时内存数据库解决方案,针对快速文档检索进行了优化。

特性

  • 数据库级别:DarkBird最初是存储系统,但从版本5.0.3开始,它成为了一个功能齐全的数据库,因为它提供了Schema来构建数据库,并且所有操作都在数据库层进行。
  • 持久性:使用非阻塞写前日志引擎进行数据持久化,将数据存储到多个页面。
  • 内存存储:数据存储在内存中,有两种模式(DiskCopiesRamCopies),第一种将数据持久化到磁盘,并在重启后重新加载到内存中。
  • 并发性:使用高并发HashMap(DashMap),不需要Mutex/RwLock进行线程同步。
  • 向量:DarkBird提供向量引擎用于存储和搜索向量。
  • 索引:支持索引,允许动态决定哪些文档字段需要索引。
  • 全文搜索:自3.5.0版本起支持全文搜索操作。
  • 物化视图:支持物化视图。
  • 标签:每个文档可以有多个标签,一个标签可以引用多个文档,非常适合通过关键字快速检索文档组。
  • 过期时间:从vsn 6.0.0开始支持键过期。
  • 原子操作:从vsn 6.0.0开始支持原子操作(类似于redis的setNx)。
  • 迁移:存储模型是(键,文档),您可以使用migration在打开存储之前更改磁盘上的现有(键,文档)数据。
  • 备份/恢复:从vsn-6.1.0开始支持备份/恢复。
  • 外部数据库支持:将存储数据复制到Postgres/Cassandra/Scylla,并从中加载。
  • 事件处理:订阅任何通道以接收事件。

Crate

darkbird = "6.2.4"

示例

  • 查看完整的示例这里
  • 此仓库是一个电影存储服务,使用(darkbird + actix-web)这里

版本

  • 2.0.0:改进了性能并添加了整个数据的数据库持久副本
  • 3.0.0:实现了索引标签范围查询。从本版本开始,文档模型必须实现从本版本开始实现的树形trait。
  • 3.5.0:添加了全文搜索API
  • 4.0.0:添加了对物化视图的支持。文档模型必须实现MaterializedView特性,并提供了用于获取视图模型的API。使用&str而不是&String以获得更好的性能和API兼容性。所有示例均已更新。
  • 5.0.1:迁移到存储到数据库世界,使用Schema builder和数据库层进行所有操作,同时也与旧版本兼容
  • 5.0.2:修复了持久索引问题,并更改了全文搜索API以修复一个错误,所有示例均已更新
  • 5.0.3:修复了加载器问题
  • 6.0.0:添加了另一个存储引擎以支持:原子操作(类似于redis setNx)、过期和更简单的API
  • 6.0.1:备份/恢复 _ 新的迁移组件(发生错误时恢复自身)
  • 6.2.0:向量引擎

Buy Me A Coffee

依赖项

~13–24MB
~361K SLoC