私は2つの異種データベースを持っています。1つはmysqlに、もう1つはmssqlにあります。
それらを同期させたい。
定期的にデータの流れがあり、情報の流れは双方向になります
誰かがそれに戦略/アプローチを持っていますか?
私は2つの異種データベースを持っています。1つはmysqlに、もう1つはmssqlにあります。
それらを同期させたい。
定期的にデータの流れがあり、情報の流れは双方向になります
誰かがそれに戦略/アプローチを持っていますか?
なんらかの既製のソリューションを使用しないと仮定すると、いくつかのオプションが開かれています。基本的に、あなたがしようとしているのは、1 つのデータベースで行われた変更をキャプチャし、それらを他のデータベースに複製する方法を見つけることです。
完全な抽出とデルタ
同期するテーブル内のすべての行のキーでソートされた完全なダンプを取得し、最後に実行した同期のダンプと行ごとに比較します。出力を並べ替えると、行が変更、削除、または削除されたかどうかを確認できるため、比較プロセスが大幅に高速化されます。
このオプションは、小規模または中規模のデータベースに適しています。
トランザクション ログ
データベースのトランザクション ログを分析して変更内容を特定し、それらの変更を他のデータベースに適用します。
ログが利用可能であると期待できる場合は、おそらく良い考えです。
トリガー トリガー
を使用して変更を記録し、それらを他のデータベースに複製します。
アプリケーションでの同期
アプリケーションが両方のデータベースに書き込むことを確認してください。
これは、アプリケーションがいくつかの制御されたモジュールのみを介してデータベースに書き込む場合 (つまり、両方のデータベースの更新を忘れる場所が多くない場合) に機能する可能性があります。あまり管理されていない設定 (つまり、複数のアプリケーション / 制御されていない、または十分に分割されていないデータベース アクセス / アドホック スクリプト) では、これは単にオプションではありません。
最初に詳細情報が必要です:
一般に、リアルタイム同期が必要な場合は、レプリケーション ソリューションになります。これは通常、非常に少量の変換を処理できます (通常、ストアド プロシージャを介して発生します)。これは通常、ログを盗聴する商用ソリューションです。ほとんどの人は、コードがログ形式に依存することを望まないため、ほとんどの場合、パッケージ化されたソリューションを使用します。
リアルタイムの同期が不要な場合、大量のデータがある場合、または重要な変換要件がある場合は、ETL ソリューションを使用することになります。選択できるものはかなりありますが、ほとんどが商用です。一方、時間をかけてベスト プラクティスを理解すれば、自分で開発するのは難しくありません。奇妙なことに、これは実際にはあまり話されていません。いずれにせよ、Adam Luchjenbroers は ETL を使ったアプローチのほとんどをうまく識別しました。スナップショット間のトランザクションを失う余裕がある場合は、ファイル デルタ アプローチをお勧めします。それ以外の場合は、すべての変更をキャプチャしないタイムスタンプ、トリガー、またはログに依存しているため、最も正確なアプローチです。
synchrodb.com をご覧ください
SynchroDB は 2 つのデータベースの内容を比較し、パラメーターとソース データベースの内容に従って、宛先データベースの内容を更新します。
SynchroDB は、機能キーの概念を使用して、ソース データベースと宛先データベースの行を照合します。
SynchroDB は高度にカスタマイズ可能です。デフォルトの動作は次のとおりです。
•宛先データベースに含まれていない行を挿入する。
• 両方のデータベースに属する行について、それらのフィールドを 1 つずつ比較し、異なるフィールドを宛先データベースで更新します。
•ソースデータベースに存在しない行を宛先データベースから削除する。
SynchroDB は無料です。