データウェアハウスシステムに適したソリューションを見つけるために、あなたの知恵を利用したいと思います。問題をよりよく理解するための詳細を次に示します。
データは、1つの大きなファクトと最大15のディメンションを持つスタースキーマ構造で編成されます。
1か月あたり200億のファクト行
100行の10次元(やや階層)
数千行の5次元
最大200K行の2次元
50M〜100M行の2つの大きな寸法
このDBに対して実行される2つの典型的なクエリ
dimqのトップメンバー:
select top X dimq, count(id)
from fact
where dim1 = x and dim2 = y and dim3 = z
group by dimq
order by count(id) desc
タプルに対する対策:
select count(distinct dis1), count (distinct dis2), count(dim1), count(dim2),...
from fact
where dim1 = x and dim2 = y and dim3 = z
質問:
どこでホストできますか(EC2?)
(現時点では、インポートと読み込みの問題は無視してください)
Tnx、
ハガイ書。
私はこれを十分に強調することはできません:既製のレポートツールでうまく機能するものを入手してください。
1か月あたり200億行になると、VLDBの領域に入るので、パーティション分割が必要になります。カーディナリティの次元が低いことは、ビットマップインデックスがパフォーマンスを向上させることも示唆しています。
成熟したSQLサポートが得られるまで、クラウドシステム( Hive 、 Hbase )を忘れてください。データウェアハウスアプリケーションの場合、従来のレポートツールで機能するものが必要です。そうしないと、アドホックレポートプログラムの作成と保守に絶えず行き詰まってしまうことになります。
データボリュームは、Oracleのような従来のDBMSで管理できます ヨーロッパの主要な電話会社 が1日あたり600GBを Oracle データベースにロードすることを知っています。他のすべての条件が同じであれば、データ量より2桁大きいので、 共有ディスクアーキテクチャ まだ余裕があります。 shared-nothing アーキテクチャ Netezza または Teradata はおそらくさらに高速ですが、これらのボリュームは従来の共有を超えるレベルではありません-ディスクシステム。ただし、これらのシステムはすべて非常に高価であることに注意してください。
MapReduceは 効率的なクエリ選択アルゴリズムではありません であることにも注意してください。これは基本的に、ブルートフォース計算を分散するためのメカニズムです。 GreenplumにはMapReduceバックエンドがありますが、専用のシェアードナッシングエンジンの方がはるかに効率的で、少ないハードウェアでより多くの作業を実行できます。
私の考えでは、TeradataまたはNetezzaはおそらくこの仕事に理想的なツールですが、間違いなく最も高価です。 Oracle 、 Sybase IQ または SQL Server も関連するデータボリュームを処理しますが、速度は低下します-共有ディスクアーキテクチャですが、引き続き管理できますこの種のデータ量。 OracleおよびSQLServerのVLDB関連機能の概要については、 この投稿 を参照してください。また、Oracleが Exadataストレージプラットフォーム も導入したことを忘れないでください。
私のたばこの後ろの容量計画では、OracleまたはSQL Serverのインデックスを含めて、月に3〜5 TB程度)が提案されています。リーフには、Oracleでは16バイトのROWIDがありますが、SQLServerでは6バイトのページ参照があります。
Sybase IQは、ビットマップインデックスを多用し、データウェアハウスクエリ用に最適化されています。共有ディスクアーキテクチャですが、このタイプのクエリには非常に効率的です(IIRCは元の列指向アーキテクチャでした)。これは、このタイプの作業に特化しているため、OracleやSQLServerよりもおそらく優れています。
Greenplumはもっと安いオプションかもしれませんが、私は実際にそれを使ったことがないので、実際にどれだけうまく機能するかについてコメントすることはできません。
わずか数百行の10個のディメンションがある場合は、それらを1つにマージすることを検討してください ジャンクディメンション これにより、10個のキーを1つにマージすることでファクトテーブルがスリム化されます。ジャンクディメンションに階層を実装することはできますが、これにより、ファクトテーブルのサイズが1/2以上小さくなり、インデックスによる多くのディスク使用量が排除されます。
レポートツールの妥当な断面でうまく機能するものを使用することを強くお勧めします。 これはSQLフロントエンドを意味します。Crystal Reports のような商用システムでは、より簡単にレポートと分析を行うことができます。取得可能なSQLスキルのセット。オープンソースの世界では、 [〜#〜] birt [〜#〜] 、 Jasper Reports 、 Pentaho。 も生成されています。 HiveまたはHBaseを使用すると、カスタムフロントエンドを構築するビジネスに取り掛かることができます。これは、本当に次の時間を費やすことができない限り望まないものです。 Pythonでカスタムレポートフォーマッターを作成して5年。
最後に、本番システムから高速データフィードを簡単に取得できる場所でホストします。これはおそらく、独自のデータセンターにある独自のハードウェアを意味します。このシステムはI/Oバウンドになります。大量のデータに対して単純な処理を行っています。これは、高速ディスクサブシステムを備えたマシンが必要になることを意味します。クラウドプロバイダーは、このタイプのハードウェアをサポートしない傾向があります。これは、これらの衣装で従来使用されている使い捨ての1Uボックスのタイプよりも桁違いに高価であるためです。高速ディスクI/Oは、クラウドアーキテクチャの強みではありません。
vertica で大成功を収めました。私は現在、1日に2億から10億行の間、つまり1か月に平均約9億行をロードしていますが、1か月に170億行に達しました。私は21に近いディメンションを持っており、クエリは非常に高速に実行されます。データロードを実行する時間枠がなかったため、古いシステムから移行しました。
私たちはさまざまなソリューションについて非常に徹底的な試行と調査を行い、実際に市場に出回っているすべてのものを調べました。 TeradataとNetezzaの両方が私たちに適していたでしょうが、それらは単に私たちにとって高すぎました。 Verticaは価格/性能比で両方を打ち負かしました。ちなみに列指向データベースです。
現在、約80人のユーザーがいますが、完全に展開を開始する来年末までに約900人に増えると予想されています。
レポートにはASP.NET/dundas/reportingサービスを幅広く使用しています。また、サードパーティのレポートソリューションでもうまく機能しますが、まだ試していません。
ちなみに、データロードには何を使用しますか? informatica を使用しており、非常に満足しています。 SSISは私たちを壁に押し上げました。
HBaseとjasperserverhbaseレポートプラグを使用して、適切なレポートを作成できます。低レイテンシOLAP HBaseで作成できます。これはSQLと同じように機能します。JasperserverHBaseプラグインは、拡張HbaseスキャンコマンドであるHbaseクエリ言語を提供します。
あなたが最終的に何を選んだのか興味があります。あなたの質問は2008年の終わりまででした。今日、状況は異なり、HBase、Greenplum、pigなどがSQLのようなアクセスを提供しています。
Monashのサイトを読んでください: http://www.dbms2.com/ 彼は大きなデータベースについて書いています。
Oracle Exadata( http://www.Oracle.com/solutions/business_intelligence/exadata.html および http://kevinclosson.wordpress.com/exadata-posts/)を使用できるかもしれません。 )または、Hadoopを使用できます。 Hadoopは無料です。
NXC、1日あたり6,000億行について確信していますか? 1行が1バイトであっても、1日あたり600GBのデータになります。 1行あたり100バイトがより妥当であると仮定すると、1日あたり60 TB、1か月あたり1.8 PBのデータ)について話していることになります。
その他の情報源 データ量が2桁に達するとOracleの処理が非常に困難になることを確認しているようですTB数字。
少数のユーザーの代替手段は、(beowulf)クラスターです。 20Kは、それぞれ500Gのネットトップを50台購入します。これは約3KWのピーク電力です。または4か月のクラウドストレージ。