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

     

     

  • 相关阅读:
    【已解决】github中git push origin master出错:error: failed to push some refs to
    好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题
    THINKPHP 5.0目录结构
    thinkphp5.0入口文件
    thinkphp5.0 生命周期
    thinkphp5.0 架构
    Django template
    Django queryset
    Django model
    Python unittest
  • 原文地址:https://www.cnblogs.com/TianFang/p/7967684.html
Copyright © 2011-2022 走看看