2008-09-17 14 views
7

私は過去に多くのプロジェクトで多くの成功を収めてきました。時間が経つにつれて大きく進化したようですが、LINQのような現代のトレンドでは、私の関心が再びピークに達しています。特に、透明な活性化と持続性をサポートし始めていることがわかりましたが、私が最初にdb4oについて言及したときに私に非常に良い質問を提出しました。現代の技術革新であっても、私はまだそれに答える方法がまだ分かりません。db4oでのレポート

SQLなどのプラットフォーム上でとても効果的に行うことができ、大きなクロステーブルの複雑な制約の報告と同様のレポートを生成するための最良/最速/最も一般的な方法は何ですか?どのように多くの時間、労力と開発時間が節約されているのか、特にORMよりも多くのパフォーマンス上の利点がかなりわかりますが、オブジェクトやオブジェクトのクエリを使用して表現する方法がわからない複雑なレポートが必要なアプリケーションもあります。そのために特別に設計されたシステムであっても、複雑なレポートを最適化して維持することが圧倒的になる可能性があるためです。

から
編集:

より明確に、オブジェクトデータソースなどすべきのSqlDataSourceらと同じデータが豊富なコントロールにdb4oのを引っ張るために使用することができます。私はdb4oサイトのドキュメントをReportViewerで使用することについて言及しているだけでなく、データをレポートデータベースに非正規化することを推奨していますが、質問はそのタイプのクエリを達成するために何ができるかについて概念的な問題を提起することを意図しています。 RDBMSは、業界を保持するという点では非常に優れています。私はdb4oが大好きですが、関連するすべてのオブジェクトをデータベースから取り除き、それらをアクティブにしたり、計算を実行したりすることなく、いくつかの異なるタイプ(またはSQLのテーブル)に存在する集約データを本当に効率的にレポートする方法について考えることはできませんアプリケーションレベルのコードで私は間違っているかもしれませんが、これはRDBMSで可能な最適化と競合することができないようです。

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

答えて

1

問題の私の限られた理解は、Count、Aggregateなどの一部の機能が欠落しているため、DB4Oでは現在のところレポート作成が非常に難しいということです。現状では、それは暗黙のうちに(例えば、すべてのレコードをアクティブにしてから、レコードに対してCount操作を実行する)ことを意味します。

+0

この問題は、リレーショナルレポートの設計と同じ方法でレポートを設計することに主に関係しているようです。私は、このジレンマの解決策は、RDBMSを使用していないこと、そして丸い穴に四角いペグを合わせるのではなく、新しいアプローチを考えなければならないことを覚えておくことです。 – TheXenocide

2

のdb4oを経由して報告のパフォーマンスコストを回避するためには、私はあなたのdb4oコンテナに並行して、高度に非正規化(sqliteの?)データベースを維持することをお勧めしたいです。 db4oに対するdbおよびnormalアプリケーションロジックに関するレポートを実行します。

はい、それはより多くの仕事だが、db4oのの有用性を維持しながら、この方法は、あなたは、高パフォーマンスの報告があるでしょう。

あなたが適切にあなたのデータアクセスコードを分離している場合、また、報告デシベルを更新するために、オブジェクトを保存し任意のコードを更新する簡単なはずです。

+0

コメントをいただきありがとうございますが、これは解決策よりもハックのようです。私がSQLにデータを実行している場合、並行処理の問題などではなく、データをSQLに保存することもできます。また、dbを設定した後、db4oにオブジェクトを保存するのは1行で、透明な永続性を使用する場合はさらに少なくなります – TheXenocide

+1

これは私が「高度に非正規化」と述べた理由です。私はあなたのレポートに必要なものだけを含むサマリーテーブルを主に保持するつもりでした。 lucene.netを検索するのと同じ方法で少しします。データベースとは別に索引を維持する必要があります。 –

+0

これはソリューションよりも回避策です。私は* db4oを使って報告する適切な方法を知りたいと思います。また、「適切に分離」されているのはかなり実装に相対的ですが、db4oには異なる抽象化手法のメリットがあります – TheXenocide

1

私はdb4oに慣れていません。しかし、私はいくつかの報告ソフトウェアを知っています。その中には、i-net Crystal-Clearのような独自のコネクタを書くことができるデータインターフェイスがあります。単純なオブジェクト(Strings、Numbers、...)の単純なリストを照会することができれば、それは簡単です。

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

+0

このレスポンスではどこから来ているのかわかりますが、db4oはまったく異なるスタイルのDBです。それに伴うきちんとした機能を見ることができます。これは.NETではうまく機能せず、db4oの機能を効率的に活用することは重要です。 – TheXenocide

+0

あなたはまだ努力のために+1を得ていますが、徹底的な回答に最も近いものです:) - CrystalClearも質問には適していませんが、努力のおかげです。私はこれに答えるためにdb4oの経験を持つ人が必要だと思う。 – TheXenocide

2

this pageを参照してください。

ベスト、

ドイツ

+0

db4oのドイツ語ViscusoがSOになったのでしょうか?かなりお世辞; p。ありがとう、これは便利ですが、私の質問は、RDBMS構造(マルチテーブル/ユニオン/など)の恩恵を受けると思われる複雑なレポートのパターンに関するものです。この機能をどのように置き換えるのでしょうか?私は明快に編集します – TheXenocide

+1

リンクはもはや動作しません。 –

1

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

0

あまりにもあなたに役立つには遅すぎる。しかし、私は、この質問を見つけた人がJasper Reportsを見たいと思うかもしれないことを示唆しています。製品の「商用」バージョンがあります。しかし、実際にはオープンソースのソリューションで、sourceforgeにあります。

実際にはかなり良いと思われます。 report serverとBI機能(さらに、すべてのオープンソース)があります。だから、少し興味がある人を探す価値があるかもしれない。

関連する問題