熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#使用BerkeleyDB操作簡介[1]

2013-11-13 10:55:51  來源: .NET編程 
  Berkeley DB是歷史悠久的嵌入式數據庫系統主要應用在UNIX/LINUX操作系統上Berkeley DB的存儲的是key/value鍵值對可以理解為硬盤上的超級hash表其可以管理TB數據而且能支撐幾千個並發訪問目前Berkeley DB有C++版和Java版所以我們需要一個訪問的中間轉換已經有人發布了C#的API可以從 Berkeley DB for NET 上面找到現在最新版是版本可以支持本篇將以版做實例BerkeleyDB的版本可以在http://wwworaclecom/technology/products/berkeleydb/indexhtml下載當前最新版本為 C++版的Berkeley DB可以在http://wwworaclecom/technology/software/products/berkeleydb/db/indexhtml這裡下載 
   
  下載到Berkeley DB for Net的API——libdbdotnet__zip後就可以開始使用了首先在libdbdotnet__zip解壓縮的bin目錄找到libdb_dotNETdll這個就是版本使用的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(EnvCreateFlagsNone);
   EnvOpenFlags envFlags =
   EnvOpenFlagsCreate |
   EnvOpenFlagsInitLock |
   EnvOpenFlagsInitLog |
   EnvOpenFlagsInitMPool |
   EnvOpenFlagsInitTxn |
   EnvOpenFlagsRecover;
   envOpen(directory envFlags );
   txn = envTxnBegin(null TxnBeginFlagsNone);
   db = envCreateDatabase(DbCreateFlagsNone);
   btree = (DbBTree)dbOpen(txn dbName null DbTypeBTree DbOpenFlagsCreate );
   }

    另外Berkeley DB數據庫的操作需要借助於序列化 

   /// <summary>
   /// 二進制序列化
   /// </summary>
   private BinaryFormatter formatter;
   /// <summary>
   /// 鍵內存流
   /// </summary>
   private MemoryStream keyStream;
   /// <summary>
   /// 內容內存流
   /// </summary>
   private MemoryStream dataStream;
  
   private void StreamInit()
   {
   formatter = new BinaryFormatter();
   keyStream = new MemoryStream();
   dataStream = new MemoryStream();
   }

[]  []  []  []  []  []  []  


From:http://tw.wingwit.com/Article/program/net/201311/14802.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.