c#

位置:IT落伍者 >> c# >> 浏览文章

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


发布日期:2024年03月10日
 
C#使用BerkeleyDB操作简介[1]
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();

}

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

               

上一篇:C#使用BerkeleyDB操作简介[2]

下一篇:C#使用BerkeleyDB操作简介[5]