Cassandra Java Driverで、JavaからCassandraを操作する。

以前にも少し試していましたが、改めてCassandraを触っています。

分散データベースApache CassandraをMac OS Xにインストール
CQLを使って、CassandraをSQLライクに操作する。

以前は、Hectorというライブラリを試してみましたが、今回はJava Driverライブラリを使ってみました。

Hectorで、JavaからCassandraを操作する。

Cassandra Java Driverとは?

Hectorと違って、Cassandra Java DriverはCQLでデータアクセス処理が記述できます。

スクリーンショット 2014-09-17 22.35.25

DataStax Java Driver 2.0 For Apache Cassandra Documentation

SQLなら使えるメンバーも多く、学習コストが少なそうです。早速試してみます。

Mavenでプロジェクトに導入する。

ライブラリの導入は、Mavenからおこないました。

<dependency>
	<groupId>com.datastax.cassandra</groupId>
	<artifactId>cassandra-driver-core</artifactId>
	<version>2.1.0</version>
</dependency>

これで完了です。簡単です。

Cassandraに接続

クイックスタートを見ながら、コードを書いていきます。

Connecting to a Cassandra cluster

まずはCassandraへ接続します。接続先ホストを指定して、Clustorインスタンスを作成し、connectメソッドで接続します。

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
Session session = cluster.connect();

これで接続は完了です。

データを追加する。

データを追加してみます。

Using a session to execute CQL statements

executeメソッドでCQLを実行するだけなので単純です。

session.execute("INSERT INTO first_keyspace.first_table (name, value) VALUES ('hoge', 'fuga');");
session.execute("INSERT INTO first_keyspace.first_table (name, value) VALUES ('piyo', 'hage');");

データの追加処理を実行したら、CQLシェルで結果を確認してみます。

cqlsh:first_keyspace> select * from first_table;
 
 name | value
------+-------
 piyo |  hage
 hoge |  fuga
 
(2 rows)

確かに保存されています!

データを削除する。

今度は挿入したデータを削除してみます。

SQLライクに操作できるので、類推で記述できます。

session.execute("DELETE FROM first_keyspace.first_table WHERE name = 'hoge';");

CQLシェルから確認します。

cqlsh:first_keyspace> select * from first_table;
 
 name | value
------+-------
 piyo |  hage
 
(1 rows)

hogeキーのデータが削除されました!

データを更新する。

データの更新もしてみます。

session.execute("UPDATE first_keyspace.first_table SET value = 'hogera' WHERE name = 'piyo';");

CQLシェルから確認します。

cqlsh:first_keyspace> select * from first_table;
 
 name | value
------+--------
 piyo | hogera
 
(1 rows)

更新ができました!

データを取得する。

取得が最後になってしまいましたが、最後にさきほど更新したpiyoキーのデータを、Java Driverから取得してみます。

ここでも使うのはexecuteメソッドですが、戻り値を受けるようにします。

ResultSet resultSet = session.execute("SELECT * FROM first_keyspace.first_table WHERE name = 'piyo';");
for (Row row : resultSet)
	System.out.println(row);

取得結果のRowを表示してみます。

Row[piyo, hogera]

保存されていた値が取得できています!

まとめ

以前はHectorを使って操作してみましたが、今回は、Java Driverを使ってJavaからCassandraを操作してみました。

SQLっぽく操作できるので心理的な障壁がぐっと下がるのは良いです。

実際には、こんな風にクエリを書くことは少なくて、プリペアードステートメントを使いたくなるんですが、それもちゃんと用意されています。

Using bound statements

これで本格的に運用するか検討しようと思います。

About katty0324

Comments are closed.

Scroll To Top