2013年7月8日月曜日

cassandra cql3 jdbc

Cassandra のSQLライクなQLであるところのCQL3をjdbc越しに使う方法。 どうも昔は、Cassandraのディストリビューションに必要なDriverが入っていた らしいのだけど、1.2.4現在、なぜか外されている? よくわからないことに、org.apache.cassandra.cql.jdbc というそれっぽいパッケージ は残っており、そこにはJDBC関連の型があるのだけどドライバがないのだ。

driver のダウンロードとインストール

https://code.google.com/a/apache-extras.org/p/cassandra-jdbc/ にコードが有る。

自前でビルドしようとしたら、変なコードが混じっていてJavaCompiler が通らなかったり、 Java1.7 の JDBCで追加されたsetSchema/ getSchemaをサポートしていなかったりでコンパイルが 通らない。。

とりあえず1.2.5向けのjarを持ってきてCLASSPATHを通したら動いた。

public static void main(String[] args) throws Exception {

    Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
    Connection con = DriverManager.getConnection("jdbc:cassandra://localhost:9160/testks");

    String query = "INSERT INTO simpledata (id, content)    VALUES (?, ?);";
    
    PreparedStatement statement = con.prepareStatement(query);

    statement.setString(1, "002");
    statement.setString(2, "foobarfoobar");
    
    statement.execute();

    statement.close();
}