3

中央のSQLServer(2008 Standardエディション)といくつかの小さな専用SQL Server(Expressエディション)を使用しています。専用の分散型SQLServer(より大きなボリューム、以下を参照)から非同期*でデータを転送し、中央のSQL Server(いくつかのレコード、基本的にはマシンへの通知と場合によっては最適化のヒント)からデータを転送するためのメカニズムを実装する必要があります。

専用のSQLServerは、物理的にテクノロジーマシンの近くに配置されており、datetime, temperature一定の間隔(数秒間隔と考えてください)でたとえば行を収集しています。1つのジョブには約500のレコードがありますが、次のジョブはすぐに続きます(マシンは、それが新しいジョブであることを認識せず、ある意味で非常に愚かであり、単に温度を継続的に収集します)。

テクノロジマシンは、中央のSQL Serverがなくても動作できる必要があり、中央のSQL Serverは、マシンにアクセスできない場合(つまり、専用のSQLエンジンにアクセスできない場合、マシンでオフになっている場合)にも動作する必要があります。つまり、ソリューションは超高速である必要はありませんが、収集されたデータが失われないという意味で堅牢である必要があります。

基本的な考え方は、収集したデータを専用のSQL Server(マシンのIDを使用して正規化された形式に前処理)から中央のSQLServerの既知のテーブルに移動することです。データ量を最小限に抑えるために、新しいデータのみを送信する必要があります。接続に問題がない場合は、専用のSQL Serverによって定期的に(たとえば1時間)転送を開始する必要があります。接続に問題がある場合は、次の1時間後にデータが送信されます。

中央のSQLServerにある別のよく知られたテーブルを使用して、専用のSQLServerエンジンの通知を送信します。このようにして、専用エンジンに(たとえば)中央SQL Serverですでに処理/アーカイブされたデータ(つまり、専用マシンのローカルデータベースからすでに削除されている可能性のあるレコードのヒント)や、中央からヒントが得られます(リアルタイムの要件ではなく、ヒントまたはその他)。ヒントは、専用のSQL Server(つまり、マシンの責任)によって収集されます。つまり、中央のSQL Serverは、よく知られているローカルテーブルのみを処理します。専用のSQLServerマシンを接続しようとはしません。

このソリューションでは、標準のメカニズム(SQLコマンド(ストアドプロシージャ経由))のみを使用し、外部ソフトウェアは使用しないでください。どのような解決策に焦点を当てるべきですか?

ありがとう、ペトル

[後で編集] SQLサーバーは同じローカルエリアネットワークにあります。

4

2 に答える 2

5

メンタルスイッチを作成してテーブルと行の観点から考えるのをやめ、代わりにデータとメッセージの観点から考える場合、Service Brokerはすべての通信、配信、およびメッセージ処理を処理できます。ローカル(Expressマシン上)ではなくINSERT INTO LocalTable(datetime, temperature) VALUES (...)、次の点で考えます。

BEGIN CONVERSATION WITH CentralServer ...; 
SEND ON conversation MESSAGE TYPE [Measurement] (<datetime...><temperature ...>)

レプリケーションまたは大量の連続したリアルタイムETLの代わりにServiceBrokerを使用するを参照してください

于 2012-06-03T16:34:37.923 に答える
0

マージレプリケーションの仕事のように聞こえます。

于 2012-06-03T20:46:00.853 に答える