データまたはストレージ製品の選択
Cloudflare Workersは、さまざまなユースケースにおいて異なるタイプのデータを永続化するためのストレージおよびデータベースオプションをサポートしています。これには、キー・バリュー・ストア(Workers KVのような)からSQLデータベース(D1など)までが含まれます。このガイドでは、各ストレージオプションに適したユースケース、およびそれらのパフォーマンスと一貫性の特性について説明します。
利用可能なストレージおよび永続性製品には以下が含まれます:
- Workers KV - キー・バリュー・ストレージ用。
- R2 - オブジェクトストレージ、S3互換ストレージが必要なユースケースを含む。
- Durable Objects - トランザクション型、グローバルに調整されたストレージ用。
- D1 - リレーショナル、SQLベースのデータベース。
- Queues - ジョブキューイング、バッチ処理、サービス間(WorkerからWorker)通信用。
- Hyperdrive - 既存のホストされたデータベースやオンプレミスデータベースへの接続とアクセスの高速化。
- Analytics Engine - 時系列データや製品メトリクスをスケールで保存およびクエリ(SQLを使用)するための。
- Vectorize - ベクトル検索およびWorkers AIからの埋め込みの保存用。
Workersプラットフォーム上で構築されたアプリケーションは、成長、スケール、または要件に応じて、1つ以上のストレージコンポーネントを組み合わせることができます。
| Use-case | Product | Ideal for |
|---|---|---|
| Key-value storage | Workers KV | Configuration data, service routing metadata, personalization (A/B testing) |
| Object storage | R2 | User-facing web assets, images, machine learning and training datasets, analytics datasets, log and event data. |
| SQL database | D1 | Relational data, including user profiles, product listings and orders, and/or customer data. |
| Time-series metrics | Analytics Engine | Write and query high-cardinality time-series data, usage metrics, and service-level telemetry using Workers and/or SQL. |
| Global co-ordination | Durable Objects | Building collaborative applications; global co-ordination across clients; strongly consistent, transactional storage. |
| Vector search (database) | Vectorize | Storing embeddings from AI models for semantic search and classification tasks. |
| Task processing & batching | Queues | Background job processing (emails, notifications, APIs) and log processing/batching. |
| Connect to an existing database | Hyperdrive | Connecting to an existing database in a cloud or on-prem. |
以下の表は、Cloudflare Workersで利用可能な主要なストレージオファリングのパフォーマンスと一貫性の特性を示しています:
| 特徴 | Workers KV | R2 | Durable Objects | D1 |
|---|---|---|---|---|
| アカウントあたりの最大ストレージ | 無制限1 | 無制限2 | 50 GiB | 250GiB 3 |
| ストレージグループ名 | 名前空間 | バケット | Durable Object | データベース |
| 値あたりの最大サイズ | 25 MiB | 5 TiB/オブジェクト | 128 KiB/値 | 10 GiB/データベース 4 |
| 一貫性モデル | 最終的:更新が反映されるまで最大60秒かかる | 強い(書き込み後の読み取り)5 | シリアライズ可能(トランザクションあり) | シリアライズ可能(レプリカなし) / 因果関係(レプリカあり) |
| サポートされるAPI | Workers、HTTP/REST API | Workers、S3互換 | Workers | Workers、HTTP/REST API |
1 無料アカウントは1 GiBのKVストレージに制限されています。
2 無料アカウントは10 GBのR2ストレージに制限されています。
3 無料アカウントは5 GiBのデータベースストレージに制限されています。
4 無料アカウントは500 MiB/データベースに制限されています。
5 R2の一貫性モデルの詳細については、R2のドキュメントを参照してください。
Workers KVは、Cloudflareのグローバルネットワーク上でキャッシュされる最終的に一貫性のあるキー・バリュー・データストアです。
これは、次のようなプロジェクトに最適です:
- 高い読み取り量および/または同じキーへの繰り返し読み取り。
- オブジェクトごとの有効期限(TTL)。
- 分散構成。
KVを始めるには:
- KVの仕組みを読む。
- KV名前空間を作成する。
- KVランタイムAPIを確認する。
- KVの制限について学ぶ。
R2はS3互換のブロブストレージで、開発者が通常のクラウドストレージサービスに関連する出口料金なしで大量の非構造化データを保存できるようにします。
これは、次のようなプロジェクトに最適です:
- あまりアクセスされないファイルのストレージ。
- 大きなオブジェクトストレージ(例えば、オブジェクトあたりギガバイト以上)。
- オブジェクトごとの強い一貫性。
- ウェブサイトの資産ストレージ(キャッシングガイドを参照)。
R2を始めるには:
- 始めるためのガイドを読む。
- R2の制限について学ぶ。
- R2 Workers APIを確認する。
Durable Objectsは、グローバルな一意性とトランザクショナルストレージAPIを通じて、Workersプラットフォームのための低遅延の調整と一貫したストレージを提供します。
-
グローバルな一意性は、特定のIDを持つDurable Objectクラスの単一インスタンスが世界中で同時に実行されることを保証します。Durable Object IDへのリクエストは、WorkersランタイムによってそのDurable Objectを所有するCloudflareデータセンターにルーティングされます。
-
トランザクショナルストレージAPIは、Durable Objectに強く一貫したキー・バリュー・ストレージを提供します。各オブジェクトは、そのオブジェクトに関連付けられたキーのみを読み取りおよび変更できます。Durable Objectの実行は単一スレッドですが、複数のリクエストイベントはオブジェクトに到着した順序とは異なる順序で処理される可能性があります。
これは、次のようなプロジェクトに最適です:
- リアルタイムコラボレーション(チャットアプリケーションやゲームサーバーなど)。
- 一貫したストレージ。
- データのローカリティ。
Durable Objectsを始めるには:
- 紹介ブログ記事 ↗を読む。
- Durable Objectsのドキュメントを確認する。
- Durable Objectsを始める。
- Durable Objectsの制限について学ぶ。
D1はCloudflareのネイティブサーバーレスデータベースです。D1を使用すると、データをインポートしたり、テーブルを定義したり、Worker内またはAPIを通じてクエリを作成することでデータベースを作成できます。
D1は次のような用途に最適です:
- ユーザーデータ、アカウントデータ、その他の構造化データセットのための永続的なリレーショナルストレージ。
- データをアドホックにクエリする必要があるユースケース(SQLを使用)。
- 読み取りと書き込みの比率が高いワークロード(ほとんどのWebアプリケーション)。
D1を始めるには:
- ドキュメントを読む。
- 始めるためのガイドに従って、最初のD1データベースをプロビジョニングする。
- D1クライアントAPIを確認する。
Cloudflare Queuesは、開発者がメッセージを送受信し、配信を保証することを可能にします。これはCloudflare Workersと統合され、少なくとも1回の配信、メッセージのバッチ処理を提供し、出口帯域幅に対して料金は発生しません。
Queuesは次のような用途に最適です:
- リクエストからの作業をオフロードして後でスケジュールする。
- WorkerからWorkerへのデータ送信(サービス間通信)。
- 上流システム、サードパーティAPI、またはCloudflare R2への書き込み前にデータをバッファリングまたはバッチ処理する。
Queuesを始めるには:
Hyperdriveは、既存のデータベースへのクエリを加速するサービスで、ユーザーの位置に関係なく、世界中からデータにアクセスするのを速くします。
Hyperdriveを使用すると:
- Workersから既存のデータベースに接続し、接続オーバーヘッドを削減できます。
- Cloudflareのグローバルネットワーク全体で頻繁なクエリをキャッシュし、トラフィックの多いコンテンツの応答時間を短縮します。
- 接続プーリングを使用して、オリジナルのデータベースへの負荷を軽減します。
Hyperdriveを始めるには:
Analytics Engineは、Cloudflareの時系列およびメトリクスデータベースで、Workersからデータポイントを書き込み、SQLを使用してそのデータを直接クエリするための組み込みAPIを使用して、無制限のカーディナリティ分析をスケールで行うことができます。
Analytics Engineを使用すると:
- 自社の顧客にカスタム分析を公開する
- 使用量に基づく請求システムを構築する
- 顧客またはユーザーごとのサービスの健康状態を理解する
- パフォーマンスに影響を与えず、外部の分析システムにイベントで圧倒されることなく、頻繁に呼び出されるコードパスに計測を追加する
Cloudflareは、D1やR2などの製品の製品メトリクスをスケールで保存するために、内部でAnalytics Engineを使用しています。
Analytics Engineを始めるには:
- Analytics Engineの始め方を学ぶ
- Analytics Engineに時系列データを書き込む例を見る
- Analytics Engineデータセットからデータを読み取るためのSQL APIを理解する
Vectorizeは、Cloudflare WorkersおよびWorkers AIを使用して、フルスタックのAI駆動アプリケーションを構築できるグローバルに分散されたベクトルデータベースです。
Vectorizeを使用すると:
- セマンティック検索および分類タスクのために、任意のベクトル埋め込みモデルからの埋め込み(自分の埋め込みを持ち込む)を保存できます。
- Retrieval Augmented Generation(RAG)ワークフローの一部としてベクトル検索を使用することで、大規模言語モデル(LLM)クエリにコンテキストを追加できます。
- ベクトルメタデータでフィルタリングして検索空間を減らし、より関連性の高い結果を返すことができます。
Vectorizeを始めるには:
- 最初のベクトルデータベースを作成する。
- Workers AIとVectorizeを組み合わせることで、テキスト埋め込みを生成、保存、クエリする。
- ベクトルデータベースの仕組みについてもっと学ぶ。