こんにちは。クラウドエース編集部です。
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®ion=americas#region
4. まとめ
Firestore(Datastoreモード)の登場により、Datastoreは将来的には無くなるサービスとなってしまいましたが、今回比較した利用料金や利用可能な地域においては完全に互換性があるようで安心しました。
(弊社にはGAE Java + Datastoreの構成で古くから動いてるWebアプリケーションが多数存在するため、一安心です。)
次回の後編では、実装方法に関して変わったのか変わっていないのか? パフォーマンスはどうか? といった観点で記事にしたいと思います。
最後まで読んでいただきありがとうございました。