ソーシャル ネットワークに 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_timeline
、posts_by_user
)にいいねの数があり、1 人のユーザーに 1000 人のフォロワーがいるとします。各いいねアクションによって、1000 行すべてuser_timeline
と 1 行を更新する必要があります。 posts_by_users
; そして、これは論理的ではありません!
次に、私の 2 番目の質問は、どうあるべきかということです。(お気に入りの)テーブルはどうあるべきですか?