一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库
前言
今天给大家分享一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库:LiteDB。本篇文章主要是介绍LiteDB和在.NET中如何使用。
LiteDB介绍
LiteDB 是一个小巧、快速和轻量级的 .NET NoSQL 嵌入式数据库。
- 无服务器的 NoSQL 文档存储
- 简单的 API,类似于 MongoDB
- 100% 的 C# 代码支持 .NET 4.5 / NETStandard 1.3/2.0,以单个 DLL(不到 450KB)形式提供
- 线程安全
- 支持 ACID,完整的事务支持
- 写入失败后的数据恢复(WAL 日志文件)
- 使用 DES(AES)加密算法对数据文件进行加密
- 使用属性或流畅的映射器 API 将 POCO 类映射为 BsonDocument
- 存储文件和流数据(类似于 MongoDB 的 GridFS)
- 单一数据文件存储(类似于 SQLite)
- 对文档字段建立索引以实现快速搜索
- 支持 LINQ 查询
- 提供类似于 SQL 的命令来访问/转换数据
- LiteDB Studio - 数据访问的精美用户界面
- 开源且免费供所有人使用,包括商业用途
LiteDB应用场景
可以在以下场景中使用 LiteDB:
- 桌面/本地小型应用程序
- 应用程序文件格式
- 小型网站/应用程序
- 每个账户/用户数据存储一个数据库的情况
LiteDB项目源代码

创建一个LiteDBCwTest控制台


安装LiteDB包
搜索LiteDB包,点击安装。

定义Customer数据模型
public class Customer
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// Name
/// </summary>
public string Name { get; set; }
/// <summary>
/// Age
/// </summary>
public int Age { get; set; }
/// <summary>
/// Email
/// </summary>
public string Email { get; set; }
}
LiteDB数据创建、插入、查询和删除
namespace LiteDBCwTest
{
internal class Program
{
static void Main(string[] args)
{
//创建或打开数据库文件
using (var db = new LiteDatabase(@"MyCustomerData.db"))
{
// 获取集合(相当于表)
var collection = db.GetCollection<Customer>("customers");
var customers = new List<Customer>()
{
new Customer
{
Name = "追逐时光者",
Age = 18,
Email = "17854545@gmail.com"
},
new Customer
{
Name = "大姚",
Age = 30,
Email = "16556545@gmail.com"
}
};
// 批量插入数据
collection.Insert(customers);
// 查询数据
var result = collection.FindAll();
foreach (var c in result)
{
Console.WriteLine($"Name: {c.Name}, Age: {c.Age}, Email: {c.Email}");
}
// 根据条件查询数据
var query = Query.EQ("Age", 30);
var resultByAge = collection.Find(query);
foreach (var c in resultByAge)
{
Console.WriteLine($"Name: {c.Name}, Age: {c.Age}, Email: {c.Email}");
}
// 删除数据
var deletedResult = collection.Delete(resultByAge.FirstOrDefault().Id);
}
}
}
}
创建成功的数据库文件

LiteDB.Studio管理工具下载
用于查看和编辑 LiteDB v5 文档的图形用户界面工具。

LiteDB.Studio管理数据
连接MyCustomerData数据库


查看customers表数据

项目源码地址
更多项目实用功能和特性欢迎前往项目开源地址查看,别忘了给项目一个Star支持。
GitHub源码地址:https://github.com/mbdavid/LiteDB
官方文档地址:https://www.litedb.org/api/
优秀项目和框架精选
该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没)。
https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md
DotNetGuide技术社区交流群
- DotNetGuide技术社区是一个面向.NET开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目推荐、招聘资讯和解决问题的平台。
- 在这个社区中,开发者们可以分享自己的技术文章、项目经验、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
- 我们致力于构建一个积极向上、和谐友善的.NET技术交流平台,为广大.NET开发者带来更多的价值和成长机会。
一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库的更多相关文章
- C# 编写一个小巧快速的 Windows 动态桌面软件
开源自己前段时间使用 C# 编写的 Windows 动态桌面软件,在接下来的博客我将描写一些技术细节和遇到的一些坑.这个软件可以把视频设置成桌面背景播放,不仅如此而且还可以把网页或一个网页文件设置成桌 ...
- Java嵌入式数据库H2学习总结(一)——H2数据库入门
一.H2数据库介绍 常用的开源数据库有:H2,Derby,HSQLDB,MySQL,PostgreSQL.其中H2和HSQLDB类似,十分适合作为嵌入式数据库使用,而其它的数据库大部分都需要安装独立的 ...
- .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB
今天给大家介绍一个不错的小巧轻量级的NoSQL文件数据库LiteDB.本博客在2013年也介绍过2款.NET平台的开源数据库: 1.[原创]开源.NET下的XML数据库介绍及入门 2.[原创]C#开源 ...
- LevelDB:一个快速轻量级的key-value存储库(译)
作者:Jeff Dean, Sanjay Ghemawat 原文:http://leveldb.googlecode.com/svn/trunk/doc/index.html 译者:phylips@b ...
- Lua 是一个小巧的脚本语言
Redis进阶实践之七Redis和Lua初步整合使用 一.引言 Redis学了一段时间了,基本的东西都没问题了.从今天开始讲写一些redis和lua脚本的相关的东西,lua这个脚本是一个好东西,可以运 ...
- Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架
Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的. 历史 Bootstrap 是由 Twitter 的 ...
- 一个高性能、轻量级的分布式内存队列系统--beanstalk
Beanstalk是一个高性能.轻量级的.分布式的.内存型的消息队列系统.最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟.其实Beanstalkd是典型的类Mem ...
- 使用Sublime text 3打造一个小巧但强大的Go语言开发IDE
版权声明:欢迎转载,转载请注明出处! https://blog.csdn.net/iTaacy/article/details/76716049 使用Sublime text 3打造一个小巧但强大的G ...
- Facebook的实时流处理技术——Scuba是Facebook的一个非常快速、分布式的内存数据库,用于实时分析和查询
Scuba,Facebook的一个非常快速.分布式的内存数据库,用于实时分析和查询.是Facebook的回归分析代码.错误报告监控.广告收入监控和性能调试的背后主力. Facebook的实时流处理技术 ...
- 一个小巧,也很nice的“小日历”--一个Android App
一个小巧也很Nice的“小日历” 背景 因为,常用日历记一些事情,Android自带的日历,如果有事情,会显示一个小点,然后点击进去后才能看到事情的具体内容,不是很方便. 所以,写了一个“小日历” 特 ...
随机推荐
- daffodil
import java.util.ArrayList; public class Daffodil { /** * 打印出100-999之间所有的"水仙花数",所谓"水仙 ...
- 文心一言 VS 讯飞星火 VS chatgpt (110)-- 算法导论10.2 1题
一.用go语言,单链表上的动态集合操作 INSERT 能否在 O(1)时间内实现?DELETE 操作呢? 文心一言: 在单链表中,INSERT 和 DELETE 操作的时间复杂度通常是 O(n),其中 ...
- Super Apps 超级应用们背后的道家哲学
众所周知,Elon Musk 想将 Twitter 重新设计定位成一款"超级应用 - X"的野心已经不再是秘密.伴随着应用商店中 Twitter 标志性的蓝鸟 Logo 被 X 取 ...
- C# ref, in, out关键字
写在前面:大内老A的这篇"老生常谈:值类型VS引用类型"放在微信收藏里好几个月了,终于趁着要讲JAVA传参机制的时候仔细地按照这篇博客,自己写代码跑一下,对C#的传参,ref,in ...
- cannot import name '_BindParamClause' from 'sqlalchemy.sql.expression'
python3.8 安装环境组件正常安装 运行 flask db init 报错 cannot import name '_BindParamClause' from 'sqlalchemy.sql. ...
- springMVC---GET、POST原理
对于 java 程序员来说,特别是遵循 restful 风格的公司,controller 层用得最多的就是 下面这几个注解了: @RequestMapping @PostMapping @GetMap ...
- 又一个涵盖前后端+DevOps+OpenAI大模型的高并发项目启动了
大家好,我是冰河~~ 今天,正式通知大家一件事情:又到了启动新项目的时候,这也是 冰河技术 知识星球继 Seckill秒杀系统 项目后,又一个高并发实战项目.星球其他项目与专栏,大家可移步到冰河的个人 ...
- webpack 从 v4 升级到 v5
准备工作 Node.js 至少升级到 v10.13.x 以上. 其它 修改 webpack.config.js 配置,以及部分老的 webpack 插件要更新. 参考 中文版 从 v4 升级到 v5 ...
- centos7安装MySQL—以MySQL5.7.30为例
centos7安装MySQL-以MySQL5.7.30为例 本文以MySQL5.7.30为例. 官网下载 进入MySQL官网:https://www.mysql.com/ 点击DOWNLOADS 点击 ...
- 如何通过C++ 给PDF文档添加文字水印
因PDF文档具有较好的稳定性和兼容性,现在越来越多的合同.研究论文.报告等都采用PDF格式.为了进一步保护这些重要文档内容免受未经授权的复制或使用,我们可以添加水印以表明其状态.所有权或用途.针对工作 ...