web-dev-qa-db-ja.com

「データストアモード」のFirestoreには「ネイティブモード」の利点がありますか

Google Cloud Firestoreは、従来のGoogle CloudDatastoreにまもなく置き換わる予定です。次に、CloudFirestoreを「ネイティブモード」で使用するか「データストアモード」で使用するかを選択できます。前者は通常のFirestoreSDKを介してFirestoreにアクセスでき、後者は古いCloud Datastore SDK(Web /モバイルAPIがない)を使用できます。

私はまだFirestoreに精通していません。私の質問は次のとおりです。新しいAPIに移植する以外に、古いCloud Datastore(またはその代替:「データストアモード」のFirestore)で実行できる「ネイティブモード」のFirestoreでは実行できないことが実際にありますか。 )?または、「データストアモード」を使用する他の利点(コストなど)はありますか?

そうでない場合は、古いCloud Datastoreを使用した古いコードとの互換性以外に、「データストアモード」でFirestoreを使用する利点は実際にはないようです。

Firestoreの「データストアモード」には、従来のDatastore APIを使用できる以外にまったく利点がないという私の仮定は正しいですか(notより新しく、おそらくより機能豊富なものを使用できるという犠牲を払って)モバイルAPIやウェブAPIを含むFirestoreAPI)?

7
trollkotze

費用。

データストアモードのFirestoreは、元のデータストアと同様に、キーのみのクエリとプロジェクションクエリをサポートします。つまり、これらのクエリの結果セットは、無料の「Cloud FirestoreSmallOperations」にカウントされます。 1日あたり数十億の小規模なオペレーションを蓄積しており、予測クエリがないと、データストアのコストが実質的に10倍になり、耐えられなくなります。

この機能はFirestoreネイティブモードでは使用できないため(また、強力な一貫性が追加されているため)、元のデータストアよりもパフォーマンスが低下すると予想されましたが、テストではそうではありませんでした。データストアモードのFirestoreは、すべてのタイプの操作で、アプリケーションの約2倍の速度で一貫して実行されました。

4
as5wolf

公式ドキュメント によると、CloudFirestoreはCloudDatastoreと下位互換性がありますが、新しいデータモデル、リアルタイム更新、モバイルおよびWebクライアントライブラリ機能はそうではありません。

データストアモードのCloudFirestoreは、Cloud Datastoreシステムの動作を使用しますが、Cloud Firestoreのストレージレイヤーにアクセスし、次のCloudDatastoreの制限を取り除きます。

  • 結果整合性により、すべてのCloudDatastoreクエリの整合性が高まります。
  • トランザクションは25のエンティティグループに制限されなくなりました。
  • エンティティグループへの書き込みは、1秒あたり1回に制限されなくなりました。

データストアモードは、CloudDatastoreと互換性のないCloudFirestore機能を無効にします。

  • プロジェクトはCloudDatastore APIリクエストを受け入れ、Cloud FirestoreAPIリクエストを拒否します。
  • プロジェクトでは、CloudFirestoreインデックスの代わりにCloudDatastoreインデックスを使用します。
  • このプロジェクトではCloudDatastoreクライアントライブラリを使用できますが、CloudFirestoreクライアントライブラリは使用できません。
  • CloudFirestoreのリアルタイム機能は利用できなくなります。
  • GCPコンソールでは、データベースはCloudDatastoreビューアを使用します。
1
hgiasac

新しいプロジェクトであっても、「データストアモード」を使用することには利点があります。

MySQLからの移行プロジェクトのファイアストア「データストアモード」と「ネイティブモード」の2つのモードを評価しています。

一方では、次の理由から、1つのバックエンドグローバルリポジトリに「データストアモード」を使用することを検討しています。

  1. サーバー側のみ
  2. すべてのエンティティにわたる検索クエリに対する強力なパフォーマンスの期待
  3. いくつかのプロパティをまとめてクエリして並べ替える
  4. 1つのルートの種類といくつかの第2レベルの種類を持つ構造化データモデル
  5. 限られたトランザクション要件での大量の書き込み、エンティティグループ内でのプロジェクションによる膨大な数の読み取り

一方、「ネイティブモード」は、次の理由により、特定のアプリケーションに直面しているユーザーのいくつかの要件に適合しているようです。

  1. Web、iOS、Android、APIインターフェース
  2. 時々接続されるいくつかのユースケース
  3. 同期して永続化する大きなポリモーフィックオブジェクトはほとんどありません
  4. 1つのプロパティ(親オブジェクト)に対するほとんどの単純なクエリ

ただし、2番目のプロジェクトでデータストアモードを推奨する理由が1つあります。

  1. 名前空間を使用したマルチテナンシー

NoSQLテクノロジーへの移行の決定をサポートする両方のモードによって満たされる共通のニーズもあります

  1. スケーラビリティ
  2. 管理者なし
  3. 可用性
  4. 開発のスピード

項目2から5および10は、データストアモードに固有の機能に基づいており、ネイティブモードでは使用できません。項目6から9は、ネイティブモードに固有です。

0
Xavier Quilliet