Berkley使用散列配置将数据更新为新值

时间:2011-11-18 01:26:01

标签: java hash berkeley-db put

我正在尝试编写一个使用Berkeley数据库的程序,并按照以下方式配置了我的数据库:

DatabaseConfig dbConfig = new DatabaseConfig();

dbConfig.setType(DatabaseType.HASH);
dbConfig.setAllowCreate(true);
dbConfig.setSortedDuplicates(false); //tried commented this out as well

// Create the database
std_db = new Database("name.db", null, dbConfig); //delcared as a private variable

我一直在搜索网页的最后一小时,当输入的新密钥与现有密钥匹配时,密钥/数据对会发生什么。根据API,当前数据将被新数据覆盖,但在我的程序中似乎并非如此。任何人都知道如何使它成为如果我放入数据库并且密钥存在它将覆盖旧数据?

我在考虑先删除旧密钥,然后再添加新的密钥/数据组合,但这个解决方案是一种解决办法,只会增加不必要的开销。

提前致谢:)

1 个答案:

答案 0 :(得分:1)

我认为database.put()就是解决方案。根据以下链接:

Db :: put方法将键/数据对存储在数据库中。 Db :: put函数的默认行为是输入新的密钥/数据对,如果不允许重复,则替换任何以前存在的密钥,或者如果允许重复,则添加重复的数据项。如果数据库支持重复项,则Db :: put方法会在重复集的末尾添加新数据值。如果数据库支持已排序的重复项,则会将新数据值插入正确的排序位置。

http://web.deu.edu.tr/doc/berkeley/berkeleyDB/api_cxx/db_put.html