DBMS/활용 사례

Data Lineage 활용 사례

(주)비트나인 2023. 9. 3. 13:17

사례 : 그래프 DB를 통한 Data Lineage 구현(K고객사)

관계 데이터에 중점을 두는 그래프 DB의 특성상, 아래의 활용 사례는 모든 시스템에 적용 가능하다는데 큰 의의를 둘 수 있다.

그 까닭은 데이터베이스의 성격이 관계형, 계층형, 객체지향형 등 어떤 유형이든 오브젝트의 관계를 정의하는 논리 모델링이 반드시 존재해야 하기 때문이다.  

 * 그래프DB를 활용한 Data Lineage 구현을 통해 품질 관리를 수행하는 데이터 아키텍처 구성도 

1. 배경

기업이 보유하고 활용하는 데이터가 많아질수록 체계적으로 관리할 필요성 또한 커진다. 따라서 메타데이터 관리가 잘 이뤄지는 전산 시스템을 보면, 논리적 모델링에 반영된 결과들이 물리모델링을 거쳐 실제 데이터베이스에서도 동일한 형상을 갖고 있다. 그러나 대다수의 시스템의 경우 신규 시스템 구축 이후 성능 이슈, 미비한 시스템, 관리 미숙, DA, DBA 등의 전문 인력 부족 등 다양한 원인들로 인해 현실적으로 메타데이터 관리가 부실한 경우가 많아 시스템 현황, Data Process Flow 파악 등이 힘들며, 설령 뒤늦게 메타관리를 하려고 해도 많은 시간과 비용을 필요로 한다. 솔직히 시작할 엄두조차 나지 않는 것이 대부분이다.

이런 Needs가 분명히 존재하기 때문에 메타 관리, 형상 관리 등 다양한 데이터 품질 관리 솔루션들이 사용되고 있다. 그리고 그런 솔루션들의 공통적인 기능은 단연 Data Lineage이다. 데이터 리니지(Data Lineage, 데이터 계보)의 목적은 현재 쓰이는 데이터가 어떻게 생성됐고, 어떤 과정을 거쳐 어디에 쓰이고 있는지 등의 이력을 관리하여 현황을 파악하는 데 있기에 데이터 품질 관리 시스템의 핵심 프로세스라 할 수 있다.

특히, DW(Data Warehouse)를 기반으로 하는 기업 BI 프로세스에서 데이터의 정합성을 저해하는 경우의 데이터 흐름을 파악하여 데이터 오류의 원인을 제거할 수 있다면 데이터의 정확성과 시스템의 안정성은 크게 향상시킬 수 있다.

 

일반적으로 데이터 흐름의 근거를 메타데이터에서 찾는다. 데이터 매핑 정의서 등을 통해 메타 데이터와 시스템을 어느 정도 동기화시킬 수 있으나, 현실적으로 쉽지 않다. 소스가 변경될 때마다 변경 작업을 수행하지 않는다면 실제 상황과 차이가 발생할 수밖에 없고, 오류 개연성 및 업무 효율성이 현저히 떨어진다. 그래서 대부분의 데이터 리니지 솔루션은 자동 파싱 기능 등을 통하여 어떤 프로그램이 어떤 오브젝트(대표적으로 테이블)의 속성(=컬럼)을 참조하고 사용하고 있는지 파악하여 비즈니스 프로세스에 따른 처리 순서를 식별해 해당 데이터의 흐름을 구현하는 방식을 채택하고 있다.

 

K사의 경우에는 데이터마트의 데이터 적재 처리 과정에서 발생되는 SQL을 통해 입수, 가공, 목적 테이블들 간의 관계, 참조 테이블의 접근 횟수, 참조 테이블 간의 조인 관계 및 횟수, 어떤 사용자에 의해 수행됐는지 등의 데이터 계보 히스토리를 얻고자 했다.

다양한 데이터 리니지 솔루션이 존재하나, 특정 애플리케이션에 종속되기보다는 데이터의 관계에 특화되어 그대로 저장할 수 있는 그래프 DBMS를 도입하여 커스터마이징이 가능한 프로젝트를 진행하였다.

 

본 사례에서 그래프DBMS를 통한 데이터 리니지 모듈 구현이 대략적으로 어떻게 진행되는지 살펴보자.

 

2. 목표

데이터 리니지의 최대 목적은 데이터 흐름의 파악이다. 즉, SQL 로그를 통해 파싱 된 테이블과 컬럼들간의 관계 데이터를 적재하여 효과적으로 시각화하는 데 있다. 그 데이터를 기반으로 프로젝트(=업무 프로세스 단위) 유사도 및 중요도 등 그래프 분석 지표 제안 또는 유사시 알람 기능 등이 가능하다. 아래의 그림은 대략적인 Data Lineage 아키텍처이다.

 



3. 사용된 데이터 설명 :

 

웹로그파일 : 데이터 적재 처리 과정에서 발생되는 웹로그 파일로 SQL 정보를 담고 있다.

 

메타 데이터 : 테이블과 컬럼 정보를 의미한다. SQL로부터 추출되는 테이블과 컬럼 정보를 검증하기 위해서는 DBMS 자동 생성 또는 관리되고 있는 메타데이터가 필요하다.

 

사용자 데이터 : 시스템 및 일반 사용자로 SQL 수행 주체이다.

 

관계 데이터 : 테이블과 테이블 간의 관계를 의미한다. 속성값으로 조인 컬럼이 필수이다.

 

통계 데이터 : 그래프DBMS에 적재된 테이블, 컬럼, 사용자 정보에 대한 누적 참조 횟수 등 적재 데이터를 집계 및 파생된 데이터

 

그래프 분석 데이터 : 그래프 분석 알고리즘을 통해 도출된 데이터

 

4. 데이터 그래프모델링 방법 설명 

 

웹로그파일에서 추출된 SQL은 기본적으로 정상적으로 수행되어 문법 검사는 불필요하나,  주석 처리, 함수의 사용, 특수 문자 등의 SQL 스타일 또는 파싱 모듈의 성능에 따라 메타 데이터를 추출할 수 없는 경우가 발생된다. 

그렇기 때문에 SQL목록 테이블을 만들어 추출된 SQL과 관련 로그 데이터(적재일자, 웹로그파일명 등)를  우선 적재하고, 파싱 결과 여부를 기록할 컬럼 등이 필요하다.

메타 데이터 추출에 성공한 경우에는 그래프DB의 노드 및 에지 레이블에 Merge 처리한다. 속성값으로 select, join, from 누적 횟수 등이 있다.

사용자 정보가 추출된 경우에는 사용자 레이블에 Merge 처리하며 사용자 - 테이블 관계 에지를 생성한다.

통계 데이터 및 그래프 분석 데이터는 시각화 및 배치 처리를 통해 추출하여 그 결과를 별도 테이블에 적재한다.

아래는 실제 웹로그파일 안에서 SQL을 추출하여 Python을 통해 오브젝트명, 속성을 Parsing, 추출하여 그래프DB에 적재했던 예시이다. 




아래의 그림은 그래프에 적재된 오브젝트 간의 관계도를 Cypher를 통해 시각화한 모습이다.

5. 구축 결과

 

가장 가시적인 성과는 운영중에 실제로 발생된 로그를 통해 데이터 프로세스의 흐름을 현행화하여 준실시간성으로 시각화 및 쿼리를 통해 확인이 가능하다는 점이다. 어떤 원천 테이블들이 연계되어 어떤 임시 테이블들을 거쳐 최종적으로 어떤 목적 테이블에 몇 번 이동했는지 확인이 되었고, 이런 데이터들을 토대로 오브젝트 최적화 대상, 테이블 간의 관계성 밀접도, 비효율적인 데이터 프로세스 지점 등을 유추할 있는 근거 자료로 활용될 수 있었다.

다만, SQL에 한정적으로 데이터 흐름을 파악하다 보니 현행화 대상이 제한적이고, 보다 다양한 인사이트를 제공하기 위해서는 원천 데이터의 유형을 추가할 필요성이 제기되었다.

 

그래프 알고리즘을 통한 분석 데이터 도출은 적재량의 증가함에 따라 다양한 사례가 도출되어야 보다 유의미한 결과가 나올 것으로 예상되었다.

 

6. 해당 사례를 통해 얻을 수 있는 아이디어

 

그래프DBMS의 일반적인 활용 사례로 특정 업종에서 지식 그래프, 이상 거래 탐지, 추천 서비스 등 특수 목적의 예를 많이 들지만, 데이터 리니지는 데이터베이스를 사용하는 모든 분야에 범용적으로 사용될 수 있다는 점이다.

물론 그래프DB가 아닌 다른 DB를 통해서도 구현이 가능하나, 관계 중심의 데이터 저장 방식을 취하는 그래프DB가 개발 생산성, 추가적인 인사이트 도출 측면에서 선택 우위에 있다고 생각된다.

 

 

 

 

글 : 최광석 수석보 ( 비트나인 DB Tech팀 )