• 给C# .NET 的兄弟们做点小贡献 NoSql LevelDB .net 移植版 普通PC 100万条数据插入不超过4秒


    给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() + "毫秒");
    
    
            }
        }
    }

    版权所有:云寻觅开发团队

  • 相关阅读:
    tftp服务器
    iw工具的使用
    六、【ioctl】应用程序和驱动程序中的ioctl
    位反转现象(Bit Flip)
    openwrt有线网卡的停用与开启
    寒假小记
    ARMLinux汇编到ADS汇编转换需要注意的问题
    c function pointer example
    (转)解决mysql“Access denied for user 'root'@'localhost'”
    c语言 面向对象的栈
  • 原文地址:https://www.cnblogs.com/bdccloudy/p/3061974.html
Copyright © 2020-2023  润新知