web-dev-qa-db-ja.com

データウェアハウスをリアルタイムに近い状態で維持するためのアイデアを探している-ETLツールなど

ロードがバッチ指向で行われる、つまりデータが毎晩または多くても数時間ごとに更新される、従来のデータウェアハウスの実装を多数実行しました。私は今、データウェアハウスのデータをリアルタイムに近い状態に維持する必要があるシステムを作成するという課題に直面しています(数分の遅延で十分ですが、それ以上はできません)。私はたくさんの読書をしました、そして、リアルタイムに近づくことは過去数年にわたってDWの傾向であるようです。ただし、このような「トリクルフィード」ETLをサポートする特定の例や使用可能なツールに関する具体的な情報を見つけるのに苦労しています。適切なツールは、データベーストランザクションログを読み取って、それらの変更をデータウェアハウスに送信しながら、いくつかのデータ変換を行うことができるようです機内。リアルタイムデータウェアハウジングの経験を持っている人はいますか?優れたツールを推奨したり、このテーマに関する優れた読み物を指摘したりできます。

関連するリンクをいくつか示します。 http://proc.conisar.org/2012/pdf/2214.pdfhttp://www.google.com/url?sa= T&RCT = J&Q =&ESRC = S&ソース=ウェブ&CD = 37&CAD = RJA&UACT = 8&VED = 0CGQQFjAGOB4&URL =のhttp%3A%2F%2Fwww.researchgate.net%2Fpublication%2F226219087_Near_Real_Time_ETL%2Ffile%2F79e4150b23b3aca5aa.pdf&EI = G_dOU8HXI4iy2wW954GoDw&USG = AFQjCNHZVJuxfmuqwjrdi10oxM8v51WcNA&SIG2 = 6OI-xoIz9b0mH_hzITBVrQ

ありがとうございました!

追伸私はマイクロソフトショップで働いているので、ソースデータベースはMicrosoft SQL Server上にあります。私はSSISをうまく処理していますが、ここには収まりません。

3
SQL_Guy

SQL ServerのEnterpriseバージョンをお持ちの場合は、Change Data Capture(CDC)を使用してこれを行うことをお勧めします。これは、変更されたデータを監視するトリガーを設定するよりもはるかに簡単でクリーンです。さらに、トランザクションログの変更を読み取り、それらの変更をシステムテーブルに記録します。

ETLにはSSISを使用できます。 2012がインストールされている場合は、非常に便利なCDCコンポーネントがいくつかあります。ただし、OLE DBソースなどの通常のコンポーネントを使用して、CDCが有効なときにSQL Serverがインストールする組み込みのCDC関数をクエリすることもできます。

私はCDCとSSISを使用して、2つのシステムの同期を維持しながら、1つのシステムから別のシステムに移行し、10分ごとに問題なく実行される統合を構築しました。重要なのは、SSISパッケージをできるだけ軽量に保つことです。これは、ルックアップをフルキャッシュなどから切り離すことを意味します。理想的には、ジョブが頻繁に実行されるほど、実行ごとに送信するデータが少なくなります。

ソースシステムに汚れを付けることが心配な場合に考慮すべきもう1つのことは、非同期モードでソースの可用性グループの読み取り専用レプリカを調べることです。これにより、読み取りをOLTP=データベースからオフロードできます。ただし、これにはEnterprise Editionおよび2012以降が必要です。

1
njkroes

OracleのAttunity ReplicateとGolden Gateをチェックしてください。

他のネイティブオプションには、WMIポーリングでのService BrokerまたはSSISの使用が含まれます。

ただし、SQL Enterpriseを使用している場合は、保守性の観点からCDCが最適なオプションです。

0
Ringo

最近、このようなものを構築する必要があり、AlwaysOn可用性グループを使用して、必要なデータベースに読み取り専用のレプリカを作成するようになりました。 Enterpriseを選択できない場合は、ログ配布で問題を解決できますが、データウェアハウスをさらに後回しにするため、ETLはログ配布されたレプリカへの復元を処理できる必要があります。

これらのレプリカから、データの新しいデータをデータウェアハウスに送り込むSQLエージェントジョブとして5分ごとに実行されるMERGEステートメントを頻繁に使用するカスタムETLプロセスがありました。

処理する必要があるデータの量に応じて、これをより短い間隔で実行することができます。

レコードに日付がスタンプされている場合、このプロセスを数か月から数年にわたって遅くする唯一のことは、トランザクションの大幅な増加です。トランザクションが増加した場合、すべてのETLはこのように何らかの形で影響を受けますが、デプロイメントをスケールアウトするために行える多くの改善点があります。

0
James Anderson

ボリュームに応じて、IRI CoSort(一括抽出/ロードされたフラットファイルデータまたはODBC接続)のいずれかを使用できる)のようなデータ統合のための手頃な高速ツールを使用する場合、いずれにしても、ほぼリアルタイムになります(その速度、およびDB内変換はありません)。記事ごとにリアルタイムに近づけるために、データ(ログではなく)中心の方法でCDCを介して「フローを調整」できます。同じツールを使用して特定の日付以降の行を選択し、結合して挿入/更新/削除を検索し、複数の種類のマッピングを実行し、フィードテーブル、ファイル、およびレポートのターゲットを一度に実行します。これは、SSISよりも高速で安価な4GLおよびEclipseのアプローチですInformaticaらより。

0
Suraj Singh