USERとMESSAGESの2種類があります。ユーザーは、別のユーザーとの間で多くのメッセージを送受信できます。関係的に考えると、関係はユーザーが多くのメッセージを持つことができ、メッセージは1人のユーザーだけが作成できることを示唆します。したがって、ユーザーAがユーザーBにメッセージを送信する場合、両方のユーザーAが送信したメッセージを表示でき、ユーザーBが受信したメッセージを表示できる必要があります。送受信したすべてのメッセージを各ユーザーオブジェクト内に保存することを最初に考えていましたが、エンティティには1 MBの制限があるため、一部のユーザーはこれよりも多くのメッセージを取得できるため、これはオプションではありません。次に、USERとMESSAGESの2種類を作成することを考えていました。メッセージの種類には、toプロパティとfromプロパティの両方があり、ユーザーが送受信したすべてのメッセージを取得できるようにインデックスが付けられます。結果として、各メッセージはそれ自身のエンティティになり、これが問題となるところです。ユーザーが削除されたとしましょう。このユーザーが送受信したすべてのメッセージを削除する必要があることはわかっています。ユーザーが大量のメッセージを送信した場合、各メッセージを削除するコストは非常に高くなります。これをモデル化するための効率的な方法は何でしょうか。私はGoogleDatatoreに参加しており、まだ何も実装していないので、どんなアイデアにもオープンです。
2番目のアプローチが最善のようです。送信者/受信者との重要な関係を持つメッセージエンティティを持つ。
ユーザーのジレンマを削除する場合は、ユーザーが削除されたときにエンティティを削除しないことを検討する必要があります。これにより、データベースの一貫性が損なわれる可能性があります。おそらく論理的な削除(たとえば、ユーザーが削除されたときにブール値が変更される)が必要です。そうすれば、そのユーザーとの間で送受信されるメッセージは他のユーザーにとって意味のあるものになります。