Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

データ / ストレージ製品の選択

最終更新 Markdown で表示Agent セットアップ

このガイドでは、Cloudflare Workers で使えるストレージおよびデータベース製品と、推奨ユースケース、ベストプラクティスを説明します。

ストレージ製品を選ぶ

次の表は、ストレージおよびデータベース製品を、一般的な業界用語と推奨ユースケースに対応づけています。

用途 製品 向いている用途
Key-value ストレージ Workers KV 設定データ、サービスルーティングのメタデータ、パーソナライゼーション(A/B テスト)
オブジェクトストレージ / blob ストレージ R2 ユーザー向け Web アセット、画像、機械学習とトレーニングデータセット、分析データセット、ログとイベントデータ
Postgres または MySQL データベースの高速化 Hyperdrive 既存のデータベースドライバーと ORM を使い、クラウドまたはオンプレミスの既存データベースへ接続する場合
グローバルな調整とステートフルなサーバーレス Durable Objects 共同作業アプリの構築、クライアント間のグローバルな調整、リアルタイム WebSocket アプリ、強い一貫性のあるトランザクションストレージ
軽量 SQL データベース D1 ユーザープロファイル、商品一覧と注文、顧客データなどのリレーショナルデータ
タスク処理、バッチ処理、メッセージング Queues バックグラウンドジョブ処理(メール、通知、API)、メッセージキュー、遅延タスク
ベクトル検索と embeddings クエリ Vectorize セマンティック検索と分類タスク向けに、AI モデルの embeddings を保存する場合
ストリーミング取り込み Pipelines クリックストリーム分析、テレメトリ / ログデータ、クエリ用の構造化データなど、ストリーミングデータの取り込みと処理
時系列メトリクス Analytics Engine Workers や SQL を使い、高カーディナリティの時系列データ、使用量メトリクス、サービスレベルのテレメトリを書き込み・クエリする場合

アプリケーションは、複数のストレージおよびデータベース製品の上に構築できます。たとえば、セッションデータには Workers KV、大きなファイルやメディアアセット、ユーザーアップロードには R2、ホストされた Postgres または MySQL データベースへの接続には Hyperdrive を使います。

SQL データベースの選択肢

Workers でアプリケーションを作るとき、SQL ベースのデータベースには次の 3 つの選択肢があります。

  • Hyperdrive — 既存の Postgres または MySQL データベースがある場合、大規模(1 TB、100 TB 以上)の単一データベースが必要な場合、既存のデータベースツールを使いたい場合です。PlanetScaleNeon などのデータベースプラットフォームにも Hyperdrive を接続できます。
  • D1 — 読み取りが多く、軽量なサーバーレスアプリケーション向けです。グローバルなユーザーが D1 の 読み取りレプリケーション の恩恵を受けられ、従来型 RDBMS の運用・保守が不要な場合に向きます。
  • Durable Objects — ステートフルなサーバーレス負荷、ユーザー単位または顧客単位の SQL 状態、分散システムの構築向けです(D1 と Queues は Durable Objects の上に作られています)。Durable Objects の 厳格な直列化可能性(strict serializability) により、リクエストとストレージ操作のグローバルな順序を保証できます。

セッションストレージ

セッションデータ、認証情報(API キー)、設定データの保存には Workers KV を推奨します。これらは通常、高いレート(数千 RPS 以上)で読まれ、変更は少なく(KV の一意キーあたり 1 書き込み RPS の上限内)、即時の一貫性は不要です。

頻繁に読まれるキーは KV の 内部キャッシュ の恩恵を受けます。こうした「ホット」キーへの繰り返し読み取りは、通常 500µs〜10ms 程度の遅延です。

OpenAuth などの認証フレームワークは、Cloudflare にデプロイするとセッションストレージに Workers KV を使います。Cloudflare Access は、ユーザー認証情報を安全に保存・配布するために KV を使い、ユーザーの近くで検証して全体の遅延を下げます。

製品の概要

Workers KV

Workers KV は、Cloudflare のグローバルネットワーク上でキャッシュする、結果整合性のキーバリューデータストアです。

次のようなプロジェクトに向きます。

  • 読み取り量が多い、または同じキーへの繰り返し読み取りがある。
  • 低遅延のグローバル読み取り(ホットキーでは通常 10ms 以内)。
  • オブジェクトごとの TTL(有効期限)。
  • 分散設定やセッションストレージ。

KV を始めるには、次を参照してください。

R2

R2 は S3 互換の blob ストレージです。一般的なクラウドストレージに付きもののエグレス料金なしで、大量の非構造化データを保存できます。

次のようなプロジェクトに向きます。

  • アクセス頻度が低いファイルの保存。
  • 大きなオブジェクトの保存(たとえばオブジェクトあたり数 GB 以上)。
  • オブジェクト単位の強い一貫性。
  • Web サイトのアセット保存(キャッシュガイド を参照)。

R2 を始めるには、次を参照してください。

Durable Objects

Durable Objects は、グローバルな一意性とトランザクションストレージ API により、Workers プラットフォームに低遅延の調整と一貫したストレージを提供します。

  • グローバル一意性(Global Uniqueness)は、ある ID を持つ Durable Object クラスのインスタンスが、世界中で同時に 1 つだけ動くことを保証します。Durable Object ID へのリクエストは、Workers ランタイムがその Durable Object を所有する Cloudflare データセンターへルーティングします。

  • トランザクションストレージ API は、Durable Object に強い一貫性のキーバリューストレージを提供します。各 Object は、その Object に紐づくキーだけを読み書きできます。Durable Object の実行はシングルスレッドですが、複数のリクエストイベントは、Object に到着した順とは異なる順で処理されることがあります。

次のようなプロジェクトに向きます。

  • リアルタイム共同作業(チャットアプリやゲームサーバーなど)。
  • 一貫したストレージ。
  • データの局所性。

Durable Objects を始めるには、次を参照してください。

D1

D1 は Cloudflare のネイティブなサーバーレスデータベースです。D1 では、データのインポート、またはテーブル定義とクエリの記述を、Worker 内または API 経由で行ってデータベースを作成できます。

D1 は次の用途に向きます。

  • ユーザーデータ、アカウントデータ、その他の構造化データセット向けの永続的なリレーショナルストレージ。
  • データ全体をアドホックに(SQL で)照会する必要があるユースケース。
  • 書き込みに対して読み取りの比率が高いワークロード(ほとんどの Web アプリケーション)。

D1 を始めるには、次を参照してください。

Queues

Cloudflare Queues は、配信を保証してメッセージを送受信できる機能です。Cloudflare Workers と統合され、少なくとも 1 回の配信、メッセージのバッチ処理に対応し、エグレス帯域の課金はありません。

Queues は次の用途に向きます。

  • リクエストから処理を切り離し、あとで実行する。
  • Worker から Worker へデータを送る(サービス間通信)。
  • 上流システム(サードパーティ API や Cloudflare R2 を含む)へ書き込む前に、データをバッファまたはバッチする。

Queues を始めるには、次を参照してください。

Hyperdrive

Hyperdrive は、MySQL および Postgres データベースへのクエリを高速化するサービスです。ユーザーの所在地に関係なく、世界中からデータへより速くアクセスできます。

Hyperdrive では次のことができます。

  • 接続のオーバーヘッドなしで、既存のデータベースに Workers から接続する。
  • よく使うクエリを Cloudflare のグローバルネットワーク上でキャッシュし、トラフィックの多いコンテンツの応答時間を短くする。
  • コネクションプーリングでオリジンデータベースの負荷を下げる。

Hyperdrive を始めるには、次を参照してください。

Pipelines

Pipelines は、インフラを自分で運用せずに、大量のリアルタイムデータを取り込めるストリーミング取り込みサービスです。

Pipelines では次のことができます。

  • 非常に高いスループット(毎秒数万レコード以上)でデータを取り込む。
  • データをバッチし、オブジェクトストレージへ直接書き込み、照会できる状態にする。
  • (将来)取り込み中にデータを変換・集計する。

Pipelines を始めるには、次を参照してください。

Analytics Engine

Analytics Engine は、Cloudflare の時系列およびメトリクス用データベースです。組み込み API で Workers からデータポイントを書き込み、そのデータを SQL で直接照会できます。カーディナリティ無制限の分析を大規模に書けます。

Analytics Engine では次のことができます。

  • 自社の顧客向けにカスタム分析を公開する。
  • 利用量ベースの課金システムを作る。
  • 顧客単位またはユーザー単位でサービスの健全性を把握する。
  • 頻繁に呼ばれるコードパスに計測を追加する。性能への影響や、外部分析システムへのイベント過多を避けられる。

Cloudflare は社内でも Analytics Engine を使い、D1 や R2 などの製品メトリクスを大規模に保存しています。

Analytics Engine を始めるには、次を参照してください。

Vectorize

Vectorize は、グローバルに分散したベクトルデータベースです。Cloudflare Workers と Workers AI で、フルスタックの AI アプリケーションを構築できます。

Vectorize では次のことができます。

  • 任意のベクトル埋め込みモデルからの埋め込み(Bring Your Own embeddings)を保存し、セマンティック検索や分類に使う。
  • 検索拡張生成(Retrieval Augmented Generation、RAG)ワークフローの一部としてベクトル検索を使い、大規模言語モデル(LLM)のクエリに文脈を足す。
  • ベクトルメタデータで絞り込む ことで検索空間を狭め、より関連の高い結果を返す。

Vectorize を始めるには、次を参照してください。

Durable Objects の SQL と D1 の比較

Cloudflare Workers には、SQLite をバックエンドにしたサーバーレスデータベース製品 D1 があります。Durable Objects の SQLite と D1 をどう比較すればよいでしょうか。

D1 はマネージドなデータベース製品です。

D1 は、アプリケーションサーバーがネットワーク経由でデータベースと通信する、開発者にとってなじみのある構成に合います。アプリケーションサーバーは通常 Workers です。ただし D1 は HTTP API による外部(Worker 以外)からのアクセスにも対応しており、D1 向けの サードパーティツール の利用につながります。

D1 は必要な機能が最初から揃った機能セットを目指しています。上記の HTTP API、データベーススキーマ管理データのインポート / エクスポートデータベースクエリインサイト が含まれます。

D1 ではアプリケーションコードと SQL データベースのクエリが同じ場所にないため、アプリケーションの性能に影響することがあります。D1 で性能が気になる場合、Workers の Smart Placement を使うと、D1 を含む Worker が通信するすべての対象を考慮し、Worker リクエスト全体のレイテンシが小さくなる場所で Worker を動的に実行できます。

Durable Objects の SQLite は、分散システム向けの、より低レベルのコンピュートとストレージの構成要素です。

設計上、Durable Objects へのアクセスは Workers からのみです。

Durable Objects は手間が増えますが、そのぶん柔軟性と制御が得られます。Durable Objects では、別の場所で動く 2 つのコードを実装する必要があります。インターネットからの受信リクエストを一意の Durable Object へルーティングするフロントエンド Worker と、SQLite データベースと同じマシンで動く Durable Object 本体です。どこで何を動かすかを選べます。アプリケーションのビジネスロジックの一部をデータベースのすぐ隣で動かすと、利点がある場合もあります。

Durable Objects の SQLite では、D1 に最初から付いているデータベースツールの一部を、自分で作る必要があることもあります。

SQL クエリの料金と制限は、D1(料金制限)と Durable Objects の SQLite(料金制限)で同じになる想定です。

役に立ちましたか?