4

在进行 AQL 选择时如何包含 PK?

例子:

从 test.users 中选择 *

回报:

名字、姓氏等

我真正想知道的是 PK 或密钥,所以我可以删除一行。如何在 SELECT AQL 语句中包含 PK。

4

3 回答 3

7

默认情况下,Aerospike 不会在数据库中存储实际的主键。它默认存储 20 字节的摘要(密钥的散列)。这对于大键来说将是一个巨大的节省。但是,在最新版本中,这可以通过 put() 操作更改以存储密钥。但 AQL 客户端尚未增强以利用这一事实。我将为此增强功能提交内部票证。

同时...

  1. option-1:您可以备份您的数据,这也将以 base64 编码格式转储摘要(密钥哈希)。您可以使用这些摘要来删除记录。
  2. option-2:如果您使用 C/Java 或任何 API 编写扫描代码,您也将获得摘要列表。您可以使用它们来删除记录。
于 2014-07-07T18:43:45.983 回答
2

要从集合中删除数据 - 要从集合中删除记录,您可以使用 scanAll API 遍历所有记录并删除。在 scanCallback 调用期间,它获取每条记录的摘要键并删除。这是参考链接

http://www.aerospike.com/community/labs/deleting_sets_and_data.html

一旦我们通过 AQL 扩展了检索主索引的功能,那么您可以检索您创建的主索引键,但通过调用WritePolicy类的sendKey属性确保您已存储键。SendKey 发送用户定义的密钥以及记录放置的哈希摘要。默认情况下不发送。

于 2014-10-27T17:57:51.193 回答
1

替代解决方案

创建额外的 bin 来保存主键并对其进行索引。然后,您可以使用 AQL 语句检索此主键。

于 2014-10-02T17:28:41.263 回答