4

NHibernateを使用したかなり堅牢なシステムがあり、単一のデータベースサーバーから、管理用と公開Webサイト用の2つのサーバーに移行中です。これは主に、現在のサイトに影響を与えないワークフローでコンテンツ管理などを実行できるようにするためです。現在、これらは同じサーバー内の2つのデータベースですが、時間の経過とともに、2台の物理マシンをWebサービス呼び出しで使用してデータをプッシュすることがわかります。

そのため、例として、マーケティング担当者の1人が、管理者を通じて新しいプロモーションを導入し、今から2週間後にスケジュールすることにしました。新しいプロモーションが開始されたときに本番サーバーにプッシュするスケジューリングシステムに取り組んでいます。データプッシュに同じNHibernateプロバイダーを使用することが目的でしたが、参照整合性を維持する必要があります。

私たちは流暢なnhibernateを使用しており、2つの異なるクラスマップを作成してから、ロードするマップを選択する何らかの形式の依存性注入(IE構造マップ)を使用していることがわかります。システムが成長するにつれてそれを維持することは不可能に思えるので、私はより良い答えを望んでいました。助言がありますか?

4

1 に答える 1

4

ISession.Replicate は、DB で生成された ID 値ではサポートされていません。NHibernate イシュー トラッカーのこのイシューで示されているように。

  • その場合は NHibernate のレプリケーションを使用できるため、独自の ID ジェネレーターまたは Guid/Guid.Comb を使用することをお勧めします (問題で説明されているように)。
  • NHibernate を使用しない独自のレプリケーション コードを作成することもできますが、それが十分に単純であれば実行可能です。
  • DB がサポートするレプリケーション テクノロジを使用します。以前に MS SQL Server 間のレプリケーションを使用したことがありますが、セットアップはそれほど難しくありません。他の RDBMS も同様のものをサポートしていると確信しています。
于 2009-11-09T06:54:10.457 に答える