IoTに適したNoSQL・分散Key-Valueストア

2014年9月25日(木)
倉又裕輔

分散KVS 「okuyama」「Riak」とは

KVSには、KVS自身がシャーディング機能を持つ「分散KVS」と呼ばれるものと、KVS自身には機能は持たず、利用者側(クライアント側)で機能を実装する必要があるものの2種類があります。このシャーディング機能とは、クライアントから書き込まれるデータをクラスタの各マシンへ適切に振り分けて保存する機能で、ロードバランサのようなイメージです。
センサーデータの蓄積では、データストアの容量追加のためのスケールアウトが必要になるケースもあります。この場合、シャーディング機能を持たないKVSではクライアント側に設定変更が発生しますが、分散KVSであればサーバ側の設定変更のみで対応可能です。そのため分散KVSの方が、スケールアウト運用が容易になります。表2で例として挙げた4つのKVS、「okuyama」「Riak」「Redis」「memcached」の中では、「okuyama」「Riak」の2つが分散KVSであり、センサーデータ蓄積に適しています。そこで、本連載ではこのokuyamaとRiakに注目してご説明していきます。
まずは、okuyamaとRiakの概略をご紹介します。

okuyama

okuyamaは図3のようなマスタ・スレーブ型の分散アーキテクチャとなっています。クライアントがデータ操作をする際には、マスタノードへリクエストを送信し、マスタノード経由でスレーブにアクセスしてデータを操作します。

図3: okuyamaの構成(クリックで拡大)

開発元株式会社 神戸デジタル・ラボ
ライセンスGPL v3 (商用ライセンス版あり)
開発言語Java
分散アーキテクチャマスタ・スレーブ型
ユースケースECサイト、検索エンジン、キャッシュサーバ、ログ管理、など

表3: okuyamaの特徴

Riak

一方のRiakは、図4のようなP2P型のアーキテクチャとなっています。クライアントがデータを操作する際には、クラスタのいずれかのノードにリクエストを送信し、リクエストを受け取ったノードを経由して目的のデータを持つノードへアクセスしてデータを操作します。

図4: Riakの構成(クリックで拡大)

開発元Basho Technologies
ライセンスApache License, Version 2.0 (商用ライセンスあり)
開発言語Erlang/C
分散アーキテクチャP2P型
ユースケースECサイト、キャッシュサーバ、オブジェクトストレージ、など

表4: Riakの特徴

特徴の比較

「okuyama」と「Riak」に共通する特徴として、単一障害点のないクラスタ構成を構築可能で高可用性を持つ点や、データの保存先を選択可能な点などがあります。また、どちらにもOSS版と商用ライセンス版が提供されており、必要に応じて選択可能な点も挙げられます。
逆に相違点としては、分散アーキテクチャと開発言語に違いがあります。これらの点が性能上の特性やボトルネックの違いに関係してくるのですが、詳しくは次回以降でご説明していきたいと思います。その他の特徴については、開発元の公式サイトをご覧ください。

今回はセンサーシステムにおけるデータストア要件と、その要件に適合するデータストアであるNoSQLについてご説明し、そのなかでも特に分散KVSの「okuyama」と「Riak」の2つについてご紹介しました。第2回では、センサーデータ蓄積で性能上重要となるポイントと、KVSがその性能を満たすのか評価するための観点について、ご説明していきます。

日立ソリューションズ
入社以来3年間、金融系SEとしてシステム基盤の設計・構築を担当しました。現在はオープンソース技術開発センタに所属し、OSSのNoSQLについて調査・検証に取り組んでいます。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています