transactional update operations on Firestoreに関するドキュメントを読んでいます。Cloud Firestoreトランザクションの制限
- トランザクションの最大サイズ:10のMIB
- 時間トランザクションの制限:270秒、60秒のアイドル有効期限
と Quotas and Limitsに係る取引に関して2つだけの限界があります
言及した取引関連の制限がトランザクション中の読み取りおよび/または変更することができますどのように多くの文書やコレクション、全く明示的に存在しない、または中TRAコレクションに追加の制約がある場合nsactionalの更新が行われます。
それは、クライアントがいる限り、更新は、これらおよび他の一般的な限度内に留まるように、最大500の文書、異なるコレクション内の各上のトランザクションの更新を行うことができ、ということですか?
クライアントがトランザクション内で複数のドキュメントを読み込み、そのうちの1つのみを更新する場合 - Firestoreはまだ(サイレントモードで)変更されていないドキュメントに書き込みを行います(シリアル化などのため)クライアントによって明示的に変更されていない文書であっても、1文書/秒あたり1つの書き込み制限があります。
P.S:私が尋ねる理由は、データストアは、トランザクションで25エンティティグループの制限があり、また、読み取り専用されている多くの書き込みトランザクション内のエンティティ(「文書」)でのホットスポットを見ているということです。たとえば、this answer by Dan McGrathを参照してください。私は、Datastoreの特徴のどれがFirestoreに引き継がれているのか不思議で、Firestoreデータベースを設計する際に考慮する必要があります。
500を超える更新を行う場合、複数のバッチを使用する必要がありますか?どのようにこれを達成することができますか?私は、 'User Feed'のためにdinamically'リファレンス 'を更新する必要があるケースがあります。私がコレクションに追加するところでは、Idの+私が従うユーザーが行った 'Post'のいくつかの情報があり、ofcはユーザーのフォローを解除するとこのrefsを削除する必要があります。 今のところすべて正常に動作しますが、将来私のアプリケーションが大きくなり、ユーザーの投稿数が500を超えると、このデータを更新しようとするとクラウド機能がクラッシュします。 –