問題文:私は、ユーザーが他のユーザー (Twitter や他の電子商取引サイトなど) をフォローして、自分のウォールで最新情報を入手できるアプリケーションに取り組んでいます。ユーザーは任意のマーチャントをフォローできます。ユーザー自身がマーチャントになることができるので、実際にはユーザーが他のユーザーをフォローしているようなものです (多対多の現実)。
問題:最も簡単な方法は、 id (自動インクリメント) |を持つジャンクション テーブルを用意することでした 。follower_user_id | followed_user_id . しかし、データベースがいつ垂直方向に拡大するか、どの程度拡大するかはわかりません。ユーザーが 100 人をフォローしている場合、1 人のユーザーに対して 100 のエントリがあります。その場合、任意のユーザーのフォロワーを取得したい場合は、時間がかかります。クエリの実行時間。
調査: Twitter や他の Web サイトや DB の設計を調べてみましたが、彼らは問題を解決するためにグラフ ベースの Nosql などのさまざまなデータベースを使用しています。値を水平に保存できる方法はあります。つまり、各ユーザーは自分のフォロワーを1行に保持します(私が試したようにカンマで区切るのは面倒です)。
この機能のために、Nosql ベースのデータベース (mongo など) のような別のデータベースを使用できますか。さまざまなケースで、パフォーマンスにどのような影響がありますか?
簡単な方法を使用するという私のアプローチが正しい場合、たとえば 5 ~ 10,000 人のユーザーのパフォーマンスを改善するにはどうすればよいでしょうか?基本的な mysql クエリはうまく機能しますか?
同じことを入力してください。