본문 바로가기

Data Architecture

DA 설계공모전 2013년 문제 - 이번엔 한번!!


Downloaded and edited it for my information.

[ source  : 디비가이드  http://www.dbguide.net/da.db?cmd=snb10_1 ]





기업에서 운영하고 있는 정보시스템의 규모가 확대되고 복잡도가 증가함에 따라 데이터의 정확성, 중복성, 일관성 등과 같은 데이터 품질요소는 날이 갈수록 중요한 이슈로 부각되고 있다. 이에 따라 우리는 기업의 데이터베이스에 저장되어 있는 데이터에 대한 품질을 측정하여 데이터 오류와 그 원인을 도출해 내고 데이터 품질을 개선하여 데이터가 기업에 실질적인 자산으로서 제 역할을 다 할 수 있도록 데이터 품질관리 시스템을 구축하고자 한다우리가 구축한 시스템은 우선적으로 우리 회사에 적용하여 기능성 및 효과성을 검증하고, 이후 보완을 거치면 외부 판매도 가능할 것으로 기대하고 있다.



우리가 구축하고자 하는 데이터 품질관리 시스템은 일회성이 아닌 지속적인 데이터 품질관리 기능 구현을 목표로 한다. 지속적인 품질관리 체계는 품질진단 계획수립으로부터 시작한다. 매년 초에 연간 데이터 품질진단 일정을 수립하는데, 년 초에 수립되는 품질진단 일정 ‘정기’로 구분하여 품질진단을 위한 프로젝트를 등록하면, 이에 대한 세부 일정 수립 담당자 할당을 하게 된다. ‘정기’로 구분한 경우의 세부 일정은 월이나 분기, 반기 등과 같이 주기적으로 수행하게 되며, 이를 차수로 구분하여 각 차수가 어느 기간에 수행되는지를 정의하고, 


각 차수에 진단을 수행하고 결과 분석과 보고서 작성 등을 수행할 담당자와 진단 대상 시스템을 등록한다. 


담당자는 한 명 이상일 수 있으며대상 시스템 또한 하나 이상일 수 있다담당자는 DA부서나 IT부서 사원 중에서 선정되며, 필요에 따라 외부의 데이터 전문가를 수행팀원으로 포함시킬 수도 있다. 이를 위해 우리는 외부의 데이터 전문가에 대한 전문가 풀을 관리한다. 


대상 시스템은 정확히 말해서 그 시스템의 데이터베이스를 의미하며, 이를 위해 사전에 품질관리 대상 시스템(정확히는 데이터베이스)의 목록을 관리하고 있어야 한다. 대상 시스템 목록에는 해당 시스템의 서비스 개시일, 시스템 설명, 테이블 수 등이 포함된다. 대상 시스템은 계층적으로 더 세분화해서 관리할 수도 있는데, 이를테면 인사관리 시스템은 채용, 노무, 급여 등으로 세분화할 수도 있다는 것이다. 


‘정기’로 구분하는 품질진단 외에 ‘상시’로 구분하는 품질진단 프로젝트도 있는데, 이 경우의 세부 일정은 특별한 목적에 의해 특정 기간에 일회성으로 수행하기 때문에 차수는 기본 값으로 1차로만 등록하고, 이에 대한 수행 기간과 대상자 할당, 대상 시스템 선정 등은 ‘정기’의 경우와 동일하다.


분석포인트 : 

1. 담당자 [ DA부서/IT부서/외부전문가 ] - 외부전문가 풀은 통합이 가능한지 분리가 나올지 검토요 

2. 품질진단일정 '정기', '상시' 는 수립의 주체가 누구인가 ? 

    구분 : 정기/상시 

    정기 프로젝트 등록 ( 세부일정 -  월/분기/반기 => 차수 개념 및 수행기간)

    각 차수를 수행할 담당자와 진단 대상 시스템을 등록한다. ?  M:M 인가 ? 

      즉, 각 차수별로도 특정담당자가 여러대상시스템을 역으로 한 대상시스템을 여러 담당자가 관리 ???

           그리고 대상시스템에서도 상세레벨로 들어가는데 담당자의 단위는 상세는 나누어질 필요는 없다 ???

3. 진단대상시스템 [ 데이터베이스 레벨, 시스템 레벨, 개별 업무 레벨로 진행 ]



품질진단 대상이 될 수 있는 시스템에 대해 

대상 시스템별로 테이블 목록, 컬럼 목록, 테이블 관계 목록, 코드 목록 등의 기본적인 메타 데이터를 준비한다. 테이블 목록은 테이블 명, 한글 테이블명, 소유자로 구성하며, 대상 시스템이 계층적으로 세분화되어 있는 경우는 세분화된 말단 시스템별로 해당 테이블을 관리하여 상위의 시스템으로 대상 테이블을 검색 하면 하위 시스템에 해당하는 테이블들 모두를 볼 수 있게 한다. 

컬럼 목록은 테이블명, 컬 럼명, 한글 컬럼명, 데이터 타입, 길이, NULL 허용여부, PK 여부, 기본값 등의 항목으로 구성한다.

테이블이나 컬럼은 테이블ID, 컬럼ID와 같이 각 개체에 대해 내부적으로만 사용하는 별도의 식별자를 부여하여 식별한다. 

테이블 관계 목록은 대상 시스템, 대상 테이블명, 대상 컬럼명, 부모 테이블명, 참조 컬럼명, 관계명, 기수성 등으로 구성하고, FK 제약조건이 정의되어 있는 경우는 FK 제약조건명까지 포함한다. 

코드 목록은 대상 시스템, 대상 테이블명, 대상 컬럼명, 코드 테이블명, 코드 컬럼명, 코드 매핑 (예: code_group = ‘BL’) 등의 항목으로 구성한다. 


여기에 더해서 코드 목록에 제시된 코드내역 데이터를 공통코드로 관리다.

공통코드는 코드분류와 코드내역으로 구분하여 관리하며, 

코드분류는 코드그룹, 코드그룹명, 유효시작일, 유효종료일, 코드설명 등의 항목으로 구성하여 코드 종류를 관리한다. 드내역은 코드그룹에서 정의한 코드그룹에 대한 상세 코드 값들을 관리하며, 코드그룹, 코드값, 코드명, 출력순서 등의 항목으로 구성한다. 예를 들어, ‘직급’은 코드그룹에 해당하고, ‘사원’, ‘대리’, ‘과장’, ‘부장’ 등은 ‘직급’ 코드그룹에 대한 상세 코드내역에 해당한다.



대상시스템 - 테이블목록, 컬럼목록, 테이블관계목록, 코드목록

테이블목록 - 테이블ID, 테이블명, 한글테이블명, 소유자

컬럼목록    - 컬럼ID, 테이블명, 컬럼명, 한글컬럼명, 데이터타입, 길이 NULL 허용여부, PK 여부, 기본값

테이블관계목록 : 대상시스템, 대상테이블명, 대상컬럼명, 부모테이블명, 참조컬럼명, 관계명, 기수성, FK제약조건명

코드분류 - 코드그룹, 코드그룹명, 유효시작일, 유효종료일, 코드설명

코드내역 - 코드그룹, 코드값, 코드명, 출력순서






품질진단을 위한 세부 일정 계획이 수립되면 각 차수의 일정에서 적용할 품질기준 항목을 선정한다. 

품질기준 항목은 완전성, 일관성, 유효성, 유일성, 정확성 등으로 대별하고, 이를 다시 세분하여 세부품질기준 항목을 정의한다.(아래 표 참조)




이상과 같은 메타 데이터가 준비되면 핵심품질항목을 정의하고, 이를 토대로 핵심품질항목에 해당하는 컬럼의 목록을 작성한다. 

핵심품질항목은 업무 영향도, (정량적)평가 용이성 등 여러 가지 관점을 고려하여 결정하는데, 고려할 관점은 시기나 여러 가지 여건에 따라 달라질 수 있고, 

핵심품질항목을 결정할 때 언제, 어떤 관점을, 얼마만큼의 비중으로 고려한 것인지도 남겨두어야 한다. 결정된 결과는 핵심품질항목번호, 핵심품질항목명, 등록일, 핵심품질항목설명 등의 항목으로 구분하여 관리한다. 핵심품질항목이 결정되면 이에 해당하는 테이블 및 컬럼을 메타 데이터로부터 추출하여 핵심품질항목 대상 컬럼 목록을 구성하고, 해당 컬럼에 대해 세부 품질기준을 매핑하여 측정 항목을 정의한다. 측정 항목은 대상 컬럼로 어떠한 세부 품질기준이 연관되는지를 정의한 것이다. 

예를 들면, 사업관리 시스템의 PROJECT 테이블의 END_DT (사업종료일) 컬럼은 개별완전성, 날짜유효성, 형식유효성, 선후관계정확성 등이 측정항목으로 정의된다. 하나의 컬럼에 대해 복수의 세부 품질기준이 측정항목으로 매핑 될 수 있다.


우선은 좀 더 읽어봐야 겠음.   *** 다시 차근 차근 읽어 볼 것

각 차수에서 적용할 품질기준항목을 선정하기 위한 단계에서 필요로 하는 부분임.

핵심품질항목을 결정하는데 있어 고려되는 관점은 

                     [업무영향도, (정략적)평가 용이성]   (X)   [시기, 여러가지 여건] 

                      언제, 어떤 관점을, 얼마만큼의 비중으로 고려한 것인지 관리

결국 품질항목별로 언제 각 요소별로 어떻게 비중을 고려하여 

핵심품질항목이 아닌 품질기준항목은 ??? 

       - 한군데서 유사하게 느껴질 수 있는 용어들을 함께 사용하므로써 혼돈을 일으키는 요소가 될 수 있는 듯 


핵심품질항목 - 핵심품질항목번호, 핵심품질항목명, 등록인, 핵심품질항목설명

중간에 국어적인 문제로 약간 헤맨 듯 함. ㅠㅠ


핵심품질항목은 결국 특정 테이블.컬럼을 의미하는 것인가 ?  그런것 같은데 . . .

핵심품질항목 대상컬럼 목록을 구성하고 각 컬럼에 대해 복수의세부품질기준을 측정항목으로 매핑한다. 


결국.

1. 차수별로 적용할 품질기준항목[ ] 을 선정함.

2. 핵심품질항목, 즉 컬럼 목록을 작성함. 

    단, 핵심품질항목이 되는 컬럼 목록 작성시 각 컬럼별로 어떤 근거로 산출되었는지가 관리되어야 한다. 

3. 각 컬럼별로 정의한 품질기준을 하나 이상의 세부품질기준 별로 측정한다. 

 



핵심품질항목과 대상 컬럼, 그리고 해당 컬럼에 대한 측정항목이 정의되면 데이터 품질진단을 수행하기에 앞서 데이터 프로파일링을 수행할 수 있다. 데이터 프로파일링은 선정된 테이블 및 컬럼을 대상으로 유형별로 데이터 현황 분석을 수행하는 것으로, 이 결과를 토대로 진단을 위한 대상 확정과 업무규칙 정의가 이루어질 수 있으며, 매 진단 시마다 수행할 필요는 없으나 필요에 따라 데이터 현황을 점검하고 진단 대상 및 업무규칙 보완을 위해 재수행이 이루어질 수 있어 프로파일링이 언제 수행된 것인지를 알아야 한다. 


데이터 프로파일링 유형은 컬럼 분석, 날짜 분석, 패턴 분석, 코드 분석, 관계 분석 등으로 나누어 볼 수있으며, 우선은 컬럼 분석, 날짜 분석, 패턴 분석 등을 수행하고, 향후 분석 유형을 확장해 나갈 것이다. 컬럼 분석은 도메인의 종류와 상관없이 모든 데이터에 적용되는 기본적인 프로파일링 기법으로, 각 대상 컬럼에 대해 문자 타입인 경우는 총건수, NULL건수, 공백건수, 유효건수, 개별건수(값의 종류수를 의미), 최대값, 최소값 등을 추출하여 관리하고, 해당 컬럼에 저장된 컬럼값별로 건수를 추출하여 컬럼분석상세결과로 관리한다. 숫자 타입인 경우

는 총건수, 최대값, 최소값, 평균값, 표준편차값, 분산값 등 컬럼의 기본적인 특성을 분석하여 관리한다. 날짜 분석은 날짜 데이터로 구성된 값이 유효한 날짜 데이터인지를 검증하는 분석 기법으로, 날짜 데이터 타입(Date Type)이 아닌 문자 또는 숫자 타입의 속성인 경우에 수행하며, 각 대상 컬럼에 대해 날짜값별로 건수, 총건수 등을 분석한다. 패턴 분석은 데이터를 구성하는 값에 대한 일정한 패턴 또는 형식을 분석하여 오류 여부를 분석하는 기법으로, 주민등록번호, 전화번호 등과 같은 데이터에 대해 패턴 규칙의 준수 여부를 검증하는 것이다. 패턴 분석을 수행한 결과는 각 대상 컬럼에 대해 패턴값별로 건수를 추출하여 관리한다.



데이터 프로파일링을 수행한 후 그 결과를 토대로, 또는 여타 다양한 여건을 검토하여 지속적으로 데이터에 대한 규칙을 검증하고 오류를 도출하여 데이터 품질을 개선할 수 있도록 업무규칙을 관리한다. 업무규칙을 정의하는 컬럼이 핵심품질항목 및 세부 품질기준과 매핑되어 있는 경우는 업무규칙의 검증 결과가 자동적으로 핵심품질항목 및 세부 품질기준에 따라 집계가 이루어질 수 있지만, 핵심품질항목의 대상으로 선정되어 있지 않은 컬럼들 중에서도 필요에 의해 업무규칙을 정의할 수 있다. 이때는 업무 규칙을 정의하는 과정에서 핵심품질항목과 이에 연관되는 세부 품질항목을 지정하도록 하여 해당 컬럼이 자동적으로 핵심품질항목 및 세부 품질기준에 매핑되도록 구성한다. 아래는 업무규칙을 정의하는 서식의 사례이다.






위 사례 서식에서 보듯이 대상 컬럼별로 업무규칙을 정의하고, 이에 대한 연관 SQL 스크립트를 관리해야 한다. 업무규칙과 진단 스크립트는 개별적으로 변경 이력을 관리하여 임의의 시점에 사용된 업무규칙의 내용을 알 수 있어야 하며, 사례 표에 제시된 버전은 업무규칙 자체에 대해 작성자가 부여하는 임의의 구분이다. 



진단 대상 컬럼들에 대해 업무규칙이 정의되면 이를 토대로 품질측정을 수행한다. 품질측정은 작성된 업무규칙을 직접 실행하여 수행할 수도 있고, 업무규칙을 스케줄링해서 자동실행하도록 할 수도 있다. 업무규칙의 스케줄링은 실행할 업무규칙(들)을 선택하고 실행할 일시를 지정한다. 주기적인 자동 실행을 지정하고자 하는 경우는 주 단위나 월 단위로 간격을 지정하면 지정된 일시로부터 지정한 간격만큼 반복 실행 일정을 생성하여 저장하고 실행하도록 한다. 주기적인 반복 실행이 아니더라도 연간 품질진단 일정에 따라 실행할 시점을 미리 스케줄링 해 놓을 수도 있다. 각 실행 건에 대해서는 실행된 업무규칙별로 업무규칙 스크립트의 실행 결과를 ‘성공’ 또는 ‘실패’로 관리하고, 실행 시 수집된 총건수, 오류건수, 오류율, 가중오류율을 함께 관리한다. 오류건수가 0이 아닌 경우에는 업무규칙에 정의된 오류추출 SQL의 실행결과를 별도로 저장하여 향후에 오류 데이터를 확인할 수 있도록 해야 한다. 



품질측정은 연간 품질진단 일정에 따라 이루어지기 때문에 품질진단 일정 계획에 지정된 대상 시스템에 해당하는 업무규칙 스크립트의 실행결과를 취합하여 해당 일정에 실행된 전체 업무규칙에 기반한 품질지수를 산출하여 관리할 수 있고, 세부 품질지수나 핵심품질항목 별로도 관련 업무규칙의 실행결과를 집계하여 품질지수를 산출하고 품질진단결과보고서 작성에 활용할 수 있다. 예를 들면, 2013년 1차 품질진단은 연구관리 시스템을 대상으로 하며, 이에 대한 품질진단 결과에서 개별완전성에 대해 검증한 업무규칙은 모두 20개이고, 각 업무규칙의 분석 총건수, 오류건수, 오류율, 가중오류율 등을 토대로 산출한 결과, 개별완전성에 대한 품질지수는 99, 2013년 1차 품질진단에 의해 산출된 대상 시스템(연구관리 시스템) 의 품질지수는 98.4로 집계되는 방식이다. 이러한 집계 결과는 품질진단 일정별로 관리하여 향후 임의의 기간을 지정했을 때 그 기간 동안의 품질지수 변화 추이를 분석하거나 하는 등의 목적에 사용될 수 있어야 한다. 




우리는 이상과 같은 데이터 품질관리 시스템을 구축하여 엔터프라이즈 관점에서 체계적인 데이터 품질관리 체계를 확립하고 우리 시스템의 데이터 품질을 높여 회사의 경쟁력 향상에 기여할 수 있도록 하고자 하며, 이 시스템의 구축 활용 결과를 토대로 좀 더 보완을 하면 고부가가치가 보장되는 데이터 품질관리 솔루션으로서 외부에 판매도 할 수 있게 되어 회사 매출에도 기여할 수 있을 것으로 기대하고 있다.


-----------------------------------------------   끝   -----------------------------------------------