問題タブ [multiple-databases]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - NHibernate と Autofac を使用して複数のデータベースを管理する
自分で解決策を考えている間に、この質問を世に出そうと思いました。
アプリケーションの大部分を構築した後、追加のデータベースへの読み取り/書き込みをサポートするという土壇場の要件があります (合計 2 つ、他には知られていません)。DI/IoC コンポーネントを提供する Autofac を使用して、NHibernate を使用してアプリケーションを構築しました。FWIW、これは ASP.NET MVC 2 アプリにあります。
NHibernate セッションを使用する汎用リポジトリ クラスがあります。IRepository<>
理論的には、2 番目のデータベースに渡されるセッションが適切な SessionFactory から生成される限り、この汎用リポジトリ ( ) を引き続き使用できますよね?
さて、アプリが起動すると、Autofac がそれを行います。Session と SessionFactory に関しては、次のようなモジュールがあります。
ここで、ベースの SessionFactory を返す ConfigureNHibernate() は次のようになります。
現在、これは 1 つのデータベースのみに制限されています。他の NHib シナリオでは、個別の SessionFactories のインスタンスをハッシュに押し込み、必要に応じてそれらを取得する可能性があります。メジャー リリースがかなり近づいているので、全体を再構築する必要はありません。したがって、2 つの SessionFactory を個別に構成できるように、少なくとも上記のメソッドを変更する必要があると思います。私の灰色の領域は、特定のリポジトリ (または少なくともその 2 番目のデータベースに固有のエンティティ) で使用される正しい Factory を指定する方法です。
この方法で IoC コンテナーと NHibernate を使用しているときに、このシナリオの経験がある人はいますか?
編集 構成ファイルのパスを取得し、HttpRuntime.Cache に一致する SessionFactory が存在するかどうかを確認し、まだ存在しない場合は新しいインスタンスを作成し、その SessionFactory を返す GetSessionFactory メソッドをスタブ化しました。ここで、適切な構成パスを指定する方法とタイミングを Autofac に指示する方法を突き詰める必要があります。新しいメソッドは次のようになります(Billy の 2006 年の投稿から大幅に借用):
ruby-on-rails - 個別の DB を持つ Rails エンジン
このトピックをグーグルで検索しても何も見つかりません。私は、Rails エンジン (v2.3.10) を使用して、2 つの Rails アプリを 1 つに結合することを任されています。あるアプリのデータベースを別のアプリに移行しようとしています。私の最初の考えは、ここに投稿された同様の方法を使用して、複数のデータベースの使用を組み込んだ移行を作成することでした。
基本的には、db 構成をロードし、データベースごとに 1 つずつ、2 つの AR クラスを定義してから、これらの AR クラスをテーブル クラスでサブクラス化します。次に、元のアプリ データベースのすべてのものを繰り返し処理し、新しいデータベースに追加します (新しいスキーマに一致するように変更します)。
次に、エンジンに何らかの組み込みサポートがあれば、またはこのマルチデータベース接続を容易にするようなプラグインがあれば、もっと簡単になると思いました。私は手動で作業を行うことに慣れていますが、この種のことに対する適切な解決策を誰かが知っているかどうかを確認したいと思いました。
最終的には移行先のデータベースを介してすべてにアクセスするため、1 回限りのソリューションを探しています。
ruby-on-rails - 複数のデータベースでの移行の実行/スキーマダンプエラー
テーブルの間違ったデータベースにアクセスする単純な移行のdb:schema:dump部分の失敗に対する回避策(モンキーパッチレールなし)はありますか?エラーが発生します
* Mysql :: Error:View'database1.boxscores'は、無効なテーブル、列、関数、またはビューの定義者/呼び出し元にそれらを使用する権限がありません:SHOW FIELDS FROM boxscores
*
boxscoresがdatabase2にある場合。ActiveRecordモデルは接続を確立するように設定されており、アプリは正常に動作します。失敗するのは移行だけであり、スキーマダンプのb/cのみです。
django - Djangoの非常に別々のデータベースにまたがる「外部キー」
2つの異なるデータベースを使用するDjangoサイトを作成しました。1つはローカルで、これを「Django」と呼びましょう。これは、かなり標準的なインストールからのすべての標準テーブル(認証、サイト、コメントなど)に加えて、いくつかの追加テーブルを格納するデータベースです。
ユーザーを含むほとんどのデータは、別のサーバー上のデータベースから取得されます。これを「レガシー」データベースと呼びましょう。
特にユーザーに関して、2つのデータベースを接続するためのクリーンでPythonの方法に関する提案を探しています。
プロキシモデルを使用しています。これは明示的に使用できる場合はうまく機能しますが、関連オブジェクトとしてユーザーオブジェクトにアクセスしている場合(たとえば、組み込みのdjangoコメントシステムを使用している場合)に問題が発生します。
コードは次のようになります。
models.py :( Djangoデータベースを指す)
legend_models.py :(「レガシー」データベースを指す)
自分のミドルウェアも作成したのでrequest.user
、プロキシUser
オブジェクトも作成しました。
本当の問題は、関連オブジェクトとしてユーザーがいるものを使用している場合、特に制御がさらに少ないテンプレートで使用している場合です。
テンプレート内:
代わりにプロキシユーザーモデルを使用するコメントシステムのラップバージョンを作成する以外に、他にできることはありますか?
django - リモートのOracleデータベースでDjangoを使用していますが、「テーブルが存在しません」というエラーが発生します
リモートOracleデータベースのテーブルでDjangoORMを使用して単純なクエリを実行すると、次のエラーが発生します。
これが私が使用しているモデルです:
私はこれまでOracleデータベースを使用したことがないため、この問題をデバッグする方法がわかりません。Navicatを使用してテーブルを表示できるため、ユーザーにはテーブルを表示する権限があると確信しています。この問題を修正する方法に関するヒントはありますか?
asp.net-mvc - ASP.NETMVCを使用したデータウェアハウジング
1つのサーバーには、構造は同じでデータが異なる20を超えるデータベースがあります。すべてのデータベースから一部のデータ(同じクエリ)を収集し、別のサーバーにある新しいデータベースに保存する必要があります。ASP.NET MVC 2を使用することにしましたが、構造がすべてのデータベースで同じであり、非常に多くのファイルを使用すると繰り返されるため、20を超える「LINQto SQLClasses」(.dbml)ファイルを使用するのは論理的ではないようです。これらのファイル。1つの.dbmlファイル(リモートデータベース用)を使用するが、接続文字列のみを変更する簡単な方法はありますか?
mysql - MySQLは異なるサーバー上のデータベース間で結合します
だから、私はユーザーのクラスのためのいくつかのテーブルを持つ既存のデータベースを持っています。会社が行う複数のことを処理するためのより一般的なアプリを構築しています。このクラスのユーザーは、ホストと呼ばれ、会社の複数のプログラムで使用される一般的なタイプです。現在、いくつかあるので、(最終的には)一元化されたアプリに移行したいと考えています。しかし、今は完全にそれを行う時間がありません。これらのホストのログインシステムを構築する必要があり、それを使用してこの新しいシステムへの移行を開始したいと思います。レガシーDBにあるテーブルを新しいDBに移動する合理的な方法を理解できません。新しいDBは(もちろん)別のサーバーにあり、30秒後に自分の目を刺したくありません。これに対処します。レガシーデータベースには、現在のホストテーブルへの参加に依存する多くのレポートがあります。
私が思いつくことができる唯一のことは、あまり良いアイデアのようには思えません。それらは、両方のアプリから両方のデータベースに書き込み(同期の問題が発生しやすい無意味なデータ重複)、新しいアプリからAPIを提供し、レコードセットと一緒に戻ってくるデータをマッシュアップします(ちょうど...間違っているようです)。
誰かがこれに対処する方法について何かアイデアがありますか?
java - Tomcat DBCP と複数のデータソースを使用した Spring JDBC
私はSpringを複数のデータソース(複数のmysql dbにケータリング)で使用し、tomcat dbcpを使用しています。次のような奇妙な例外が発生しています
- プロシージャが見つかりません - プロシージャがデータベースに確実に存在する場合
- プールから借用できません - ローカル開発セットアップなので、間違いなくプールはいっぱいではありません
私が感じる問題はこれかもしれません、みんなからの入力が必要です:
で 1 つのjdbcTemplate
オブジェクトを定義し、起動するspring.xml
必要があるすべてのクエリで、呼び出しjdbcTemplate.setDataSource()
て適切なデータソースを設定し、それを使用simplejdbccall(jdbctemplate)
して proc を実行します。
複数のjdbcTemplate
オブジェクト、つまり定義されたデータソースごとに 1 つも定義する必要があります。でデータソースを設定しjdbctemplate
、ストアド プロシージャを実行している Bean は として定義されていprototype
ます。
c# - 使用中のCastleActiveRecord変更データベース
メインデータベース(いくつかのグローバルなものがあります)とファイル(基本的にsqliteファイル)があるプロジェクトを作成しています。
明らかに、ユーザーが「開く」をクリックして新しいファイルを選択すると、アプリケーションがこの新しいデータベースをロードするようにしたいと思います。
実際、私は2つの構成ファイルを処理することができました http://www.darkside.co.za/archive/2008/01/21/castle-activerecord-connecting-to-multiple-databases.aspx
ただし、2つの問題があります。1つは、パスワードがxmlファイルで明確であるのに対し、これはグローバルなものには問題ない可能性がありますが、ユーザーが作成したファイルにはあまり適していません(これが本当の問題かどうかはまだわかりません、私はファイルのパスワードが必要かどうかを尋ねる必要があります)。
もう1つは、接続文字列がファイルごとに異なるため(はい、パスを変更する必要があります!)、次の2つの方法で作業できます。
- データベースのローカルコピーを作成し、ユーザーが「保存」を押すと、データベースが古いデータベースにコピーされます
- 接続文字列を変更する方法、または「実行時に」構成をロードする方法を見つける
DifferentDatabaseScopeを楽しみにしていますが、わかりません。これを使用する場合、すべてのNHibernate構成をどこで指定しますか?(接続オブジェクトのみを渡す必要があります!!!)
mysql - 一度に複数の場所でデータベースにクエリを実行する方法は?
私の会社には、さまざまな場所に複数の支店があります。各ブランチには独自のデータベース (MySQL) があります。これらのデータベースを 1 回のクエリでクエリする必要があります。これを行う方法はありますか?
ご協力いただきありがとうございます!