2015年1月12日にリリース されたN1QL DP4 を試してみます。N1QLを使うとCouchbaseをSQLライクにクエリすることができます。現在のバージョンはDP4 (Developer Preview 4)です。
CentOSコンテナへインストール N1QLをCentOSコンテナのインストールします。CentOSのオフィシャルイメージ をつかいます。
チュートリアルをブラウザから実行するため、8093ポートをDockerホストにマップしてコンテナを起動します。
$ docker pull centos:6.6 $ docker run -it --name n1ql -p 8093:8093 centos:6.6 /bin/bash
必要なパッケージとN1QLをインストールします。Downloads ページからRed Hat 6用のパッケージをダウンロードして使います。
$ yum install -y wget tar $ wget -qO- http://packages.couchbase.com/releases/couchbase-query/dp4/couchbase-query_dev_preview4_x86_64_linux.tar.gz | tar -zxv -C ${HOME}
N1QLチュートリアル チュートリアルサーバーの起動 Couchbase Serverに接続してチュートリアルサーバーを起動します。
$ cd ~/cbq-dp4 $ ./cbq-engine -datastore=http://10.3.0.7:8091/ _time="2015-01-20T07:28:07Z" _level="INFO" _msg="New site created with url http://10.3.0.7:8091/" _time="2015-01-20T07:28:08Z" _level="INFO" _msg="cbq-engine started" version="cbq-dp4" datastore="http://10.3.0.7:8091/"
ブラウザを開いて確認します。
チュートリアルはCouchbaseのページからオンライン で試すこともできます。
コマンドラインツールの起動 別のシェルからコマンドラインツールを起動します。チュートリアルサーバーと同じサーバー上で実行します。-engine
フラグにはlocalhostを指定します。
$ cd ~/cbq-dp4 $ ./cbq -engine=http://localhost:8093/ cbq>
データストアの情報をクエリしてみます。
cbq> SELECT * FROM system:datastores { "requestID" : "eee04b16-f680-4d9d-9521-d15f76a76c98" , "signature" : { "*" : "*" }, "results" : [ { "datastores" : { "id" : "http://10.3.0.7:8091/" , "url" : "http://10.3.0.7:8091/" } } ], "status" : "success" , "metrics" : { "elapsedTime" : "759.196us" , "executionTime" : "583.695us" , "resultCount" : 1, "resultSize" : 147 } }
beer-sampleバケットをクエリする beer-sample
バケットからクエリする前に、PRIMARY INDEXを作成します。beer-sample
はバックチックで囲う必要があります。
cbq> CREATE PRIMARY INDEX ON `beer-sample` ; { "requestID" : "917d9bde-706b-4845-b9e5-3637f803e155" , "signature" : null, "results" : [ ], "status" : "success" , "metrics" : { "elapsedTime" : "824.505438ms" , "executionTime" : "824.346364ms" , "resultCount" : 0, "resultSize" : 0 } }
N1QLを使うと、SQLのようにクエリを実行することができます。
cbq> SELECT * FROM `beer-sample` WHERE type ='beer' LIMIT 2; { "requestID" : "0f0857e3-d187-4745-a834-ca9a07709ce7" , "signature" : { "*" : "*" }, "results" : [ { "beer-sample" : { "abv" : 0, "brewery_id" : "anheuser_busch" , "category" : "North American Lager" , "description" : "" , "ibu" : 0, "name" : "Michelob Hefeweizen" , "srm" : 0, "style" : "American-Style Lager" , "type" : "beer" , "upc" : 0, "updated" : "2010-07-22 20:00:20" } }, { "beer-sample" : { "abv" : 9, "brewery_id" : "brasserie_de_l_abbaye_val_dieu" , "description" : "" , "ibu" : 0, "name" : "Triple" , "srm" : 0, "type" : "beer" , "upc" : 0, "updated" : "2010-07-22 20:00:20" } } ], "status" : "success" , "metrics" : { "elapsedTime" : "325.203897ms" , "executionTime" : "325.095821ms" , "resultCount" : 2, "resultSize" : 842 } }
ブラウザからも同様にクエリを実行することができます。