BerkeleyDB
文章平均质量分 85
mxzy55560593
这个作者很懒,什么都没留下…
展开
-
概述
Berkeley DB由五个主要的子系统构成.包括: 存取管理子系统、内存池管理子系统、事务子系统、锁子系统以及日志子系统。其中存取管理子系统作为Berkeley DB数据库进程包内部核心组件,而其他子系统都存在于Berkeley DB数据库进程包的外部。 每个子系统支持不同的应用级别。 1.数据存取子系统 数据存取(Access Methods)子系统为创建和访原创 2011-12-08 00:10:14 · 498 阅读 · 0 评论 -
锁子系统
基础1:一些DB句柄是线程安全的,一些句柄在创建时可以提供一些flags来获得安全性2:DB提供独占和非独占锁3:Berkeley DB称线程安全叫Free-thread,也就是数据和对象不需要显式的加锁就能保证安全性4:DB如果得不到锁就会被阻塞,DB提供了一些办法检测和化解死锁 线程安全的句柄DbEvn环境打开的时候使用DB_THREADDb打开数据库的原创 2011-12-09 09:58:40 · 906 阅读 · 0 评论 -
复制
基础1:复制将你master的写操作分发给所有参与者,你只能在master中写,其他参与者只能读,参与者的写会产生错误2:master和参与者属于一个"复制组",复制组的程序必须是事务的,他们之间发送的是日志记录3:复制的参与者都必须有自己唯一的环境,基于这个原因,如果多个参与者在同一台电脑上,他们不能使用一样的环境目录4:技术上讲,复制组是由一个master环境和多个参与者环境构原创 2011-12-09 14:46:56 · 515 阅读 · 0 评论 -
基础
0:Berkeley DB的子系统1:存取管理子系统为数据库创建和读写提供支持,它不包含事务2:内存池管理子系统对DB使用的共享缓冲区进行管理,3:事务子系统提供事务管理功能4:锁子系统存取管理子系统用锁子系统同步对数据库的读写,事务子系统通过锁子系统实现多个事务的并发控制5:日志子系统用来支持事务子系统对数据的恢复,保证数据的一致性 应用程序直接调原创 2011-12-05 10:02:15 · 872 阅读 · 1 评论 -
点点滴滴
1:DB_TRUNCATE不能被锁或者事务保护2:如果为数据库添加了环境,就已经将数据库的位置作为环境的子路径了3:项目中应该使用堆缓存文件 性能对比http://www.bdbchina.com/2011/09/oracle-berkeley-database-11g-r2-%E6%80%A7%E8%83%BD%E6%A6%82%E8%BF%B0%E7%99%BD%E7%9A原创 2011-12-14 14:02:45 · 396 阅读 · 0 评论 -
事务
chapter 2:启用事务1:打开事务步骤1:创建一个环境2:打开环境时,DbEvn::open()指定DB_INIT_TXN;启用了事务系统默认也启用了日志系统;并且,如果你在创建环境的时候没有使用事务,以后就不能使用,因为创建时没有分配锁需要的结构3:DbEvn::open()使用标志DB_INIT_MPOOL,初始化memory cache4:初始化锁子系统,DbEvn原创 2011-12-06 09:56:54 · 989 阅读 · 0 评论 -
实例代码
BTree读写Db db(NULL,DB_CXX_NO_EXCEPTIONS);//环境指针//事务指针,数据库类别,访问标志(创建,只读,自动提交事务,线程安全),mode在windows中忽略if(db.open(NULL,"test.db",NULL,DB_BTREE,DB_CREATE|DB_TRUNCATE,0)!=0){ cout<<"同名数据库存在"<<end原创 2011-12-12 16:13:20 · 1486 阅读 · 0 评论 -
数据存储的一个想法
//版本3struct Info3{ int nVersion; short a; int b; char name[2049]; void Update(void *p) { }};//版本2struct Info2{ int nVersion; char name[2049]; int a; void Upd原创 2011-12-16 15:35:40 · 575 阅读 · 0 评论