2011-05-03 4 views
1

서로 다른 테이블 구조를 가진 여러 데이터베이스 인스턴스가 관련된 문제를 해결하고 있습니다. 문제는이 테이블들 사이에 많은 복제물이 있기 때문에 효율적으로 찾고보고하고 제거 할 수있는 방법이 필요하다는 것입니다.구조가 다른 테이블 간의 데이터 중복을 감지하는 방법

예 : 나는 두 테이블, 첫 번째 테이블, 필드와 CustomerData 있습니다

_countId, customerFID, customerName, customerAddress, _someRandomFlags 

을 내가 다른 테이블, CustomerData2는 필드 (나중에 내장)이 : 위의 두 테이블 사이

_countId, customerFID, customerFirstName, customerLocation, _someOtherRandomFlags. 

을, I 동일한 데이터를 저장하는 데 customerNamecustomerFirstName이 사용되고 동일한 데이터를 저장하는 데 마찬가지로 customerLocationcustomerAddress이 사용되었다는 사실을 알고 있어야합니다.

영업 팀 중 일부는 customerData을 사용 중이며 나머지는 customerData2을 사용하고 있습니다. 테이블 간의 중복을 감지하고보고 할 수있는 확장 가능한 방법을 원합니다. 두 표의 customerFID이 일관성이 있으며 동일한 고객을 가리키는 보증인 금액이 있다고 가정 할 수 있습니다.

내가 생각할 수있는 한 가지 해결책은 파이썬에서 customerData 클래스를 만들고 두 테이블의 레코드를이 클래스에 매핑 한 다음 클래스 내에서 필요한 객체 (예 : customerName, customerLocation/Address)의 해시/서명을 계산하고

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

다음 각 entityType, 나는, 나는 생물 의학 데이터의 거대한 세트로 일하고 있어요 현실에서 각 customerFID

에 대한 중복 서명을 찾습니다 열이있는, 서명 테이블에 저장 많은 열이 있습니다. 그들은 다른 사람들 (그리고 슬프게도 표준 명칭 또는 구조)를 만든 그들

편집에 저장된 중복 데이터되었습니다 : 단순 위해서 , 나는 하나의 서버 인스턴스에 모든 데이터베이스 인스턴스를 이동할 수 있습니다.

+0

Ocaso Protal을 편집 해 주셔서 감사합니다. 다음 번에 훨씬 더 멋진 방식으로 내 질문을 형식화하는 것을 기억하겠습니다. –

답변

0

성능을 신경 쓸 수 없다면, 실용적인 접근 방식을 고수해야합니다. Django (또는 SQLAlchemy 또는 ...)를 사용하여 원하는 모델 (테이블)을 빌드하고 비교할 데이터를 가져옵니다. 그런 다음 효율적으로 중복을 식별하기위한 알고리즘을 사용하십시오 (... 목록이나 dicts에서 데이터를 보유하는 방법에 따라 다름). 성능을 향상 시키려면 멀티 프로세싱 모듈로 앱을 "향상"하거나 맵 축소 솔루션을 고려하십시오.

관련 문제