【问题标题】:How to execute pure aql query?如何执行纯aql查询?
【发布时间】:2017-06-08 01:04:24
【问题描述】:

我将Official Aerospike Package 用于golang。

有没有办法得到所有现有索引的列表?

aql> 显示索引

我还没有找到任何方法来执行纯 aql 查询。

我该怎么做?

更新: 我正在寻找与此类似的东西,但对于 aerospike (来自 Rails 的示例) custom_query = "select * from users" result = ActiveRecord::Base.connection.execute(custom_query)

【问题讨论】:

    标签: go aerospike aql


    【解决方案1】:

    aql>显示索引 是一个有效的 aql 命令,应该会显示您当前在服务器上拥有的所有二级索引。

    aql 在下面运行 C api。您可以在基本级别上使用 aql 做几乎所有事情。 键入:aql>help 它会将所有 aql 命令扔给您,剪切和粘贴! aql 还将命令历史记录存储在文本文件中 - 因此在会话中持续存在。 aql>run 'filepath/filename' 是将所有 aql 命令存储在文本文件中并运行它们的便捷方式。

    Re: aql 查询 -- 看看: select * from ns. where ... 如果您已经预先构建了二级索引,您可以进行相等和范围查询。

    Aerospike 版本 3.12+ 引入了谓词过滤 - 即 ~ 复杂查询 - 我认为 aql 尚未更新以运行这些。

    HTH。

    【讨论】:

    • 感谢您的回答!看来我的问题不够具体。主要问题是在 golang 的 aerospike 库中。我在库中找不到方法,它将接受查询字符串和参数,执行它并返回结果。我正在寻找类似的东西(来自 Rails 的示例)ActiveRecord::Base.connection.execute( "select * from users")
    • 我怀疑你能否做到这一点。 Aerospike 不“理解” SQL 或类似 SQL 的命令。 AQL 标记并解析您的字符串,然后将它们转换为带有参数的 Aerospike C 函数调用。因此,与客户端 API 相比,AQL 的能力有限。据我所知,没有 Aerospike 客户端会解析类似 SQL 的查询字符串,然后使用 api 格式将重新制定的查询发送到 Aerospike 服务器。
    • 是的,我明白了,我提供了 SQL 作为示例。当然,我不希望 NoSQL 数据库“理解”和处理 SQL:D
    • 查看 NewExecuteTask 和语句结构。 godoc.org/github.com/aerospike/aerospike-client-go#Statement 也看看NewPredExp...谓词过滤可以对二级索引查询或扫描的结果进行。
    【解决方案2】:

    AQL 是一种管理和数据浏览工具。这不是真正的 Aerospike 的 SQL,因为 Aerospike 本身并没有实现查询语言。相反,所有 Aerospike 客户端都为您提供了一个 API 来进行直接获取、放置、扫描、查询调用,这些是程序性的,而不是像 SQL 那样的声明性(您在其中声明您想要的结果,服务器会计算出一个查询计划)。 Piyush 提到了谓词过滤 API,它非常棒,可以让您通过扫描和二级索引查询创建复杂的查询。

    特别是关于获取所有索引的问题,这是您应该使用 info 命令的类型。 Aerospike 允许您通过它获取和设置配置参数,并获取广泛的指标、运行微基准测试等。管理和监控所需的一切。

    您可以通过独立的asinfo 工具运行sindex,也可以使用任何客户端提供的info command 调用它。

    asinfo -v "sindex"
    

    【讨论】:

    • 谢谢!这正是我要找的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    相关资源
    最近更新 更多