0

このポータルに関する以前の質問では、SQLServerとKey-Valueベースのデータリポジトリ間でデータを同期することについての洞察について質問しました。

同じ問題(SQLからHBaseまたは他のデータベースへの一方向のリアルタイム同期)の代わりに、パフォーマンスとレイテンシーの考慮事項に注意を払う必要があり、それを行うための非常に確実な方法は見つかりませんでした。

  1. 複数のSQL2008データシャードがあり、データはさまざまなソースから更新され、同時に多くのプロセスによって処理されます(UIは同じシャードから読み取ります)。

  2. 目標は、選択したテーブルのすべての更新をいつでも取得し、それらをほぼリアルタイムで他のデータソースに転送することです。

  3. SQLシャードの変更量は、100〜500 MBの範囲にとどまります(1分の頻度を維持する場合)。システム全体を移行した後にSQLサーバーを破棄するため、SQLサーバーに大きな変更を加えたくありません。

  4. 残念ながら、私たちのデータアクセス層はさまざまな層で混乱しています。そうでなければ、それは2つの方向に更新をフォークするための最良の方法でした。

  5. トリガーはシャードの速度を低下させ、応答しない状態のままにします。

  6. SQLServer2008にSQLServer2005通知サービスに類似したものがあるかどうか、およびそれがどれほど効果的かはわかりません。

他の革新的なソリューションは非常に役立ちます。

ここでの私の問題は、データをリレーショナル形式からキー値形式に変換することではなく(かなり簡単です)、ユーザーエクスペリエンスに影響を与えることなくSQL Serverの更新をリアルタイムで取得する方法(1〜2分の遅延を許容できる)です。 。

4

3 に答える 3

1

SQL Service Brokerを見たことがありますか?ここにいくつかの情報があるリンクがあります:http://blogs.msdn.com/b/sql_service_broker/archive/2008/07/09/real-time-data-integration-with-service-broker-and-other-sql -techniques.aspx

于 2011-06-20T07:51:25.427 に答える
0

データのレイヤーは下から上にあります:ストレージ、ファイルシステム、データベース、アプリ。

これを行う最も効率的な方法は、ストレージレプリケーションを使用することです。パフォーマンスへの影響はほとんどなく、同期または非同期として構成でき、無料ではありません。あなたはそれの概念のためにSRDFまたはMirrorViewをグーグルで検索することができます。

次に、ファイルシステムのレプリケーションを確認できます。これはストレージレプリケーションに似ていますが、OS /ファイルシステムレイヤーで発生し、ホストシステムのリソース(CPU、IO、mem)を消費します。詳細については、symantecstoragefoundationをグーグルで検索できます。

DBレベルでは、データベースレプリケーション/ログ配布を実行してデータをレプリケートできます。SQLサーバーにはそのような機能があります。

「最も安価な」ソリューションは、4)のようにアプリを変更することですが、パフォーマンスへの影響を最小限に抑えるために、メッセージキューを使用してデータを複製することをお勧めします。

于 2011-06-20T08:35:58.107 に答える
0

調べたいオプションの1つは、SQL Server統合変更追跡(SQL2008以降の一部)です。これは、SQL Serverデータベースで発生した変更(削除を含む)を見つける非常に効率的な方法であり、SQLDBにほとんど影響を与えず、トリガーを必要とせず、データの変更を次の場所に移動できる優れた方法を提供します。 Hadoop。

完全な開示、私はCotegaに取り組んでおり、このデータ同期は私たちが大きな焦点を当てているものです。これがあなたがとることに興味がある方向であるならば、私はもっと助けてうれしいです。

于 2014-11-08T16:01:54.417 に答える