2

UNION、GROUP_CONCAT などのかなり複雑なクエリで構成されるサイトのレポート セクションを作成する必要があります。エンティティとの JPA 統合により、これまでのところデータベースの独立性が維持されています。現在、システムは MsSQL を使用していますが、後で必要に応じて Postgres または MySQL に切り替えることができるようにしたいと考えています。

MySQL や Postgres であまり作業をしなくても動作するようにするには、これらのレポートをどのように使用すればよいでしょうか?

このサイトはSpringも使用しています

4

3 に答える 3

2

私が見るところ、あなたの質問は多かれ少なかれ「そのベンダーに縛られずにベンダー固有の機能を利用するにはどうすればよいですか?」というものです。

これは簡単な答えではありません。おそらく最も柔軟な方法は、JPA に固執し、パフォーマンス ヒットを吸収することです。

その他の可能性:

  • レポートを一連のインターフェイスを公開するコンポーネントとして定義します。CDI を使用して、選択した DB に関連する実装を注入します

  • 上記のバリエーションとして、データ アクセス用に独自の DAO インターフェイスをセットアップします。より具体的な別の ORM フレームワークのように、パフォーマンスが向上します。その上でレポートを作成します。

  • ビジネスで許可されている場合は、レポート用に使用する RDBM を選択してください。夜間 (データがあまりない場合はオンデマンドでも) に、実稼働データベースをそこにダンプします。

于 2012-08-31T15:32:03.220 に答える
0

SQLを複数のデータベースで機能させたい場合は、次の計画に従うことができます。

  1. 複数のデータベースでSQLをテストする

移植性を得るには、移植可能なSQLを作成する必要があります。SQLが移植可能であることを確認する唯一の方法は、移植性を確認することです。

標準SQLの使用に固執する場合、これはかなり簡単なはずです。データベース固有の機能を使用することはできませんが、それらがなくてもできることはたくさんあります(これらは主に構文糖衣構文であるか、リレーショナルモデルの外に出るためのものであり、必要がないことを願っています)。 。非標準SQLの使用にすでに迷っている場合は、これを実行できるポイントを得るのは非常に難しいかもしれませんが、規律ある方法で作業を開始する場合は、標準に固執する能力について楽観的です。 。

SQL Serverで作業している場合、PostgreSQLは無料で、セットアップが簡単で、非常に機能が優れているため、テスト対象の2番目のデータベースに適しています。

于 2012-08-31T20:40:20.243 に答える
0

最良のオプションは、データベースごとに 1 つのデータ アクセス オブジェクトを使用し、それぞれが共通のインターフェイスに準拠していることです。すべてのクライアント コードは、基になるデータベースについて知る必要なく、共通の DAO インターフェイスを使用できます。

Spring では、構成オプションとして DAO 実装クラスを簡単に交換できます。たとえば、CustomerDaoOracle と DB2 の実装を持つインターフェースがある場合は、次のいずれかを使用します。

<bean id="customerDao" class="my.package.customer.OracleCustomerDao"/>

また

<bean id="customerDao" class="my.package.customer.Db2CustomerDao"/>
于 2012-08-31T18:29:05.433 に答える