嵌入式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 = , 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的更多相关文章
- .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...
- .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB
今天给大家介绍一个不错的小巧轻量级的NoSQL文件数据库LiteDB.本博客在2013年也介绍过2款.NET平台的开源数据库: 1.[原创]开源.NET下的XML数据库介绍及入门 2.[原创]C#开源 ...
- 在实际项目中使用LiteDB NoSQL数据库
LiteDB 是一个 NoSQL 数据库,特点是 MongoDB like 和 0 配置.100% 原汁原味的 C# 开发, Release 只有一个 DLL,官方有一下适用场景:移动App,桌面小应 ...
- 小型单文件NoSQL数据库SharpFileDB初步实现
小型单文件NoSQL数据库SharpFileDB初步实现 我不是数据库方面的专家,不过还是想做一个小型的数据库,算是一种通过mission impossible进行学习锻炼的方式.我知道这是自不量力, ...
- NOSQL 数据库 CodernityDB
CodernityDB 是一个开源的纯 Python 实现的.无第三方依赖.支持多平台的 NoSQL 数据库. 关键特性: 纯 Python 开发 支持多索引 快速 (每秒将近10万的写入和超过10万 ...
- 15个nosql数据库
1.MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案.当数据量达到50GB以上 ...
- HBase与MongDB等NoSQL数据库对照
HBase概念学习(十)HBase与MongDB等NoSQL数据库对照 转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数 ...
- 10个出色的NoSQL数据库
http://www.infoq.com/research/nosql-databases?utm_source=infoqresearch&utm_campaign=lr-homepage ...
- HBase概念学习(十)HBase与MongDB等NoSQL数据库对照
转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数据库,配合以MongDB,Tair等存储. MySQL因为开源,而且生态 ...
随机推荐
- string && 字符数组
一.string 1. 使用字符串字面值初始化string对象 如:string s1 = "hiya"; string s2("hiya"); 该字面值的最后 ...
- Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19698511 . 最近遇到了一系列的屏幕适配问题, 以及 ...
- lintcode-187-加油站
187-加油站 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油gas[i],并且从第_i_个加油站前往第_i_+1个加油站需要消耗汽油cost[i]. 你有一辆油箱容量无限大的汽车,现在要从 ...
- python-网易云简单爬虫
一.准备工作 1.使用python3.6和pycharm 2.使用的模块 tkinter .requests .beautifulSoup.getpass.os 3.网易云的榜单页面地址 https: ...
- ejabberd学习2
1.ejabberd监听多个端口 每个网络连接进来,ejabberd都会使用一个进程来负责这个连接的数据处理.原理跟Joe Armstrong的<Erlang程序设计>中的并行服务器一样, ...
- 多个表单数据提交下的serialize()应用
在实际开发场景中,难免遇到需要多个表单的数据传递问题. 之所以要进行多表单的数据传递是因为可以进行数据分组,便于数据的维护. 这个时候,出于不依赖jquery的考虑,有一个原生js函数来解决这个问题无 ...
- 重新看《JavaScript高级程序设计》
几点心得: 1)数据是基础,一共有3种基础数据:null.undefined.和object:遵循从无到有从简单到复杂的演变过程 2)衍生数据:衍生数据是指操作符合语句,这些是基础数据产生导致的必然结 ...
- linux的几个发行网站
Red Hat: http://www.redhat.com Fedora: http://fedoraproject.org/ Mandriva: http://www.mandriva ...
- 【数据库】Sql Server 2008完全卸载方法(其他版本类似)
本文介绍如何卸载 Microsoft SQL Server 2008的方法.当您按照本文中的步骤时,您还准备系统以便可以重新安装 SQL Server 2008版本 一. SQL2008卸载. ...
- BZOJ 1022 小约翰的游戏(anti-sg)
这是个anti-sg问题,套用sj定理即可解. SJ定理 对于任意一个Anti-SG游戏,如果定义所有子游戏的SG值为0时游戏结束,先手必胜的条件: 1.游戏的SG值为0且所有子游戏SG值均不超过1. ...