2010-04-13 38 views

回答

2

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

你试图执行什么类型的查询?你想搜索给定大小的所有记录吗?或者你想在检索之前知道某个记录的大小?我认为后一个问题很难回答。

+0

在我的情况下,存储在密钥下的值是一个非常长的文档ID列表。我希望能够首先检索其中的100个,并向用户显示,例如“100个5000'000”。 目前,该任务被取消,但创建二级索引是我可能做的。谢谢! – Fixpoint 2010-06-01 14:52:25

0

我假设你正在使用JE版本(或BDB的Java绑定),在这种情况下,一旦获得所需密钥的DatabaseEntry,getSize()应该会给你你想要的。

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

+0

我正在寻找一种方法来避免检索整个条目,因为我只需要它的大小。 – Fixpoint 2010-04-14 07:42:34

0

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

0

对于您的问题,使用DB_DBT_PARTIAL标志ang要求开始记录将为您提供您的第一个ID,并且可以使用DBT.size来计算ID的总数。