嵌入式Nosql数据库——LiteDB
LiteDB 是一个开源的 .NET 开发的小型快速轻量级的 NoSQL 嵌入式数据库,特性:
无服务器的 NoSQL 文档存储,数据存储在单一文件中
类似 MongoDb 的简单 API
100% C# 代码,支持 .NET 3.5,单一 DLL,可从 NuGet 安装: Install-Package LiteDB
支持 ACID 事务控制
日志模式下的写失败恢复
可存储 POCO 类或者 BsonDocument
支持文件存储和数据流存储 (like GridFS in MongoDB)
单一数据文件存储,类似 SQLite
文档字段索引,用于快速搜索
支持使用 LINQ 查询
Shell 命令行 (get on - try this online version
自生成id测试
/// <summary> /// 自生成id测试 /// </summary> public void AutoId_Test() { //打开或者创建新的数据库 using (var db = new LiteDatabase("sample.db")) { var cs_int = db.GetCollection<EntityInt>("int"); // int类型自生成Id var cint_1 = new EntityInt { Name = "Using Int 1" }; var cint_2 = new EntityInt { Name = "Using Int 2" }; var cint_5 = new EntityInt { Id = 5, Name = "Using Int 5" }; // set Id, do not generate (jump 3 and 4)! var cint_6 = new EntityInt { Id = 0, Name = "Using Int 6" }; // for int, 0 is empty var cint_7 = new EntityInt { Name = "Using Int 7" }; cs_int.Insert(cint_1); cs_int.Insert(cint_2); cs_int.Insert(cint_5); cs_int.Insert(cint_6); cs_int.Insert(cint_7); Console.WriteLine(cint_1.Id); Console.WriteLine(cint_2.Id); Console.WriteLine(cint_5.Id); Console.WriteLine(cint_6.Id); Console.WriteLine(cint_7.Id); //guid var guid = Guid.NewGuid(); var cguid_1 = new EntityGuid { Id = guid, Name = "Using Guid" }; var cguid_2 = new EntityGuid { Name = "Using Guid 1" }; var cguid_3 = new EntityGuid { Name = "Using Guid 2" }; Console.WriteLine("Guid.NewGuid()="+guid); Console.WriteLine(cguid_1.Id); Console.WriteLine(cguid_2.Id); Console.WriteLine(cguid_3.Id); // oid var oid = ObjectId.NewObjectId(); var coid_1 = new EntityOid { Name = "ObjectId-1" }; var coid_2 = new EntityOid { Id = oid, Name = "ObjectId-2" }; Console.WriteLine("ObjectId.NewObjectId()=" + oid); Console.WriteLine(coid_1.Id); Console.WriteLine(coid_2.Id); // string 没有自动生成的id var cstr_1 = new EntityString { Name = "Object using String" }; Console.WriteLine(cstr_1.Id); } }
/// <summary> /// int类型ID /// </summary> public class EntityInt { public int Id { get; set; } public string Name { get; set; } } /// <summary> /// Guyid类型ID /// </summary> public class EntityGuid { public Guid Id { get; set; } public string Name { get; set; } } /// <summary> /// LiteDB.ObjectId /// </summary> public class EntityOid { public ObjectId Id { get; set; } public string Name { get; set; } } /// <summary> /// 字符串类型 /// </summary> public class EntityString { public string Id { get; set; } public string Name { get; set; } }
如上图所示:
int类型id自动增长,当你设置了大于0的id时(5),将跳过3、4,后面的从5开始增长。
guid类型的id需要我们自己生成。
oid类型id也是需要自己生成。
string 类型无法自动生成id。
对于其它功能:
大文件、并发、json、linq、filestorage等功能,大家可参考源代码里面的单元测试,如下:
分类:
.net
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?