データベース基本概念

キー・バリュー型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高度なデータ構造大規模集計・ユニーク数推定
KVSの基本動作フロー Webアプリ SET session:abc {user:1} Webアプリ GET session:abc KVS(Redis) session:abc → {user:1, cart:[]} rank:1 → "田中" rank:2 → "鈴木" cache:top → [item1,...] counter:pv → 1024982 lock:order → 1 (TTL:30s) メモリ上に保存→超高速 書き込み 読み取り({user:1}) TTL(有効期限)の設定が可能 EXPIRE session:abc 3600 → 1時間後に自動削除

歴史と背景

  • 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テキスト/バイナリプロトコル仕様

関連用語