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. 전체적인 큰 Node는 Entity(로그 명), 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 Node에 LogoutLog를 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 Node에 IPInfo를 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와 LoginoutLog가 Union 후 정렬되어 Login – Logout 으로 Grouping 하여 값을 추출할 수 있다는 것을 정의한다.
v. 체류 시간 Attritute를 생성 후 해당 Attribute가 LoginDate와 LogoutDate의 연산을 통해 생성됨을 정의한다.
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 : 비고
'Database > ETC DBMS' 카테고리의 다른 글
Neo4j(Graph DB)로 만드는 Data Lineage (1) - Needs와 Cypher (0) | 2021.07.27 |
---|---|
Graph DB 와 Neo4j 설치 (0) | 2021.07.12 |
최근댓글