对于数据量不是很大的情况,我们将所有键与 List 一起存储在一个 bin 中。
但 bin 的大小有限制。
Java客户端中的函数scanAll
和ScanCallback实际上运行速度非常慢,因此我们的项目中无法承受。当你给 Aerospike key 时,他的工作速度很快。
现在我们有一些集合,其中有很多记录和 key 。存储所有 key 的最佳方法是什么,或者也许有某种方法可以快速获取它并且无需 scanAll ?
最佳答案
扫描小集目前是一种低效操作,因为有 4K 逻辑分区,并且扫描线程必须在扫描期间减少每个分区。小集不一定在所有分区中都有记录,因此无论如何,您都需要支付扫描这些记录的开销。这可能会在未来的版本中发生变化,但目前情况是这样。
有两种方法可以更快地获取集合中的所有记录:
- 如果您确实知道键空间是什么样的,您可以迭代批量读取来获取它们(也可以并行完成)。尝试在批量读取中访问不存在的键不会导致错误,它只是返回时在特定索引中没有值。
- 或者,您可以添加具有集合名称的 bin,并在该 bin 上创建二级索引,然后查询所有记录
WHERE setname=XYZ
。对于一个小集合来说,这将比扫描更快地返回。
关于java - 如何有效保管气钉中的 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38398888/