7

現在、(現在) 約 15,000 製品の統計データをインポートするアプリケーションを構築しています。現在、1 つのソースからの毎日の統計に対して 1 つのデータベース テーブルを維持する場合、1 日あたり 15,000 行のデータ (行ごとに 5 ~ 10 フィールドとしましょう。主に float、int) が増加します。明らかに、1 つのテーブルに年間 500 万件を超えるレコードが含まれています。

それは、他のソースからデータを取り込むという考えほど私には関係ありません (したがって、新しいソースごとにデータベースのサイズを 500 万レコードずつ増やします)。

現在、データは統計/傾向ベースのデータであり、基本的に 1 レコードにつき 1 日 1 回の書き込みと、多くの読み取りが行われます。ただし、オンザフライのレポートとグラフ作成のために、ルール (日付範囲、値範囲など) に基づいてデータのサブセットにすばやくアクセスする必要があります。

私の質問は、これがデータ (MySQL InnoDb テーブル) を保存する最良の方法ですか、それとも統計/傾向データを保存および処理するためのより良い方法ですか?

この時点で検討したその他のオプション: 1. 複数のデータベース (製品ごとに 1 つ)。データ ソースごとに個別のテーブルがあります。(つまり、データベース: ProductA、テーブル:Source_A、Source_B、Source_C) 2. 1 つのデータベース、複数のテーブル (製品/データ ソースごとに 1 つ) (つまり、データベース: Products、テーブル: ProductA_SourceA、ProductA_SourceB など。 ) 3.factualデータベース内のすべてまたは特定の製品情報と、statistical別のディレクトリ内の csv、xml、json (フラット ファイル) 内のすべてのデータ。

これまでのところ、これらのオプションはどれも管理しやすく、それぞれに長所と短所があります。開発のアルファ段階に入る前に、妥当な解決策が必要です。

4

3 に答える 3

2

列ベースのデータベースを利用してみることができます。これらの種類のデータベースは、説明している種類の分析クエリではるかに優れています。いくつかのオプションがあります:

http://en.wikipedia.org/wiki/Column-Oriented_DBMS

InfiniDBで良い経験をしました:

http://infinidb.org/

とInfobrightもよく見えます:

http://www.infobright.com/

InfiniDBとInfobrightの両方に無料のオープンソースコミュニティエディションがあるので、これらを使用して、得られる可能性のあるパフォーマンス上の利点の種類に関するベンチマークを取得することをお勧めします。

また、パフォーマンスを向上させるためにデータのパーティション化を検討することもできます。

于 2011-04-20T02:21:02.060 に答える
2

データがどのように見えるか、および実行しようとしている集計/傾向の種類に少し依存します。ほとんどのリレーショナル データベースは、この種の時系列データに対しては問題なく機能します。数十億のレコードがある場合でも、適切なインデックス作成とパーティション化により、必要なレコードをすばやく見つけることができます。Oracle、MySQL、SQL-Server などの DB は、このカテゴリに分類されます。

あなたが扱っている製品が株であり、それぞれの株について毎日新しい価格が得られるとしましょう (非常に現実的なケースです)。新しい取引所、株式、取引頻度により、このデータは急速に指数関数的に増加します。ただし、交換によってデータを分割することはできます。または地域。

さまざまなビジネス インテリジェンス ツールも、データを取得する前に事前に集計することを効果的に支援できます。提案されたように、これは基本的に列指向のデータベースです。(データ ウェアハウスと OLAP 構造は、データ セットを事前にマッサージおよび集約するのに役立ちます)。

データ ウェアハウスの考え方と同様に、単に集計に時間がかかりすぎることが問題である場合は、集計を一晩かけて、クエリを実行しやすい構造にすることができます。前の例では、データの大きなチャンクを取得する必要があるのはごくまれかもしれませんが、52 週の高値などの集計が必要な場合がより多くなります。大量の生データを 1 つの形式で保存し、毎晩必要なものだけをテーブルに書き出す作業を行うことができます。テーブルには、在庫ごとに数千のデータ ポイントではなく、現在は 3 つまたは 4 つのデータ ポイントがあります。

追跡している傾向が本当にいたるところにある場合、または複雑なアルゴリズムである場合は、事前に構築された分析およびデータ マイニング アルゴリズムを使用できるように、本格的な BI ソリューションを調査する必要があります。

データがあまり構造化されていない場合は、Hadoop や Mongo などの NoSQL データベースを使用した方がうまくいくかもしれませんが、データベースに関する私の知識はリレーショナル形式に重点を置いていることは確かです。

于 2013-11-13T23:52:40.197 に答える