クラウド · 2026年11月11日
CloudflareがD1のコントロールプレーンを刷新し、数百万のデータベースへの対応を実現
Cloudflareは、サーバーレスSQLデータベースであるD1のコントロールプレーンを再設計し、数百万ものデータベースをサポートできるようにしました。この刷新により、中央集権的なボトルネックの回避、リトライとべき等性の実装、および結果整合性の採用が行われました。
D1のコントロールプレーンのアーキテクチャは、トランザクションメタデータ用のPostgres、分析用のClickHouse、そしてグローバルに複製されたルーティングデータ用のWorkers KVを中心に構築されています。分散メタデータキャッシュ、コネクションプーリング、非同期ワークフロー、定期的なヘルスチェックを用いることで、クエリ処理を中央管理操作から切り離してエッジに維持し、拡張性の向上と障害からの復旧を図っています。2022年に発表されたD1は、SQLiteに基づいて構築されたサーバーレスSQLデータベースであり、Cloudflareのグローバルネットワーク上のアプリケーションの近くで動作するように設計されています。過去1年間で、1日あたりのアクティブなデータベース数は18倍に増加しました。
データベースの存在とアカウント制限の正解データであるPostgresと、各D1 Durable Objectを同期させるため、データベースごとのジッターを伴う30秒間隔のハートビートが使用されています。この仕組みにより、作成や削除の操作が失敗した場合でも自己修正が可能となり、孤立したオブジェクトは削除済みとしてマークされ、Workers KVのルーティングメタデータは修復されます。ハートビートはわずかに古いデータを許容できるため、Hyperdriveの複数のキャッシュ層やPostgresのリードレプリカから提供されることが可能です。
Cloudflareは、Edge API WorkerからのリクエストをEyeball Worker経由で直接 ilgili D1 Durable Objectにルーティングすることで、中央のPostgresデータベースにクエリが到達しないようにしています。Edge API Workerが認証、認可、レート制限、リクエスト検証を担当し、Eyeball WorkerはD1 Bindingsにエンコードされたデータベース固有の認可を信頼することで、クエリパスにおける冗長なチェックを回避しています。また、Workers KVを耐久性のあるデータストアとして利用することで、キャッシュパージが発生した場合でもPostgresへの負荷を抑え、メタステーブル故障を防いでいます。
ストレージ制限の適用には、書き込みスパイクからPostgresを保護するためにキューに入れられバッチ処理される非同期の使用量更新が利用されています。増分ストレージデルタを通じて事前集計されたアカウント合計を維持することで、数百万のデータベースを持つアカウントにおける高コストなスキャンや書き込み競合を回避しています。Durable ObjectはHyperdriveの短寿命キャッシュを通じてこれらの合計を確認し、アカウント制限を超える書き込みをブロックします。