AQL - 如何在SELECT中显示PK

时间:2014-07-07 13:28:51

标签: aerospike

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

示例:

来自test.users的SELECT *

返回:

FirstName,LastName等

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

3 个答案:

答案 0 :(得分:7)

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

同时......

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

答案 1 :(得分:2)

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

  

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

一旦我们扩展了通过AQL检索主索引的功能,您就可以检索已创建的主索引键,但通过调用 WritePolicy sendKey 属性确保存储密钥强>上课。 除了记录放置的哈希摘要之外,SendKey还发送用户定义的密钥。默认情况下,它不会被发送。

答案 2 :(得分:1)

替代解决方案

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