3

大規模なデータベースのデータ マイニングを行っているプロジェクトがあります。私は現在、すべてのデータをテキスト ファイルに保存しています。代わりにデータ リレーショナル データベースを保存することのコストと利点を理解しようとしています。ポイントは次のようになります。

CREATE TABLE data (
    source1 CHAR(5),
    source2 CHAR(5),
    idx11   INT,
    idx12   INT,
    idx21   INT,
    idx22   INT,
    point1  FLOAT,
    point2  FLOAT
);

妥当なパフォーマンスで、このようなポイントをいくつ獲得できますか? 現在、約 1 億 5000 万のデータ ポイントがあり、おそらく 3 億を超えることはないでしょう。4 つのデュアルコア 2GHz Xeon CPU と 8GB の RAM を搭載したボックスを使用していると仮定します。

4

3 に答える 3

7

PostgreSQLは、テーブルごとに最大 32 テラバイトなど、データを十分に収容できるはずです。私の理解が正しければ、現在 5 GB、最大 10 GB (行あたり約 36 バイト、最大 3 億バイト) について話していることになります。行)、ほとんどすべてのデータベースが実際に簡単に対応できるはずです。

于 2009-07-16T21:30:57.327 に答える
3

参考までに: Postgres は、数か月前に読んでいたレビューから、マルチプロセッサ/重複する要求で MySQL よりも優れたスケーリングを行います (申し訳ありませんが、リンクはありません)。

あなたのプロフィールから、これはある種の生体認証 (コドン配列、酵素とタンパク質のアミノ酸配列、またはそのようなもの) の問題であると思います。同時リクエストでこれを攻撃する場合は、Postgres を使用します。

OTOH、データが一度ロードされてから単一のスレッドでスキャンされる場合、おそらく「ACID 不要」モードの MySQL が最適です。

「最適な」スタックを選択する前に、アクセス ユース ケースの場合に行う計画がいくつかあります。

于 2009-07-17T18:36:55.273 に答える
2

MySQL は、PostgreSQL に関する Alex の提案だけでなく、お客様のニーズにも十分に対応できます。適切なパフォーマンスを達成するのは難しくありませんが、テーブルが頻繁にアクセスされ、大量の DML が含まれる場合は、最終的に選択するデータベースで使用されるロックについて詳しく知りたいと思うでしょう。

PostgreSQL はすぐに行レベルのロックを使用できると思いますが、MySQL は選択したストレージ エンジンに依存します。MyISAM はテーブル レベルでのみロックするため、同時実行性が損なわれますが、InnoDB for MySQL などのストレージ エンジンは、行レベルのロックを使用してスループットを向上させることができます。MyISAM から始めて、行レベルのロックが必要な場合にのみ InnoDB に移行することをお勧めします。MyISAM はほとんどの状況でうまく機能し、非常に軽量です。MyISAM を使用して MySQL に 10 億行を超えるテーブルがあり、適切なインデックス作成とパーティショニングにより、優れたパフォーマンスを得ることができます。MySQLのストレージ エンジンの詳細については、 MySQL Storage Enginesを参照してください。テーブルのパーティショニングについては、Table Partitioningを参照してください。に関する記事はこちら1 億 1,300 万行のテーブルで実際にパーティション分割を行うと、同様に役立つ場合があります。

リレーショナル データベースにデータを格納するメリットは、コストをはるかに上回ると思います。データがデータベース内にあると、できることはたくさんあります。ポイント イン タイム リカバリ、データ整合性の確保、きめ細かいセキュリティ アクセス、データの分割、共通言語による他のアプリケーションへの可用性。(SQL)などなど

あなたのプロジェクトで頑張ってください。

于 2009-07-17T00:09:09.097 に答える