Cloudflare Workers KV・D1・R2の機能比較と用途選定ガイド
Cloudflare Serverless Architecture Database
結論
キーバリューは KV、リレーショナルSQLは D1、画像・メディアファイル保存には R2 を使います。
// 結論:Workers でのバインディング参照例
env.MY_KV.get("key"); // KV
env.DB.prepare("SELECT * FROM u"); // D1
env.MY_BUCKET.get("image.png"); // R2
3大ストレージの機能比較マトリクス
| 評価軸 | Workers KV | Cloudflare D1 | Cloudflare R2 |
|---|---|---|---|
| データモデル | Key-Value ストア | リレーショナル DB (SQLite) | オブジェクトストレージ (S3互換) |
| 整合性モデル | 結果整合性 (Eventual) | 強力な整合性 (Strong) | 強力な整合性 (Strong) |
| 得意な処理 | 超高速読込 (Read-Heavy) | SQLクエリ, JOIN, 複雑な条件 | 画像, 動画, PDF, バックアップ |
| エグレス (データ転送料) | 無料 | 無料 | 無料 (S3より大幅安) |
選定手順
- 扱うデータの種別(構造化データ、SQL、画像ファイル等)を切り分ける
- 設定値やリダイレクトルールなど「頻繁に読まれ変更の少ない小データ」には Workers KV を指定する
- ユーザープロファイルや投稿データには D1、メディアアセットには R2 のバインディングを追加する