如何有效保持钥匙在空中飞行?

时间:2016-07-15 14:39:18

标签: java aerospike

对于不是非常大量的数据,我们将所有密钥存储在带有List的一个bin中。

但是bin的大小有限制。

在Java客户端中使用ScanCallback的函数scanAll实际上工作得非常慢,所以我们在项目中负担不起。当你给他钥匙时,Aerospike工作得很快。

现在我们有一些集合,其中有很多记录和密钥。存储所有密钥的最佳方法是什么,或者有一些方法可以快速获得并且没有scanAll?

1 个答案:

答案 0 :(得分:1)

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

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

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