キー・バリュー型DB きーばりゅーがたでーたべーす
KVSRedisDynamoDBキャッシュセッション管理NoSQL
キー・バリュー型DBについて教えて
簡単に言うとこんな感じ!
キー・バリュー型DBは「ロッカー室」みたいなDBだよ!番号(キー)を指定したら、中身(バリュー)をすぐに取り出せる。構造はシンプル極まりないけど、その分めちゃくちゃ速い。Webサービスのログイン状態やショッピングカートの中身を一時保存するのにぴったりなんだ!
キー・バリュー型DBとは
キー・バリュー型DB(KVS:Key-Value Store)とは、データを「キー(Key)」と「バリュー(Value)」のペアで管理するNoSQLデータベースです。辞書・ハッシュテーブルと同じ仕組みで、キーを指定すれば対応するバリューを即座に取得できます。
RDBのようなテーブル・カラム・JOINといった複雑な概念は一切なく、「キーを入れたらバリューが返る」というシンプルな操作のみです。その単純さゆえにオーバーヘッドが少なく、ミリ秒以下のレイテンシで読み書きができる点が最大の特徴です。
バリューには文字列・数値・JSONオブジェクト・リスト・ビットマップなど多様な型を格納できます(製品による)。セッション管理・キャッシュ・リアルタイムランキング・パブ/サブメッセージングなど、高速性が求められるユースケースで広く使われています。
主なデータ型と用途
| データ型 | 説明 | 代表的な用途 |
|---|---|---|
| String | 文字列・数値・バイナリ | セッション情報・設定値キャッシュ |
| Hash | フィールド→値のマップ | ユーザープロフィール・商品情報 |
| List | 順序付きリスト | タイムライン・キュー・スタック |
| Set | 重複なし集合 | タグ管理・ユニークユーザー数 |
| Sorted Set | スコア付き順位リスト | リアルタイムランキング・優先度付きキュー |
| Bitmap/HyperLogLog | 高度なデータ構造 | 大規模集計・ユニーク数推定 |
歴史と背景
- 1970年代:UNIXのdbmライブラリがKVSの原型。ファイルベースのハッシュテーブル
- 2000年代初頭:MemcachedがWebキャッシュとして登場。大規模サービスで採用が広がる
- 2007年:Amazon Dynamoの論文公開。大規模分散KVSの設計原則を示す
- 2009年:Redisが公開。データ構造の豊富さと永続化対応で圧倒的に普及
- 2012年:AWS DynamoDBがサービス開始。マネージドKVSとして普及
- 2020年代:エッジコンピューティング・サーバーレスでKVSの重要性がさらに増加
主な製品比較
| 製品 | 特徴 | 主な用途 |
|---|---|---|
| Redis | 豊富なデータ型・Pub/Sub・Lua対応 | キャッシュ・セッション・ランキング |
| Memcached | 超シンプル・マルチスレッド | 純粋なキャッシュ層 |
| AWS DynamoDB | フルマネージド・無制限スケール | サーバーレスアプリのDB本体 |
| etcd | 強一貫性・Raftコンセンサス | Kubernetesの設定管理 |
| Apache Ignite | インメモリ+SQL対応 | 高速分散処理 |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| Amazon Dynamo論文 (2007) | 分散KVSの設計原則(結果整合性・コンシステントハッシュ) |
| Redis RDB/AOF仕様 | Redisの永続化フォーマット |
| Memcached Protocol | テキスト/バイナリプロトコル仕様 |