zoukankan      html  css  js  c++  java
  • 一个.net下的轻量级的Serverless 文档数据库LiteDB

    今天发现了一个.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.Nametrue);

                // 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 { getset; }
        public string Name { getset; }
        public int Age { getset; }
        public string[] Phones { getset; }
        public bool IsActive { getset; }
    }

    用起来和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的驱动,可能要好用一些。

     

     

  • 相关阅读:
    Redis 启动失败
    Java本机直接内存溢出
    Java元数据区域(MetaSpace)OOM
    Java虚拟机本地方法栈溢出例子
    Java堆溢出实例
    C# DllImport CallingConvention选择
    光源选型
    条型光的光路分析
    VS安装包官方下载网址
    win7装.net framework4.6注意事项
  • 原文地址:https://www.cnblogs.com/TianFang/p/7967684.html
Copyright © 2011-2022 走看看