それぞれが異なるテーブル構造を持つ複数のデータベースインスタンスに関連する問題に取り組んでいます。問題は、これらのテーブルの間にたくさんの重複があり、それらを効率的に見つけて報告し、場合によってはそれらを排除する方法が必要なことです。
例えば。2つのテーブルがあり、最初のテーブルにCustomerData
はフィールドがあります。
_countId, customerFID, customerName, customerAddress, _someRandomFlags
そして、フィールドを含む別のテーブルCustomerData2
(後で作成)があります。
_countId, customerFID, customerFirstName, customerLocation, _someOtherRandomFlags.
上記の2つの表の間で、とは同じデータを格納するために使用され、同様にとは同じデータを格納するためcustomerName
にも使用されたという事実を知っています。customerFirstName
customerLocation
customerAddress
たとえば、営業チームの中にはを使用しているものと、を使用しcustomerData
ているものがありますcustomerData2
。テーブル間の冗長性を検出してレポートするスケーラブルな方法が必要です。customerFID
両方の表で一貫性があり、同じ顧客を参照していることは、ある程度の確信を持って想定できます。
私が考えることができる解決策の1つは、 customerData
Pythonでクラスを作成し、2つのテーブルのレコードをこのクラスにマップし、必要なクラス内のオブジェクトのハッシュ/署名を計算して(customerName, customerLocation/Address
)、それらを署名テーブルに格納することでした。 、列があります:
sourceTableName, entityType (customerData), identifyingKey (customerFID), signature
次に、それぞれについてentityType
、それぞれの重複する署名を探しますcustomerFID
実際、私はたくさんの列を持つ膨大な数の生物医学データを扱っています。それらは異なる人々で作成され(そして悲しいことに標準的な命名法や構造はありません)、それらに保存された重複データです
編集: 簡単にするために、すべてのデータベースインスタンスを単一のサーバーインスタンスに移動できます。