0%

Couchbase on Docker - Part6: N1QLを使ってみる

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/"

ブラウザを開いて確認します。

n1ql_hello.png

チュートリアルは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
}
}

ブラウザからも同様にクエリを実行することができます。

n1ql_beer_sample_beers.png