- KeyとValueだけを組み合わせる単純な構造のKVS(Key-Value Store)はnoSQLの一つのジャンルであり、自由にスケールできるメリットがあります。分散データストアなどに利用されています。
- 代表的なKVSとしては、memchaed・Redisなどがあり、AWSのサービスではElasticCacheが対応します。
noSQLの一つのジャンルとしてのKVS
KVS(Key-Value Store)は、KeyとValueを組み合わせる単純な構造からなるデータストアです。
Keyを指定すると、Keyに関連付けられたValueが呼び出される仕組みとなっています。
KVSの特徴
・データモデルがシンプルである
・スケールアウトに適した構造をしている
・高速でデータの読み書きが可能
・分散処理に適している
・トランザクション処理できないものが多い
KVSの利用形態
KVSはKeyとValueの関係だけのデータベースなので、複数のサーバーにデータを分散させて格納する分散データストアとしての利用が増えています。
分散データストアは負荷の分散や高可用性を低コストで実現できるために、大規模なデータを扱うWEBアプリケーションなどで利用される形態です。リレーショナルデータベースは構造的にデータを分散させるのが難しいのですが、KVSはいくらでもサーバーを増やして分散化することができます。ただし、リレーショナルデータベースのようなデータの一貫性は保証されません。
KVSはテーブル同士を結合するような複雑な処理は苦手にしていますが、自由にスケールできるというメリットを活かして利用されています。
揮発性のKVSと永続性のKVS
KVSには、揮発性のKVSと永続性をもったKVSがあります。揮発性とは、OSの再起動などにより値が消去されてしまうものです。データ量が一定量を超えた場合にも消去される場合があります。一方で永続性をもったKVSはOSの再起動などでも値が消去されないものをいいます。
基本的には、オンメモリのKVSだと揮発性となり、オンディスクストレージだと永続性をもちますが、一定期間ごとにスナップショットをとり、再起動時にメモリ上に展開することで永続性をもつオンメモリのKVSも存在します。
代表的なKVS
代表的なKVSとして、memchaed・Redisなどがあります。
memchaed
・メモリにデータを保存して、データベースの負担を減らすKVS
・サーバ上のメモリにデータを格納するので、応答性に優れているが揮発性のKVS
Redis
・Redisもメモリ上にデータを格納するので、高速の読み書きが可能でありながら、一定期間ごとにスナップショットをとり再起動時にメモリ上に展開することにより永続性ももつ
・文字列・BLOB・リスト・ハッシュなど、幅広い種類のデータが扱える事からデータストラクチャ・ストアと呼ばれる
本サイト上に掲載されているまとめ記事が、毎週ステップメールで受け取ることもできます。
参考文献
- もう1つの、DBのかたち、分散Key-Valueストアとは
- 知らないなんて言えないNoSQLまとめ(2):イネーブラ型NoSQLのまとめ(Memcached、Redis、Scalaris、Tokyo Cabinet/Tyrant編) (1/3) – @IT