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 = , Name = "Using Int 5" }; // set Id, do not generate (jump 3 and 4)!
var cint_6 = new EntityInt { Id = , 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等功能,大家可参考源代码里面的单元测试,如下:

嵌入式Nosql数据库——LiteDB的更多相关文章

  1. .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...

  2. .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB

    今天给大家介绍一个不错的小巧轻量级的NoSQL文件数据库LiteDB.本博客在2013年也介绍过2款.NET平台的开源数据库: 1.[原创]开源.NET下的XML数据库介绍及入门 2.[原创]C#开源 ...

  3. 在实际项目中使用LiteDB NoSQL数据库

    LiteDB 是一个 NoSQL 数据库,特点是 MongoDB like 和 0 配置.100% 原汁原味的 C# 开发, Release 只有一个 DLL,官方有一下适用场景:移动App,桌面小应 ...

  4. 小型单文件NoSQL数据库SharpFileDB初步实现

    小型单文件NoSQL数据库SharpFileDB初步实现 我不是数据库方面的专家,不过还是想做一个小型的数据库,算是一种通过mission impossible进行学习锻炼的方式.我知道这是自不量力, ...

  5. NOSQL 数据库 CodernityDB

    CodernityDB 是一个开源的纯 Python 实现的.无第三方依赖.支持多平台的 NoSQL 数据库. 关键特性: 纯 Python 开发 支持多索引 快速 (每秒将近10万的写入和超过10万 ...

  6. 15个nosql数据库

    1.MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案.当数据量达到50GB以上 ...

  7. HBase与MongDB等NoSQL数据库对照

    HBase概念学习(十)HBase与MongDB等NoSQL数据库对照 转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数 ...

  8. 10个出色的NoSQL数据库

    http://www.infoq.com/research/nosql-databases?utm_source=infoqresearch&utm_campaign=lr-homepage ...

  9. HBase概念学习(十)HBase与MongDB等NoSQL数据库对照

    转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数据库,配合以MongDB,Tair等存储. MySQL因为开源,而且生态 ...

随机推荐

  1. DFS中的奇偶剪枝(技巧)

    剪枝是什么,简单的说就是把不可行的一些情况剪掉,例如走迷宫时运用回溯法,遇到死胡同时回溯,造成程序运行时间长.剪枝的概念,其实就跟走迷宫避开死胡同差不多.若我们把搜索的过程看成是对一棵树的遍历,那么剪 ...

  2. HDU 2114 Calculate S(n)

    http://acm.hdu.edu.cn/showproblem.php?pid=2114 Problem Description Calculate S(n). S(n)=13+23 +33 +. ...

  3. linux+Nginx+Mysql+PHP环境下,安装mysqli模块

    奶奶的腿儿啊,太不易了.倒腾了小半天儿,写此随笔,待后查. 阿里云ecs中,安装phpcms,出现了一个问题:环境检测的时候,一直提示 Mysqli扩展没开启. 老夫哪儿特么会这么专业的啊...能咋办 ...

  4. JQuery 学习笔记--02

    JS 中的 window.onload() 方法与 Jquery 中的 $(document).read(function( ){  }) 的区别 : 加载时机不一样, window.onload() ...

  5. 【Python】python-内置常量

    引言 Python的内置常量不多,只有6个,分别是True.False.None.NotImplemented.Ellipsis.__debug__ 一.True 1.True是bool类型用来表示的 ...

  6. 【数据库】】MySQL之desc查看表结构的详细信息

    在mysql中如果想要查看表的定义的话:有如下方式可供选择 1.show create table 语句: show create table table_name; 2.desc table_nam ...

  7. BZOJ 1293 生日礼物(尺取法)

    把坐标离散化之后就是很普通的尺取法啦. # include <cstdio> # include <cstring> # include <cstdlib> # i ...

  8. 【bzoj1370】[Baltic2003]Gang团伙 并查集

    题目描述 在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足: 1. 我朋友的朋友是我的朋友: 2. 我敌人的敌人是我的朋友: 所有是朋友的人组成一个团伙.告诉你关于这n个人的m条信息, ...

  9. Python logging(日志)模块

    python日志模块 内容简介 1.日志相关概念 2.logging模块简介 3.logging模块函数使用 4.logging模块日志流处理流程 5.logging模块组件使用 6.logging配 ...

  10. Select-poll-epoll-简介

    1. Python的select()方法直接调用操作系统的IO接口,它监控sockets,open files, and pipes(所有带fileno()方法的文件句柄)何时变成readable 和 ...