今天发现了一个.net下的轻量级的Serverless 文档数据库LiteDB,感觉还不错

其主要特点如下:

  • Serverless NoSQL 文档存储
  • 类似于 MongoDB 的简单 API
  • 100% C# 代码,支持.NET 3.5 / .NET 4.0 / NETStandard 1.3 / NETStandard 2.0,单 DLL (小于 300kb)
  • 支持线程和进程安全
  • 支持文档/操作级别的 ACID
  • 支持写失败后的数据还原 (日志模式)
  • 可使用 DES (AES) 加密算法进行数据文件加密
  • 可使用特性或 fluent 映射 API 将你的 POCO类映射为 BsonDocument
  • 可存储文件与流数据 (类似 MongoDB 的 GridFS)
  • 单数据文件存储 (类似 SQLite)
  • 支持基于文档字段索引的快速搜索 (每个集合支持多达16个索引)
  • 支持 LINQ 查询
  • Shell 命令行 - 试试这个在线版本
  • 相当快 - 这里是与 SQLite 的对比结果
  • 开源,对所有人免费 - 包括商业应用

简单的讲,它既具有Sqlite的轻便,也具有MongoDB的API友好的特点,作为一个轻量级的数据库使用是非常方便的。它的应用场景和Sqlite可以 说非常类似,用于桌面,移动环境以及一些小型,轻量级的Web应用上。

由于是单DLL应用,安装非常简单,一个Nuget命令就可以搞定: Install-Package LiteDB

官方的示例如下:

class Program
{
    static void Main(string[] args)
    {

// Open database (or create if doesn't exist)
        using (var db = new LiteDatabase(@"test.db"))
        {
            // Get customer collection
            var col = db.GetCollection<Customer>("customers");

// Create your new customer instance
            var customer = new Customer
            {
                Name = "John Doe",
                Phones = new string[] { "8000-0000", "9000-0000" },
                Age = 39,
                IsActive = true
            };

// Create unique index in Name field
            col.EnsureIndex(x => x.Name, true);

// Insert new customer document (Id will be auto-incremented)
            col.Insert(customer);

// Update a document inside a collection
            customer.Name = "Joana Doe";

col.Update(customer);

// Use LINQ to query documents (with no index)
            var results = col.Find(x => x.Age > 20);
        }
    }
}

// Create your POCO class
public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
    public string[] Phones { get; set; }
    public bool IsActive { get; set; }
}

用起来和MongoDB非常类似,如果需要更多帮助可以参看官方的WIKI:https://github.com/mbdavid/LiteDB/wiki。也有人翻译了中文的版本i: https://github.com/lidanger/LiteDB.wiki_Translation_zh-cn/wiki

其作者在CodeProject上写了篇文章介绍的更加详细:LiteDB - A .NET NoSQL Document Store in a single data file。或者也可以参看一些其它人的应用体验:

我最开始是准备弄一个带一点检索功能的日志的,发现已经有人做了这个扩展:NLog.LiteDB ,只需要针对它开发一个查询功能就可以了。简单的看了一下它的功能,还是非常好用的,也可以用于图片之类的小文件存储,检索和读写的性能应该也还是非常给力的。很多地方感觉已经比Sqlite好用了,准备先小范围试用一下,如果可以的话准备将其应用到项目中去。

最后说一下其不足的地方,和Sqlite比起来,其第三方GUI工具要少得多,我在Nuget上找了一下,只找到了一个LiteDBViewerLiteDbExplorer。不过有人写了一个LinqPad的驱动,可能要好用一些。

最新文章

  1. asp.net core 负载均衡集群搭建(centos7+nginx+supervisor+kestrel)
  2. Coding List
  3. HDFS 异常处理与恢复
  4. Nginx反向代理tomcat,seesion会话保持。
  5. WPF的二维绘图(二)——几何图形Geometry
  6. pdf.js在IIS中配置使用笔记
  7. [转载] Genymotion 解决虚拟镜像下载速度特别慢的问题
  8. Java Messages Synchronous and Asynchronous
  9. 【LeetCode】 Subsets
  10. Delphi调用WINAPI时到底应该是指针还是结构体(注意是Delphi变量本身就是指针)
  11. Python处理海量手机号码
  12. 一步一步学Vue(八)
  13. SPRINGCLOUD 开发学习记录
  14. Cleanmymac X好不好用?
  15. Cpython解释器下实现并发编程
  16. Python学习第六篇——字典中的键和值
  17. ruby数据库表添加字段、修改字段类型、修改字段名称
  18. c++中transform()函数和find()函数的使用方法。
  19. 翻译 Improved Word Representation Learning with Sememes
  20. 使用Jenkins 安装和自动化部署项目

热门文章

  1. Scrapy:创建爬虫程序的方式
  2. sld一张图
  3. 无需编译app切换线上、测试环境
  4. 写在用Mac进行Java开发之前
  5. CVE-2012-1876Microsoft Internet Explorer Col元素远程代码执行漏洞分析
  6. Linux--忘记MySQL密码的解决方法和输入mysqld_safe --skip-grant-tables &amp;后无法进入MySQL的解决方法
  7. javascript和jquery如何判断元素是否存在最佳。
  8. 站点的安全防范都是后端的职责?非也,Web前端安全同样不可忽视
  9. nullptr
  10. Ionic Js二:背景层