2009-07-13 9 views
4

ルビーと複数のデータベース接続で多くの読書をした後、私は多くの人がそうではないことを少なくとも見出したようです。私は多くの異なるデータベースとスキーマにクエリを行い、レポートやシームレスなページの情報を取り戻すことに慣れています。したがって、ユーザーは複数の異なるシステムにログオンする必要はありません。すべてのシステムが1つまたは2つのWebページにあるページを作成できます。複数のデータベースを照会するのは私だけですか?

ウェブとデータベース駆動型設計ではこれは普通のことではありませんか?

編集:これは私のオリジナルコードのほとんどが古典的なaspになっているためですか?

+0

いいえ、私もやっています! –

+0

私が検索を始めたとき、あなたは何も聞いていないと思うでしょう。私は、他のフレームワーク(aspやphpというフレームワークを呼んだ場合)でとてもシンプルなことをやるのがどれほど難しいか信じられませんでした。 – johnny

答えて

2

ほとんどのORMデザイナーは、ユーザーが複数のデータベースにアクセスしたいという考えをしていないようです。これは、ORMの世界ではかなり一般的な制限と思われます。

+0

これは非常に限定的で、不満足なようです。 – johnny

0

2つのデータベースからデータをプルしてレポートをコンパイルするのは一般的ではありませんが、どちらのデータベースのクエリエンジンでもデータベース間のクエリを最適化できないため、通常はアプリケーションを実行するために単一データベースを使用します。

1

アプリケーションのワークフローの1つの部分で複数のデータベースにヒットすることは珍しいことではありません。しかし、私が行ったすべての事例で、これはいくつかのWebサービス呼び出しによって実行されています。

私は自分の知る限り、複数のデータベースを一度に直接操作して結果を単一のレポートにマージする必要はありませんでした。

+0

うわー。私はそれをしないと想像することはできません。 – johnny

+0

私はこれを行います。認証サービスは1つのdbを使用し、別のdbを使用するアプリケーションによってアクセスされます。 +1しかし、私は同じアプリケーションから直接2つのデータベースにアクセスすることを避けようとしています。これは、一部のリファクタリングを考慮する必要があることを示す良い指標です。 –

+0

@johnnyどうして?とにかく、Webサービスのデータレイヤーをラップするのはかなり一般的です(少なくとも.NET開発では)。層の明確な分離以外の理由がない限り(TCPまたはパイプエンドポイントでは、パフォーマンスヒットは無視できます) – Dusda

2

クライアントのWebサイトは3つのデータベースにまたがっていますので、私はこれを行います。実際には、私はすべてを一本の中央データベースの視点に集約してから、他のデータベースに接続します。

私はこれを "正常な"動作とは考えませんでした。私はあなたが1つのシステムのために設計し、それに反して作業する時代のほとんどを推測するでしょう。

EDIT:わかりやすくするために、私たちのデータ層にLinq to SQLを使用し、データベースビューに対してオブジェクトを定義します。このようにして、レポートとアプリケーションコードは同じデータモデルで動作します。あなたが手動で主キーを定義し、関連を設定する必要があるので、Linqエンティティを設定する余分な仕事があります...しかし、これまでのところ価値があることは間違いなく証明されています。私たちはEntity Frameworkでこれをやろうとしましたが、関係を適切に設定するのに苦労し、あきらめなければなりませんでした。面白いのは、エンティティフレームワークが私たちのようなより高度なシナリオ用に設計されていると思っていたことです...

0

ORMの場合は少し難しいかもしれません。しかし、それを行うことができます。必要に応じてさまざまなデータベースからオブジェクトを取り出し、それらをコンポジットとして使用して、実際に必要な新しいオブジェクトを作成します。プロセスのORM部分をスキップすることができれば、直接データベースに問い合わせてオブジェクトを直接ビルドすることができます。

1

企業のポータルでは、この種のアーキテクチャを見てきました。さまざまなデータソースから大量のデータが取り込まれています。ポータルの要点は、サイロシステムを一緒にすることです。ユーザは、多くのシステムを孤立して使いたくない場合があります(特に、それぞれにサインインする必要がある場合)。この種のシナリオでは、特に急速に拡大し、多数の異種システムを持つ大企業の場合は、正常です。

これが正しいかどうかは、これらの別個のDBがある理由によって異なります。

+0

私はあなたが指定した理由でそれらを持っています。異なるシステムがたくさんあり、誰でも話すことができれば気にしません。 net asp、odbc、sql statements(テーブル・アダプター経由) – johnny

+0

WebSphere Portalについて読むと、おそらくこのような機能性製品の一部を達成しているように見えますhttp://www.ibm.com/developerworks/websphere/zones/portal/newto/(WebSphere Portalに切り替えることはお勧めできません。エンタープライズ・リソースの集約者の例として使用するだけです) – RichardOD

+0

ありがとうございました。私はそれを認識していますが、それを使用したくありませんでした。大金を稼ぎ、学習曲線は非常に高いようでした。それはおそらく適切ですが、私は今それを使用することはできません。 – johnny

0

システムを基礎から構築する場合は、この方法で行うことはお勧めしません。あなたが設計していないシステムで作業している場合は、それほど多くの選択肢はありません。それは珍しいことでもありません(つまり、「有機」と「計画」の成長の違いです)。

0

masterとさまざまなテストインスタンスを数えていないので、私は定期的に9つのデータベースにヒットしました。はい、私はそれを継承し、はい、 "クラシック" ASPの数値が顕著に表示されます。もちろん、この混乱のすべての "輝かしい"デザイナーは長い間行っている。私たちは、私たちが安全にできる限り早く、それをより穏やかなものに置き換えようとしています。

私は新しいシステムを構築していて、データベースを追加し続けて2つか3つのデータベースのポイントに達すると思うのですが、おそらくあなたのデザインを考え直すべき時だと思います。 OTOH、複数の異種システムのデータを集約しているなら、それは奇妙ではありません。あなたが必要とする時間と、問題にハードウェアを投入するための予算によっては、データが静的な場合は、Liveサーバーから定期的にデータをプルする「レポートサーバー」にとっては良いシナリオになります。

関連する問題