20
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

神クラウドRDB、Cloudflare D1 を使い倒そう!

Last updated at Posted at 2023-01-28

価格破壊で有名な Cloudflare 様が RDB サービスを公開してくれました。その名も「Cloudflare D1」
2023/01/28 現在オープンアルファだからということで、なんと無料!
意識高い方々が神っぽいな神っぽいなと評価のこのサービス、だけどぶっちゃけ何が神なの?
御託はいいから!」ということで実力行使で神っぷりを満喫できるようにとデモを作りました。
せっかくのチャンス、みんなでこの神サービスを使い倒しましょう😆

アルファ版のため急な仕様変更で動作しなくなる可能性があります。
そのリスクを許容できる範囲でご利用ください。

デモ

URL
デモ https://kit-d1-proxy.pages.dev/
リポジトリ https://github.com/dyn-do/kit-d1-proxy
説明 https://github.com/dyn-do/kit-d1-proxy/blob/main/README.ja.md

なにこれ?

Cloudflare D1 をブラウザの JS から直接操作できるようにする Web API のサーバーです。
コーディング一切無し、説明に沿って Github と Cloudflare の操作をするだけであなただけの SQL な Web API が作れます。
デモ画面では SQL を実行する fetch リクエストを生成したり、結果を確認したりできます。

クラウドメモやチャット、ランキングなど DB が必要な機能にご活用ください。
ソースは Sveltekit で作られています。

D1 のここがすごい!

スゴさ 説明
SQL! FireStore や DynamoDB のような独自ルールJSONストアではなく汎用 SQL です。
単なるキーバーリューではなく集計ももちろん容易です。
早い! ものすごく早いです!(語彙
要検証ですが、体感は FireStore 並み。比較対象として適正ではないかもですが、 Glitch で同じことしたら数秒は待たされる通信も1秒未満で結果を返してくれます。
シームレス連携! Cloudflare の Pages や Workers の Request 内に接続のインスタンスを埋め込んで渡してくれます。文章で説明すると長くなるので端折りますが、連携がとても楽
リージョン設定不要! AWS や GCP のようにサーバーをどこにしようかと悩むこともありません。

開発中なので細かく気になる点はあります。目立ったデメリットは下記が思いつきました。

(悪し...) 説明
リモート操作ができない SQLite にはサーバー機能がないため、MySQL や PosgresSQL のように別のサーバーから接続したり、DB ツールで内容をネット越しに確認したりすることが難しいです。
幸い有志で D1 用 の JDBC を作ってくれた方がいました。
d1-jdbc-driver
ですが説明に書かれている通りまだ課題があり未完成かな
SQLite のライブラリが直接使えない 中身が SQLite でも接続は SQLite ドライバを使用するわけではないため、SQLite で利用できるライブラリがそのまま使えるわけではありません。O/Rマッピングなどのライブラリは組み立てた SQL をいちど文字列で出力し、D1 の API に投げる、という工夫が必要になりそうです。

無料枠の比較

アルファ版を無料というのは少々不適ですが、多くの方が気にされるのは 無料でどれだけ使えるの? ではないでしょうか?
個人利用で有名な RDB サービスと比較です。
間違っていたらご指摘ください。

Cloudflare D1 PlanetScale Supabase
DB の種類 SQLite MySQL PostgreSQL
インスタンス数 10 1 2
インスタンス毎のサイズ 100MB 5GB 500MB

こうやって見ると一長一短ですね
といってもポケモンみたいに「一つを選べ」ではないので、用途に応じて使い分ければよいですね。

総括

勢い任せに書きました。今だけ無料に釣られただけじゃ
所感としては他の DB サービスよりハードルがとても低いです。
気にする設定も画面操作も少ないため、気軽に Web アプリに組み込めるはずです。
まだ料金体系が発表されていませんが、Cloudflare さんならきっととっつきやすい価格にしてくれるでしょう(何様?

今でも十分便利ですが、開発中ということもありエコシステムがまだまだ未成熟です。
認知が広がってユーザー製ライブラリが充実したらより便利になると思いましたので、周知のために今回のデモを作りました
この記事を通じて Cloudflare D1 に興味を持っていただける方が増えたら、と期待しております。

最後にPGの話

2023/01/28 現在、アルファ版なのでしょうがないのですが、公式チュートリアル通りに書いてもまともに動きません
ほかの人の記事見ると 本当に動いたの? と疑うばかり😅
そのためデモのコードは全然チュートリアル通りに書いてません
公式イシューの回避策を試したり、wrangler CLI のソースを見たり、ログ仕込んでデプロイ⇒インスタンスのクラスやメソッド名を出力⇒またログ仕込んでデプロイ、の繰り返しを何度もしたり……で今回のデモはできました

ですが、その結果 D1 の洗練された構造も理解できました。
裏技もありますのでまた時間あれば語ります~

20
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?