レポート アプリケーションで、レポート ロジックとデータベース スキーマの詳細を抽象化することは可能ですか?
かなり複雑なレポート ロジックを持つ Reporting Services アプリケーションがあり、そのアプリケーションを他のデータベースに移行しようとしています。(同じ目的のために構築されているが、異なるソフトウェア会社によって開発されているデータベース。)
中間で Web サービス / WCF レイヤーを使用するのは賢明な決定ですか? 他にどのようなオプションが考えられますか?
レポート アプリケーションで、レポート ロジックとデータベース スキーマの詳細を抽象化することは可能ですか?
かなり複雑なレポート ロジックを持つ Reporting Services アプリケーションがあり、そのアプリケーションを他のデータベースに移行しようとしています。(同じ目的のために構築されているが、異なるソフトウェア会社によって開発されているデータベース。)
中間で Web サービス / WCF レイヤーを使用するのは賢明な決定ですか? 他にどのようなオプションが考えられますか?
NXCのデータウェアハウスの提案に同意します。
したがって、このアプローチでETLを実行する必要があります。1つのオプションは何らかの形式のROLAPを実行することですが、実際には、ROLAPセットアップから優れたパフォーマンスを引き出すのと同じくらい簡単にETLスクリプトを記述できることがわかりました。
一般的なケースでは、この種のことを万能の方法で行うのは難しいでしょうが、次のいずれかを試すことができます。
データベース スキーマに対していくつかのビューを作成し、それらに対してレポート sproc を記述します。これは、基礎となるデータベース スキーマにある程度の柔軟性があり、ビューを抽象化レイヤーとして使用できることを意味します。
ある種のデータ ウェアハウス プラットフォームを構築し、ETL プロセスを記述して、さまざまなデータ ソースからデータを取り込みます。これはより柔軟ですが、構築するのにより多くの労力がかかり、定期的な更新からのみ機能します。その程度のレイテンシがアプリケーションで許容できる場合は、データ ウェアハウス システムの方が優れたアプローチであることをお勧めします。
データ ウェアハウスの主な利点は、レポート用に最適化されており、すべてのデータ ソースにわたって一貫したインターフェイスを備えていることです。それらを 1 つのスキーマを持つ単一のデータベースに統合します。レポートは、そのスキーマに対して作成されます。新しいシステムの追加は、ETL プロセスを記述してウェアハウスに入力することによって実現されます。データ ソースに関係なく、レポートは引き続き機能します。
WCF はネットワーク通信システムです。この種のアーキテクチャでトランザクションごとに大量のデータを処理するのは難しいことに気付くでしょう。ETL プロセスをバッチでロードする方がはるかに効率的です。ただし、リアルタイム フィードが必要な場合 (おそらくトレーディング フロア システム用)、このようなもので実現できる可能性があります。
低遅延フィードが必要な場合は、エンタープライズ情報統合と呼ばれるツールのジャンルを調査する別のアプローチがあります。おそらく、これを行うことができる最も広く利用可能なツールは、SSIS のデータソースビューです。これにより、任意のデータ ソースを一貫したスキーマにマッピングする柔軟性が得られます。最高の組み合わせの EII ツールほど洗練されていませんが、SSIS パッケージをその上に置き、データをさらに変換する必要がある場合は、それらをレポートのデータ ソースとして使用できます。
ただし、このような構造のシステムを構築したことがないため、実際にどれだけうまく機能するかは保証できません。単体テスト可能なパーツに分解するのは非常に壊れやすく、難しいと思います。そのため、自明ではない複雑なシステムの開発と保守にはかなりの時間がかかります。
市場に出回っている他の EII システムを調べたい場合このリンクは、EII およびその他の EII ツール ベンダーに関するさまざまな記事のディレクトリです。
一般的には後回しにされてしまうと思いますが、私が知っている他の回答者は、各データベースからデータを XML として生成するというものです。これにより、ほとんどの製品で簡単に処理できる形式で、一貫したデータ セットが得られます。
これを行う場合は、実行する XPath クエリが高速であることを確認してください。