-3

UUID、年齢、性別、家族の収入、および 12 のフィールドを持つユーザーの 1 つのテーブル データベースを作成します。それらの約 40 - 5000 万。年齢範囲、収入範囲などに基づいてクエリを実行し、uuid のリストを取得する必要があります。連結する場合、各行は約 400 文字にする必要があります。400 バイトに 50Mil を掛けると、およそ 17 ~ 18 GB になります。ゆっくりですが成長します。

このデータを保持し、高速なクエリを実行するのに最適なデータベース システムはどれですか。モンゴまたはMySQL?また、どの種類のハードウェアを保持するのが最適か。

また、経験に基づいて、mySQLまたはMongoのクエリ時間がかかることを誰かが教えてもらえますか. これに基づいて、システム全体の他のコンポーネントのアーキテクチャを設計する必要があります。

4

2 に答える 2

2

4000 万から 5000 万のレコードまたは 17 から 18 GB が「大きい」と見なされるとは言いません。任意のリレーショナル データベースで十分です。

最新のサーバーで十分です。Windows、Linux - 最もよく知っているものを選択してください。64ビットが必要だと思います。十分な RAMを追加すると、すべてをメモリに保持できます。

ハードウェア、スキーマ、インデックスなど、あまりにも多くの要因に依存するため、クエリ時間は誰にもわかりません。

あなたの最大の問題は範囲によるクエリだと思います。これはトランザクション データベースというより、データ マイニング ウェアハウスのように思えます。おそらく、時間、場所、収入などの次元を持つスター スキーマは、あなたがやろうとしていることにより適しているでしょう。

于 2012-06-02T18:37:55.787 に答える
0

すべての情報を 1 つのテーブル、特に行数が多いテーブルに格納する必要はありません。これほど大規模なプロジェクトでは、リレーショナル データベースの仕組みとインデックス作成の仕組みを学ぶことを強くお勧めします。これを実装しようとしている方法は、スローするデータベースまたはハードウェアで遅くなります。これをリレーショナル データベースとして設計し、いくつかの個別のテーブルを使用してデータを格納し、外部キーを使用して他のテーブルにアクセスすると、パフォーマンスが大幅に向上します。

これは非常に乾燥していますが、不可欠です。あなたは本当にそれをよく理解するように努めるべきです。

さらに、 indexingについて読む必要があります。各データベースの機能はわずかに異なるため、実装方法は選択したデータベースによって異なります。

そして、私はあなたがあなたのパフォーマンスを大幅に向上させることを意味します. 私は、15 ~ 20 分かかった不完全なクエリを確認して再設計し、リレーショナル データベースの設計、インデックス、および最適なクエリ設計によってそれらを最適化し、ミリ秒まで短縮しました。

于 2012-06-02T18:55:35.897 に答える