検索
連載

イネーブラ型NoSQLのまとめ(Memcached、Redis、Scalaris、Tokyo Cabinet/Tyrant編)知らないなんて言えないNoSQLまとめ(2)(2/3 ページ)

「あぁ、知ってるよ。アレね」と言っておきたいNoSQLプロダクトの特徴をざっと紹介。今回はオンメモリもオンディスクもひっくるめて「イネーブラ型」のメジャーどころを紹介していく。

Share
Tweet
LINE
Hatena
※本記事はアフィリエイトプログラムによる収益を得ています

個人が開発したRedis

 Redis(*5)はイタリアの開発者が個人で開発したキー・バリュー型のNoSQLデータベースですが、現在では複数のコントリビュータが開発を行っています。

 Redisの特徴は以下の通りです。

読み書きが高速 Redisはデータをメモリ上で保持するので、読み書きを高速に行うことができます。

データストラクチャ・ストア Redisのキーには、画像などのBLOB(Binary Large OBject)や文字列だけではなく、リスト、セット、ソート済みのセット、ハッシュといったデータ構造も関連付けることができます。こうした特性からRedisは「データストラクチャ・ストア」と呼ばれています。

 このうちリストは、文字列で記述され、新しい要素をリストの先頭または末尾に追加できます。セットとは文字列の順不同の集合です。ソート済みセットは、それぞれの要素がスコアという値を持ち、そのスコア順に並びます。要素の順に並ぶという点がリストとは異なります。ハッシュは順番のない文字列のフィールドとバリューのマップです。これらの違いを例示すると図2のようになります。


図2 リストとハッシュ

アトミックな処理 Redisは、排他制御によって更新をアトミックに処理できます。

複製のためにマスタ・スレーブ型 Redisはマスタ・スレーブ型(*6)であり、マスタは複数のスレーブを持つことができ、非同期でスレーブに複製を作ります。データを読み出すことだけが目的であれば、データの増加とともに読み出し専用のスレーブ役のノードを追加することでクラスタを拡張できます。

 ただし、Redisでは、コンシステント・ハッシング(*7)を用いたシャーディングをクライアント側で行います。Redisのサーバ側には自動復旧や自動リバランスの機能を実装していません。

結果整合性 Redisはマスタからスレーブに複製するまでの間、システム内には複数のバージョンが存在します。つまり結果整合性となります。

メモリに保存し非同期でディスクにバックアップ メモリ上のデータが一定量以上更新されると、非同期でディスクに書き込むことで、データを永続化します。ただし、サーバの電源が落ちると、ディスクに書き込む前のデータは消失します。

*5 Redis http://redis.io/
*6 マスタ・スレーブ型 マスタが主でありスレーブが従の関係となる構造です。具体的にはマスタのデータを主として、それをスレーブに複製することや、マスタがスレーブを制御するなどの関係を指します。
*7 コンシステント・ハッシング 本連載第1回の注6を参照。


「強い整合性」を保証するScalaris

 Scalaris(*8)は、Quorum(*9)により複製をコントロールすることで「強い整合性」を保証するキー・バリューストアです。

ゴシッププロトコル(*10)で情報交換するP2P型 「強い整合性」を保証するNoSQLデータベースは、マスタ型が大半を占めますが、ScalarisはP2P型のアーキテクチャとなっています。各ノードがゴシッププロトコルによって相互を監視し、障害発生時には自動復旧します。

トランザクションをサポート 構造はトランザクションレイヤ、レプリケーションレイヤ、P2Pレイヤの3層からなり、トランザクションレイヤでトランザクションを提供します。Paxosというアルゴリズム(*11)によりトランザクションのアトミック性を保証しています。

永続性は実装していない データはメモリに保持されるため、複数ノードの電源に障害などが発生すると消失します。また、データを非同期でディスクに書き込むRedisとは異なり、Scalarisではメモリが保持できるサイズにデータが制限されます。

*8 Scalaris http://code.google.com/p/scalaris/
*9 Quorum 本連載第1回の注10を参照。
*10 ゴシッププロトコル 本連載第1回の注7を参照。
*11 Paxosアルゴリズム 分散処理において、ノード間の合意形成を行うアルゴリズムの1つ。障害発生時にデータの安全性を保証する。DC間の保証にこのアルゴリズムを採用した例としてGoogleが提供するHight Replication Datastoreが挙げられる(参考リンク)。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る