2010-12-30 6 views
1

私はいくつかのビジネス機能を持つユーザーコンテンツのウェブサイトを持っています。すべてのテーブルは1データベースにあります。今では、アクティビティやユーザーログテーブルに基づいて分析を追加しています。毎年の日付別、各アクティビティタイプ別などでレポートを分割して分割しています。問題は、別のデータベースを作成するかどうかです。 (または人々はそれをデータウォーハウスと呼んでいます)、あるいは私はそれらの新しいテーブルを既存のデータベースに追加するだけですか?このために別のDBを作成する必要がある場合は、メインDBからすべてのデータをAnalytic DBの一時表にロードし、そのデータをアナリティック表にロードする必要があります。分析/レポート - 同じデータベースか別のデータベースか、どのDBですか?

分析の要件はできるだけリアルタイムに近いため、私は別のものに行く場合どのDBを使用するのかよく分かりません。私が使用しているMySQLはリアルタイムアナリシスを提供する仕事をします。つまり、ユーザーは行動をとることができます。レポートを見れば、数値はすでに集計されていますか?

答えて

2

予想されるレポートの量によって異なります。トランザクション処理データベースは、一般的に効率的な挿入のために3NFで設計されています。

レポートは、必要な結合数のためにさらに複雑です。また、レポートからかなりの数のSELECTトランザクションを追加すると、パフォーマンスが低下する可能性があるため、レポートデータベースが使用される理由があります。

レポート・レプリカとETLを設定するためのレポート・ロードとパフォーマンスの影響を検討する必要があります。また、レプリカがあるかどうか、レプリケートする頻度を判断する必要があります。データが固定されたスナップショット(例えば、毎日のコピー)に対してレポートを作成している場合、ビジネスレポートがより一貫性のあるものになるという「リアルタイム」要件に対して使用できる議論があります。

レポートデータベースにデータをロードする方法については、Strategies for populating a Reporting/Data Warehouse databaseを参照してください。

0

現時点では、ハードウェアに関するすべてです。分析データベースをアプリケーションと同じシステム(ハードドライブ)に配置する場合は、とにかくカットしてもパフォーマンスの向上はほとんど見られません。ディスクのスキャンによってスピードが遅くなる...データベースの分離にかかわらず、1つのディスクだけが非常に高速にスキャンされます。

しかし、リアルタイムのレポートを実装する必要がある場合は、ユーザーのアクティビティと監視のために2番目のデータベースを作成します。ユーザーがアクティビティを実行すると、このデータベースに挿入されます。報告の際に、私はデータベースをまたいで参加します(これにより、システムが遅くなりますが、同じボックスにいるので、選択肢はありません)。私は別のデータベースにユーザーのアクティビティを置くので、時間の経過とともに古いデータをバックアップしてクリーンアップする方が簡単です。

レポートシステムをアプリケーションシステムから分離できる場合は、必要なテーブルだけを別のシステムのレポートデータベースにコピーする15個のETL/syncジョブを実行します。私はそのシステムを報告します。ユーザーには15分の遅延がありますが、これにより迅速なレポート作成が可能になります。しかし、これは真のデータウェアハウスではありませんが、あなたの特定のニーズを満たす特別なソリューションです。

関連する問題