Aerospike(以下简称Spike)
Spike的AQL工具为DB、UDF和index管理提供了类似SQL命令行的接口。但Spike不支持标准SQL作为查询或管理语言。
如下是个人基于Spike4.5.X版本对AQL命令(COMMANDS)的一些梳理总结。

1.DDL

CREATE INDEX <index> ON <ns>[.<set>] (<bin>) NUMERIC|STRING|GEO2DSPHERE
CREATE LIST/MAPKEYS/MAPVALUES INDEX <index> ON <ns>[.<set>] (<bin>) NUMERIC|STRING|GEO2DSPHERE
DROP INDEX <ns>[.<set>] <index>
Examples:CREATE INDEX idx_foo ON test.demo (foo) NUMERICDROP INDEX test.demo idx_foo

2.MANAGE UDFS

REGISTER MODULE '<filepath>'
REMOVE MODULE <filename><filepath> is file path to the UDF module(in single quotes).<filename> is file name of the UDF module.Examples:REGISTER MODULE '~/test.lua'REMOVE MODULE test.lua

3.USER ADMINISTRATION

CREATE USER <user> PASSWORD <password> ROLE[S] <role1>,<role2>...pre-defined roles: read|read-write|read-write-udf|sys-admin|user-admin
DROP USER <user>
SET PASSWORD <password> [FOR <user>]
GRANT ROLE[S] <role1>,<role2>... TO <user>
REVOKE ROLE[S] <role1>,<role2>... FROM <user>
CREATE ROLE <role> PRIVILEGE[S] <priv1[.ns1[.set1]]>,<priv2[.ns2[.set2]]>...priv: read|read-write|read-write-udf|sys-admin|user-admin|data-adminns:   namespace.  Applies to all namespaces if not set.set:  set name.  Applie to all sets within namespace if not set.sys-admin, user-admin and data-admin can't be qualified with namespace or set.
DROP ROLE <role>
GRANT PRIVILEGE[S] <priv1[.ns1[.set1]]>,<priv2[.ns2[.set2]]>... TO <role>
REVOKE PRIVILEGE[S] <priv1[.ns1[.set1]]>,<priv2[.ns2[.set2]]>... FROM <role>

4.DML

INSERT INTO <ns>[.<set>] (PK, <bins>) VALUES (<key>, <values>)
DELETE FROM <ns>[.<set>] WHERE PK = <key>
TRUNCATE <ns>[.<set>] [upto <LUT>]<ns> is the namespace for the record.<set> is the set name for the record.<key> is the record's primary key.<bins> is a comma-separated list of bin names.<values> is comma-separated list of bin values, which may include type cast expressions. Set to NULL (case insensitive & w/o quotes) to delete the bin.<LUT> is last update time upto which set or namespace needs to be truncated. LUT is either nanosecond since Unix epoch like 1513687224599000000 or in date string in format like "Dec 19 2017 12:40:00".Type Cast Expression Formats:CAST(<Value> AS <TypeName>)<TypeName>(<Value>)Supported AQL Types:Bin Value Type                    Equivalent Type Name(s)===============================================================Integer                           DECIMAL, INT, NUMERICFloating Point                    FLOAT, REALAerospike CDT (List, Map, etc.)   JSONAerospike List                    LISTAerospike Map                     MAPGeoJSON                           GEOJSONString                            CHAR, STRING, TEXT, VARCHAR===============================================================[Note:  Type names and keywords are case insensitive.]Examples:INSERT INTO test.demo (PK, foo, bar) VALUES ('key1', 123, 'abc')INSERT INTO test.demo (PK, foo, bar) VALUES ('key1', CAST('123' AS INT), JSON('{"a": 1.2, "b": [1, 2, 3]}'))INSERT INTO test.demo (PK, foo, bar) VALUES ('key1', LIST('[1, 2, 3]'), MAP('{"a": 1, "b": 2}'))INSERT INTO test.demo (PK, gj) VALUES ('key1', GEOJSON('{"type": "Point", "coordinates": [124, -456.7]}'))DELETE FROM test.demo WHERE PK = 'key1'

5.INVOKING UDFS

INVOKING UDFSEXECUTE <module>.<function>(<args>) ON <ns>[.<set>]EXECUTE <module>.<function>(<args>) ON <ns>[.<set>] WHERE PK = <key>EXECUTE <module>.<function>(<args>) ON <ns>[.<set>] WHERE <bin> = <value>EXECUTE <module>.<function>(<args>) ON <ns>[.<set>] WHERE <bin> BETWEEN <lower> AND <upper><module> is UDF module containing the function to invoke.<function> is UDF to invoke.<args> is a comma-separated list of argument values for the UDF.<ns> is the namespace for the records to be queried.<set> is the set name for the record to be queried.<key> is the record's primary key.<bin> is the name of a bin.<value> is the value of a bin.<lower> is the lower bound for a numeric range query.<upper> is the lower bound for a numeric range query.Examples:EXECUTE myudfs.udf1(2) ON test.demoEXECUTE myudfs.udf1(2) ON test.demo WHERE PK = 'key1'

6.OPERATE

6.1.OPERATE

OPERATE <op(<bin>, params...)>[with_policy(<map policy>),] [<op(<bin>, params...)> with_policy (<map policy>) ...] ON <ns>[.<set>] where PK=<key><op> name of operation to perform.<bin> is the name of a bin.<params> parameters for operation.<map policy> map operation policy.<ns> is the namespace for the records to be queried.<set> is the set name for the record to be queried.<key> is the record's primary key.

6.2.OP

    LIST_APPEND (<bin>, <val>)LIST_INSERT (<bin>, <index>, <val>)LIST_SET    (<bin>, <index>, <val>)LIST_GET    (<bin>, <index>)LIST_POP    (<bin>, <index>)LIST_REMOVE (<bin>, <index>)LIST_APPEND_ITEMS (<bin>, <list of vals>)LIST_INSERT_ITEMS (<bin>, <index>, <list of vals>)LIST_GET_RANGE    (<bin>, <startindex>[, <count>])LIST_POP_RANGE    (<bin>, <startindex>[, <count>])LIST_REMOVE_RANGE (<bin>, <startindex>[, <count>])LIST_TRIM         (<bin>, <startindex>[, <count>])LIST_INCREMENT    (<bin>, <index>, <numeric val>)LIST_CLEAR        (<bin>)LIST_SIZE         (<bin>)MAP_PUT             (<bin>, <key>, <val>) [with_policy (<map policy>)]MAP_PUT_ITEMS       (<bin>, <map>)  [with_policy (<map policy>)]MAP_INCREMENT       (<bin>, <key>, <numeric val>) [with_policy (<map policy>)]MAP_DECREMENT       (<bin>, <key>, <numeric val>) [with_policy (<map policy>)]MAP_GET_BY_KEY      (<bin>, <key>)MAP_REMOVE_BY_KEY   (<bin>, <key>)MAP_GET_BY_VALUE    (<bin>, <value>)MAP_REMOVE_BY_VALUE (<bin>, <value>)MAP_GET_BY_INDEX    (<bin>, <index>)MAP_REMOVE_BY_INDEX (<bin>, <index>)MAP_GET_BY_RANK     (<bin>, <rank>)MAP_REMOVE_BY_RANK  (<bin>, <rank>)MAP_REMOVE_BY_KEY_LIST    (<bin>, <list of keys>)MAP_REMOVE_BY_VALUE_LIST  (<bin>, <list of vals>)MAP_GET_BY_KEY_RANGE      (<bin>, <startkey>, <endkey>)MAP_REMOVEBY_RANGE        (<bin>, <startkey>, <endkey>)MAP_GET_BY_VALUE_RANGE    (<bin>, <startval>, <endval>)MAP_REMOVE_BY_VALUE_RANGE (<bin>, <startval>, <endval>)MAP_GET_BY_INDEX_RANGE    (<bin>, <startindex>[, <count>])MAP_REMOVE_BY_INDEX_RANGE (<bin>, <startindex>[, <count>])MAP_GET_BY_RANK_RANGE     (<bin>, <startrank> [, <count>])MAP_REMOVE_BY_RANK_RANGE  (<bin>, <startrank> [, <count>])MAP_CLEAR     (<bin>)MAP_SET_TYPE  (<bin>, <map type>)MAP_SIZE      (<bin>)TOUCH   ()READ    (<bin>)WRITE   (<bin>, <val>)PREPEND (<bin>, <val>)APPEND  (<bin>, <val>)INCR    (<bin>, <numeric val>)

6.3.MAP_POLICY

    AS_MAP_UNORDEREDAS_MAP_KEY_ORDEREDAS_MAP_KEY_VALUE_ORDEREDAS_MAP_UPDATEAS_MAP_UPDATE_ONLYAS_MAP_CREATE_ONLY

6.4.Examples

    OPERATE LIST_APPEND(listbin, 1), LIST_APPEND(listbin2, 10) ON test.demo where PK = 'key1'OPERATE LIST_POP_RANGE(listbin, 1, 10) ON test.demo where PK = 'key1'

7.QUERY

    SELECT <bins> FROM <ns>[.<set>]SELECT <bins> FROM <ns>[.<set>] WHERE <bin> = <value>SELECT <bins> FROM <ns>[.<set>] WHERE <bin> BETWEEN <lower> AND <upper>SELECT <bins> FROM <ns>[.<set>] WHERE PK = <key>SELECT <bins> FROM <ns>[.<set>] IN <indextype> WHERE <bin> = <value>SELECT <bins> FROM <ns>[.<set>] IN <indextype> WHERE <bin> BETWEEN <lower> AND <upper>SELECT <bins> FROM <ns>[.<set>] IN <indextype> WHERE <bin> CONTAINS <GeoJSONPoint>SELECT <bins> FROM <ns>[.<set>] IN <indextype> WHERE <bin> WITHIN <GeoJSONPolygon><ns> is the namespace for the records to be queried.<set> is the set name for the record to be queried.<key> is the record's primary key.<bin> is the name of a bin.<value> is the value of a bin.<indextype> is the type of a index user wants to query. (LIST/MAPKEYS/MAPVALUES)<bins> can be either a wildcard (*) or a comma-separated list of bin names.<lower> is the lower bound for a numeric range query.<upper> is the lower bound for a numeric range query.Examples:SELECT * FROM test.demoSELECT * FROM test.demo WHERE PK = 'key1'SELECT foo, bar FROM test.demo WHERE PK = 'key1'SELECT foo, bar FROM test.demo WHERE foo = 123SELECT foo, bar FROM test.demo WHERE foo BETWEEN 0 AND 999SELECT * FROM test.demo WHERE gj CONTAINS CAST('{"type": "Point", "coordinates": [0.0, 0.0]}' AS GEOJSON)

8.AGGREGATION

    AGGREGATE <module>.<function>(<args>) ON <ns>[.<set>]AGGREGATE <module>.<function>(<args>) ON <ns>[.<set>] WHERE <bin> = <value>AGGREGATE <module>.<function>(<args>) ON <ns>[.<set>] WHERE <bin> BETWEEN <lower> AND <upper><module> is UDF module containing the function to invoke.<function> is UDF to invoke.<args> is a comma-separated list of argument values for the UDF.<ns> is the namespace for the records to be queried.<set> is the set name for the record to be queried.<key> is the record's primary key.<bin> is the name of a bin.<value> is the value of a bin.<lower> is the lower bound for a numeric range query.<upper> is the lower bound for a numeric range query.Examples:AGGREGATE myudfs.udf2(2) ON test.demo WHERE foo = 123AGGREGATE myudfs.udf2(2) ON test.demo WHERE foo BETWEEN 0 AND 999

9.EXPLAIN

    EXPLAIN SELECT * FROM <ns>[.<set>] WHERE PK = <key><ns> is the namespace for the records to be queried.<set> is the set name for the record to be queried.<key> is the record's primary key.Examples:EXPLAIN SELECT * FROM test.demo WHERE PK = 'key1'

10.info

    SHOW NAMESPACES | SETS | BINS | INDEXESSHOW SCANS | QUERIESSTAT NAMESPACE <ns> | INDEX <ns> <indexname>STAT SYSTEMASINFO <ASInfoCommand>

10.1.Show namespaces

10.2.Show sets

10.3.Show bins

10.4.Show indexs

10.5.show queries

10.6.show scans

10.7.stat namespace

10.8.stat system

11.Job

JOB MANAGEMENTKILL_QUERY <transaction_id>KILL_SCAN <scan_id>

12.User

USER ADMINISTRATIONSHOW USER [<user>]SHOW USERSSHOW ROLE <role>SHOW ROLES

13.udf

MANAGE UDFSSHOW MODULESDESC MODULE <filename><filepath> is file path to the UDF module(in single quotes).<filename> is file name of the UDF module.Examples:SHOW MODULESDESC MODULE test.luaRUN <filepath>SYSTEM <bash command>

KV存储-Aerospike之AQL的命令(COMMANDS)相关推荐

  1. KV存储-Aerospike之索引(Index)

    Aerospike(以下简称Spike) 索引的作用是加快对存储记录的查找或排序,Spike中的索引分两种,分别为一级索引(Primary-Index)和二级索引(Secondary-Index),两 ...

  2. KV存储-Aerospike之功能限制

    Aerospike(以下简称Spike) 虽然Spike有许多优点(如高性能.无热点.线性扩展.混合架构等),但在程序开发过程中存在诸多不足(或称坑点),要想在业务中合理的使用必须提前熟悉各功能的限制 ...

  3. KV存储-Aerospike之AP与CP模式

    Aerospike(以下简称Spike) 1.从Spike 3.0开始,它是一个AP数据库,即在各种网络分区情况下提供可用性而不是一致性的数据库.Spike 3.0不提供在事务期间保持记录一致复制所需 ...

  4. 常用的高性能 KV 存储 Redis、Memcached、etcd、Zookeeper 区别

    1. 什么是 KV 存储 KV 是 Key-Value 的缩写,KV 存储也叫键值对存储.简单来说,它是利用 Key 做索引来实现数据的存储.修改.查询和删除功能. 常用的高性能 KV 存储主要有 R ...

  5. etcd 笔记(06)— Client 结构定义、客户端(初始化、KV存储Get、Put、事务 Txn、压缩 Compact、Watch、Lease

    1. Client 定义 Client 定义如下: type Client struct {ClusterKVLeaseWatcherAuthMaintenance// 认证的用户名Username ...

  6. 加强版Redis,又一款国产高性能KV存储数据库开源了!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:腾讯开源 项目简介 Tendis是腾讯互娱CROS ...

  7. Go实现简单的K-V存储

    Go实现简单的K-V存储 使用Go实现简单的K-V存储,包括基本的增删改查功能. 本节代码将实现K-V存储的四个基本功能: 添加新元素 基于key删除已有的元素 给定key查找对应value 修改ke ...

  8. 如何基于MySQL及Redis搭建统一的kv存储服务 | 秦波

    一.MySQL+Redis常用部署方式 1.1  拓扑 1.2  特点 业务层通过双写同时写MySQL及Redis.读通常在Redis,若读取不到,则从MySQL读取,然后将数据同步到Redis,Re ...

  9. 完整mes代码(含客户端和server端_200行代码实现基于paxos的kv存储

    本文链接: https://blog.openacid.com/algo/paxoskv/ 前言 写完 paxos的直观解释 之后, 网友都说疗效甚好, 但是也会对这篇教程中一些环节提出疑问(有疑问说 ...

最新文章

  1. 5G NR — 射频系统
  2. 《x86汇编语言:从实模式到保护模式》视频来了
  3. AutoMapper之投影
  4. mysql健康检查脚本_MySQL服务健康检查脚本
  5. 贝索斯前妻再捐2.81亿美元
  6. java random产生随机数_Random随机数
  7. React Native重构路线图发布!
  8. 万年历算法介绍(C程序)
  9. VMware 8.02虚拟机安装MAC lion 10.7.3教程 附送原版提取镜像InstallESD.iso!
  10. ubuntu 22.0 不能调节屏幕亮度
  11. Android打字机动画,Android自定义View实现打字机效果
  12. html5的div是什么意思,div是什么意思?
  13. 快速构建一款 AR App 入门指南
  14. 如何写出一篇好文章——不动笔就能学会写文章的训练法
  15. 【ParaView教程】第一章 导言
  16. 7-DoG(差分高斯,Difference of Gaussina)
  17. 思之以实,取之以略,行之以果
  18. 【Java架构师入门到精通】分布式架构原理解析
  19. 数控加工仿真系统的使用介绍(下)
  20. Python图像处理库PIL中图像格式转换

热门文章

  1. 嘉宾阵容公布,开源社邀请您参加 Impact Tech, She Can 2023
  2. 【L2-021 点赞狂魔】天梯赛L2系列详细解析
  3. 30分钟初步掌握LaTeX--转自新浪博客
  4. winbox配置静态IP上网步骤
  5. 删除的照片如何恢复?SD卡数据恢复妙招
  6. 12.看板方法——度量和管理报告笔记
  7. dllcache“转移”到别的盘
  8. 运筹说 第87期 | 网络计划-时间参数的计算
  9. AVOS Cloud 学习笔记(一) 简介和入门
  10. 学习从现在开始!免费计算机技术教程网站大汇聚!