【发布时间】:2013-02-18 06:11:34
【问题描述】:
有没有办法只获取存储在 BDB 中的值的长度(以字节为单位)?我不需要整个数据数组,只需要它的大小。
【问题讨论】:
标签: database berkeley-db berkeley-db-je
有没有办法只获取存储在 BDB 中的值的长度(以字节为单位)?我不需要整个数据数组,只需要它的大小。
【问题讨论】:
标签: database berkeley-db berkeley-db-je
如果您不想检索整个条目并且不使用 DPL,我会说您应该在存储的字节数组的大小上添加一个二级索引,并确保您的 DAO 正确更新它任何保存或更新的价值。您可以添加一个KeyCreator,它会根据记录在辅助数据库中创建一个辅助size 键。
您要执行什么类型的查询?您想搜索给定大小的所有记录吗?或者您想在检索某个记录之前知道它的大小?我认为后一个问题更难回答。
【讨论】:
000000 中有 100 个”。目前,该任务已取消,但我可能会创建二级索引。谢谢!
我假设您使用的是 JE 版本(或 BDB 的 Java 绑定),在这种情况下,一旦您获得所需密钥的 DatabaseEntry,getSize() 应该会为您提供所需的内容。
如果您使用的是 C 绑定,请检查 DBT 句柄的大小字段。
【讨论】:
如果您将文档 id 存储为重复数据项,而不是作为一个 blob 数据项值,那么您可以使用 DBC->count() 来检测匹配文档的数量,而无需实际检索一长串 id。否则,Berkeley DB API 似乎不支持您所要求的内容(即使您认为他们添加它可能是有效的)。我也对此感到困惑,这就是我为自己的项目提出的解决方案。
【讨论】:
对于您的问题,使用 DB_DBT_PARTIAL 标志询问记录的开头将为您提供您的第一个 ID,并且 DBT.size 可用于计算 ID 的总数。
【讨论】: