私はあなたの友達と比較して過去1週間に何回アクション(ウェブページを開いた回数)を何回実行したかを示すFacebookのリーダーボードに取り組んでいます。1週間のインプレッションをリレーショナルデータベースに保存するにはどうすればよいですか?
このような毎週のデータをリレーショナルデータベースに保存するには、何らかの方法が必要で、データベースの設計に関する助言が必要です。
オプション1
は、店舗へのテーブルにユーザーIDとタイムスタンプを持つ行としてすべてのアクションを持ってして、タイムスタンプを持っている各友人>今日に関連するすべてのアクションに対してクエリを数える - 1週間。
このソリューションは簡単に実装できますが、スケールが心配です。 1000人のfacebookの友達がいれば、何百万ものアクションが潜んでいる可能性のあるデータセットに対して、この合計クエリを1000回実行する必要があります。
オプション2
ユーザーテーブルを持ってその日に実行されたアクションの数を含む曜日ごとに列が含まれています。それから、週の合計を得るために、その日の列を合計することができます。その後、毎日の初めに、その日の値は0にリセットされます。
このソリューションはうまくスケールされますが、私のアプリケーションに「今日」のエントリを上書きするかどうかを指示するロジックを実装する方法に固執していますそれを増やしてください。
これらのデザインの代替デザインや考えは、歓迎します。
オプション1は、あなたが持っている友達の数にかかわらず、ただ1つのクエリです。 –
結合クエリですか? – Josiah
あなたの構造を知らずに、私は "おそらく"と言わなければならないでしょう。 –