본문 바로가기

Database/Database 모델링

데이터 품질 진단, 데이터 품질이라는게 무엇인가? (#DQ.01)

데이터 품질 진단, 데이터 품질이라는게 무엇인가? (#DQ.01)

 

데이터 품질이란?

 

요즘과 같이 데이터가 넘쳐나는 세상에서 데이터의 품질은 매우 중요한 부분이다.

그렇다면, 데이터 품질은 어떤 개념을 이야기 하는것 일까?

 

DB에는 데이터가 있다. 누군가는 그 데이터를 이용해서 서비스를 받거나, 제공하고 있다.

서비스를 제공하는 사람은 데이터를 입력 또는 가공 하는 행위를 하며, 서비스를 받는 사람은 데이터 값을 이용해서 유의미한 정보를 제공 받는 쪽에 있다.

 

여기에서 그 데이터의 품질, 즉 퀄리티는 당연히 좋아야 한다.

데이터 품질이 곧 서비스의 성패를 가르게 되는것이다.

 

그럼 데이터 품질에 대해서 간단한 예를 들어보자.

 

위와 같은 사원목록 테이블이 있다.

 

회사의 사정을 잘 모르는 이가 봤을때도 문제가 있는 데이터 두개를 발견할수 있다.

 

박지원, 허생원의 생일 데이터를 확인 해볼까?

 

일반 상식 적으로 생각 했을때 생일이 1900-01-23, 2025-03-04 일 수 있을까?

 

지금은 2020년 이다.

 

지금 나이가 121살인 사람과 3년뒤에나 태어날 사람이 사원목록에 있는건 말이 안된다.

 

여기서는 예를 사원의 생일로 따졌지만, 어떤 특정 물품의 판매개시일 이거나, 판매일자이거나 데이터가 생성된 날, 혹은 통계적인 데이터에서 저렇게 잘못된 날짜를 쓰는 데이터가 있는것은 큰 문제가 될 가능성이 아주 높다.

 

저렇게 상식을 벗어난 데이터들이 우리가 이용하는 서비스의 전체적인 데이터 품질을 망치고 있는것 이다.

 

또 하나의 예를 들어 보겠다.

 

위와 같이 국가코드테이블이 있고, 거래처목록이라는 테이블이 있다.

 

국가코드에는 대한민국, 미국, 호주, 필리핀만 등록이 되어 있다. 그리고 거래처목록 테이블을 보면 각 회사별 거래처 국가코드가 입력되어 있다.

 

여기서 우리가 주목해야될 데이터는 U사의 거래처국가코드값 JPN이다.

 

이 값은 국가코드테이블에 없는 코드값 이다. 이것 역시 데이터 품질의 오류 이다.

 

물론 JPN을 국가코드테이블에 등록 하면 되지만, 그건 개선책일 뿐, 그전까진 그냥 오류데이터 이다.

 

이건 서비스에서 어떤 문제를 만들수 있을까?

 

거래처를 등록하는 화면에 국가 목록이 리스트박스로 되어 있다고 한다면, JPN을 입력할수 없는 문제가 생길수 있다.

(사실 입력할수 있다고 된다면 그건 더 큰 문제가 있음을 뜻한다. 메타 데이터가 관리 되고 있지 않고, 소스에서 하드코딩 되어 있다는 의미일 수 있기 때문이다.)

 

그리고 두번째는 거래처 상세를 조회하는 화면에서 해당 거래처 국가명이 표시 되지 않을수 있다.

 

그 외에도 여러가지 오류 가능성을 가지고 있다. 코드 관리는 어디서나 매우 중요한 일이 아닐 수 없다.

 

현장에서 보면 이렇게 코드관리가 되지 않고 쓰이는 데이터들이 많이 있다. 이런건 보통 하드코딩으로 때우거나, 다수가 알지 못하는 또 다른 코드목록 테이블이 존재 한다거나..

 

이러한 데이터들은 DB 공간을 낭비하기도 하며, 조회 성능을 떨어뜨리기도 한다.

 

자, 그럼 어떻게 하면 이러한 데이터들을 효율적으로 잘 관리 할 수 있을까?

 

 

데이터 품질 진단

 

우리는 위와 같은 현상들, 사실 훨씬 더 많은 케이스가 있으나 간략하게 안내 했을 뿐이다. 이러한 케이스들이 얼마나 있는지를 먼저 알아야 한다.

 

그걸 알기 위해서 데이터 품질 진단을 시행 하여야 한다. 우리가 사용하는 DB에 어떤 데이터 들이 있고, 이 데이터들이 어떻게 관리되고 있으며, 상태가 어떤지 알아야 한다.

 

위와 같이 코드와 매핑이 안되는 데이터들, 그리고 날짜의 어떤 범위를 벗어난 데이터들이 어디에 얼마나 있는지 확인 하는 작업을 데이터 품질 진단 이라고 한다.

 

 

데이터 품질 진단는 4~5년전부터 공공기관 및 대기업을 시작으로 지금까지 매년 시행이 되어 오고 있다. 그로 인해서 7~80%에 머물던 유효데이터 비율이 95% 이상으로 올라오기도 한 사례들이 있다.

 

사실 특정 공공기관을 지칭하진 않겠지만 내가 직접 진단했던 기관은 데이터 오류율이 30%넘게 나오는 경우가 많이 있었다. 놀랍지 않은가? 민간 기업은 그보다 조금 좋은 수준이지만 15~20% 가량의 오류율을 보인다.

 

이렇게 데이터 품질 진단을 통해서 데이터 품질을 알았다고 한다면 이젠 무엇을 해야 하나?

 

바로 개선이다.

 

 

데이터 품질 개선

 

데이터 품질 개선이란 데이터 품질 진단을 통해 나온 오류들을 개선해 가는것 이다.

 

위에서 예를 들었듯이 생일 데이터가 오류면 그것을 정상적인 날짜로 확인하여 변경한다고 데이터 품질 개선이 끝나는게 아니다.

 

왜? 이런 데이터가 들어 왔는지를 확인 해야 한다.

 

DB에서는 테이블에 여러가지 제약조건을 걸어 데이터 품질을 기초적인 수준에서 관리 할 수 있다. 하지만 그게 만능 열쇠가 되지는 못한다.

 

앞에서와 같이 생일 데이터를 예를 들어보자, 이 데이터가 어떻게 입력이 되는지 확인을 해야 할 것이다.

 

누군가가 사원정보를 입력하는 화면에서 타이핑으로 입력을 하는지, 아니면 개개인이 알려준 정보를 누군가가 종이에 적어 직접 DB 클라이언트로 UPDATE SQL을 만들어 작업을 하는건지 확인을 해야한다.

 

만약 전자라면, 이것의 입력 방법을 리스트 박스로 선택 하여 입력하게끔 한다던지, 아니면 신분증이나 다른 신원조회 DB의 데이터를 API로 받아 넣게 한다던지의 방법으로 입력 오류를 최소한으로 하게끔 바꿔줘야 한다.

 

후자의 방법이라면 사원 정보의 전산 입력 시스템을 만들어야 할 것이다.

 

어떤 데이터는 기계의 센싱값이 저장 된다고 해보자. 이것의 오류가 있었다면 그 기계에 문제가 있는것 인지, 아니면 그 데이터를 가지고오는 프로그램의 문제가 있는것 인지를 확인 하고 그 원천을 개선 해야 데이터 품질 개선이 이루어 졌다고 말 할 수 있을것 이다.

 

 

요즘, 많은 기관에서 데이터 품질에 대한 관심도가 높아져 간다. 공공기관 뿐 아니라 민간 기업, 그리고 이젠 시작하는 신생 스타트업 기업들에서도 데이터 품질에 대한 중요성을 이해하고, 그것을 지켜가려고 한다.

 

데이터 품질이라는것은 하루아침에 만들어 지지 않는다. 데이터 품질이 잘 관리 되려면 화면개발, DB 표준화 설계, 메타데이터 관리 등 선행 되어야 할 것이 많이 있다. 

 

 

앞으로 이러한 것들에 대해서 더욱 자세하게 포스팅 해 보겠다.

 

DBA로 일을 하건 개발자로 일을 하건 이런 데이터 품질에 대한 관심을 가지고 SI 업무를 대한다면 조금은 우리가 서비스의 질을 향상 시킬 수 있지 않을까? 이런 고민을 한번쯤 해봐야 한다.

 


# 데이터 품질 진단 과 관련해서 궁금하신 점이 있으시면 언제든지 댓글이나 이메일로 문의 주시기 바랍니다.

mahalphp@naver.com

감사합니다.

 

 

by.sTricky