キー・バリュー ストア
Key-Value Store
『キーを渡すと値が返る』という最もシンプルなNoSQL。ハッシュテーブルが抽象モデルで、O(1)の超高速な読み書きができる。キャッシュやセッション保存の定番。
たとえ話: コインロッカー
キー・バリューストアはコインロッカーそのものです。番号(=キー)を指定すれば、中身(=値)を一瞬で出し入れできます。何番のロッカーに何を入れるかさえ覚えていれば、超高速。
ただしロッカーは『中身が赤い荷物を全部出して』のような検索はできません。番号でしかアクセスできない。これがキー・バリューの長所(速い)と短所(キー以外で探せない)です。
図を描画中...
なぜO(1)で速いのか
ハッシュテーブルは、キーをハッシュ関数で『場所(アドレス)』に変換します。だからキーが分かれば、データ量がどれだけあっても一発でその場所に飛べる(平均O(1))。100万件でも10億件でも、1件取る速さはほぼ変わりません。これがキー・バリューの圧倒的な強みです。
何に使うか
- インメモリキャッシュ: Redis / Memcached(『キャッシュ』の章で詳述)。
- セッション保存: ログイン状態を
session:abc → ユーザー情報で保存。 - 急に変化するデータ: カウンタ、一時データなど。
つまずきポイント
- 『キーで取る』以外が苦手。『年齢が30以上のユーザー全員』のような条件検索はできない(値の中身は基本見ない)。そういう検索が必要なら別の仕組みを併用する。
- 機能が最小限な分、複雑な処理はアプリ側で書くことになる。シンプルさの代償。
- 他の3つのNoSQL(document, wide-column)も、根っこはこのキー・バリューの発展形と考えると理解しやすい。
📊 図解
図解: ハッシュテーブル構造のイメージ
キーをハッシュ関数でバケット位置に変換し、その場所の値へ一発でアクセスする(平均O(1))。逆に、キー以外の条件では中身を探せない。
図を描画中...