java - 如何有效保管气钉中的 key ?

标签 java aerospike

对于数据量不是很大的情况,我们将所有键与 List 一起存储在一个 bin 中。

但 bin 的大小有限制。

Java客户端中的

函数scanAll和ScanCallback实际上运行速度非常慢,因此我们的项目中无法承受。当你给 Aerospike key 时,他的工作速度很快。

现在我们有一些集合,其中有很多记录和 key 。存储所有 key 的最佳方法是什么,或者也许有某种方法可以快速获取它并且无需 scanAll ?

最佳答案

扫描小集目前是一种低效操作,因为有 4K 逻辑分区,并且扫描线程必须在扫描期间减少每个分区。小集不一定在所有分区中都有记录,因此无论如何,您都需要支付扫描这些记录的开销。这可能会在未来的版本中发生变化,但目前情况是这样。

有两种方法可以更快地获取集合中的所有记录:

  1. 如果您确实知道键空间是什么样的,您可以迭代批量读取来获取它们(也可以并行完成)。尝试在批量读取中访问不存在的键不会导致错误,它只是返回时在特定索引中没有值。
  2. 或者,您可以添加具有集合名称的 bin,并在该 bin 上创建二级索引,然后查询所有记录 WHERE setname=XYZ。对于一个小集合来说,这将比扫描更快地返回。

关于java - 如何有效保管气钉中的 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38398888/

相关文章:

java - 检测点击按钮的位置

java - 通过java客户端查询主键 - Aerospike

aerospike - 使用 Aerospike 处理通过键组合定义唯一性的数据

java - spring-data-aerospike `findAll(ids)` 结果返回 NULL

java - 在 aerospike 中实现批量读取的最佳方式

python - Aerospike 节点连接过载 - 全局连接问题

java - 获取 ReadableByteChannel 到 FileOutputStream 的传输速率

java - 在表单之间传递 bundle/ContentValues 和 bundle 之间的 ContentValues 之间的区别

java - 访问另一个类中的公共(public)最终常量?

java - 在不使用 arraylist 的情况下使用 compareTo 在 Java 上排序