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 KVCloudflare D1Cloudflare R2
データモデルKey-Value ストアリレーショナル DB (SQLite)オブジェクトストレージ (S3互換)
整合性モデル結果整合性 (Eventual)強力な整合性 (Strong)強力な整合性 (Strong)
得意な処理超高速読込 (Read-Heavy)SQLクエリ, JOIN, 複雑な条件画像, 動画, PDF, バックアップ
エグレス (データ転送料)無料無料無料 (S3より大幅安)

選定手順

  1. 扱うデータの種別(構造化データ、SQL、画像ファイル等)を切り分ける
  2. 設定値やリダイレクトルールなど「頻繁に読まれ変更の少ない小データ」には Workers KV を指定する
  3. ユーザープロファイルや投稿データには D1、メディアアセットには R2 のバインディングを追加する