同僚と私は、患者プロファイル、患者の薬の処方箋などの管理を扱う薬局ソフトウェア (C#) に取り組んでいます。これらのさまざまなデータ セットはすべて、SQL サーバー データベースに格納されています (使用している2008 標準ですが、将来のバージョンも問題ありません)。各ストアには、ローカル マシン上に独自の SQL サーバー インスタンスがあります。
私たちの目的:
必要に応じて、「ストア A」が「ストア B」のデータベースにアクセスできるようにしたいと考えています。基本的には、薬局の顧客が町の外にいて、他の薬局の支店の 1 つを訪れた場合です。
私が考えたこと:
私の最初の考えは、基本的に、DNSリンク(またはおそらくIP)を介してアクセスできるSQLサーバーのオンラインサーバーインスタンスを維持することでした。これらを同期させる最善の方法を見つけようとしていたところ、SQL Server のレプリケーションに出会いました。問題は、サブスクライバーの更新でトランザクション レプリケーションを使用するつもりだったが、廃止されたため、実際には長期的なオプションではなくなったことです。Microsoft は p2p レプリケーションの使用を提案していますが、これにはエンタープライズ エディションが必要であり、可能であればそれを避けようとしています。トランザクション タイプのレプリケーションを使用したかったのは、レコードの一貫性を維持するのにはるかに優れているためです (マージ エージェント ジョブが 1 時間ごとに実行されるのを待つ必要がないなど)。
私が最近考えたのは、インターネット ベースの SQL サーバー インスタンスを使用することです。これには、各店舗のローカル マシンに戻るリンク サーバーしか含まれていません。他のストアがお互いのローカル マシンから直接動作するだけであれば、同期の問題について心配する必要はありません。しかし、これは恐ろしいセキュリティの脆弱性であると多くの人が言っているのを読んだので、これがもっともらしい考えであるかどうかはわかりませんが、おそらくこれを機能させる方法があると思いますか?
とにかく、これが私たちがやろうとしていることの基本的な要点です。レプリケーション サーバーとリンク サーバーのどちらがより適切なルートなのかはわかりません。
編集:
双方向レプリケーションはどうですか? これについて少し読んでいましたが、これが必要かどうかについては少しわかりません。主キーは処方箋番号などを識別するのに非常に重要なので、サーバー間などで主キーをずらしたくはありません。でも、双方向のレプリケーションができれば、それもいいかもしれません。