[解決済み] Cloud FirestoreとFirebase Realtime Databaseの違いとは?
質問
Googleは、アプリのための新しいドキュメントデータベースであるCloud Firestoreをリリースしたばかりです。
ドキュメントを読んでいますが、FirestoreとFirebase DBの違いがあまりわかりません。
JSONベースの伝統的なnoSQLデータベースであるFirebaseに比べ、Firestoreはドキュメントとコレクションを使用しており、クエリを簡単に使用できることが大きなポイントです。
両者の違いや使い方、あるいはFirestoreがFirebase DBを置き換えるようになっただけなのか、もう少し詳しく知りたいのですが。
解決方法は?
そこで、私は ブログ記事全体 この質問については、ぜひご覧ください。 公式ドキュメント より完全な答えを得るために。
しかし、もしあなたが簡単な要約を知りたいのなら、ここにあります。
より良いクエリーと構造化されたデータ -- Realtime Databaseは巨大なJSONのツリーですが、Cloud Firestoreはもう少し構造化されています。データはすべてドキュメント(基本的にキーバリューストア)とコレクション(ドキュメントのコレクション)で構成されています。ドキュメントがサブコレクションを指すことも多く、サブコレクションには他のドキュメントが含まれ、それ自体も他のドキュメントを含むことができる、といった具合です。
この構造化データは、2つの点で役に立ちます。まず1つ目。 すべてのクエリは浅い つまり、あるドキュメントをリクエストしても、その下にあるすべてのデータを取得することはできないのです。これは、データベースを浅く保つことを気にすることなく、より意味のある方法でデータを階層的に保存しておくことができることを意味します。次に、クエリーがより強力になりました。例えば、データベースの他の部分からデータを結合(および非正規化)するコンボフィールドを作成しなくても、複数のフィールドにまたがってクエリーを実行できるようになりました。Cloud Firestoreが直接クエリを実行する場合もあれば、自動的にインデックスを作成してメンテナンスしてくれる場合もあります。
拡張性を考慮した設計 -- Cloud FirestoreはRealtime Databaseよりも拡張性が高いでしょう。重要なのは、クエリはデータセットではなく、結果セットのサイズに合わせてスケールすることです。そのため、データセットがどれだけ大きくなっても、検索は高速に行えます。
手動でのデータ取得が容易に
-- Realtime Databaseと同様に、Cloud Firestoreでもリスナーを設定して、リアルタイムに変更をストリームすることができます。しかし、そのような動作は必要なく、単純に"fetch my data"を呼び出したいだけなら、Cloud Firestoreにもそれがあり、主なユースケースとして組み込まれている。(それらは
once
リアルタイムデータベースランドでの呼び出し)
マルチリージョン対応 -- これは、データが複数のデータセンターで同時に共有されるため、基本的に信頼性が向上することを意味します。しかし、強力な一貫性は保たれています。つまり、常にクエリを実行し、最新バージョンのデータを取得することができるのです。
<強い 異なる価格モデル -- Realtime Databaseが主にストレージやネットワーク帯域幅に基づいて課金されるのに対して、Cloud Firestoreは主に 演算数 を実行します。これは良いことなのか、悪いことなのか?それはあなたのアプリ次第です。
ニュースアプリ、ターンベースのマルチプレイヤー・ゲーム、あるいは自社版のStack Overflowのようなものを動かすには、おそらくCloud Firestoreは価格面でかなり有利になるでしょう。リアルタイム・グループ・ドローイング・アプリのように、複数の人に1秒間に複数のアップデートを送信するような場合は、おそらくリアルタイム・データベースより高価になるでしょう。
それでもリアルタイムデータベースを使いたい理由 -- それはいくつかの理由に集約されます。
-
以前お話した「頻繁に更新されるアプリは安くなる」というのは、そのことです。
-
長い間、何千ものアプリによってバトルテストされてきました。
-
レイテンシーが良いので、リアルタイム感を出すために確実にレイテンシーが低いものが必要な場合は、Realtime Databaseの方が良いかもしれません。
ほとんどの新しいアプリは、Cloud Firestoreをチェックすることをお勧めします。しかし、すでにRealtime Databaseを利用しているアプリがある場合、やむを得ない理由がない限り、ただ乗り換えるのはお勧めしません。
お役に立てれば幸いです。
関連
-
[解決済み】Firebase v3 updateProfile メソッド
-
[解決済み】Firebaseのdevとprodの環境を分ける。
-
[解決済み】Firebase App '[DEFAULT]' が作成されていない - Flutter と Firebase で Firebase.initializeApp() を呼び出す。
-
[解決済み】Firebaseで複数のwhere句に基づくクエリ
-
[解決済み] アプリを別のFirebaseアカウントに転送する
-
[解決済み] プロバイダの取得ができない com.google.firebase.provider.FirebaseInitProvider
-
[解決済み] Firebaseメッセージング、Server Keyはどこで入手できますか?
-
[解決済み] どうしたら解決できますか?Error: Firebase プロジェクトのリストアップに失敗しました。詳細はfirebase-debug.logを参照してください。
-
[解決済み] Google Firestoreです。プロパティ値の部分文字列に対するクエリ (テキスト検索)
-
[解決済み] firebase cliからアプリを切り替えるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エラーです。Objective-Cモジュール'Firebase'をビルドできませんでした。
-
[解決済み] エラーで終了しました。Gradle タスク assembleDebug は終了コード 1 で失敗しました。
-
[解決済み】Firebase App '[DEFAULT]' が作成されていない - Flutter と Firebase で Firebase.initializeApp() を呼び出す。
-
[解決済み】Firebaseで複数のwhere句に基づくクエリ
-
[解決済み] アプリを別のFirebaseアカウントに転送する
-
[解決済み] プロバイダの取得ができない com.google.firebase.provider.FirebaseInitProvider
-
[解決済み] Firebaseメッセージング、Server Keyはどこで入手できますか?
-
[解決済み] Firebaseアプリにコラボレーターを追加する方法とは?
-
[解決済み] どうしたら解決できますか?Error: Firebase プロジェクトのリストアップに失敗しました。詳細はfirebase-debug.logを参照してください。
-
[解決済み] Firebaseストレージとアクセス制御・許可・オリジン