题记:写这篇博客要主是加深自己对数据插入的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢。
给C# .NET 兄弟们做点小献贡 - NoSql LevelDB .net 移植版 通普PC 100万条数据插入不超越4秒
支撑多线程,发并安全
解决方案下载址地:
http://pan.baidu.com/share/link?shareid=508379&uk=201606611
有任何疑问请系联:QQ交流群 204725117
LevelDB 是一个由Google公司所研发的键/值对(Key/Value Pair)嵌入式数据库管理系统编程库,[1] 以开源的BSD许可证宣布。
高性能,单简的体系结构:只支撑API用调,不支撑SQL言语
自由软件和开放源码代软件
数据支撑被Snappy函式库压缩,以增加Disk I/O晋升能效
现在仅支撑 Linux 完全由C++开辟,支撑TB级数据,本项目将其移植到windows 及 .net 平台上!
用调码代范例:
有一首诗最为动人,那就是青春;有一段人生最美丽,那就是青春;有一道风景最为亮丽,那就是青春。青春,不要说已疲惫,也许你的幻想曾被现实无情毁灭,也许你的追求毫无结果,但你应该相信,没有寒风的洗礼,哪来万紫千红的春天,没有心的耕耘,哪有累累硕果?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using WebSystem.Framework.DAO.LevelDB;
namespace LevelDbDemo
{
class Program
{
static DB Database { get; set; }
static string DatabasePath { get; set; }
static void Main(string[] args)
{
var tempPath = Path.GetTempPath();
var randName = Path.GetRandomFileName();
DatabasePath = Path.Combine(tempPath, randName);
Cache c = new Cache(100 * 1024 * 1024);
var options = new Options()
{
BlockCache = c,
CreateIfMissing = true,
};
Database = new DB(options, "mylevel.db");
//开始间时
TimeSpan runTime = new TimeSpan(DateTime.Now.Ticks);
//循环插入 100万 k,v
for (int i = 0; i < 1000000; i++)
{
Database.Put(i.ToString(), i.ToString() + "A");
}
//迭代取有所数据
//var entries = new List<KeyValuePair<string, string>>();
//try
//{
// foreach (var entry in Database)
// {
// entries.Add(entry);
// }
//}
//catch { }
//取某一个key 的 值
string value = Database.Get("123455"); //大约 0.00X 几秒
//束结间时
TimeSpan timeNow = new TimeSpan(DateTime.Now.Ticks);
//间时间隔
TimeSpan ts = timeNow.Subtract(runTime).Duration();
Console.WriteLine(" 用时:" + ts.TotalSeconds.ToString() + "秒 " + ts.TotalMilliseconds.ToString() + "毫秒");
}
}
}
文章结束给大家分享下程序员的一些笑话语录: 雅虎最擅长的不是开通新业务,是关闭旧业务。