はじめに
今年、2023年6月1日に、Cassandra Dayが日本でも開催されます。
Cassandra Dayは、昨年、ベルリン、ロンドン、アムステルダム、ハノイ、ジャカルタ、ヒューストン、サンタクララ、シアトル、シンガポールでも開催されました。
今回の東京での開催に向けて、Apache Cassandraに関する記事を発表していきます。
Apache Cassandraについて
Apache Cassandraとは、一言でいうなら、オープンソースの分散データベース管理システムです。
他の分散データベース管理システム同様、複数の汎用サーバーを用いて、ひとつのデータベースを構築します(開発などの目的のため、一つのサーバーのみで構成することも可能です)。
ここでは、詳しい説明は割愛し、興味のある方へのご紹介の役割は、公式サイトやWikipediaに譲ります。
Cassandra学習環境を準備する
コンテナテクノロジーの登場によって、分散アーキテクチャーを持つシステムを試験的に利用する環境の構築は、以前に比べて格段に容易になりました。
Apache Cassandraについて、Docker Official Imageが公開されています。
Dockerが利用可能になっている(インストールされ、起動されている)ことを前提として、Cassandraの利用方法を見ていきます。
※ここでは、M1 Mac(macOS Monterey 12.6.2)とDocker Desktop(4.17.0)を使った確認結果を紹介します。
コンソールから、以下のコマンドを入力します。
docker run -d --name my-cassandra cassandra
次のような出力が確認されるはずです。
% docker run -d --name my-cassandra cassandra
f83b7d143ba22bd3f95f9c447894f9aee1276366dea327e60c69474648db9657
この時点で、Docker Desktopでは、以下のような画面が確認できるでしょう。
起動状況をログで確認します。コンソール上で、以下のコマンドを入力します。
docker logs -f my-cassandra
すると、こんな感じの出力が確認できるはずです。
INFO [main] 2023-05-01 01:08:41,106 CassandraDaemon.java:769 - Startup complete
INFO [CompactionExecutor:1] 2023-05-01 01:08:41,120 CompactionTask.java:247 - Compacted (b5f16f00-e7bc-11ed-92d1-dd560259ddea) 6 sstables to [/var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-7-big,] to level=0. 0.810KiB to 0.659KiB (~81% of original) in 39ms. Read Throughput = 20.432KiB/s, Write Throughput = 16.637KiB/s, Row Throughput = ~2/s. 6 total partitions merged to 1. Partition merge counts were {6:1, }. Time spent writing keys = 21ms
INFO [NonPeriodicTasks:1] 2023-05-01 01:08:41,121 SSTable.java:127 - Deleting sstable: /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-6-big
INFO [NonPeriodicTasks:1] 2023-05-01 01:08:41,122 SSTable.java:127 - Deleting sstable: /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-3-big
INFO [NonPeriodicTasks:1] 2023-05-01 01:08:41,123 SSTable.java:127 - Deleting sstable: /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-2-big
INFO [NonPeriodicTasks:1] 2023-05-01 01:08:41,124 SSTable.java:127 - Deleting sstable: /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-4-big
INFO [NonPeriodicTasks:1] 2023-05-01 01:08:41,124 SSTable.java:127 - Deleting sstable: /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-5-big
INFO [NonPeriodicTasks:1] 2023-05-01 01:08:41,125 SSTable.java:127 - Deleting sstable: /var/lib/cassandra/data/system/local-7ad54392bcdd35a684174e047860b377/nb-1-big
INFO [OptionalTasks:1] 2023-05-01 01:08:51,196 CassandraRoleManager.java:354 - Created default superuser role 'cassandra'
上記引用1行目のように、Startup complete
という文言が出力されているのを確認します。
そしたら、次に以下のコマンドを実行します(その前に、Ctrl+Cを入力してログ出力を止めるか、別のコンソールを利用します)。
docker exec -it my-cassandra cqlsh
以下のような、コマンドプロンプトが出力されます。
% docker exec -it my-cassandra cqlsh
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.1.0 | Cassandra 4.1.0 | CQL spec 3.4.6 | Native protocol v5]
Use HELP for help.
cqlsh>
この段階で、データベースは初期状態ですが、次のコマンドでデフォルトの状態を確認してみます。
desc keyspaces
次のように、システム関連の出力が確認できます。
cqlsh> desc keyspaces
system system_distributed system_traces system_virtual_schema
system_auth system_schema system_views
cqlsh>
cqlsh
コマンドプロンプトから抜けるには、exit
サブコマンドを実行します。
cqlsh> exit
%
最後に
これで、(本稿タイトルである)「Cassandra学習環境を準備する」ことができました。
(今回は説明抜きに手順のみ提示したCQLの利用方法など)さらに学習を進めるための情報、そして、そもそもApache Cassandraとはどんなデータベースなのか、あるいは、(今回は最も単純な形で環境を準備しましたが)より実践的な環境構築の方法など、今後、別の記事として発表していきたいと思います。