はじめに
前の記事で、AerospikeをWindows11上にDockerで起動する方法を説明しました。
この記事では、起動してAerospikeを使ってみます。
環境は、前回のWindows11上のDockerを想定していますが、他のDockerを使える環境でも同様です。
AerospikeのデータのCRUD操作
Aerospikeを本格的に使用する場合は、Aerospike Client Libraryを使用しプログラムを開発していただくか、Connectorを経由し他のシステムからアクセスしていただく必要があります。
ここでは、テストなどで使用する、簡単にデータのCRUDを行う方法を記載します。
テストのためなどでデータのCRUDを行うツールとして、Aerospikeからaqlというツールが提供されています。
https://docs.aerospike.com/tools/aql
-
aqlの実行
aqlは、linux環境とmacにインストールして利用することもできますが、ここではdockerで起動します。
Ubuntから以下を実行してください。sudo docker run -it aerospike/aerospike-tools aql --host=$(sudo docker inspect -f '{{.NetworkSettings.IPAddress }}' [コンテナ名])
[コンテナ名]は上記のaerospikeのコンテナ名に変更してください。
Docker以外の環境にアクセスする場合は、--host=
の後にIPアドレスかホスト名を指定してください。 -
使用方法
aqlの使用方法は、aql>
プロンプトにhelp
と入力すると表示されます。aql> help
Aerospikeにアクセスするには、対象となるnamespaceの名称が必要です。dockerで起動したAerospikeでは
test
というnamespaceが作成されています。確認する方法は、以下になります。aql> show namespaces +------------+ | namespaces | +------------+ | "test" | +------------+ [172.17.0.2:3000] 1 row in set (0.010 secs) OK
-
レコードの作成
Aerospikeではレコードの作成と更新は同じコマンドになります。ここではレコードの作成を説明します。
以下では、KEYを数値で1234
、name
というbinにnakadai
、age
というbinに22
という値でレコードを作成します。
RDBのテーブルに該当するsetは、employee
とします。
作成・更新の仕様は以下の通りです。INSERT INTO <ns>[.<set>] (PK, <bins>) VALUES (<key>, <values>)
以下でレコードが作成できます。
aql> insert into test.employee (PK,name,age) values (1234,'nakadai',22) OK, 1 record affected.
-
レコードの参照
参照の仕様は以下の通りです。SELECT <bins> FROM <ns>[.<set>] SELECT <bins> FROM <ns>[.<set>] WHERE PK = <key>
HELPには、binの値を使った参照方法が表示されますが、それを利用するためには対象のbinにsecondary indexを追加する必要があります。そのため、ここでは説明は省略します。
実際に、前に作成したレコードを参照します。
setに含まれるレコードすべてを表示する方法は以下の通りです。aql> select * from test.employee +------+-----------+-----+ | PK | name | age | +------+-----------+-----+ | 1234 | "nakadai" | 22 | +------+-----------+-----+ 1 row in set (0.024 secs) OK
KEYを指定して表示する方法は以下の通りです。
aql> select * from test.employee where pk=1234 +------+-----------+-----+ | PK | name | age | +------+-----------+-----+ | 1234 | "nakadai" | 22 | +------+-----------+-----+ 1 row in set (0.000 secs) OK
-
レコードの更新
前に記載した通り、レコードの作成と更新は同じコマンドになります。ここではレコードの更新を説明します。
先ほど作成したレコードのage
のみを更新し、更新結果を表示します。aql> insert into test.employee (PK,age) values (1234,23) OK, 1 record affected. aql> select * from test.employee where pk=1234 +------+-----------+-----+ | PK | name | age | +------+-----------+-----+ | 1234 | "nakadai" | 23 | +------+-----------+-----+ 1 row in set (0.000 secs) OK
-
レコードの削除
レコードの削除の仕様は以下の通りです。DELETE FROM <ns>[.<set>] WHERE PK = <key>
以下で、先ほど作成したレコードが削除できます。
aql> delete from test.employee where pk=1234 OK, 1 record affected. aql> select * from test.employee where pk=1234 Error: (2) 172.17.0.2:3000 AEROSPIKE_ERR_RECORD_NOT_FOUND
以上が基本的なaqlの使用方法です。
このツールはあくまでもテストや確認用のツールです。
RDBでselect文を使用するように、このツールや言語仕様はご利用いただけませんので、ご注意ください。
Aerospikeの管理
Aerospikeのレコード数やメモリ等の仕様情報の確認、設定の変更をするツールが、asadmです。
https://docs.aerospike.com/tools/asadm
-
asadmの実行
asadmは、linux環境とmacにインストールして利用することもできますが、ここではdockerで起動します。
Ubuntから以下を実行してください。sudo docker run -it aerospike/aerospike-tools asadm --host=$(sudo docker inspect -f '{{.NetworkSettings.IPAddress }}' [コンテナ名])
[コンテナ名]は上記のaerospikeのコンテナ名に変更してください。
Docker以外の環境にアクセスする場合は、--host=
の後にIPアドレスかホスト名を指定してください。 -
使用方法
asadmの使用方法は、Admin>
プロンプトにhelp
と入力すると表示されます。Admin> help
-
概要の表示
Aerospikeの概要の表示は、以下のように、summary
と入力してください。Admin> summary ~~~~~~~~~~~~~~~~~~Cluster Summary~~~~~~~~~~~~~~~~~~~ Migrations |False Server Version |E-6.1.0.3 OS Version |-- Cluster Size |1 Devices Total |1 Devices Per-Node |1 Devices Equal Across Nodes|True Memory Total |1.000 GB Memory Used |0.000 B Memory Used % |0.0 Memory Avail |1.000 GB Memory Avail% |100.0 Device Total |4.000 GB Device Used |0.000 B Device Used % |0.0 Device Avail |3.960 GB Device Avail% |99.0 License Usage Latest |0.000 B Active |0 Total |1 Active Features |KVS,Primary Index Query Number of rows: 21 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Namespace Summary~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Namespace|~~~~Drives~~~~|~~~~~~~Memory~~~~~~~|~~~~~~~Device~~~~~~~|Replication| Master|~License~ |Total|Per-Node| Total|Used|Avail%| Total|Used|Avail%| Factors|Objects|~~Usage~~ | | | | %| | | %| | | | Latest test | 1| 1|1.000 GB| 0.0| 100.0|4.000 GB| 0.0| 99.0| 1|0.000 | 0.000 B Number of rows: 1
-
詳細の表示
Aerospikeの詳細の表示は、以下のように、info
と入力してください。Admin> info ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Network Information (2022-12-26 16:35:47 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Node| Node ID| IP| Build|Migrations|~~~~~~~~~~~~~~~~~~Cluster~~~~~~~~~~~~~~~~~~|Client| Uptime | | | | |Size| Key|Integrity| Principal| Conns| 172.17.0.2:3000|*BB9020011AC4202|172.17.0.2:3000|E-6.1.0.3| 0.000 | 1|C31E67B4DB7B|True |BB9020011AC4202| 7|03:18:11 Number of rows: 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Namespace Usage Information (2022-12-26 16:35:47 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Namespace| Node| Total|Expirations|Evictions| Stop|~~~~~~~~~~Device~~~~~~~~~~|~~~~~~~~~~Memory~~~~~~~~~|~Primary~ | |Records| | |Writes| Used|Used%|HWM%|Avail%| Used|Used%|HWM%|Stop%|~~Index~~ | | | | | | | | | | | | | | Type test |172.17.0.2:3000|0.000 | 0.000 | 0.000 |False |0.000 B | 0.0| 0| 99|0.000 B | 0.0| 0| 90|shmem test | |0.000 | 0.000 | 0.000 | |0.000 B | 0.0| | |0.000 B | 0.0| | | Number of rows: 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Namespace Object Information (2022-12-26 16:35:47 UTC)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Namespace| Node|Rack| Repl| Total|~~~~~~~~~~Objects~~~~~~~~~~|~~~~~~~~~Tombstones~~~~~~~~|~~~~Pending~~~~ | | ID|Factor|Records| Master| Prole|Non-Replica| Master| Prole|Non-Replica|~~~~Migrates~~~ | | | | | | | | | | | Tx| Rx test |172.17.0.2:3000| 0| 1|0.000 |0.000 |0.000 | 0.000 |0.000 |0.000 | 0.000 |0.000 |0.000 test | | | |0.000 |0.000 |0.000 | 0.000 |0.000 |0.000 | 0.000 |0.000 |0.000 Number of rows: 1
-
その他の操作
asadmでは、他に設定の確認、設定の変更、パーティションの確認など様々な機能があります。
サイトやhelpでご確認ください。また、何かご質問があればお気軽にコメントください。
TOOLSの利用
上記のaqlとasadmは、aerospike-toolsに含まれるツールです。
他にも様々なツールがあります。
https://docs.aerospike.com/tools
これらのツールをdockerで使用するための情報は以下をご覧ください。
https://hub.docker.com/r/aerospike/aerospike-tools
このdockerで提供するaerospike-toolは、以下で構成されます。
- asinfo
- 設定の確認、変更を行う。
- asadm
- 前述の通り、クラスターの管理を行う。上記のasinfoはノード毎の管理になるが、asadmではすべてのノードの管理を同時に行うことができる。
- asloglatency
- ログファイルから、latencyとThrouphputを表示する。
- aql
- 前述の通り、レコードの管理を行う。
- asbackup
- レコードのバックアップを行う。
- asrestore
- バックアップされたレコードのリストアを行う。
- asbenchmark
- Aerospikeのベンチマークを実施する。
- asvalidation
- サーバーのバージョンアップに伴うデータの整合性のチェックを行う。
- asloader
- JSONファイルからレコードを追加する。
上記の説明は以下をご覧ください。
https://docs.aerospike.com/tools/deploy_guides/docker/tools#usage
最後に
以上で、Aerospikeは周辺ツールも充実しています。
ぜひこれらを使って、Aerospikeを身近に感じていただければ幸いです。
また、複数ノード対応やAerospike Client Libraryの使用方法なども、今後記載していきます。