您的位置:首页 >> 编程开发 >> .NET >> C# >> 正文
C# RSS
 

C#使用BerkeleyDB操作简介

http://www.rdxx.com 08年10月08日 00:00 我要投稿

关键词: C# , Berkeley , 操作
  Berkeley DB是历史悠久的嵌入式数据库系统,主要应用在UNIX/LINUX操作系统上。Berkeley DB的存储的是key/value键值对,可以理解为硬盘上的超级hash表。其可以管理256TB数据,而且能支撑几千个并发访问。目前Berkeley DB有C++版和Java版。所以,我们需要一个访问的中间转换,已经有人发布了C#的API。可以从 Berkeley DB for .NET 上面找到,现在最新版是0.95版本,可以支持4.3和4.5版。本篇将以4.5版做实例。BerkeleyDB的版本可以在http://www.oracle.com/technology/products/berkeley-db/index.html下载,当前最新版本为4.7版。4.5 C++版的Berkeley DB可以在http://www.oracle.com/technology/software/products/berkeley-db/db/index.html这里下载。
  
   By Birdshover@ 博客园 http://www.cnblogs.com/birdshover/
  
  下载到Berkeley DB for .Net的API——libdb-dotnet_0_95.zip后,就可以开始使用了。首先在libdb-dotnet_0_95.zip解压缩的bin目录找到libdb_dotNET45.dll,这个就是4.5版本使用的dll。新建项目,引用这个dll。注意,自己编译源码可能会编译不过,主要是因为里面一些委托和委托的参数可见性不一致造成的。把那些参数用到的class 或者struct都调成public即可。
  
  
  
  BerkeleyDB的数据库操作需要借助DbBTree类。因此需要先得到DbBTree的实例,但是DbBTree类会对其它几个类有依赖,必须依赖其它几个类才能创建。
  
   下面代码就是初始化得到DbBTree实例的一个过程。
  
   /// <summary>
   /// 数据库目录
   /// </summary>
   private string directory;
   /// <summary>
   /// 数据库文件名
   /// </summary>
   private string dbName;
  
   private DbBTree btree;
   private Txn txn;
   private Db db;
   private Env env;
   /// <summary>
   /// 初始化
   /// </summary>
   private void Init()
   {
   env = new Env(EnvCreateFlags.None);
   Env.OpenFlags envFlags =
   Env.OpenFlags.Create |
   Env.OpenFlags.InitLock |
   Env.OpenFlags.InitLog |
   Env.OpenFlags.InitMPool |
   Env.OpenFlags.InitTxn |
   Env.OpenFlags.Recover;
   env.Open(directory, envFlags, 0);
   txn = env.TxnBegin(null, Txn.BeginFlags.None);
   db = env.CreateDatabase(DbCreateFlags.None);
   btree = (DbBTree)db.Open(txn, dbName, null, DbType.BTree, Db.OpenFlags.Create, 0);
   }
  
  
  另外Berkeley DB数据库的操作需要借助于序列化。
  
   /// <summary>
   /// 二进制序列化
   /// </summary>
   private BinaryFormatter formatter;
   /// <summary>
   /// 键内存
   /// </summary>
   private MemoryStream keyStream;
   /// <summary>
   /// 内容内存流
   /// </summary>
   private MemoryStream dataStream;
  
 &nb

上一页 下一页


 
 
标签: C# , Berkeley , 操作 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站