1

Shareユーザーがアプリケーションでドキュメントを共有するたびにドキュメントを保存するコレクションがありLinkます。スキーマは次のようになります。

{
  "userId": String
  "linkId": String,
  "dateCreated": Date
}

私のアプリケーションでは、これらのドキュメントを要求していますが、必要に応じて情報を表示するには、userIdおよびlinkIdプロパティによって参照される情報が完全に解決/入力/結合されている (用語についてはわかりません) 必要があります。したがって、ドキュメントに対するすべてのリクエストは、後続のドキュメントShareのルックアップになります。さらに、それぞれに参照する必要がある親ドキュメントがあります。これは、一連の各検索操作 (合計 3 つ) を実行するスパゲッティのようなコードがあることを意味します。ただし、アプリケーションが必要とするのは、これらの呼び出しで見つかったデータの一部 (1 つまたは 2 つのプロパティ) だけです。とはいえ、アプリケーションにはドキュメント全体が必要です。UserLinkLinkFeedLink

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ドキュメントのさらに下の行でさらにデータが必要になったらどうするかということです。

4

0 に答える 0