高レプリケーション データストア (私は NDB を使用しています) では、一貫性は最終的です。保証された完全なセットを取得するために、祖先クエリを使用できます。祖先クエリは、種類のないクエリで特定の祖先のすべての「子」を取得する優れた方法も提供します。つまり、祖先モデルを活用できることは、GAE で非常に役立ちます。
私が抱えていると思われる問題はかなり単純です。連絡先レコードとメッセージ レコードがあるとします。特定の連絡先レコードは、各メッセージの祖先として扱われています。ただし、同じ人物に対して 2 つの連絡先が作成される可能性があります (ユーザー エラー、異なるデータ ポイントなど)。この状況では、関連するメッセージを持つ 2 つの連絡先レコードが生成されます。
2 つのレコードを「マージ」して、すべてのメッセージを 1 つの大きな山にまとめることができる必要があります。理想的には、レコードの子の 1 つの祖先を変更できるようにします。
これを行う唯一の方法は、マッピングを作成し、アプリでレコードがマージされたかどうかを確認することです。存在する場合は、マッピングを調べて 1 つ以上の関連レコードを見つけ、それらに対してクエリを実行します。これは非常に非効率に思えます。このユースケースを処理するための「本による」方法は他にありますか?