[速報] Cloudflare のエッジ環境で使用できる SQL データベース D1 が発表されました!

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ウィスキー、シガー、パイプをこよなく愛する大栗です。

Cloudflare は今週を Platform Week と題して、様々な発表を行います。その発表で Cloudflare のエッジ側で SQL データベースが発表されました!

D1 とは?

D1 は Cloudflare のグローバルネットワーク上で動作する SQLite で構築されたサーバーレスな SQL データベースです。D1 は Cloudflare Workers 向けに設計されています。

D1 は一つの場所で状態を保存して、ユーザーがいる近くの場所に読み取り専用クローンを作成して変更の状態を最新に保つという動作をするそうです。これは全世界 270 以上の都市にある Cloudflare の拠点を利用でき、非常に高速なデータアクセスを可能にするのではないでしょうか。

また、D1 を使用してコードを記述する場合は以下のようになり、 await env.DB.get(`SELECT count(*) AS num_products FROM Product;`)といったシンプルな記述でデータアクセスが可能になります。複数の SQL 文を実行するバッチ処理もサポートされ、アトミックに実行するトランザクションも可能になっています。

export default {
  async fetch(request, env, ctx) {
    const { pathname } = new URL(request.url)
    if (pathname === '/num-products') {
      const { result } = await env.DB.get(`SELECT count(*) AS num_products FROM Product;`)
      return new Response(`There are ${result.num_products} products in the D1 database!`)
    }
  }
}

Cloudflare は、以下のように R2 と同様にエグレス料金が無料で、非常に安価に利用できる模様です。

At Cloudflare, we don’t believe in keeping your data hostage, so D1, like R2, will be free of egress charges. Our plan is to price D1 like we price our storage products by charging for the base storage plus database operations performed.

D1 を試すには?

northwind.d1sql.comというD1 のデモ環境が用意されています。これは Northwind Traders という Microsoft 社のデータベース製品にサンプルとして提供されるデータベースデータを使用したサンプルアプリケーションです。商品や従業員の検索を行ったり、D1 へアクセスしたクエリのログを参照できたりします。

Northwind Traders のデモ画面

デモではなく、D1 を直接触りたい場合には、こちらからサインアップをしましょう。早ければ 2022年6月からベータ版へアクセスできるはずです。

さいごに

SQLite を高い可用性のストレージにレプリケートして安価に使用する試みとしてLitestreamなども話題になっていますが、D1 は Durable Objects を使用して同様のサービスを構築してグローバルに分散させる点が面白い点です。Cloudflare のエッジサーバレス環境が非常に柔軟になるアップデートですのでベータ版が公開されたら是非お試しください。