3

ソーシャル ネットワークに Datastax Cassandra を使用しており、必要なテーブルを設計/データ モデリングしていますが、混乱しており、いくつかのテーブルを設計する方法がわからず、いくつかの小さな問題があります。

クエリごとに理解したように、異なるテーブルが必要です。たとえば、ユーザー A はユーザー C と B をフォローしています。

現在、Cassandra には次のテーブルがありますposts_by_user

user_id      |  post_id       |  text  |  created_on  |  deleted  |  view_count  

likes_count  |  comments_count  |  user_full_name

そして、ユーザーのフォロワーに応じたテーブルがありuser_timeline、フォロワーユーザーが最初の Web ページにアクセスしたときに、テーブルからデータベースから投稿を取得するという名前のテーブルに投稿の情報を挿入しuser_timelineます。

そして、ここにuser_timeline表があります:

follower_id      |      post_id      | user_id (who posted)  |  likes_count  |  

comments_count   |   location_name   |  user_full_name

まず、このデータ モデリングは、フォロー ベース (フォロワー、フォロー アクション) ソーシャル ネットワークに対して正しいですか?

ご覧のとおり、両方のテーブル( user_timelineposts_by_user)にいいねの数があり、1 人のユーザーに 1000 人のフォロワーがいるとします。各いいねアクションによって、1000 行すべてuser_timelineと 1 行を更新する必要があります。 posts_by_users; そして、これは論理的ではありません!

次に、私の 2 番目の質問は、どうあるべきかということです。(お気に入りの)テーブルはどうあるべきですか?

4

1 に答える 1