2012-05-05 13 views
0

私はユーザーのような物を保管しています。検索履歴、投稿履歴、保存された投稿など...あなたは考えを得る。php/MYSQLで(ユーザのアクションを)保存して取得する最も良い方法は?

たとえば、ユーザーの保存された投稿の場合、ユーザーの寿命は約500-2,000になります。何千人ものユーザーが、これが非常に迅速にどのように増加するかを確認できます。過去の履歴を保存しておけば、それを表示する最善の方法は何ですか?

ユーザーID(約2,000)に一致するすべての保存された投稿のテーブルを検索することは狂っています(従来の方法(ユーザー、postid)で保存した場合)!

私は、ポストIDを保存したすべてのユーザーを大きな配列に保つことを考えていたので、2,000人ではなく1人のユーザーが1つのセルに格納されます。私はこれをしてはならない理由はありますか?あなたが知っている最も効率的な方法は何ですか?ああ、あなたが同意するならば、これはどのようなデータ型でなければならないのですか?

サイドの質問 - データベースが10-100万行以上のサイズに達したときに、ほとんどの人がどのような解決策に移行しますか? (ハードウェアの脇に)

+1

の一つに住んでますテーブルジョイン – eggyal

+0

どちらのアプローチも参考にしていましたか?ありがとう – user1353059

+1

MySQLに保存して、適切なインデックスを作成してください。 10〜100万行はそれ自体問題ではありません。 http://dev.mysql.com/doc/en/table-size-limit.htmlを参照してください。 – eggyal

答えて

0

推奨インデックスを追加してください。 1億行の可能性のある解決策は、データベースのシャーディングと呼ばれる技術で、ID範囲などに応じて複数のデータベースインスタンス(サーバー)にわたって同じテーブルを効果的にサイロ化することができます。与えられたユーザーの投稿は、ちょうどあなたが例えば、あなたの `WHERE`節)に(あなたが検索のために使うことになる列に索引を作成したり、確認して、多くの「破片」

http://en.wikipedia.org/wiki/Shard_(database_architecture

+0

合意。 MySQLの場合:http://dev.mysql.com/doc/en/partitioning.html – eggyal

+0

素晴らしい!私が必要としていたことはまさにあなたのおかげです。 – user1353059

関連する問題