LoginSignup
0

More than 1 year has passed since last update.

Aerospikeを使ってみる:Dockerを使ってCRUDのテストと管理

Posted at

はじめに

前の記事で、AerospikeをWindows11上にDockerで起動する方法を説明しました。
この記事では、起動してAerospikeを使ってみます。
環境は、前回のWindows11上のDockerを想定していますが、他のDockerを使える環境でも同様です。

AerospikeのデータのCRUD操作

Aerospikeを本格的に使用する場合は、Aerospike Client Libraryを使用しプログラムを開発していただくか、Connectorを経由し他のシステムからアクセスしていただく必要があります。
ここでは、テストなどで使用する、簡単にデータのCRUDを行う方法を記載します。

テストのためなどでデータのCRUDを行うツールとして、Aerospikeからaqlというツールが提供されています。
https://docs.aerospike.com/tools/aql

  1. 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アドレスかホスト名を指定してください。

  2. 使用方法
    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
    
  3. レコードの作成
    Aerospikeではレコードの作成と更新は同じコマンドになります。ここではレコードの作成を説明します。
    以下では、KEYを数値で1234nameというbinにnakadaiageという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.
    
  4. レコードの参照
    参照の仕様は以下の通りです。

    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
    
  5. レコードの更新
    前に記載した通り、レコードの作成と更新は同じコマンドになります。ここではレコードの更新を説明します。
    先ほど作成したレコードの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
    
  6. レコードの削除
    レコードの削除の仕様は以下の通りです。

    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

  1. 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アドレスかホスト名を指定してください。

  2. 使用方法
    asadmの使用方法は、Admin> プロンプトにhelpと入力すると表示されます。

    Admin> help
    
  3. 概要の表示
    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
    
  4. 詳細の表示
    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
    
  5. その他の操作
    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の使用方法なども、今後記載していきます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0