7

私は過去に多くのプロジェクトで db4o を使用して多くの成功を収めてきました。時間が経つにつれて大きく進化したようで、LINQ のような現代のトレンドがみんなの口に出てきたことで、再び私の関心がピークに達しました。特に、透明なアクティベーションと永続性をサポートし始めていることがわかったので、かなり興味をそそられましたが、友人私が最初に db4o について言及したとき、私に非常に良い質問を投げかけました。そして、現代の技術革新をもってしても、私はまだそれに答える方法がわかりません.

SQL などのプラットフォームで非常に効果的に実行できる、大規模なクロステーブルの複雑な制約レポートに似たレポートを生成するための最良/最速/最も一般的な方法は何ですか? 時間、労力、および開発時間がどれだけ節約され、特に ORM を介して多くのパフォーマンスが向上するかはよく理解していますが、一部のアプリケーションでは複雑なレポートが必要であり、オブジェクトやオブジェクト クエリを使用して表現する方法がわかりません。複雑なレポートを最適化して維持することは、その目的のために特別に設計されたシステムであっても大変な作業になる可能性があるためです。

--
編集:

より明確にするために、オブジェクト データ ソースなどを使用して、db4o を SqlDataSource などと同じデータ豊富なコントロールに取り込むことができます。ReportViewer での使用に関する db4o サイトのドキュメントを参照したり、データを非正規化してレポート データベースにすることを勧められたりしましたが、この質問は、次のような種類のクエリを実行するために何ができるかについて、概念的な課題を提示することを意図しています。 RDBMS は非常に優れたパフォーマンスを発揮し、業界をリードしています。私は db4o が大好きですが、関連するすべてのオブジェクトをデータベースから取り出してアクティブ化し、計算を実行せずに、いくつかの異なるタイプ (または SQL のテーブル) にまたがって存在する集計データをレポートする真に効率的な方法を思いつきません。アプリケーションレベルのコードで。私は間違っているかもしれませんが、これはできなかったようです」

ここに集まることができた優秀な頭脳の中に、誰かが私が知らないことを知っているか、ODBMS の分野を拡大できる将来の実装のための革新的なアイデアを持っていることを願っています。私は、さまざまな ORM が複雑なレポート オブジェクトの方法論を実装していることを知っています。また、これらのテクノロジのいずれかの経験を持つ人が、私のコードと db4o 以外のテクノロジに依存しない創造的なものを持っているのではないかと考えています (私は、 SQL サーバーのみ)。

4

6 に答える 6

2

db4o を介したレポートのパフォーマンス コストを回避するために、db4o コンテナーと並行して、高度に非正規化された (sqlite ?) データベースを維持することをお勧めします。db に対してレポートを実行し、db4o に対して通常のアプリ ロジックを実行します。

はい、もっと手間がかかりますが、このようにして、db4o の有用性を維持しながら、高性能のレポートを作成できます。

データ アクセス コードを適切に分離していれば、オブジェクトを保存するコードを簡単に更新して、レポート データベースも更新できます。

于 2008-09-17T15:03:35.223 に答える
2

このページをご覧ください。

一番、

ドイツ人

于 2008-10-04T06:08:11.347 に答える
1

この問題についての私の限られた理解は、カウント、集計などのいくつかの機能が欠落しているため、現在 DB4O でレポートを作成するのが非常に難しいということです。すべてのレコードをアクティブにしてから、レコードに対してカウント操作を実行します)。

于 2008-09-17T14:29:35.447 に答える
1

また、使用しているレポート ツールによっても異なります。たとえば、Microsoft の Reporting Services クライアント側エンジンを使用してレポートをレンダリングするプロジェクトを実装しました。SQL サーバーには依存せず、オブジェクトをフィードするだけです。すべての集計はレポート エンジンによって実行されます。つまり、コードは基になるオブジェクトを見つけて具体化するだけで済みます。

于 2010-09-28T20:14:07.953 に答える
1

私はdb4oに精通​​していません。しかし、私は報告ソフトウェアをいくつか知っています。その一部には、 i-net Crystal-Clear のような独自のコネクタを作成できるデータ インターフェイスがあります。単純なオブジェクト (文字列、数値など) の単純なリストをクエリできる場合、それは単純です。

もう 1 つの簡単な解決策は、ダミーの JDBC ドライバーを作成することです。そのためのサンプルがあります。db4o で実行するクエリは、仮想ストアド プロシージャとして利用できます。オプションのパラメータを使用すると、db4o でデータをフィルタリングして最高のパフォーマンスを得ることができます。このようなダミーの JDBC ドライバーは、3 ~ 4 時間で作成できます。

于 2008-09-19T22:41:52.473 に答える
0

あなたに役立つには遅すぎます。しかし、この質問を見つけた人は、Jasper Reports を参照することをお勧めします。製品の「商用」バージョンがあります。ただし、これは実際にはオープン ソース ソリューションであり、 sourceforgeで見つけることができます。

それは実際にはかなり良いようです。レポート サーバーと BI 機能もあります (これもすべてオープン ソースです)。なので、ちょっと気になる人は見てみるといいかもしれません。

于 2011-07-21T12:45:08.500 に答える