アットウェアの社長 北野です。

さて、Couchbaseのクラスタが作れたところで、次はCouchbaseを使ってデータを出し入れしてみます。

Couchbaseは、汎用分散型メモリキャッシュシステムであるmemcached互換でもあります。ですので、memcachedのI/Fでのアクセスもできます。

 

ここでは、memcachedのI/Fを使って、Couchbaseを操作してみたいと思います。

 

Couchbaseへの接続

 

memcachedはTCP11211番ポートを利用します。

そこで、Couchbaseのサーバへの11211へアクセスしてみます。

 

$ telnet <Couchbase ServerのIPアドレス> 11211

 

今回は、Couchbaseのインストールされているサーバから接続してみます。

ので、localhostの11211ポートにtelnetを使って接続してみます。

[root@ip-10-150-159-183 ~]# telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.

はいこれで接続できました。

 

Couchbaseへデータを入れよう

 

接続は以上で終わりですが、続いて実際のデータを入れてみましょう。memcachedでのデータ格納するコマンドはsetを使います。

set <key名> <flags> <データの有効期間(秒)> <データのサイズ> <value値>

例えば、「japan」というキーに「tokyo」という5バイトのデータを無期限で入れる場合は、

set japan 0 0 5
tokyo
STORED

STOREDが出れば、データの書き込みが成功したということです。

 Couchbaseのデータを読み込もう

さて、データを格納できたので、ちゃんとデータが格納できたか確認してみましょう。

Memcachedでのデータ読み込むコマンドはgetを使います。

get <key名>

先ほどの「japan」というキーに設定した値を読み込んでみます。

get japan
VALUE japan 0 5
tokyo
END

ちゃんと正常に読み込めました。

ちなみに、存在しないキーを読み込んでみましょう。

get aheahe
END

VALUEが返ってきません。正常です。

データの有効期限を試してみよう

さて、書き込む際にデータの有効期限を設定することもできます。例えば10秒に設定してみます。

set france 0 10 5
paris
STORED

すぐにgetしてみましょう。

get france
VALUE france 0 5
paris
END

ちゃんと読み書きが出来ました。10秒以内なので当然です。

しばらく待ってみて、もう一度試してみます。

get france
END

はい、データが無くなっています。10秒の有効期限がちゃんと効いていますね。

 

クラスタリングの機能を確認

さて、今は3台のCouchbase Serverのクラスタ構成が組まれています。今は、ip-10-150-159-183というサーバへtelnetして読み書きしていました。他の2台のサーバへtelnetして先ほどのデータの読み込みができるかどうか確認してみましょう。

2台目:10.150.130.232 サーバに接続し、key名=japanの値をgetします。

# telnet 10.150.130.232 11211
Trying 10.150.130.232...
Connected to ip-10-150-130-232.ap-northeast-1.compute.internal (10.150.130.232).
Escape character is '^]'.
get japan
VALUE japan 0 5
tokyo
END

正常に読み込めました。同じそうさを3台目でも行い、同様にkey名=japanの値が読み込めました。

これによって、データ層が分散されていることがわかります。

つまり、どのサーバにアクセスしても同じ値が返ってくるということです。クライアント(データを欲すもの)は、クラスタが組まれているサーバのどのサーバにアクセスしても良いのです。これによって、アクセスが分散され性能劣化を低く抑えられることができます。

 

フェイルオーバー

さて、続いて一台サーバを切ってみましょう。今回のサーバの一台のCouchbase Serverを強制的に止めてみます。

# /etc/init.d/couchbase-server stop
Stopping couchbase-server                                  [  OK  ]

はい、CouchbaseServerの管理画面を確認してみましょう。

左メニューMANAGE→ServerNodeをクリックします。一台のサーバがグレイアウトになり、サーバダウンしていることがわかります。

さて、この状態で、生きているサーバに先ほどのjapanの値を引いてみましょう。

get japan
VALUE japan 0 5
tokyo
END

ちゃんとデータが返ってきました。さて、Couchbaseを落としたサーバを切り離します。該当サーバのFailOverを実行することで、このサーバをクラスタから切り離します。

 

切り離した状態でもデータjapanを読み込みましょう。

get japan
VALUE japan 0 5
tokyo
END

はい、ちゃんと読めました。FailOverしただけではデータの分散の偏りがまだ修正されていないので、Rebalanceを実行し、データの分散度を整えることをお勧めします。以下、Rebalance後2台に等分分散された状態。

 

さて、ここで、もう一台落としてみましょう。そう1台だけにしてみます。

同じく/etc/init.d/couchbase-serverのstopを実行して落とします。最後の一台の生き残りにtelnetし、japanを引いてみます。

get japan
VALUE japan 0 5
tokyo
END

ちゃんとデータが引けました。ちゃんとデータの分散読み込み、クラスタ内でのデータの保全性が確認できました。Couchbaseは可用性にもすぐれたNoSQLデータベースということが言えます。

今回は、memcachedのI/Fを、コマンドを一つ一つ実行しながら確認してみました。memcachedのコマンドはいろんなところで公開されていますので、試してみるのも良いでしょう。

参考)http://l-w-i.net/t/memcached/command_001.txt

 

今回のおさらい

さて、今回の内容からCouchbaseの特長をまとめてみたいと思います。

 

・ Simple

memcachedのI/F互換。非常にシンプルで分かり易い。

参考)http://l-w-i.net/t/memcached/command_001.txt

・ Fast

プログラムスピードでの読み書きをしたわけではないが、RAMの読み書きなので速そう

・ Elastic

サーバがクラスタの許す限り落ちてもデータの保全ができている

 

 さぁーて、次回は

そうですね。クライアントプログラムをAPIを利用して書いて、いろいろ試してみたいと思います。

 

デモもします

お声掛けして頂ければ、Couchbase Serverの製品説明/デモンストレーションを行います。お気軽にお問い合わせください。

Leave a Reply

(required)

(required)

* Copy this password:

* Type or paste password here:

1,112 Spam Comments Blocked so far by Spam Free Wordpress

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

当社サイトのご利用について  |  Image: scottchan / FreeDigitalPhotos.net
© 2012 アジャイル開発 | Enterprise Java | 株式会社アットウェア Suffusion theme by Sayontan Sinha