Firestore(Datastoreモード)とDatastoreの徹底比較!!! 前編

  • tech系
5min
こちらの記事は弊社技術ブログに掲載していた内容となります。
一部を除き、投稿当時の情報となりますので、紹介内容の最新情報については別途公式情報等をご参照下さい。

こんにちは。
クラウドエース編集部です。

Cloud Firestore(以降 Firestore と略称)が、2019年2月1日に正式リリースされたのを知っているでしょうか?
Firestore は Firebase と GCP からのモバイル、Web、サーバー開発に対応した柔軟でスケーラブルなデータベースです。
発表された当初より Cloud Datastore(以降 Datastore と略称)の次世代サービスという位置づけとなっています。

今回は自分の勉強も兼ねて、Firestore(Datastore モード)と Datastore に関して、いろいろと比較をしてみたいと思います。

記事としては前編と後編に分けたいと思います。
前編であるこの記事では、Firestore(Datastoreモード)の概要を説明し、利用料金、利用可能な地域を比較します。
後編では、Firestore(Datastore モード)での実装方法と Datastore とのパフォーマンスについて比較してみたいと思います。

※今回のシリーズ記事では Firestore の Datastore モードに焦点を当てているため、ネイティブモードに関しては深く掘り下げません。

1. Cloud Firestore の概要説明

記事の冒頭でも触れましたが、Firestore は2019年2月1日に正式リリースされた、柔軟でスケーラブルな NoSQL クラウド データベースです。
モバイル、Web、サーバー開発に対応しています。
○公式ドキュメント: https://firebase.google.com/docs/firestore/?hl=ja

Firestore には、ネイティブモードと Datastore モードの二種類があり、どちらか一方しか選ぶことしかできません。
ネイティブモードは、簡単に言うと Firebase Realtime Database の機能が使えるモードです。
Datastore モードは、その名前のとおり、Firestore のストレージレイヤで Datastore のシステム動作するモードです。(正確にはDatastore モードが Datastore の後継です。)
Firestore として一括りにされる傾向が強い印象ですが、Datastore モードでは Firestore の主な機能であるリアルタイム機能が使えなかったりするなど、Firestore と言ってもまるで別のサービスと考えた方が良いと思います。

Datastore モードでは、Firestore の機能の一部が使えませんが、Firestore のストレージレイヤにアクセスできるようになったため、Datastore では窮屈に感じた下記の制限がなりました。
○結果整合性の制限がなくなり、Cloud Datastore クエリすべてで強整合性を確保できます。
○25 エンティティ グループまでというトランザクションの制限がなくなります。
○1 秒あたり 1 個というエンティティ グループへの書き込み制限がなくなります。

また、どちらのモードを使用するかは、GCP の管理コンソールの左メニューの「Firestore」を選択すると、Firestore が未使用の場合に下記のような「モード選択」画面が表示されますので、そこで選択をします。
https://drive.google.com/open?id=1yj1LFjUJg5BbJqX-h-gkcsK5e5uFCnnI

2. 利用料金比較

利用料金ですが、Datastore の時には無料枠が設けられていました。
そのおかげで Datastore を利用したアプリでは、エンティティの保存量、書き込み数、読み込み数によってはデータベースの運用費用を無料で運用することが可能でした。
それでは、Datastore の後継である Firestore (Datastore モード)ではどうでしょうか?
早速、東京リージョン同士で無料枠とその枠を超えた場合の料金を比較してみましょう。
https://drive.google.com/file/d/1qVKwFe3J0lLRH1M-I26PThyWP5aunpjz/view
上記 URL の表からも見て分かる通り、Firestore(Datastore モード)と Datastore の利用料金に違いは無いようですね。

参考資料)
Firestore のドキュメント
https://cloud.google.com/datastore/pricing?hl=ja
Datastore のドキュメント
https://cloud.google.com/datastore/docs/pricing?hl=ja
Firestore の SKUs
https://cloud.google.com/skus/?currency=USD&filter=firestore
Datastore の SKUs
https://cloud.google.com/skus/?currency=USD&filter=Datastore

3. 利用可能な地域比較

次はそれぞれのサービスが利用できる地域に違いがあるかどうかを見てみましょう。

地域 Firestore Datastore
ロサンゼルス(us-west2)
サウスカロライナ(us-east1)
北バージニア(us-east4)
モントリオール(northamerica-northeast1)
サンパウロ(southamerica-east1)
ロンドン(europe-west2)
フランクフルト(europe-west3)
ムンバイ(asia-south1)
香港(asia-east2)
東京(asia-northeast1)
大阪(asia-northeast2)
シドニー(australia-southeast1)
南北アメリカ nam5 us-central
ヨーロッパ eur3 europe-west

Firestore (Datastore モード)と Datastore が利用できる地域には違いが無いようです。

(参考資料)
https://cloud.google.com/about/locations/?hl=ja&region=americas#region

4. まとめ

Firestore(Datastore モード)の登場により、Datastore は将来的には無くなるサービスとなってしまいましたが、今回比較した利用料金や利用可能な地域においては完全に互換性があるようで安心しました。
(弊社には GAE Java + Datastore の構成で古くから動いてる Web アプリケーションが多数存在するため、一安心です。)

次回の後編では、実装方法に関して変わったのか変わっていないのか? パフォーマンスはどうか? といった観点で記事にしたいと思います。

最後まで読んでいただきありがとうございました。

合わせて読みたい