DBreeze
运行14年的.NET嵌入式多模数据库,支持KV存储、全文搜索和向量检索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
运行14年的.NET嵌入式多模数据库,支持KV存储、全文搜索和向量检索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2012年,当MongoDB刚发布2.0版本、Redis还在1.2时代,一位来自拉脱维亚的.NET开发者 hhblaze(Alex Solovyov)决定自己写一个数据库。他的目标很简单:给.NET开发者一个嵌入式、免运维、事务安全的本地数据库,不需要安装服务器,不需要配置连接池,打开NuGet就能用。
这个项目叫 DBreeze,如今已持续维护到2026年6月,版本号1.138——十四年从未间断,是GitHub上最长寿的.NET开源数据库项目之一。

图1:DBreeze项目Logo
DBreeze最初托管在Codeplex(微软已关停的开源平台),2012年4月正式发布。2017年Codeplex关停后迁移至GitHub。在NuGet上从2014年1月起持续发布至今,累计下载量可观(shield.io徽章可见蓝色下载标签)。
项目由两位核心作者维护:Alex Solovyov(hhblaze@gmail.com)和Ivars Sudmalis。作为商业产品的内部工具出身,DBreeze从第一天起就运行在真实生产环境中——2012年6月即投入生产使用,这给了它极高的代码质量和稳定性要求。
如果说SQLite是"数据库的孤岛"(只能本地文件),那么DBreeze就是"数据库的瑞士军刀"——它把多种数据库能力打包成一个NuGet包,嵌入到你的应用程序进程内:
一个DBreeze数据库文件可以同时承载以上所有能力,不需要部署多个服务。
DBreeze的核心数据结构是Liana-Trie——一种自研的可排序前缀树索引。相比B-Tree索引,Liana-Trie有以下优势:
DBreeze支持四种数据存储模式:
| 模式 | 说明 | 典型场景 |
|---|---|---|
| Key-Value(键值) | 最基础的模式,byte[]到byte[] | 配置存储、会话缓存 |
| 嵌套表(Nested) | 值内嵌子表,支持递归 | 树形数据、层级结构 |
| 对象层(Object) | 直接序列化C#对象 | 实体存储、聚合根 |
| 列式表(Table) | 值按列存储,支持条件查询 | 报表数据、时序数据 |
DBreeze的文本搜索子系统支持:
相比Elasticsearch,DBreeze的搜索能力虽然简单,但零运维、零网络开销,适合中小型应用的内嵌搜索需求。
DBreeze在1.138版本(2026年6月)中集成了完整的向量数据库能力:
这套方案使得DBreeze可以在单机应用内直接完成向量检索(Retrieval Augmented Generation的数据存储层),无需额外部署Milvus或Chroma等向量数据库服务。
DBreeze的事务模型非常成熟:
DBreeze是真正的零依赖嵌入式库——整个项目只有C#源码,没有任何第三方NuGet依赖(除了目标框架自身的BCL)。
| 目标框架 | 说明 |
|---|---|
| .NET 6+ | 当前主力维护版本 |
| .NET 5 | 过渡版本 |
| .NET Framework 3.5+ | 兼容老旧系统 |
| .NET Standard 1.6/2.0 | 跨平台兼容 |
| .NET Core 1.0+ | 早期跨平台支持 |
| Xamarin(Android/iOS) | 移动端支持 |
| Unity | 游戏引擎支持 |
| .NET Portable | 通用Windows平台 |
| CoreRT | 实验性AOT编译支持 |
这意味着同一个DBreeze NuGet包,可以同时用于Windows服务器、Linux微服务、Android APK和iOS应用——一次编写,到处运行。
DBreeze.Net8/
├── Engine/DBreezeEngine.cs # 引擎入口,生命周期管理
├── LianaTrie/ # Liana-Trie索引实现
│ ├── LTrieGenerationNode.cs # 索引节点
│ ├── LTrieWriteCache.cs # 写缓存
│ └── NestedTables/ # 嵌套表协调器
├── Transactions/ # 事务协调器
├── Storage/ # 存储层
│ ├── Backup/Backup.cs # 增量备份
│ └── RemoteInstance/ # 远程实例(Raft集成)
├── VectorLayer/ # 向量数据库层
│ └── HNSW/ # HNSW图索引实现
├── TextSearch/ # 全文搜索引擎
└── DataTypes/ # 数据类型转换
DBreeze使用自研的Biser.NET二进制序列化器——专为数据库场景设计,性能优于BinaryFormatter和Protobuf-net。此外还内置了JSON、XML、UTF8、Unicode等多种转换器。
通过集成Raft.NET,DBreeze可以组建分布式集群,实现:
// 1. NuGet安装
// PM> Install-Package DBreeze
// 2. 创建数据库
using DBreeze;
using(DBreezeEngine engine = new DBreezeEngine(@"C:\MyData\MyDB"))
{
// 3. 开启事务
using(var tr = engine.GetTransaction())
{
// 4. 选择/创建表
tr.Insert<byte[], byte[]>("Users", key, value);
// 5. 提交
tr.Commit();
}
}
| 方法 | 说明 |
|---|---|
GetTransaction() | 获取事务 |
Insert<TKey, TVal>(table, key, val) | 插入/更新 |
Select<TKey>(table, key) | 按键查询 |
SelectForwardFrom(table, startKey) | 范围查询 |
RemoveKey(table, key) | 删除 |
GetTable(table) | 获取表引用 |
CreateNestedTable(val) | 创建嵌套表 |
FullTextSearch(table, query) | 全文搜索 |
VectorSearch(table, query_vector, k) | 向量检索 |
DBreeze并非银弹,有几个重要限制:
DBreeze是进程内嵌入式数据库,不是独立的数据库服务器。它适合:
HNSW向量层虽然在1.138版本发布,但与LangChain/LlamaIndex等AI框架的集成示例还较少。相比Qdrant/Milvus等成熟向量数据库,缺乏生产环境验证。对于RAG场景,推荐先在测试环境充分验证。
DBreeze的文档分散在:
初学者容易找不到想要的内容,建议从Quick start guides开始。
DBreeze采用BSD 3-Clause许可证,允许商业使用——这对企业应用非常友好。
DBreeze代表了一类独特的数据库哲学:让数据能力去中心化。传统架构中,每个能力都需要独立的数据库服务(Redis缓存、Elasticsearch搜索、Milvus向量库、PostgreSQL主存储),带来了运维复杂性和网络延迟。DBreeze试图把这一切整合到一个进程内。
在以下场景中,这种"单进程多模"方案有独特价值:
推荐使用:
不建议使用:
一句话推荐:如果你在.NET生态中需要一个"瑞士军刀"式的嵌入式数据库,能同时搞定KV存储、全文搜索、向量检索和对象序列化,DBreeze是GitHub上最成熟的选择——14年的持续迭代,不是说着玩的。
项目仓库:https://github.com/hhblaze/DBreeze | 当前版本:1.138.2026.0603 | License:BSD 3-Clause | 语言:C#