後編GMOクラウド株式会社の芦田です。Cassandraの使い方を紹介します。今回はCassandraに対するデータの書き込みおよび読み出しの方法と、複数ノードでのクラスタの構成方法を解説します。接続の確認まず、前回インストールしたCassandraにコンソールから接続してみましょう。Cassandraにはコンソールベースのクライアントプログラム「cassandra-cli」が付属しています。cassandra-cliコマンドはbinディレクトリにあり、接続先ノードのホスト名(IPアドレス)とポート番号を指定して次のように実行します。quit.[default@unknown]プロンプト1.1このように「[default@unknown]」と出たら、接続に成功してCassandraのコンソールに入った状態ということで、データベースを管理する各種コマンドが使えます。終了するコマンドは「quit;」または「exit;」です。nodetoolというコマンドを使えば、ノードの状態を調べることができます。次のようにホストを指定し、ringオプションを付けてnodetoolコマンドを実行してみましょう。現在クラスタを構成しているノード(今はまだ1ノード)が一覧表示されます。100.00%157601645397734763130615192721786119187プロンプト1.2cassandra.yamlのrcp_addressの項目と、ファイアウォールの設定が正しければ、外部のホスト(本稿の例ではkumolabo-test)からも同様に接続できるはずです。当然ながらクライアント側にもcassandra-cliやnodetoolのプログラムが必要です。この5つ、または「スーパーカラム」を除いた4つをセットにしたものを、データを特定するためのキーとして扱います。この4つないし5つがわかれば、必ず1つのデータを特定できるということです。「キースペース」はRDBでいうところのデータベースにあたるもので、一般的には1つのアプリケーションにつき1つ用意します。「カラムファミリー」はカラムまたはスーパーカラムの集まりです。RDBのテーブルに該当します。「キー」は横方向のデータの集合を扱うもので、RDBの行のようなものです。「スーパーカラム」は複数のカラムを1つのまとまりとして扱う場合に使用します。「カラム」はデータの最小単位で、実際にデータを特定するためのものになります。データの書き込みと読み出しデータを格納するには、まずキースペースとカラムファミリーが必要です。keyspaceコマンドを使って行います。「Keyspace1」という名前のキースペースを作る場合には次のようになります。Keyspace1;プロンプト3.1キースペースが作れたら、useコマンドを使って現在のキースペースを作成したもの(Keyspace1)に変更します。familyコマンドを使います。tableに相当するものですが、あらかじめカラム名を指定しておく必要はありません。4行で1つのコマンドですが、「;」を入力するまでは改行しても実行されません。ここでは文字コードとしてUTF8を使うように指定しています。UTF8Type;プロンプト3.3データの書き込みはsetコマンドを使って、「キー=値(データ)」の形式で行います。[キー]+[カラム]のセット、または[キースペース]+[カラムファミリー]+[キー]+[スーパーカラム]+[カラム]のセットで、文法としては「カラムファミリー[キー][カラム]」のように記述します。次の例はaddressファミリーに対していくつかのデータの書き込んでみるものです。address['kumolabo']['email']=’kumolabo1@example.com’;プロンプト3.4データを読み出す場合はgetコマンドを使います。次のようにgetコマンドにカラムまで指定して渡せば、対象のデータが取得できます。timestamp=1324475461286000)プロンプト3.5カラムまですべて指定しなくても、キーまでを特定すればそのキーに含まれるカラムのデータの一覧が取得できます。timestamp=1324475429966000)プロンプト3.6カラムファミリーの全データを取得したい場合には、次のようにlistコマンドを使います。Publicであれば仮想サーバーを複数立てられるので、せっかくですから複数ノードでクラスタを構成してみましょう。今回は3つのノードで、ノード1はこれまで使ってきたもので、ノード2とノード3も同じ構成で仮想サーバーを構築します。すべてローカルネットワーク上に構築します。cassandra.yamlの設定は、それぞれ次のようなになります(IPは各自の環境に読み替えてください)。xxx.xxx.xxx.1クラスタに参加するために必要なseedとしてノード1のアドレスを指定していることがポイントです。動する必要があります。無事にseedを見つけることができればクラスタに参加してデータの同期が行われます。3ノードとも起動できたらnodetoolコマンドでノードの状態を見てみましょう。対象はどのノードでも構いません。次のように3つのノードがクラスタを構成していることが確認できます。50.00%157601645397734763130615192721786119187プロンプト4.2ノード2(またはノード3)に接続して、addressファミリーのデータにアクセスしてみましょう。次のように、先ほどノード1に登録したものが取得できるはずです。timestamp=1324475542471000)プロンプト4.3このように、複数ノードでクラスタを構成しても、使い方は単一ノードの場合と変わりません。RDBとは根本的なデータ構造が違うので最初は戸惑うかもしれませんが、クラウドのメリットを最大限に生かすために、ぜひNoSQLを使いこなしましょう。技術者向けの導入ガイドGMOクラウドのパートナーさまコラムアフィリエイトクラウド紹介制度サイトマップGMOクラウド株式会社は、ISMS(情報セキュリティマネジメントシステム)の国際規格を2006年11月に取得しました。27017」を2018年10月に認証取得しました。