Record
기업 지배구조 Graph DW 구성 (1) 본문
한참 데이터 공부를 쉬고, 인프라 학원을 다니다가 오히려 현재 스택이 데이터엔지니어랑 더 적합하다고 최근 느끼고 있다.
그리고 Graph DB도 이야기가 많고 그래서 오랜만에 프로젝트를 하나 진행하려고 한다. 일단 하면서 공부할 수 있는걸 정리하자면
1. DW 구축해보기 ( api를 가져와서 DW구축하면서 고민할거리들 해결하기)
2. 이 데이터를 graph DB로 넣어서 그래프로 분석해보기
3. 구성한 graph DB를 통해서 Rag해보기
4. 전에 추천 ai모델 학습했던거 원래 그래프로 해보려했는데 이번에 해보기
이거 하나로 여러 스택을 공부할 수 있을꺼 같아서 시작해보려고 한다. 빨리만들면 현재 학원에서 올린 k8s에 올리고 싶지만 시간상 아마 어려울꺼같다 ㅠ
1번의 경우 약간 지속적으로 DW구축할 수 있게 ariflow를 써보지 않을까 싶다. 현재는 일단 api데이터를 토대로 데이터분석을 진행하고 어떤식으로 만들어볼지르 고민하는 과정이다. 일단 데이터분석 한것을 정리하려고 한다.

기존에 익숙하던 관계형 dw가 아닌 그래프 dw를 구성하려고 하기 때문에 데이터셋은 노드와 엣지로 엮을 수 있는 각 회사 - 계열사를 확인할 수 있는 데이터셋을 선정했다.

총 제공하는 api는 3개로
1. 계열사조회의 경우 지배구조나 이런 데이터가 아닌 각회사와 어떤 회사가 연결되어있는지를 확인할 수 있다.
2. 연결대상종속기업은 지배구조가 어떻게 되있는지 확인할 수 있는 api이다
3. 법인명과 해당 법인이 어떤 법인인지 알 수 있는 api이다.
각각 데이터를 살펴보면
1. 계열사조회

하나의 법인번호(crno)에 어느 법인이 연결되있는지 확인할 수 있다. 사실상 현재 0번 row의 crno에 19개의 기업이 묶여있으면 롯데건설도 19개가 연결되있다고 볼 수 있다. 그래프 데이터로 만든다면 homogeneous graph라고 볼 수 있다.
2. 연결대상종속기업

2번의 경우 현재 0번 row의 crno(롯데렌탈)이 어느 법인에 대해 얼마의 지배력을 가지고 있는지 확인할 수 있다. 이 경우에는 지배력이 있는것만 dnt~에 적혀있는데

위에 롯데오토리스의 경우 롯데렌탈에 대한 정보는없고 롯데 오토리스가 지배력을 가지고 있는 회사에 대한 정보만 나온다.
아마 이거 가지고 만들게 되면 heterogeneous graph가 되지 않을까 싶다.
3. 기업개요조회

해당 법인에대해 회사이름이랑 기타 정보를 얻을 수 있는데 아마 조인쿼리 할때나 쓰고 크게는 쓰지 않을 가능성이 높다.
일단 1번을 가지고 homogeneous graph 데이터를 만들어보려고 한다.
해당 데이터의 경우 기억에 2300 * 10000 이였나 엄청 데이터셋이커서 당장은 10000개의 데이터셋으로 확인해보려고한다.
만약에 해당 데이터셋을 수집하면 api에 응답하는 속도랑 한번에 다 수집하지 않고 하루에 몇건 수집하는 식으로 파이프라인 구성도 고려하려고 한다.


일단은 법인들의 unique한 값들을 뽑아서 총 1427개의 회사가 있는것을 확인했다. 그니까 평균적으로 10000/1427개의 연결이 되있다는 뜻이다. 그리고 crno만 있고 이 법인에 대한 이름이 없어서 이 crno를 key로 해서 3번 api에 넣고 법인이름을 같이 데이터셋에 붙혀주려고 한다

crno를 기준으로 merge를 해준다. 이러면 [crno, corpNm] - [afillcmpycrno , afillcmpyNm] 으로 연결할 수 있는 데이터셋이 만들어진다.


근데 crno가 1427개이면 노드가 1427개여야하지 않나? 라고 생각할 수 있지만 여기에 나온 crno말고 afillcmpycrno가 더많아서 이거 만큼 더 노드가 생긴거라고 보면 된다. 무슨 느낌이냐면 a - [b, c, d, e] 이렇게 하면 뒤에 c, d, e가 나와야하는데 데이터 컬럼이 만약에 다 뽑았으면 이렇게 안됬겠지만 지금 중간에 짤려서 그렇다.

지금 데이터 테이블을 보면 source(source_name) - (relation_type) - target(target_name) 으로 gragph db로 넣기 쉽게 바꿔줬다.

시각화 하면 이렇다. 그냥 각자 어떤회사랑 연결되있는지 확인할 수 있는정도의 그래프이다.
일단 현재는 저 api가 어떤 데이터를 가지고 있고 어떻게 사용할 것인지 알아보고 그래프로 간단하게 만들어보고 시각화를 했다.
일단 당장의 저 그래프는 큰 의미가 없기때문에 아마 heterogeneous graph를 만들어볼꺼긴 한데
고민 중인게 데이터 수집을 하는 파이프라인을 만들어서 중간에 DW만들기를 편하게 할 것인지 아니면 heterogeneous graph를 먼저 만드는지인데 생각해보니 heterogeneous graph이걸 만들어야지 중간 파이프라인을 어떻게 만들지 구상될꺼 같다.
'프로젝트' 카테고리의 다른 글
| 대학 캠퍼스 인프라 구성 ( 네트워크, 서버 프로젝트 ) (0) | 2026.01.27 |
|---|---|
| 이스터에그 (인프라 프로젝트6 / Front 연결) (1) | 2025.11.22 |
| 이스터에그 (인프라 프로젝트5 / CD , AWS, docker hub 연결) (0) | 2025.11.15 |
| 이스터에그 (인프라 프로젝트4 / github action, docker hub) (0) | 2025.11.13 |
| 이스터에그 (인프라 프로젝트3 / git ssh 연결, public key, private key) (0) | 2025.11.12 |