私はウェブサイトを構築しています。ユーザーが参加できるグループがあります。
このグループと「通常の」グループの違いは、メンバーシップが一時的なものであるということです。ユーザーがグループに参加すると、メンバーシップの長さを5日、1週間、2週間などで決定します(選択肢は事前に定義されています)。または、すべてのメンバーシップを同じ長さに設定することもできます(たとえば、1週間)。
各グループのメンバー数を集計したいのですが。数値は、最後の1秒まで正確である必要はありません。ただし、古すぎることもありません。たとえば、1日1回更新する必要があります。
メンバーの数を計算する「明白な」方法は、毎日、たとえばcronジョブを実行し、すべてのグループのすべてのメンバーを1つずつ調べているようです。メンバーシップの有効期限が切れている場合は、そのメンバーをグループから削除し、グループのメンバーシップ数を1つ減らします。
そのアプローチは非常に非効率的で、あまりスケーラブルではないようです。グループの数が多いと、それは永遠にかかる可能性があります。
これを行うためのより良い方法を考えられますか?メンバーシップ数は、最新の秒まで正確である必要はありません。概算で(わずかに)古くなっている可能性があります。また、違いが生じる場合は、すべてのメンバーシップを同じ長さ、たとえば1週間に設定できます。