構造がまったく異なる2つの大きなデータベース間でデータ同期を実装する必要があります。基本的に、最初のデータベースのさまざまなテーブルにある製品に関するデータを収集し、2番目のデータベースの他のテーブルに再配置する必要があります。
初めて製品を作成することはそれほど複雑ではありません。しかし、私はすべてのデータではなく、各製品に関する特定のデータを更新する方法を探しています。
明らかに、これを難しくするいくつかの問題があります。
- 選択クエリを除いて、ソースデータベースで何もすることはできません。
- ターゲットデータベースでは、通常のクエリ(選択、更新、挿入、作成)を実行できますが、既存の構造/テーブルを変更することはできません。
- ターゲットとソースDBは完全に異なる構造を持ち、テーブルはまったく同じではないため、データを実際に再配置する必要があります-テーブルの比較は機能しません。
- ターゲットデータベースはMySQLサーバーを使用します。ソースはDB2である場合があります。
- どこにも「更新時間」フィールドはありません。
そのため、プロセス全体を1つのPython(理想的には)スクリプトで実行する必要があります。
ターゲットデータベースで更新するフィールドに基づいて、各製品のハッシュを作成することを検討します:md5(code + description + supplier +約10の他のフィールド)。同じデータに基づく新しいハッシュが、ソースデータベースから毎日作成されます。パフォーマンスのために、すべてのハッシュを単一のテーブル(項目コード、current_hash、old_hash)に保存します。次に、新しいハッシュが古いハッシュと異なる場合、製品を比較して更新します。
約50万の製品があるので、パフォーマンスが少し心配です。
それは良い方法ですか?