給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() + "毫秒"); } }}
著作權:雲尋覓Team Dev