嵌入式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等功能,大家可參考源代碼里面的單元測試,如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM