1

私は、さまざまな端末から収集された生体認証データを分析することを目的としたプロジェクトに取り組んでいます。このプロセスは、パフォーマンスにとってそれほど重要ではありません。むしろ、それはI/Oに制限されています。データ量は非常に膨大です。(テーブルごとに数億のレコード)。残念ながら、データベースはリレーショナルです。そして、20個の外部キーがあります。参照されるキーの値を変更することは、ジョブの完了中に非常に一般的です。そのため、データの収集中に多くのUPDATEとSETNULLが発生します。

現在、データベースのセマンティクスが設計されています。すべてのプログラムがほぼ完成し、データベース用のMySQLプロトタイプも作成されます。サンプル(小規模)データで正常に機能します。

プロジェクトに適したDBMSを見つけるために検索を行います。「DBMSの比較」をグーグルで検索しても、役に立ちませんでした。人々はアンチテーゼのことを言います。MySQLはより高速な挿入と更新を実行すると言う人もいれば、Oracle9の方が優れていると言う人もいます...

DBMS間の信頼できるベンチマークベースの比較が見つかりません。私は日常のプロジェクトでMySQLを使用していますが、これはもっと重要に見えます。

私たちの必要なもの:

  • DBMSのライセンスとコストは重要ではありませんが、もちろんオープンソース(GPLまたはLGPL)が推奨されます(プロジェクト全体がLGPLで公開されるため)。
  • 非常に高速な挿入、非常に高速な更新、多くの外部キーが必要です。
  • DBMSは、一度に0〜100の接続に応答する必要があります。
  • 端末は、ローカルネットワーク(LAN)によってサーバーに接続されています。

私が実際に探しているのは、さまざまなDBMSのベンチマークです。チャート、さまざまな状況(参照フィールドまたは通常のテーブルとの関係)でのさまざまな操作(挿入、更新、削除)の個別の比較が含まれる場合があります。

4

1 に答える 1

1

この種の答えには、PostgreSQL、Informix、またはOracleをお勧めします。PostgreSQLはオープンソースです(誰もが同意するように、BSDL、GPL互換)。その理由は、あなたのケースで非常に役立つかもしれないデータモデリングのいくつかの側面に関係しています。一般に、2つの重要な質問があります。

1)自分がしていることに合わせてデータベースをどこまで調整できますか?どこまでスケーリングできますか?

2)データをモデル化するにはどうすればよいですか?

まず、OracleとPostgreSQLはより複雑ですが、より柔軟です。その柔軟性が役立つかもしれません。第二に、柔軟性は後であなたに多くの努力を節約するかもしれません。さらに、それは、ストレートリレーショナルモデルでは不可能な最適化に関する新しい扉を開きます。まず、これを確認することをお勧めします:http ://db.cs.berkeley.edu/papers/Informix/www.informix.com/informix/corpinfo/zines/whitpprs/illuswp/wave.htm私が何を考えているかについて。さらに、Stonebrakerが話していることを見ると、ストレートベンチマークは実際にはここでのリンゴとオレンジの比較であることがわかります。

ORDBMSを使用するという考えは、いくつかの重要なことを意味します。

  1. データに機能的に依存するデータをモデル化できます。たとえば、データを操作して結果を返すJavaまたはPythonの関数を使用できます。これらの関数の出力にインデックスを付けることができます。必要に応じて、挿入と選択のパフォーマンスを交換する必要がある場合は、挿入を選択のパフォーマンスと交換します。
  2. 保存されるデータが少ないということは、挿入が高速であることを意味します。
  3. カスタムタイプと関数を使用してデータを拡張し、データへのより高いパフォーマンスアクセスを提供する機能。

PostgreSQL 9.2は、十分なハードウェアで1秒あたり最大約14000の書き込みをサポートしますが、これはくしゃみをする必要はありません。もちろん、これは書き込みの幅、サーバーのハードウェアパフォーマンスなどによって異なります。PostgreSQLはAffiliasが.orgおよび.infoトップレベルドメイン(Webスケール!)を管理するために使用し、Skypeのインフラストラクチャ(それでもMicrosoftがそれらを購入した後でも)。

最後に、情報パイプラインの一部として、大量のデータを処理していて、PostgreSQLに送信する前に前処理を行う必要がある場合は、配列ネイティブデータベース(科学的作業で一般的なNoSQLアプローチの場合)またはVoltDB(ハイスループット処理用のインメモリストア)。それらは非常に異なるシステムであるという事実にもかかわらず、VoltDBとPostgresは実際には同じ個人によって開始されました。

最後に、ベンチマークチャートに関しては、主要なデータベースベンダーは、ライセンス契約でそのようなものの公開を多かれ少なかれ禁止しているため、それらを見つけることはできません。

于 2012-09-03T13:38:10.600 に答える