以前、仕事中の負荷テスト時の調べ物でCockroachDBなるものを知ったので、試しにCentOS 7に入れてみることにする。
CockroachDBはいわゆるNewSQLと呼ばれるDBで、NoSQLでトランザクションをできるようにしたものだと覚えておけばよいだろう。特にこのCockroachDBは分散KeyValueStoreで、データを分散して保存させることに力を入れているらしい。データベース内の操作はSQLで行えるので、RDBMSからの移行も比較的簡単に行えるだろう。

現時点(2016/05時点)ではまだBeta版のようなので本番導入はちょっとどうかと思うが、面白い代物だと思う。
なお、ロゴ見てもらえりゃわかると思うけど、Cockroachってまぁゴキさんです。
火星にいるあいつです(違う)。

1.インストール

インストール方法については、ソースからやバイナリをそのまま、もしくはDockerでの動作を選択できるようだ。
とりあえず、今回はバイナリからインストールを行う。

以下のコマンドで、最新版のバイナリをダウンロードする。

bash
curl -s https://www.cockroachlabs.com/docs/install-cockroachdb.html | grep 'CockroachDB tarball for Linux' | awk -F\" '{print $2}' | xargs wget

バイナリのアーカイブファイルをダウンロードしたら、以下のコマンドで展開、実行ファイルをコピーする。

bash
tar xzvf cockroach-beta-*.tgz cp cockroach-beta-20160505.linux-amd64/cockroach /usr/bin/

これでインストールは完了となる。

2.起動・接続

さて、それでは実際に起動・接続してみよう。
まず、以下のコマンドでバックグラウンド実行する。

bash
cockroach start --background
shell
[root@BS-PUB-CENT7-02 ~]# cockroach start --background build: beta-20160505 @ 2016/05/05 15:41:00 (go1.6) admin: http://localhost:8080 sql: postgresql://root@localhost:26257?sslmode=disable logs: cockroach-data/logs store[0]: path=cockroach-data

インスタンスを複数立ち上げる場合は、2つ目以降は以下のようにコマンドを実行してやれば良いようだ。

bash
cockroach start --store=データストア名 --port=ポート番号(DB) --http-port=ポート番号(http) --join=localhost:26257 --background

さて、これでCockroachDBは起動出来たので、接続してデータベース・テーブルを作成してみよう。
CockroachDBのクライアントは、同じバイナリでサブコマンドとして「sql」を付与すれば良い。

bash
cockroach sql
shell
[root@BS-PUB-CENT7-02 ~]# cockroach sql # Welcome to the cockroach SQL interface. # All statements must be terminated by a semicolon. # To exit: CTRL + D. root@:26257> CREATE DATABASE test; CREATE DATABASE root@:26257> SET DATABASE = test; SET root@:26257> CREATE TABLE test (id INT PRIMARY KEY, value DECIMAL); CREATE TABLE root@:26257> INSERT INTO test VALUES (1111, DECIMAL '912.234'); INSERT 1 root@:26257> INSERT INTO test VALUES (1112, DECIMAL '9432.134'); INSERT 1 root@:26257> SELECT * FROM test; +------+----------+ | id | value | +------+----------+ | 1111 | 912.234 | | 1112 | 9432.134 | +------+----------+

ふむぅ…特に違和感なく操作出来る。
ただまぁ、分散方式に力が入っているとのことなので、クラスタにしてみないとなんとも判断出来ないかな。