본문 바로가기
Cloud SIEM 제작/Graph DB(Neo4j)

그래프디비(Graph DB)란?

by LIZ0904 2022. 9. 16.
반응형

1. 그래프디비의 정의

그래프 디비는 그래프 이론에 기반을 둔 일종의 NoSQL 데이터 베이스이다. NoSQL 데이터베이스는 많은 비정형 데이터를 저장하는데 비해, 그래프디비는 여기서 더 나아가 데이터 포인트를 연결하고 데이터 네트워크를 구축한다. 

 

그래프 데이터베이스는 노드, 엣지, 프로퍼티를 갖추고 있다.

  • 노드(Node): 추적 대상이 되는 사람, 기업, 계정 등의 실체를 대표한다. (점)
  • 엣지(Edge): 그래프나 관계라고도 하며, 노드를 다른 노드에 연결하는 선이며 관계를 표현한다. (관계선)
  • 프로퍼티(Property): 노드의 정보와 관련된 내용으로, 특정 노드가 어떤 관점이 주어진 DB에 밀접한 관련이 있느냐에 따라 프로퍼티를 나눈다. (묶음)

 

사용자는 연결을 기반으로 한 순회 쿼리를 수행하고 그래프 알고리즘을 적용하여 패턴, 경로, 커뮤니티, 영향 요인, 단일 장애 지점 및 기타 관계를 찾을 수 있으므로 방대한 양의 데이터를 보다 효율적으로 분석할 수 있다. 특히 분석과 이를 통해 얻을 수 있는 통찰력, 서로 다른 데이터 소스를 연결할 수 있는 능력이 그래프 디비의 강점이다.

그래프를 분석할 때 알고리즘은 정점 사이의 경로와 거리, 정점의 중요도, 정점의 클러스터링 등을 탐색한다. 예를 들어 중요도를 판단하기 위한 알고리즘은 진입 간선, 인접한 정점의 중요도와 기타 지표를 살펴본다. 예를 들어 그래프 알고리즘은 소셜 네트워크나 비즈니스 프로세스에서 다른 사람과 가장 많이 접속한 개인 항목을 식별할 수 있다. 그래프 디비는 관계를 명시적으로 저장하기 때문에 정점 간 연결을 활용하는 쿼리 및 알고리즘 실행에 소요되는 시간을 몇시간이나 며칠이 걸리는 데에서 1초 이내로 시간을 단축할 수 있다. 즉, 조인을 계속해서 실행할 필요가 없어지며, 분석 및 머신 러닝에 데이터를 더 쉽게 적용할 수 있게 된다.

 

2. 그래프디비의 모델(속성그래프 vs RDF 그래프)

속성 그래프는 분석 및 쿼리에, 그래프는 데이터 통합에 중점을 둔 모델이다. 두 가지 유형 모두 포인트(정점, 노드)와 해당 포인트 사이의 연결선(엣지, 간선)의 모음으로 구성된다.

1. 속성 그래프

 속성 그래프는 데이터 간의 관계를 모델링하는데 사용되며, 이러한 관계를 기반으로 쿼리 및 데이터 분석 작업을 지원한다. 속성 그래프에는 주제에 대한 자세한 정보 등을 포함하는 정점과 이러한 정점 간의 관계를 나타내는 간선이 있다. 정점과 간선은 속성(프로퍼티)라고 하는 요소를 가질 수 있으며, 이를 사용하며 연결될 수 있다.

https://www.oracle.com/kr/autonomous-database/what-is-graph-database/

 예시로는 동료 및 이들의 관계 집합을 속성그래프로 표현할 수 있다. Melli와 Jean은 Collaborates with이라는 관계를 갖고 있으며, Jean과 John도 해당 관계를 갖고 있다.

 속성 그래프는 다방면으로 유용하기 때문에 금융, 제조, 공공 안전, 소매업 분야를 포함한 다양한 산업 부문에서 광범위 하게 사용된다.

 

2. RDF 그래프

RDF 그래프는 Resource Description Framework의 약자로, 명령문을 표현하도록 설계된 W3C(Worldwide Web Consortium, 월드 와이트 웹 컨소시엄)의 표준을 따른다. 이는 복잡한 메타 데이터 및 마스터 데이터를 표현하는데 최적화 된 도구다. RDF 그래프는 연결된 데이터, 데이터 통합 및 지식 그래프에 자주 사용되며, 도메인 내에서 복잡한 개념을 나타낼 수 있을 뿐만 아니라 데이터와 관련하여 풍부한 의미 체계 및 추론도 제공할 수 있다.

 

RDF 모델에서 명령문은 2개의 정점(RDF 트리플)과 이를 연결하는 문장의 주어, 서술어, 목적어를 반영하는 1개의 간선이라는 세가지 요소로 표현된다. 모든 정점과 간선은 URI 또는 고유한 리소스 식별자에 의해 식별딘다. RDF 모델은 잘 정의된 의미 체계를 갖춘 표준 형식으로 데이터를 표현하기 때문에 원활한 정보 교환이 이루어 질 수 있도록 해주며, 정부 통계 기관, 제약 회사, 의료 서비스 기관에서 자주 사용하고 있다.

 

3. 그래프디비의 활용 용도

https://mobile.newsis.com/view.html?ar_id=NISX20180604_0000327193

 

  • 지식 그래프, 소셜그래프
지식 그래프를 사용하면 정보를 그래프 모델에 저장하고 그래프 쿼리를 사용해 사용자가 상호 연결성이 높은 데이터 세트를 손쉽게 탐색하도록 지원할 수 있다. 

ex) 제품 카탈로그에 주제별 정보를 추가하거나, 복잡한 법규 모델을 빌드하고 쿼리하거나, Wikidata 같은 일반정보를 모델링할 수 있음
  • 자격 증명 그래프
자격 증명 그래프를 구축해 디바이스 및 소셜 그래프, 개인화 및 권장 사항, 패턴 탐지 등 각종 자격 증명 확인 솔루션에 활용할 수 있다. 자격증명 그래프에 그래프 식별자를 서로 연결하고 프로필을 쉽게 업데이트 할 수 있으며, 업데이트 속도가 빨리진다.

ex) 타겟팅, 개인화, 분석 및 광고 속성 등에 활용
  • 사기 탐지(위협 탐지), 추천 엔진
그래프의 관계를 사용해 거의 실시간으로 금융 및 구매 트랜잭션을 처리하여 부정 패턴을 손쉽게 탐지할 수 있습니다. 또한 고객 관심사, 친구, 구매이력과 같은 정보 간 관계를 그래프로 저장하여 개인화되고 연관성이 높은 추천을 제공할 수 있다.

ex) 신용카드 사기 탐지 - 같은 이메일 주소와 같은 신용카드를 사용하고 있는데, user가 2명인 경우 위협으로 탐지
ex) 여러 사람이 같은 IP 주소를 공유하지만 서로 다른 물리적 주소에 거주하는 등의 관계 패턴을 탐지
  • 활용 예시
- 사기 감지
- 실시간 추천 엔진
- 마스터 데이터 관리(MDM)
- 네트워크 및 IT 운영
- ID 및 액세스 관리(IAM)
- AI 지식 그래프
- 소셜 네트워크
- 공급망 매핑

 

4. 그래프디비의 종류(랭킹)

https://db-engines.com/en/ranking/graph+dbms

 

DB-Engines (http://db-engines.com/)에서 제공하는 그래프 DB의 랭킹(1~10위)은 다음과 같다. (2022년 9월 기준)

 

꾸준히 Neo4j가 사용되고 있으므로, 나는 Neo4j를 공부해야쥥

※참고

Neo4j는 그래프 DB 중 하나로, 네이티브 그래프 저장 및 처리 기능을 갖춘 *ACID 호환 DBMS이다. 자바 기반으로 임베딩 방식이나 REST 방식으로 사용이 가능하다.

*ACID: ACID(원자성, 일관성, 고립성, 지속성)는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어

 

5. 그래프 데이터베이스의 장단점

5-1. 그래프 데이터베이스와 관계형 데이터 베이스의 차이에 따른 장단점

  • 새로운 속성 추가시
관계형 db: 새로운 칼럼을 추가하고, 외래키 등을 이용해 연관관계를 맺어주고 제약조건 등을 설정해주는 과정을 거쳐야한다.
그래프 db: 새로운 노드를 추가하고 다른 데이터와 연결해주는 과정만 거치면 쉽게 속성을 추가 할 수 있다.
  • 처리 속도
관계형 db: 다른 테이블을 join해야 하는 경우가 많을시, depth가 깊어지게 될 시 성능에 대한 부담이 계속해서 증가한다.
그래프 db: 관계형 db와는 해당 레이블을 검색 후, 데이터 관계에 따라 조회를 하기 때문에 데이터양이 방대하더라도 상대적으로 빠른 속도를 보장한다.
  • 직관성
관계형 db: 비개발자의 경우 테이블간의 db구성, 연관관계 등을 파악하는 것이 힘들다.
그래프 db: 그래프 db는 현실을 반영하는 직관적인 데이터 모형을 제공하여 상대적으로 db구성을 한눈에 파악하기 쉽다.
  • RDBMS말고 그래프 디비를 쓰는 이유
RDBMS에서 10개 이상의 테이블을 조인하게 되면 테이블의 사이즈, 데이터양, 조인 순서들 많은 부분을 고려하여도, 성능저하가 발생하는 것을 막을수가 없지만, GraphDB는 이런 복잡한 연산을 처리하는데 적합한 그래프 이론을 알고리즘으로 채택하고 있다.
  • 그래프 DB의 단점
관계형 DB에 비해 레퍼런스 문서의 수가 많이 적다.
vertex 간의 연산이 필요할 경우 적합하지 않다. (ex: 모든 멤버를 출력하라. )

 

5-2. 장점

  1. 데이터 자체를 점과 선의 그래프 형태로 저장하여, 그래프를 시각화해 보기 쉽게 만들 수 있다. 
  2. 개별 데이터를 하나의 객체로 저장하기 때문에 데이터의 용량, 입력 방식에 구애 받지 않는다. 그러므로 다양하고 방대한 데이터들은 입력되는 형태 그대로 저장될 수 있고, 또한 각 객체가 독립적이거나 그렇지 않을 수도 있다.
  3. 데이터 간의 관계를 큰 작업 없이 객체 간의 선으로만 이어줘도 데이터 관계를 나타낼 수 있다. 즉 인덱스를 사용하지 않아도 연결된 노드를 찾는 것이 빠르다. 
  4. 질의 처리 속도가 빠르다. 직접적으로 데이터 간의 관계를 생성하고 생성된 데이터 간의 관계를 횡단하며 필요한 데이터를 조회하는 방식을 사용하므로 복잡도가 높고 깊이 값이 높아질 수록 그래프 디비의 장점이 부각된다.

 

5-3. 단점

  1. 대규모 집합 지향 쿼리
  2. 글로벌 그래프 작업
  3. 간단한 집계 중심 질의
  4. ex) 어려 항목을 확인하는데 있어 많은 조인과 집계 연산이 필요하지 않고 단순히 데이터를 취합하는데 사용할 때
  5. 즉, 복합성이 낮은 단순한 구조의 간단한 질의들의 경우 그래프DB에서는 상당히 비효율적으로 처리 됨. (ex. 모든 멤버를 출력하라)
반응형

'Cloud SIEM 제작 > Graph DB(Neo4j)' 카테고리의 다른 글

Neo4j Graph Data Science(GDS) 개요  (0) 2023.01.04
Neo4j 사이퍼 쿼리  (0) 2023.01.03
Neo4j 기본 명령어 모음  (2) 2022.10.25
Neo4j 기본 사용법  (0) 2022.09.16
Neo4j에 대해서 (개념/순위/특징/기능)  (1) 2022.09.16

댓글