Neo4j(Graph DB)로 만드는 Data Lineage (2) - 설계 및 구축

Database/ETC DBMS / /
728x90

 

1.   예제 목표 및 가용데이터

1)   목표

(1)   서비스에 로그 인하고 로그 아웃한 사용자의 정보를 통하여 서비스 이용 현황을 조회할 수 있는 시스템을 구축

(2)    구축 시스템

원천데이터 -> 빅데이터 시스템 -> 분석용 DW -> BI System DB

 

 

2)   가용데이터

로그명 LoginLog LogoutLog
데이터   LoginDate   접속일   LogoutDate   접속 해제일
  LoginID   접속 ID   LogoutID   접속 해제된 아이디
  UserName   사용자명   LogoutIP   잡속 해제 시 IP
  LoginIP   접속 IP    

 

(1)    LoginLog : 사용자가 서비스 접속 시에 남기는 시계열 데이터

(2)    LogoutLog : 사용자가 서비스 접속 종료 시에 남기는 시계열 데이터

 

2.   설계 및 구축

1)   설계

(1)    기본 데이터 구조 설계


 

A.     BigData Source의 모든 데이터를 BigData 시스템으로 그대로 Loading 하는 시스템

B.      Stage Source에서 복사된 BigData를 기반으로 Service의 데이터를 보다 쉽게 추출하고자 하여 구축된 첫 번째 Transform 된 데이터

C.      Service BI 또는 대 고객 서비스를 위해 Transform된 최종 양식의 데이터

D.     예제 설계는 로그인과 로그아웃의 데이터를 기반으로 유니크 접속자 정보 및 이용 시간에 대한 출력을 위한 설계이다.

(2)    Node 설계

A.     전체적인 큰 NodeEntity(로그 명), Attribute (속성 명) 으로 나누어 저장한다

B.      Entity Source, Bigdata, Stage, Service 로 나누어 저장을 하도록 설계 되었다.

C.      Attribute Node의 데이터는 다른 Entity로 넘어가는 과정에서 그대로 옮겨지거나 변형되는 내용이기 때문에 그 데이터가 변화되는 것을 한 번에 보기 위해서 같은 Node에 저장한다.

(3)    Edge 설계

A.     기본적으로 Attribute가 어떤 Entity에 데이터가 속해있는지를 기본으로 구성

B.      서로 다른 Entity에서 데이터가 모이거나 변형되었을 경우 Attribute Node에서 또 다시 Attribute Node 로 연결하여 데이터의 변형의 원천 Attribute를 알 수 있도록 설계

 

2)   구축

(1)    간략한 Node Egde 정보 (상세 정보는 최하단 참조)

A.     Node

                                           i.         EntitySource : Source의 시스템 상세 정보

                                          ii.         EntityBigdata : BigData 시스템 상세 정보

                                         iii.         EntityStage : DW 시스템 상세 정보

                                         iv.         EntityService : 사용자에게 출력되는 데이터 시스템 상세 정보

                                          v.         Attr : Source 데이터 내에 속성 정보

B.      Edge

                                           i.         AttrToSrc : 해당 속성이 Source 시스템에 속함

                                          ii.         AttrToBig : 해당 속성이 BIgdata 시스템에 속함

                                         iii.         AttrToStage : 해당 속성이 DW 시스템에 속함

                                         iv.         AttrToSVC : 사용자에게 출력되는 데이터 시스템에 속함

                                          v.         AttrTransform : 해당 속성이 다른 속성으로 변경됨

(2)    Source

A.     LoginLog

                                           i.         Query : https://github.com/YunhoJIn/db_engine/blob/main/Neo4j/DataLineage_Example/source/LoginLog.sql

                                          ii.         EntitySource Node LoginLog를 생성

                                         iii.         Attr Node LoginDate, LoginID, LoginIP, UserName 을 생성하고 EntitySource Node LoginLog 로 관계를 생성

                                         iv.         ‘ , ‘를 이용하여 앞에 생성된 EntitySource Node의 별칭을 바로 이용하여
Attr 생성 시 따로 해당 데이터를 조회하지 않도록 처리

                                          v.         조회


 

B.      LogoutLog

                                           i.         Query : https://github.com/YunhoJIn/db_engine/blob/main/Neo4j/DataLineage_Example/source/LogoutLog.sql

                                          ii.         EntitySource Node LogoutLog를 생성

                                         iii.         Attr Node LogoutDate, LogoutID, LogoutIP를 생성하고 EntitySource Node LogoutLog 로 관계를 생성

                                         iv.         조회


(3)    BigData

A.     LoginLog

                                           i.         Query : https://github.com/YunhoJIn/db_engine/blob/main/Neo4j/DataLineage_Example/bigdata/LoginLog.sql

                                          ii.         EntityBigdata Node를 생성하고 LoginLog Insert 한다.

                                         iii.         Source에서 변경되지 않고 들어가는 Attribute는 바로 연결하여 변경이 없음을 확인할 수 있도록 한다.

                                         iv.         사용자명을 익명 처리하여 새로운 Attribute로 만들고 해당 데이터를 Bigdata에 연결한다.

                                          v.         조회


B.      LogoutLog

                                           i.         Query : https://github.com/YunhoJIn/db_engine/blob/main/Neo4j/DataLineage_Example/bigdata/LogoutLog.sql

                                          ii.         EntityBigdata NodeLogoutLog Insert 한다.

                                         iii.         변경되는 Attribute가 없으므로 Source의 데이터를 조회해서 바로 연결한다.

                                         iv.         조회


C.      IPInfo

                                           i.         Query : https://github.com/YunhoJIn/db_engine/blob/main/Neo4j/DataLineage_Example/bigdata/IPInfo.sql

                                          ii.         Bigdata 시스템에서 새로 추가된 정보

                                         iii.         EntityBigdata NodeIPInfo Insert 한다.

                                         iv.         Attr IP, City를 생성하고 Bigdata Node IPInfo와 연결한다.

                                          v.         조회


(4)    Stage

A.     ConnetInfo

                                           i.         Query : https://github.com/YunhoJIn/db_engine/blob/main/Neo4j/DataLineage_Example/Stage/Connectinfo.sql

                                          ii.         Stage Node를 생성한다.

                                         iii.         LoginDate ConnDate로 이름 변경한 후 Stage에 소속되게 하여 Attribute의 변경 작업을 확인할 수 있도록 한다.

                                         iv.         ConnID Attribute를 생성 후 LoginLog LoginoutLogUnion 후 정렬되어 Login – Logout 으로 Grouping 하여 값을 추출할 수 있다는 것을 정의한다.

                                          v.         체류 시간 Attritute를 생성 후 해당 Attribute LoginDateLogoutDate의 연산을 통해 생성됨을 정의한다.

                                         vi.         IP 정보가 Join되어 City 정보를 조회하여 입력됨을 정의한다.

                                        vii.         변경 사항이 없는 Attribute를 연결해 준다.

                                       viii.         조회


(5)    Service

A.     DAU

                                           i.         Query : https://github.com/YunhoJIn/db_engine/blob/main/Neo4j/DataLineage_Example/Service/DAU.sql

                                          ii.         DAU Service 정보 생성

                                         iii.         ConnDate를 기반으로 YMD를 정의한다.

                                         iv.         ConnID를 기반으로 Unique Count 하여 DAUCnt를 정의한다

                                          v.         조회


 

B.      MAU

                                           i.         Query : https://github.com/YunhoJIn/db_engine/blob/main/Neo4j/DataLineage_Example/Service/MAU.sql

                                          ii.         MAU Service 정보 정의

                                         iii.         ConnDate를 기반으로 YM을 정의한다

                                         iv.         ConnID를 기반으로 Unique Count 하여 MAUCnt를 정의한다

                                          v.         조회


 

C.      DailyUTByID

                                           i.         Query : https://github.com/YunhoJIn/db_engine/blob/main/Neo4j/DataLineage_Example/Service/DailyUTByID.sql

                                          ii.         DailyUTByID Service 정보 정의

                                         iii.         이용 시간을 일별 ID별로 합산하여 이용시간을 정의

                                         iv.         이미 생성되어 있던 Attribute 정보 연결

                                          v.         조회


 

(6)    상세 Node Edge 정보

A.     Node

                                           i.         EntitySource : Source 시스템 상세 정보

가)    strName : 데이터명

나)    strSourceType : Source 시스템 종류

다)    strSourceIP : Source 시스템 접근 IP

라)    strSourceDB : Source 시스템 접근 Database

마)    strComment : 비고

                                          ii.         EntityBigdata : Bigdata 시스템 상세 정보

가)    strName : 데이터명

나)    strType : Bigdata 시스템 종류

다)    strIP : Bigdata 시스템 접근 IP

라)    path : 해당 데이터 저장 위치

마)    strComment : 비고

                                         iii.         EntityStage : DW 시스템 상세 정보

가)    strName : 데이터명

나)    strType : DW 시스템 종류

다)    strIP : DW 시스템 접근 IP

라)    DBName : DW 시스템 접근 DB

마)    strComment : 비고

                                         iv.         EntityService : 사용자에게 출력되는 데이터 시스템 상세 정보

가)    strName : 데이터명

나)    strType : 시스템 종류

다)    strIP : 시스템 접근 IP

라)    DBName : 시스템 접근 DB

마)    strComment : 비고

                                          v.         Attr : Source 데이터 내에 속성 정보

가)    strName : 속성명

나)    strType : 데이터 자료형

다)    strComment : 비고

B.      Edge

                                           i.         AttrToSrc : 해당 속성이 Source에 속함

                                          ii.         AttrToBig : 해당 속성이 BIgdata 시스템에 속함

                                         iii.         AttrToStage : 해당 속성이 DW 시스템에 속함

                                         iv.         AttrToSVC : 사용자에게 출력되는 데이터 시스템에 속함

                                          v.         AttrTransform : 해당 속성이 다른 속성으로 변경됨

가)    strType : 변경 시 진행된 작업

나)    strComment : 비고

 

728x90

'Database > ETC DBMS' 카테고리의 다른 글

Neo4j(Graph DB)로 만드는 Data Lineage (1) - Needs와 Cypher  (0) 2021.07.27
Graph DB 와 Neo4j 설치  (0) 2021.07.12
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기