Berkeley DB 以及 DB_SECONDARY_BAD: Secondary index inconsistent with primary 问题
2008-11-21 13:32
495 查看
项目需要,最近开始学习Berkeley DB,先列举一些我能理解的Berkeley DB的优点。
一 优点
Berkeley DB提供快速,可靠,和事务保护的记录存储。
Berkeley DB是嵌入式数据库,可以和你的应用方便的运行在同一地址空间,这对高效率的程序来说很有用。
Berkeley DB可以指定每个表的存储方式,这使得你可以根据这张表的应用环境更加的优化程序。(“表”被称为“数据库”,“数据库”被称为环境)
二 缺点
只有漂亮的代码,但没有完美的代码。
交互操作比较简单:
这使得在Berkeleydb上的复杂查询变得困难,对程序员来说也是一个挑战。
定位:
berkeleydb更应该说是一种面向程序员的数据库,面对复杂的应用时,会增加程序员大量的工作。
再列举一些典型应用
三 典型应用
任务队列:
为什么这里提到任务队列呢?在服务器程序开发中,对程序的可靠性要求是很高的,当你的程序断电重启时,我们不希望任务信息被丢掉,而是希望重新开始执行。因此可以将你的任务放在db中。有的程序员可能会考虑到性能上的损失,但是berkeleydb的缓存机制已经相当漂亮,在你选择了正确的存储方式和适当配置了berkeleydb时,相信性能不是问题。在berkeleydb的api中,也可以发现便于提供任务队列的接口,如等待一个特定的记录等。
四 DB_SECONDARY_BAD: Secondary index inconsistent with primary 问题
我的berkeleydb用到了从属数据库,因此我写了回调函数,关联了主数据库和从属数据库。
但是在调用dbp->put(dbp,NULL,&key, &data, DB_NOOVERWRITE); 的时候,出现了DB_SECONDARY_BAD: Secondary index inconsistent with primary 的错误。为什么会出现不一致呢?我首先怀疑回调函数是否执行正常,但函数体内的代码并没有什么问题,最容易出错的skey->size = strlen(XXX) + 1也是正常的,但多次重复回调之后,发现出现了一个主数据库中原有的值,这是因为我在建从属数据库的时候,主数据库早已存在并且有数据,由于处理不当,造成了主从不一致的情况。删掉主数据库重建,则问题解决了。
一 优点
Berkeley DB提供快速,可靠,和事务保护的记录存储。
Berkeley DB是嵌入式数据库,可以和你的应用方便的运行在同一地址空间,这对高效率的程序来说很有用。
Berkeley DB可以指定每个表的存储方式,这使得你可以根据这张表的应用环境更加的优化程序。(“表”被称为“数据库”,“数据库”被称为环境)
二 缺点
只有漂亮的代码,但没有完美的代码。
交互操作比较简单:
这使得在Berkeleydb上的复杂查询变得困难,对程序员来说也是一个挑战。
定位:
berkeleydb更应该说是一种面向程序员的数据库,面对复杂的应用时,会增加程序员大量的工作。
再列举一些典型应用
三 典型应用
任务队列:
为什么这里提到任务队列呢?在服务器程序开发中,对程序的可靠性要求是很高的,当你的程序断电重启时,我们不希望任务信息被丢掉,而是希望重新开始执行。因此可以将你的任务放在db中。有的程序员可能会考虑到性能上的损失,但是berkeleydb的缓存机制已经相当漂亮,在你选择了正确的存储方式和适当配置了berkeleydb时,相信性能不是问题。在berkeleydb的api中,也可以发现便于提供任务队列的接口,如等待一个特定的记录等。
四 DB_SECONDARY_BAD: Secondary index inconsistent with primary 问题
我的berkeleydb用到了从属数据库,因此我写了回调函数,关联了主数据库和从属数据库。
但是在调用dbp->put(dbp,NULL,&key, &data, DB_NOOVERWRITE); 的时候,出现了DB_SECONDARY_BAD: Secondary index inconsistent with primary 的错误。为什么会出现不一致呢?我首先怀疑回调函数是否执行正常,但函数体内的代码并没有什么问题,最容易出错的skey->size = strlen(XXX) + 1也是正常的,但多次重复回调之后,发现出现了一个主数据库中原有的值,这是因为我在建从属数据库的时候,主数据库早已存在并且有数据,由于处理不当,造成了主从不一致的情况。删掉主数据库重建,则问题解决了。
相关文章推荐
- oracle.jbo.RowInconsistentException: JBO-25014: Another user has changed the row with primary key or
- Java Read CSV File In Java With OpenCSV library 以及中文件乱码解决, Mapping CSV with Java beans
- Bad version number in .class file问题
- in_array效率问题以及解决办法
- Tricks in decide the index in the binary search with duplicate elements
- *** Assertion failure in -[UIApplication _runWithMainScene:transitionContext iOS9.1闪退问题解决
- Can not find a java.io.InputStream with the name [inputStream] in the invocation stack问题解决
- Exception in createBlockOutputStream 04 java.io.IOException: Bad connect ack with firstBadLink
- IllegalArgumentException: Illegal character in query at index........这个样的问题:转换问题
- OPENWRT编译问题:inconsistent operand constraints in an 'asm'
- The hierarchy of the type is inconsistent问题解决方案
- ORA-10567: Redo is inconsistent with data block
- vue中出现 There are multiple modules with names that only differ in casing的问题
- 使用CocoaPods遇到一个问题:The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update ....
- 问题解决 The hierarchy of the type is inconsistent
- Bad version number in .class file问题处理
- Oracle DG之ORA-16792: configurable property value is inconsistent with database setting
- 出现Bad version number in .class file这个问题时,要注意三个方面
- No mapping found for HTTP request with URI [/index.do] in DispatcherServlet with name 'SpringMVC‘
- Fast Exact Search in Hamming Spacewith Multi-Index Hashing