データ モデルの観点から、ユーザー トラッキングのポイントからライブ フィードまでの流れを説明してもらえますか? 私の開発チームはこれに問題を抱えています:
ユーザーがアクティビティを実行すると、すべてのユーザー フットプリントのマスター テーブルである user_activity テーブルにフットプリントが記録されます。これは、追跡する必要があるすべてのユーザーによるすべてのアクションがここに書き込まれることを意味します。
問題:
1) 活動は 1:M です。1枚の写真に10人をタグ付けできるように。したがって、明らかに、このためにアクティビティ テーブルに 10 個の足跡を書きません。したがって、アクティビティの詳細を保存するために別のテーブルが必要ですか?
2) このテーブルは、アクティビティ フィード テーブルにフィードされてアクティビティ フィードに出力されるすべてのオブジェクトのすべてのアクティビティをログに記録しているため、フィードはアクティビティに関係するすべてのオブジェクトを認識する必要があるため、「X のタグが付けられた」と言うことができます。ティムの写真のマーク、ジョン、サラ。」ここで、Mark、John、Sarah は基本的に、それぞれのプロファイルにリンクするユーザー オブジェクトです。写真は、写真テーブルにリンクする写真オブジェクトです...
上記は一例ですが、映画、音楽、ブランド、都市などの多くのオブジェクトがあります。そのため、システムはログ テーブルからアクティビティ フィードまで、どのオブジェクトが何で、どこにあるのかを把握してプルできるようにする必要があります。関連データをフィードに追加します。これを行うには、object_id と object_type_id の 2 つの列があります。ここで、object_type は「ユーザー、写真、ブランドなど」のようなもので、object_id はオブジェクトの ID です。しかし、これを実際のテーブルに接続するにはどうすればよいでしょうか。
3) 最後に、この設計は、追跡されたデータからフィード、つまりログからログ テーブルに移動するための最良の方法ですか。ログ テーブルには詳細テーブルがあり、ログ テーブルはセッション テーブルと結合されます。2 分ごとに、このデータを非正規化されたアクティビティ フィード テーブルにプルする corn ジョブがスケジュールされ、ライブ フィードに直接読み取るために、これらとオブジェクト テーブルからデータをプルします。
- The 2 min corn job also scares me because if there a lot of records then the system may take longer than 2 min to finish the job and there will be a backlog then. So any other methods i can use?