質問

私は(学校のために、その新しいアイデアの欠如のために私を爆破していない)マイクロブログWebサービスを行いますと、私はDBは、多くの場合、(ユーザーが他のユーザーに以下のか、そうであっても、私はSELECTがすることsuppouseタグを付けることができ、オーバーロードすることができることを心配します重いこと - すべての観測のタグやユーザー)が含まれて20件の最新のメッセージを確認してください。

私の考えでは(メッセージを拾う必要があります誰が)別のテーブルを作成し、それにのみstatusIDとユーザーIDを格納しています。その危険は、いくつかのタグやユーザーが多くのフォロワーを持っている場合、そのステータスIDを持つレコードがたくさんあるでしょう、です。だから、それは良いアイデアですか?それとも、より良いは、M2Mの関係を使用していますか? (1つのステータス - >多くの受信機)

役に立ちましたか?

解決

私はほとんどのデータベースを簡単に大規模なレコードセットを扱うことができると思います。責任は、それがプリフォーム適切にインデックスを設定すると、デザインである必要があります。あなたが右のインデックスを作成する場合はSELECT句は本当によく実行する必要があります。

他のヒント

私は、ユーザーとのメッセージのテーブルの間M2Mの関係を持っている、のユーザーのテーブルとテーブルに行くと思います。

あなたは、ユーザーがフォローしているユーザーのすべてを見つけることが選択いずれかを行うことができ、その後、2番目のは(ソートし、必要に応じて結果を制限する)興味のあるすべてのメッセージを見るには選択します。タグにこれを拡張することは非常に単純である必要があります。

このデザインは、限り、あなたのインデックス右の列など、ユーザーと大量のメッセージのために問題ないはずです。あなたが大規模になったなら、あなたはまた、別のサーバーにユーザーテーブルとメッセージテーブルを実行できるかだけ複製読みました。私は一瞬でもその心配はない - あなたは巨大であることを必要があると思います。

Collabinate( http://www.collabinate.com に)、マイクロブログのサービスベースのエンジンを実装する場合共有アクティビティストリームは、Iは、グラフデータベースを使用します。人々が記事を作成し、他の人に従っているという事実は、グラフ構造に向いています。右の関係とアルゴリズムでは、これは非常に効率的でパフォーマンスの解決策になることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top