Cloudflare D1を使ってみた感想
Cloudflareのサーバーレス・データベースサービス「D1」を使ってみた感想をまとめました。
公開日: 2022.11.29
Cloudflare D1とは何か?
Cloudflareのエッジコンピュータで実行できるデータベースサービスです。
実態としてはSQLiteで、Cloudflareの世界中のエッジサーバーに複製保存されたSQLiteのデータを、Cloudflare Workersを使って処理するという形式になります。
使い方は、Workersからライブラリで読み込むか、ローカルコンソールからwranglerコマンドで処理をします。
ですので、所謂クラウドのデータベースサービスのようにIPアドレスでアクセスするだけでプログラムからすぐにアクセスできるというわけではありません。あくまでWorkersで使う前提です。
Cloudflare D1の料金
Cloudflare D1自体には現状では課金枠がないようで、バジェットとしてはWorkerからしかロードできないためWorkerの使用量を消費する点だけです。まだアルファ版なのでどうなるかはわかりませんが、あるとしたらDB自体の容量に合わせた課金があるかもしれません。
AWSやGCPなどのクラウドと違うのエグレスがかからないこと。ここはCloudflareは徹底していますね。余程自社のネットワーク力に自身があるのでしょう。
実際にCloudflare D1を使ってみて
さて、実際に使ってみてですが、今回は、
- ローカル環境のテスト
- Workers本番に上げてのテスト
- 巨大なデータの取り込み
をやってみました。
ローカル環境のテスト
まずローカル環境でのテストですが、やり方は他のサイトが詳しいので詳細はそちらをどうぞ。
ローカル環境はwrangler2が必要で、nodejsのバージョンが合っていないとエラーになるので、詰まるとしたらその点くらいでしょうか。
ローカルでは非常に高速に動きます。ネットワーク転送速度が0に等しいというのも大きいですが。
Workers本番に上げてのテスト
実際にWorkersの本番環境にアップして使ってみました。
速度自体は非常に高速で、概ね200msくらいでレスポンスが返ってきます。SQLite自体はおもちゃと言われがちですが、実は高速なDBでもありますし、近くのエッジネットワークからなので転送も速いのでしょう。
200msというのはデータ量の少ないDBでのテストになりますが、それでもDB+APIと考えると非常に高速です。ある程度のデータ量があってもパフォーマンスが出るようで、公式ブログで紹介されているテストサイトも非常に高速です。
ショッピングサイト的なのが上がっていますが、この速度ならCVRも爆上がりでしょう。Cloudflare D1を使ったカートOSS的なのが出てきたら人気が出そうです。
巨大なデータの取り込み
さて、いざプロジェクトで使うとなると、大きめのデータで動作がどうなるかという点が気になります。
Cloudflare D1にデータを取り込むには、
- コンソールからwranglerコマンドでクエリを実行
- Workers経由で取り込み
という二つの方法があります。
ユーザー作成データなどはWorkers経由になりますが、マスターデータのアップはローカルから行う方が良いので、ローカルマシンのコンソールからクエリ発行して取り込んでみました。
コマンド上は1万件ほどでも普通に取り込めているんですが、実際にAPIを叩いてみると2,000件くらいでデータが反映されていませんでした。
ひょっとしたら一気に1万件分のデータを流し込んだことが原因かもしれません。この辺りはアルファ版だからというのもありそうです。
Cloudflare D1は実用に耐えるうるか?
ユーザーが数万件などのデータを作成するようなプロジェクトはアルファ版の今は厳しいと思います。
数百件程度のデータで、マスターデータをアップしておきたいというのであれば、ローカルにバックアップを残しておけば問題なさそうです。
まだまだアルファ版なのでこれからに期待ですね。個人的にはプロジェクトではいつもDBがボトルネックになるので、Cloudflare D1の使い勝手が上がれば、課金でも使いたいレベルです。