2011-06-28 9 views
0

人種の異なる種類のサービスを構築する必要があります。このサービスには、多数のレコードを含むWebポータルとWebサービス(スマートフォンからの照会)が含まれています。各集団には独自のレコードセットがあり、集団間で共有されるレコードはほとんどありません。多くのレコードを持つデータベースのアーキテクチャ

各人口にはイベント、ニュース、ユーザー...このサービスを使用するユーザーが多いため、データベーステーブル(これらのイベント、ニュース、ユーザーを含む)が急速に成長します。この表では、挿入よりも100倍多い選択肢があります。 最後に、データベースエンジンとしてMySQLを使用する予定です。

  • (すべての住民のために...単一のテーブルのニュース、単一テーブル・イベント)すべての集団のための共通のテーブルを持っている方が良いですし、許可する列:

    私の質問は、アーキテクチャの質問ですフィルタリングするには?または、人口あたりのデータベースを1つずつ(各人口は独自のイベントテーブル、独自のニューステーブル...)持つ方がよいでしょうか?

  • 人口統計データベースのアーキテクチャがより最適化されている場合、どのように共有オブジェクトを処理できますか?

ありがとうございました!

あなたがニュースごとに単一のテーブルを持つことができます

+0

人口ごとに1つのDBと異なるテーブルがあることを調査しましたか?私。 Event_Pop_A、Event_Pop_B ... News_Pop_A ...あなたの使用シナリオに応じて、(UNIONなどを使用して)クロス集計クエリを作成する必要がある場合に役立ちます。 –

+0

いいえ、ありません。それは維持管理するのが非常に難しいようですが、解決策が働く可能性があります – iwalktheline

+0

新しい人口をどのくらい頻繁に作成するかによって異なります。これがたくさん起こっていると想像できるものなら、私の提案は実用的ではありません。人口のセットが安定していて、ある人口から別の人口へのユーザーの移動がほとんどまたはまったくない場合は、うまくいく可能性があります。 –

答えて

1

kheraud、人口を区別し、あなたがその列にパーティションを適用することができ、いくつかの列を持つすべての個体群が含まれていますイベントなど。このようにして、母集団で選択する頻度が高い場合は、すべてではなく対応するパーティションにのみアクセスします。また、パーティション索引付けを行うこともできます。

あなたは他のクエリのために複数のパーティションにアクセスすることになります、MySQLのパーティショニングのシェア率が少ないあなたが行を複製することができている場合、私は推測する共有列についてhttp://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html

のためにこれを参照することができます。

関連する問題