0

問題:私は、売り手と買い手がいる一種の e コマース プラットフォームに取り組んでいます。私の場合、売り手も買い手になることができます。つまり、すべてのユーザーが売買できます。だから私はユーザー
と呼ばれる単一のテーブルを持っています.今、私はフォローベンダー/ユーザー機能を実装したいと思います.

今、私の伝統的なアプローチは、フォロワーとフォローされたEg を格納するためのキーと2つの列を持つテーブルを持つことでし|id | userId| vendorId
た. ) 私のクエリでは、ユーザーごとに 100 件のレコードを選択するのに時間がかかる場合があります。

質問:フォロー メカニズムを実装するにはどうすればよいですか?これよりも優れた方法はありますか?私は PHP と Mysql を使用しています。

Reasearch: Facebook と Pinterest がそれをどのように扱っているかを調べてみましたが、すぐに多くのユーザーを期待していないので、今学ぶには少し大きすぎるように思えました。パフォーマンスを向上させ、クエリの繰り返しを回避するためにmemcacheを使用する必要がありますか?Mysql と並行して何らかの意味でドキュメント データベースを使用できますか?

ユーザーベースが徐々に数千人に増えた場合に拡張できる、シンプルでありながら強力な実装が必要です。

どんな助けや洞察も非常に役に立ちます。

4

2 に答える 2

2

ジャンクション テーブルはおそらく最良のアプローチですが、それでもクラスター化インデックスに大きく依存します。

  • 代替キー ID のキーでクラスター化されたテーブルは、新しいレコードの追加を少し速くすることができます。

  • キー (userId、vendorId) でクラスター化されたテーブルにより、特定のユーザーがフォローしているベンダーを探すクエリが高速になります

  • キー (vendorId,userId) でクラスター化されたテーブルにより、特定のベンダーに従うユーザーを探すクエリが高速になります
于 2013-04-26T11:28:42.923 に答える