オープンソースデータベースの行数の上限?
-
16-09-2019 - |
質問
大規模なデータベースをマイニングするデータを行っているプロジェクトがあります。現在、すべてのデータをテキストファイルに保存しています。代わりに、データリレーショナルデータベースを保存するコストと利点を理解しようとしています。ポイントは次のように見えます:
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を搭載したボックスを使用していると仮定します。
解決
MySQLは、あなたのニーズとAlexのPostgreSQLの提案を提供することができる以上のものです。リーズナブルなパフォーマンスを達成するのは難しくありませんが、テーブルに多額のアクセスになり、大量のDMLがある場合は、選択するデータベースで使用されるロックについてもっと知りたいと思うでしょう。
PostgreSQLは、MySQLが選択したストレージエンジンに依存する行のロックアウトを使用することができると思います。 Myisamはテーブルレベルでのみロックされているため、並行性は低下しますが、MySQL用のInnoDBなどのストレージエンジンは、行レベルのロックを使用してスループットを増加させます。私の提案は、Myisamから始めて、行レベルのロックが必要だとわかった場合にのみInnodbに移動することです。 Myisamはほとんどの状況でうまく機能し、非常に軽量です。 MyISAMを使用してMySQLに10億列以上のテーブルがあり、優れたインデックス作成とパーティション化により、素晴らしいパフォーマンスを得ることができます。 MySQLのストレージエンジンの詳細を読むことができますMySQLストレージエンジン テーブルのパーティション化について テーブルパーティション. 。これが記事です 113m行のテーブルで実際にパーティション 同様に便利だと思うかもしれません。
リレーショナルデータベースにデータを保存することの利点は、コストをはるかに上回ると思います。データベース内にデータが入ったら、できることはたくさんあります。時間の回復、データの整合性の確保、より細かいセキュリティアクセス、データの分割、共通言語を介した他のアプリケーションへの可用性の確保。 (SQL)など
あなたのプロジェクトで頑張ってください。
他のヒント
postgreSql テーブルあたり最大32テラバイトなど、データに十分に対応できるはずです。正しく理解すれば、現在5 GB、10 GBの最大(約36バイト/列と最大3億列)について話している必要があります。 )、したがって、ほとんどすべてのデータベースは、実際にあなたに簡単に対応できるはずです。
参考までに、数ヶ月前に読んでいたレビューから、マルチプロセッサ /オーバーラップリクエストのMySQLよりもPostgresスケールが優れています(申し訳ありませんが、リンクなし)。
あなたのプロファイルから、これはある種の生体認証(コドン配列、酵素対タンパク質アミノ酸配列、またはそのような問題)だと思います。同時リクエストでこれを攻撃する場合は、Postgresを使用します。
OTOH、データが一度ロードされる場合、その後単一のスレッドでスキャンされる場合、「酸性ではない」モードでMySQLが最適な一致です。
「最適な」スタックを選択する前に、アクセスユースケースの場合に行う予定があります。