如何获得BerkeleyDB中的值的大小?

时间:2010-04-13 12:04:53

标签: database berkeley-db berkeley-db-je

有没有办法只获取存储在BDB中的值的长度(以字节为单位)?我不需要整个数据数组,只需要它的大小。

4 个答案:

答案 0 :(得分:2)

如果您不想检索整个条目并且不使用DPL,我会说您应该在存储的字节数组的大小上添加二级索引,并确保您的DAO正确更新此任何保存或更新的价值。您可以添加KeyCreator,根据记录在辅助数据库中创建辅助size密钥。

您尝试执行哪种类型的查询?您想搜索给定大小的所有记录吗?或者您想要在检索之前知道某个记录的大小?我认为后一个问题更难回答。

答案 1 :(得分:0)

我假设您正在使用JE版本(或BDB的Java绑定),在这种情况下,一旦获得所需密钥的DatabaseEntry,getSize()应该为您提供所需的内容。

如果您正在使用C绑定,请检查DBT句柄的大小字段。

答案 2 :(得分:0)

如果将文档ID存储为重复数据项而不是一个blob数据项值,则可以使用DBC-> count()来检测匹配文档的数量,而无需实际检索长ID列表。否则,Berkeley DB API似乎不支持您所要求的内容(即使您认为它们可以有效地添加它)。我也对此感到困惑,这就是我为自己的项目提出的解决方案。

答案 3 :(得分:0)

对于您的问题,使用DB_DBT_PARTIAL标志,请求记录的开头将提供您的第一个ID,DBT.size可用于计算ID的总数。

相关问题