0

User、Task、および TaskInstance の 3 つのテーブルを持つ Rails Web サイトがあります。Task テーブルはタスクのマスター リストのようなもので、特定のユーザーに結合されていません。一方、TaskInstance テーブルには、ユーザーが特定のタスクを完了したことを示すレコードが含まれています。つまり、TaskInstance には、ユーザー ID、タスク ID、および完了ステータス (ブール値) があります。ユーザーには多くの TaskInstances があります。

管理者が新しいタスクを追加できるようにしたいと考えています。そうすることで、すべてのユーザーのそのタスクの新しい TaskInstance を作成する必要があります。ただし、それはうまくスケーリングできるようには思えません。5 万人のユーザーがいるとします。新しいタスクを作成するには、その場ですぐに 5 万個の TaskInstances を作成する必要があります。

代わりに、ある種の遅延読み込みを行うことができれば良いのですが、どこでそれを行うのかわかりません。ログイン時にそれを行うことができます。たとえば、ユーザーがログインしたときに、新しいタスクが作成されたかどうかを確認します。その場合は、その特定のユーザーに対してのみ新しい TaskInstance を作成します。しかし、新しいタスクが作成されたときにすでにログインしているユーザーはどうなるでしょうか?

この種の問題に対する好ましいアプローチは何かと思っているだけだと思います。

必要に応じて、これをコミュニティ wiki に移動します。

4

1 に答える 1

2

を事前に作成しないでくださいTaskInstance。必要な場合にのみ作成してください。とにかく新しいTaskが作成されるため、 があるかどうかに関係なく、任意のユーザーに表示できますTaskInstance。ユーザーが で開始することを決定するとすぐに、TaskTaskInstanceインスタンス化されます。

于 2012-07-27T09:40:19.363 に答える