Cloudflareは最近、サーバーレスリレーショナルデータベース「D1」の刷新を発表した。SQLiteの上に構築されたD1は、新しいアーキテクチャを採用し、より優れた読み取り・書き込み性能とJSON関数のサポートを実現している。
1年前にアルファ版で発表され、Workersと統合するために設計されたサーバーレスリレーショナルデータベースは、さまざまな反復を経て、最新の発表では主に新しいアーキテクチャとそのパフォーマンスのメリットに焦点を当てた。Cloudflareの製品担当ディレクターであるMatt Silverlock氏と、CloudflareのシステムエンジニアであるGlen Maddern氏が書いている。
これまでD1をアルファ版で使ってきた人は、もう何もかも忘れてください。D1は大幅に高速化し、有名なNorthwind Traders Demoでは最大20倍高速化し、新しいストレージバックエンドを使用するように移行したところだ。1,000行(各行の幅は約200バイト)を挿入するシンプルなベンチマークでは、D1の前バージョンと比較して約6.8倍高速化された。
Cloudflareは、今回のオープンアルファリリースで、ダッシュボードから直接クエリを発行できる新しいコンソールインターフェース、JSON関数のサポート、リーダーデータベースがグローバルのどこにあるのかを判断するオプションであるLocation Hintsを導入している。Cloudflareは、D1データベースを過去30日以内の任意の分、または特定のトランザクションにリストアできるポイントインタイムリカバリーオプション「Time Travel」を現在開発中であることも確認した。
# Using a precise Unix timestamp (in UTC):
$ wrangler d1 time-travel my-database --before-timestamp=1683570504
# Alternatively, restore prior to a specific transaction ID:
$ wrangler d1 time-travel my-database --before-tx-id=01H0FM2XHKACETEFQK2P5T6BWD
*出典: https://blog.cloudflare.com/d1-turning-it-up-to-11/
ロードマップによると、Cloudflareは近々、最大1GBのデータベース、GraphQL APIを使ったメトリクスと観測可能性、自動読み取りレプリケーションを提供する予定である。Silverlock氏とMaddern氏は付け加える。
スキーマの変更、テーブルの数、保存されているデータの大きな差分、さらには(トランザクションIDを介した)特定のクエリの識別を容易にするなど、データベースの状態に対する大きな変化を表面化できる機能も検討している。
Developer Weekの発表について、週刊サーバーレスニュースレター「Off-by-none」の著者であるJeremy Daly氏は、次のようにコメントしている。
AWSがまだ震え上がっているかどうかはわからないが、明らかにCloudflareは彼らのコアサービスのいくつかに対抗するために、かなり深刻な動きをしている。
Cloudflareは、課金が可能になるのは今年後半になるとしても、予想される価格を明らかにし、現時点ではD1は無料で使用でき、将来的には無料層が登場する見込みである。比較的シンプルな課金モデルで、Cloudflareは、書き込み回数(1KB単位)、読み込み回数(4KB単位)、ストレージの3つの要素で課金する予定だ。グローバルリードレプリケーションには追加コストは発生せず、著者は代替のサーバーレスデータベースに挑戦している。
私たちは、D1がサーバーレスの価格設定の良いところ、つまりscale-to-zeroと使用量に応じた支払い方法を確実に取り入れ、ワークロードに必要なCPUの数および、またはメモリの量を把握する必要がないようにしたいと考えた。
この発表を受けて、Cloudflareはドキュメントを更新し、サンプルプロジェクトを追加し、#d1 Discordチャンネルを開設している。