더미 데이터(Dummy Data) 및 중복 데이터(Duplicate) 식별을 위한 매칭 알고리즘

엔터프라이즈 데이터 품질 관리(DQM) 프로젝트를 시작하고 단일 진실 공급원(SSOT)을 구축할 때, 현업 데이터 엔지니어들을 가장 괴롭히는 숨은 적은 고도화된 시스템 장애가 아닙니다. 바로 비즈니스 유저나 개발자가 무심코 입력한 ‘더미 데이터(Dummy Data)’와, 이기종 시스템을 통합하는 과정에서 필연적으로 증식하는 ‘중복 데이터(Duplicate Data)’입니다.

“qwer”, “테스트”, “999999”와 같은 쓰레기 데이터와, “홍길동”과 “홍긿동” 같은 미세한 중복 데이터를 기계적으로 식별하여 걷어내지 못한다면, 앞서 구축한 데이터 카탈로그와 리니지 아키텍처는 무용지물이 됩니다. 본 문서에서는 이러한 불량 데이터를 색출하고 병합하기 위해 실무 데이터 파이프라인에 적용되는 고도화된 탐지 및 매칭 알고리즘을 심층 분석합니다.

1. 더미 데이터(Dummy Data) 식별 알고리즘과 패턴 분석

더미 데이터는 고의적, 혹은 테스트 목적으로 의미 없이 입력된 허위 데이터를 의미합니다. 이를 식별하기 위해서는 단순한 텍스트 일치 여부가 아닌 ‘행동 패턴’과 ‘통계적 이상치’를 찾아내는 접근이 필요합니다.

  • 정규 표현식(Regular Expression) 기반 연속 패턴 탐지: 키보드 타건의 물리적 연속성이나 의미 없는 반복 문자열을 잡아냅니다. “qwer”, “asdf”, “zxcv” 등 쿼티(QWERTY) 키보드의 인접 키를 연속해서 누른 패턴을 정규식으로 필터링하여 허위 가입 계정을 색출합니다. 또한 A{4,} (A가 4번 이상 반복)와 같은 문자 반복 패턴도 차단합니다.
  • 블랙리스트 사전(Blacklist Dictionary) 매칭: 기업의 데이터 거버넌스 위원회가 정의한 ‘절대 사용 불가 단어’ 사전을 메모리에 올려두고, 입력값과 실시간으로 대조합니다. “테스트”, “test”, “관리자”, “admin”, “아무개” 등 테스트 성격이 농후한 명사나, “010-0000-0000” 같은 더미 전화번호가 대표적인 타겟입니다.
  • 통계적 이상치(Outlier) 탐지: 나이가 “999세”로 입력되어 있거나, 상품 주문 수량이 상식적인 표준 편차를 아득히 벗어나는 경우, 머신러닝 기반의 이상치 탐지 알고리즘(Isolation Forest 등)을 통해 해당 로우(Row)를 더미 데이터 의심군으로 분류합니다.

2. 중복 데이터(Duplicate) 식별을 위한 심화 매칭 알고리즘

더미 데이터를 걷어냈다면, 다음은 ‘서로 다른 시스템에서 유입된 동일 객체’를 찾아낼 차례입니다. 중복 데이터 식별은 오타와 띄어쓰기 오류를 극복하기 위한 수학적 접근이 필수적입니다.

  • 결정론적 매칭 (Deterministic Matching): 가장 빠르고 직관적인 방식입니다. 사전에 정의된 ‘절대 규칙(Rule)’에 따라 두 레코드가 100% 일치할 때만 중복으로 판정합니다. (예: “주민등록번호가 같고 휴대폰 번호가 같으면 동일인이다.”) 연산 속도는 빠르지만, 오타가 하나라도 있으면 중복을 놓치는 치명적인 단점이 있습니다.
  • 문자열 거리 알고리즘 (Levenshtein Distance / Jaro-Winkler): 퍼지 매칭(Fuzzy Matching)의 핵심입니다. 두 문자열이 얼마나 다른지를 ‘편집 거리(수정, 삽입, 삭제 횟수)’로 계산합니다. ‘김철수’와 ‘김쳘수’처럼 키보드 입력 실수로 인한 중복을 찾아내는 데 필수적인 엔진입니다.
  • 음성학적 매칭 (Phonetic Algorithm – Soundex / Metaphone): 텍스트의 스펠링이 아닌 ‘발음’을 기준으로 유사도를 측정합니다. 콜센터 직원이 고객의 이름을 듣고 타이핑할 때 발생하는 오류를 잡아내며, 특히 영문 고유명사나 글로벌 고객 데이터를 매칭할 때(‘Smith’와 ‘Smyth’) 탁월한 성능을 발휘합니다.
  • 코사인 유사도 (Cosine Similarity) 및 TF-IDF: 기업의 B2B 주소나 긴 상품명 등 다소 긴 텍스트의 중복을 찾을 때 사용합니다. 텍스트를 벡터(Vector)로 변환하여 두 데이터 간의 각도를 측정함으로써, 단어의 순서가 바뀌어도(예: “서울시 강남구 테헤란로” vs “테헤란로 강남구 서울시”) 높은 유사도 점수를 도출해 냅니다.

3. 연산 부하를 해결하는 전처리 기술: 블로킹(Blocking)

중복 데이터를 찾기 위해 100만 건의 고객 데이터를 서로 1:1로 비교하면 총 1조 번, 즉 $O(N^2)$의 무지막지한 연산 복잡도가 발생하여 시스템이 마비됩니다. 이를 해결하기 위한 필수 아키텍처가 바로 블로킹(Blocking)입니다.

블로킹은 전체 데이터를 유사한 특성을 가진 작은 ‘블록(Block)’ 단위로 파티셔닝한 뒤, 해당 블록 내에서만 퍼지 매칭 알고리즘을 수행하는 기법입니다. 예를 들어, 1차적으로 ‘출생연도’와 ‘성별’이 같은 그룹을 묶어 블록을 생성하고, 그 블록 안에서만 ‘이름’과 ‘상세 주소’의 유사도를 계산합니다. 이를 통해 컴퓨팅 리소스 소모를 기하급수적으로 줄이고 배치(Batch) 작업 시간을 혁신적으로 단축할 수 있습니다.

결론

더미 데이터를 색출하는 정교한 패턴 분석과 중복 데이터를 찾아내는 확률론적 매칭 알고리즘은 엔터프라이즈 데이터 파이프라인의 ‘궁극적인 정수 필터’입니다. 아무리 화려한 시각화 대시보드와 데이터 카탈로그를 갖추었더라도, 이 필터를 통과하지 못한 쓰레기 데이터(Garbage In)가 쌓인다면 비즈니스 리더들은 결코 그 데이터를 신뢰하지 않을 것입니다.

이로써 우리는 데이터의 정의부터 품질 관리, 정제, 통합, 리니지, 카탈로그, 그리고 최종적인 중복 데이터 매칭까지 다루는 [제2장: 데이터 품질 및 표준화 통제]의 거대한 마스터플랜을 완벽하게 완성했습니다.

다음편부터는 본격적으로 이러한 데이터들을 물리적으로 담아내고 통제하는 [제3장: MDM 시스템 아키텍처 설계]의 첫 주제로, ‘멀티 도메인(Multi-Domain) MDM 모델과 싱글 도메인 모델의 시스템 구조 비교’에 대해 심도 있게 다루겠습니다.

댓글 남기기