Berkeley DB 是個馳名已久的好東西,在專用領域,其性能罕有敵手。作為其 .NET 平臺的封裝版本,
Berkeley DB for .NET 卻讓人感覺非常郁悶,且不說那類似 C++ 風格的源碼,單就其升級維護周期都讓人很不放心。有點不理解,為什么作者不參考 Berkeley DB for Java ~~~~ 不過還好,0.95 版本的發布,讓我們看到了實用的可能。Berkeley DB for .NET 的源碼和文檔看得我頭暈腦脹,如果有什么差錯,多多包涵……
有關 Berkeley DB 的基本概念,可參考以下文章。
嵌入式數據庫系統Berkeley DB (施聰)
Berkeley DB 概述 (皮東)
C/C++ 使用教程
風滿袖
----------- 犯困的分隔線 ----------------------
先下載相關的程序包。
Berkeley DB 4.5.20
Berkeley DB for .NET 0.95
將兩個包中的 "libdb45.dll、libdb_dotNET45.dll、BerkeleyDb.Utils45.dll、Kds.Serialization.dll" 等文件拷貝到你的項目工程相關目錄中,并將 Berkeley DB for .NET 的程序集(后三個文件) 添加到工程引用中。OK,還是老樣子,先來個簡單的 "Hello, World!" 試試。
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using BerkeleyDb;
using BerkeleyDb.Serialization;
using Kds.Serialization;
using Kds.Serialization.Buffer;
namespace ConsoleApplication1
{
public class Program
{
static void Main(string[] args)
{
using (Db db = new Db(DbCreateFlags.None))
{
DbFile dbf = db.Open(null, @"test._db", null, DbType.BTree, Db.OpenFlags.Create, 0);
DbEntry key = DbEntry.InOut(BitConverter.GetBytes(123));
DbEntry data = DbEntry.InOut(Encoding.UTF8.GetBytes("Hello, World!"));
Console.WriteLine(dbf.Put(null, ref key, ref data));
dbf.Sync();
ReadStatus status = dbf.Get(null, ref key, ref data, DbFile.ReadFlags.None);
string s = Encoding.UTF8.GetString(data.Buffer, 0, data.Size);
Console.WriteLine(s);
}
}
}
}
輸出:
Success
Hello, World!