2

それぞれが異なるテーブル構造を持つ複数のデータベースインスタンスに関連する問題に取り組んでいます。問題は、これらのテーブルの間にたくさんの重複があり、それらを効率的に見つけて報告し、場合によってはそれらを排除する方法が必要なことです。

例えば。2つのテーブルがあり、最初のテーブルにCustomerDataはフィールドがあります。

_countId, customerFID, customerName, customerAddress, _someRandomFlags

そして、フィールドを含む別のテーブルCustomerData2(後で作成)があります。

_countId, customerFID, customerFirstName, customerLocation, _someOtherRandomFlags.

上記の2つの表の間で、とは同じデータを格納するために使用され、同様にとは同じデータを格納するためcustomerNameにも使用されたという事実を知っています。customerFirstNamecustomerLocationcustomerAddress

たとえば、営業チームの中にはを使用しているものと、を使用しcustomerDataているものがありますcustomerData2。テーブル間の冗長性を検出してレポートするスケーラブルな方法が必要です。customerFID両方の表で一貫性があり、同じ顧客を参照していることは、ある程度の確信を持って想定できます。

私が考えることができる解決策の1つは、 customerDataPythonでクラスを作成し、2つのテーブルのレコードをこのクラスにマップし、必要なクラス内のオブジェクトのハッシュ/署名を計算して(customerName, customerLocation/Address)、それらを署名テーブルに格納することでした。 、列があります:

sourceTableName, entityType (customerData), identifyingKey (customerFID), signature 

次に、それぞれについてentityType、それぞれの重複する署名を探しますcustomerFID

実際、私はたくさんの列を持つ膨大な数の生物医学データを扱っています。それらは異なる人々で作成され(そして悲しいことに標準的な命名法や構造はありません)、それらに保存された重複データです

編集: 簡単にするために、すべてのデータベースインスタンスを単一のサーバーインスタンスに移動できます。

4

1 に答える 1

0

パフォーマンスを気にすることができなければ、高レベルの実用的なアプローチを使用します。Django(またはSQLAlchemyなど)を使用して、目的のモデル(テーブル)を構築し、比較するデータをフェッチします。次に、重複を効率的に識別するためのアルゴリズムを使用します(...リストまたはdictから、データを「どのように」保持するかによって異なります)。パフォーマンスを向上させるには、マルチプロセッシングモジュールを使用してアプリを「強化」するか、map-reduceソリューションを検討してください。

于 2011-05-03T15:27:42.787 に答える