Cloud FirestoreとFirebase Realtime Databaseの違いは何ですか?


252

Googleがアプリ用の新しいドキュメントデータベースであるCloud Firestoreをリリースしました。

ドキュメントを読んでいますが、FirestoreとFirebase DBの間に大きな違いはありません。

主なポイントは、Firestoreがドキュメントとコレクションを使用することです。これにより、JSONベースの従来のnoSQLデータベースであるFirebaseと比較して、クエリを簡単に使用できます。

それらの違い、または使用方法について、またはFirestoreがFirebase DBを置き換えるために来たかどうかについて、もう少し知りたいのですが?


1
Firestoreでは読み取りが速くなり、Firebase Real Time Databaseでは書き込みが速くなります
DragonFire

回答:


380

そのためこの質問全体についてブログ投稿全体を書きました。より完全な回答については、それ(または公式ドキュメント)をチェックすることをお勧めします。

しかし、簡単な(-ish)要約が必要な場合は、次のとおりです。

より良いクエリとより構造化されたデータ -Realtime Databaseは単なる巨大なJSONツリーですが、Cloud Firestoreはもう少し構造化されています。すべてのデータは、ドキュメント(基本的にはKey-Valueストア)とコレクション(ドキュメントのコレクション)で構成されます。ドキュメントは、他のドキュメントが含まれているサブコレクション、他のドキュメントが含まれている可能性のあるサブコレクションなども頻繁に指します。

この構造化データは、2つの点で役立ちます。まず、すべてのクエリは浅いため、その下にあるすべてのデータを取得することなくドキュメントをリクエストできます。つまり、データベースを浅く保つことを心配する必要なく、より理にかなった方法でデータを階層的に保存できます。次に、より強力なクエリがあります。たとえば、データベースの他の部分のデータを結合(および非正規化)する「コンボ」フィールドを作成しなくても、複数のフィールドにわたってクエリを実行できるようになりました。Cloud Firestoreはこれらのクエリを直接実行する場合もあれば、自動的にインデックスを作成して維持する場合もあります。

スケーリングする設計 -Cloud Firestoreは、Realtime Databaseよりも優れたスケーリングが可能になります。クエリは、データセットではなく、結果セットのサイズにスケーリングされることに注意することが重要です。したがって、データセットがどれほど大きくなっても、検索は高速のままです。

より簡単なデータの手動フェッチ -Realtime Databaseと同様に、変更をリアルタイムでストリーミングするようにCloud Firestoreでリスナーを設定できます。しかし、そのような動作が不要で、単純な「データのフェッチ」呼び出しだけが必要な場合は、Cloud Firestoreにも同様の機能があり、主要なユースケースとして組み込まれています。(onceRealtime Databaseランドの呼び出しよりもはるかに優れています)

マルチリージョンのサポート -データは複数のデータセンター間で一度に共有されるため、これは基本的に信頼性の向上を意味します。ただし、強い整合性が保たれているため、常にクエリを実行して、最新バージョンのデータを取得できます。

異なる料金モデル -Realtime Databaseは主にストレージまたはネットワークの帯域幅に基づいて課金しますが、Cloud Firestoreは主に実行した操作数に基づいて課金ます。これは良いですか、悪いですか?それはあなたのアプリに依存します。

ニュースアプリ、ターンベースのマルチプレーヤーゲーム、または独自のバージョンのStack Overflowのようなものを強化する場合、Cloud Firestoreはおそらく価格の観点からかなり有利に見えるでしょう。リアルタイムのグループ描画アプリのように、1秒間に複数の更新を複数のユーザーに送信する場合、おそらくRealtime Databaseよりもコストがかかります。

Realtime Databaseを引き続き使用する理由-いくつかの理由があります。1)前述したように、「頻繁に更新を行うアプリの方が安くなる」ということ、2)長い間使用されており、数千のアプリでテストされていること、3)レイテンシが向上していることまた、リアルタイムの感覚のために確実に低レイテンシの何かが必要な場合は、Realtime Databaseの方が優れている場合があります。

ほとんどの新しいアプリについては、Cloud Firestoreをチェックすることをお勧めします。ただし、すでにRealtime Databaseにあるアプリがある場合、やむを得ない理由がない限り、切り替えのためだけに切り替えることはお勧めしません。

お役に立てば幸いです。


2
トッドさん、ありがとうございました!アナウンスメントポストを見ましたが、これは見ていません!私は完全にFirestoreに夢中ですが、悲しいことに、このxD用にラップされたRxJava全体を書き直す必要があります。
フランシスコダーディンガルシア2017

1
Google Cloud Datastoreはどのように適合しますか?単純に、Cloud Firestoreと多くの重複があるようです。@ToddKerpelman
Jon G

2
Cloud Datastoreと多くの共通点があります。最大の違いはFirebaseとの統合です。そのため、ネイティブのオフラインモードだけでなく、モバイルSDKやウェブSDK、リアルタイム同期機能にもアクセスできます。Cloud Datastoreは、App EngineやCompute / Container Engineを介して独自のウェブサイトを実行するなど、アプリへの独自の接続を管理する大規模なサーバー側開発に最適です。
トッドカーペルマン2017年

2
「強い整合性」とはどういう意味ですか?CAPの定理では、分散された使用可能な環境では「データの最新バージョンを確実に取得できる」とは言えません。整合性、可用性、パーティションの許容度=> 2を選択
AjahnCharles

1
@ToddKerpelman Cloud FirestoreとCloud Datastoreの比較を行う可能性があります。2つはひどく似ているようです。
TheAddonDepot 2017年

63

ここで記事全体を読むことができます:https : //medium.com/@beingrahul/firebase-cloud-firestore-vs-firebase-realtime-database-931d4265d4b0

Firebase Realtime databaseこれは、JSONツリーとして構造化されていますがCloud Firestore、ドキュメント(キーと値のペアのセット)およびコレクション(ドキュメントのコレクション)形式でデータが格納されています。

その他の構造データ

Realtime DatabaseはデータをJSONツリーに保存しましたが、Cloud firestoreはJSONによく似たドキュメントにデータを保存しました。 ここに画像の説明を入力してください

Cloud FireStoreでは、ドキュメントはサブコレクションとネストされたオブジェクト(上の図の 'phone'など)を連結できます。どちらにも、文字列(上の図の 'name'、 'email'など)などのプリミティブフィールドまたは次のような複雑なオブジェクトを含めることができますリスト。

より良いクエリ

  • Realtimeデータベースでは、単一のクエリでプロパティの並べ替えまたはフィルタリングのみを行うことができます。プロパティの並べ替えとフィルタリングの両方はできません。一方、Cloud FireStoreでは、単一のクエリのプロパティでフィルターをチェーンし、プロパティのフィルタリングと並べ替えを組み合わせることができます。
  • 降順でデータをフェッチする場合、Cloud fireStoreは非常に役立ちますが、Realtimeデータベースの場合、使用できるクエリ機能はありません。 ここに画像の説明を入力してください
  • 複数の「where」メソッドをチェーンして、Cloud FireStoreでより具体的なクエリ(論理AND)を作成することもできます。 ここに画像の説明を入力してください

スケーラビリティ

Cloud Firestoreは、Realtime Databaseよりも優れたスケーリングが可能になります。クエリのパフォーマンスは、データセットではなく結果セットのサイズに比例することに注意することが重要です。したがって、データセットがどれほど大きくなっても、検索は高速のままです。

データの手動フェッチ

RealtimeデータベースのようにCloud FireStoreでデータをリアルタイムでリッスンできますが、Cloud FireStoreでは手動でデータをフェッチすることもできます(データを1回だけ取得したい場合)。

安全保障

Realtime Databaseでは、検証ルールを使用してデータを個別に検証する必要がありますが、Cloud FireStoreでは、データ検証が自動的に行われます。

データを書き込む

複数の操作を1つのバッチとして実行しset()update()またはdelete()メソッドの任意の組み合わせでアトミックに完了することができます。 ここに画像の説明を入力してください

価格

Realtimeデータベースでは、帯域幅とストレージに対してのみ課金されますが、それより高いレートで課金されます。Cloud FireStoreにいる間は、主にデータベースで実行された操作(読み取り、書き込み、削除)と、より低いレートでの帯域幅とストレージに課金されます。


12
元の記事をリンクするとよいでしょう。medium.com
セーラムウエルダニ

1
「データ検証が自動的に行われる」とはどういう意味ですか?
SoEzPz

12

Realtime DatabaseではなくCloud Firestoreを選択する理由

改良版です

基本的なアプリケーションにはFirebaseデータベースで十分でした。しかし、それは複雑な要件を処理するのに十分強力ではありませんでした。Cloud Firestoreが導入されたのはそのためです。主な変更点は次のとおりです。

  • 基本的なファイル構造が改善されました。
  • Webクライアントのオフラインサポート。
  • より高度なクエリをサポートします。
  • 書き込みおよびトランザクション操作はアトミックです。
  • 信頼性とパフォーマンスの向上
  • スケーリングは自動的に行われます。
  • より安全になります。

価格

Cloud Firestoreでは、帯域幅とストレージとともにデータベースで実行された操作に主に課金されますが、レートは低下しています。1日の費用の上限も設定できます。ここに請求に関する完全な詳細があります。

Googleの今後の計画

彼らはReal-time Databaseの欠陥を発見したとき、古い製品を改善するのではなく、別の製品を作成しました。Real-time Databaseでの現在の状態を明らかにする信頼できる詳細はありませんが、それは放棄される可能性が高いと考え始める時です。




2

グーグルからのリンクも提案するFirebase Real-time Database vs FireStore

グーグルドキュメントから抽出された、ここに小さな要約:

FireBase Real Time DBは、JSONベースのNO SQL DBであり、モバイルアプリ、リージョナル向けであり、通常、ユーザー/デバイス間のデータをリアルタイムで保存し、非常に低いレイテンシで同期するために使用されます。

FireStoreはJSONに似たNOSQL DBであり、同時実行性が高く、グローバルで簡単に自動スケーリングできる永続性を備えており、アセットトラッキング、リアルタイム分析、小売製品カタログの作成、ソーシャルユーザーなどの一般的なユースケースを持つすべてのクライアント(モバイルアプリだけでなく)向けに設計されていますプロファイル、ゲームのリーダーボード、チャットベースのアプリケーションなど。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.