Share
ユーザーがアプリケーションでドキュメントを共有するたびにドキュメントを保存するコレクションがありLink
ます。スキーマは次のようになります。
{
"userId": String
"linkId": String,
"dateCreated": Date
}
私のアプリケーションでは、これらのドキュメントを要求していますが、必要に応じて情報を表示するには、userId
およびlinkId
プロパティによって参照される情報が完全に解決/入力/結合されている (用語についてはわかりません) 必要があります。したがって、ドキュメントに対するすべてのリクエストは、後続のドキュメントShare
のルックアップになります。さらに、それぞれに参照する必要がある親ドキュメントがあります。これは、一連の各検索操作 (合計 3 つ) を実行するスパゲッティのようなコードがあることを意味します。ただし、アプリケーションが必要とするのは、これらの呼び出しで見つかったデータの一部 (1 つまたは 2 つのプロパティ) だけです。とはいえ、アプリケーションにはドキュメント全体が必要です。User
Link
Link
Feed
Link
Share
これは非常に遅いので、ドキュメント自体のデータを複製するだけでよいのかどうか疑問に思っています。私の頭の中では、ほとんどのデータは変更されないため、これで問題ありませんが、一部は変更される可能性があります (つまり、 aUser
のユーザー名)。Share
これは、次のようなスキーマ設計を示唆しています。
{
"userId": String,
"user": {
"username": String,
"name": String,
},
"linkId": String,
"link": {}, // all of the `Link` data
"feed": {
"title": String
}
"dateCreated": Date
}
これに関して、アプリケーションのデータを最適化することに関するコンセンサスは何ですか? データをレプリケートし、レプリケートされたユーザー名が変更された場合に確実に更新されるようにグルー コードを記述することをお勧めしますか (たとえば)、またはより良い解決策をお勧めしますか (理由の詳細を添えて)? この方法でデータを複製することに関する私のもう 1 つの心配は、Share
ドキュメントのさらに下の行でさらにデータが必要になったらどうするかということです。