如何有效地将钥匙保存在Aerospike中?

如何有效地将钥匙保存在Aerospike中?

问题描述:

对于数据量不是很大的情况,我们将所有密钥都存储在List中的一个bin中。如何有效地将钥匙保存在Aerospike中?

但是bin的大小有限制。

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

现在我们有一些集合,其中有很多记录和密钥。什么是最好的方式来存储所有的密钥,或者有一些方法可以让它快速,没有scanAll?

+0

不知道我完全理解,这是否有帮助:http://www.aerospike.com/apidocs/java/com/aerospike/client/policy/Policy.html#sendKey – kporter

+0

@kporter,我已经他们。但问题是快速获取它们。 –

由于存在4K个逻辑分区,扫描小型组当前是低效率的操作,并且扫描线程必须在扫描期间减少每个分区。小集合不一定在所有分区中都有记录,所以你需要花费不计的扫描开销。这在未来的版本中可能会发生变化,但现在是这种情况。

有两种方式来获得所有记录在一组速度快:

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