54389


Google App Engine と Cloud Firestore を併用したいのですが、現時点では、併用する場合、リージョンが、 `us-
central` しか選択できません。

日本からの利用だと、おそらく東京リージョン時と比べて、ある一定のレイテンシが発生するだろうと思っています。

レイテンシを回避するために、Realtime Datbase を利用する手段もあると思うのですが、Cloud Firestore
の方がクエリも使いやすく、一概には言えないと思いますが、よりモダンであると考えています。

そこで、このリージョンのレイテンシによるデメリットか、Cloud Firestore
を選択するメリットどちらがより重要だと考えられるか、ということをお聞きしたいです。


CC BY-SA 4.0
2019-04-20T12:01:39.750
54341
2019-04-22T08:53:00.480
25991
question
firebase google-app-engine
Google App Engine と Cloud Firestore を併用したい（Realtime Database を選択すべきか）


どのような用途に使われるのでしょうか？

ネットワークレーテンシーは、日本-アメリカ東海岸の間のラウンドトリップで200ms程度です。  
200msは許容範囲を超えているのでしょうか。

参考：
[［4］いまさら聞けない国際ネットワークの基礎知識](https://tech.nikkeibp.co.jp/it/article/COLUMN/20100119/343461/)


CC BY-SA 4.0
2019-04-20T13:00:32.253
54343
2019-04-20T13:00:32.253
217
54341
answer


レイテンシについて超シビアなアプリケーションを作るわけではないのであれば、Firestoreを利用したほうが良いと思います。  
私もそのようなスタイルでアプリケーションを作っていますが、レイテンシについてはあまり気になっていません。

ReltimeDatabaseは使ったことはないですが、Firestoreのほうがクエリが使いやすそう、という理由で私もFirestoreを選択しました。  
@touyu さんもおっしゃる通りFirestoreのほうがモダンであると思ったのも選択した理由です。  
私が選択したときはまだFirestoreはbeta版でしたが、Firestoreをリリースしているということは、RealtimeDatabaseでは解決できなかった問題があるんだろう、というくらいの程度ですが...。

おそらくレイテンシについて気になっているということは、あるデータのIDから子データを取得して、子データから孫データを取って、ということを考えているのではないかと思います。  
その場合は、逐次的に発生するリクエストの重なりで結局すべてのデータが出そろうまで時間がかかってしまう、ということはあると思います。しかし、Firestoreではそのようなリレーショナルなデータの格納は行わずに、データの正規化が行われない状態でデータを保持させておきます。そのため、IDから子データを取って、孫データを取って、ということは発生させないので、逐次的なリクエストを発生させない限りは  
レイテンシ、というか、データがそろうのが遅いという問題は回避できると思います。

ただ、私もすべてのデータを正規化させない状態で保持しているわけではなく、描画が遅れてもよいデータはリレーショナルな構造にしています。  
そこらへんはFirestoreでは柔軟に自分で決められるので、非正規化によるパフォーマンス向上と正規化によるデータの管理のしやすさのトレードオフとなる部分を自分で調整することができるのも、Firestoreを選択する利点だと思います。


CC BY-SA 4.0
2019-04-22T08:53:00.480
54389
2019-04-22T08:53:00.480
28291
54341
answer