그래프 데이터베이스의 핵심 장점은 ?
그래프 데이터베이스의 핵심 장점은 ?
Mingxi Wu
블로그 , 개발자 , 그래프 데이터베이스 시장 , 그래프 데이터베이스
그래프 데이터베이스는 데이터 관리 시스템 소프트웨어입니다. 빌딩 블록(building block)은 버텍스와 엣지입니다. 좀 더 친숙한 맥락에서 말하자면 관계형 데이터베이스는 빌딩 블록이 테이블인 데이터 관리 소프트웨어이기도 합니다. 둘 다 소프트웨어에 데이터를 로드하고 쿼리 언어 또는 API를 사용하여 데이터에 접근해야 합니다.
관계형 데이터베이스는 1980년대에 붐을 일으켰습니다. Oracle, Ingres, IBM과 같은 많은 회사에서는 데이터 관리를 위해 관계형 모델(테이블 형식 구성)을 지원했습니다. 그 시대의 주요 데이터 관리 요구 사항은 보고서를 생성하는 것이었습니다.
그래프 데이터베이스는 빈번한 스키마 변경, 폭발적인 데이터 볼륨 관리, 실시간 쿼리 응답 시간과 보다 지능적인 데이터 활성화 요구 사항으로 인해 사람들이 그래프 모델의 이점을 깨닫게 된 최근까지는 관계형 데이터베이스보다 더 큰 이점을 보지 못했습니다.
TigerGraph(이전 명칭 GraphSQL), Neo4j 및 DataStax를 포함하여 수년 동안 이 모델을 지원하는 상용 소프트웨어 회사가 있습니다. 이 기술은 공급망 관리, 전자 상거래 추천, 보안, 사기 탐지, 유틸리티 전력망 스케줄링, AI 애플리케이션을 위한 지식 그래프, 블록체인 계정 원장 데이터에 대한 분석 쿼리 및 기타 고급 데이터 분석 분야와 같은 많은 분야에 어려움을 주고 있습니다. 전체적인 설명은 아래 링크를 참조하세요.
https://www.tigergraph.com/solutions/
https://medium.com/@dmccreary/a-taxonomy-of-graph-use-cases-2ba34618cf78
이 문서에서는 데이터 관리 관점에서 그래프 데이터베이스를 사용할 때의 주요 이점에 대해 설명하려고 합니다.
객체 지향 사고
이것은 우리가 작성하는 각 쿼리에 대해 매우 명확한 의미론을 의미합니다. 관계형 SQL과 같이 FROM 절의 테이블이 암묵적으로 카티시안곱(cartesian products)을 어떻게 형성하는지를 알아야 하는 숨겨진 가정은 없으며, 정규 경로 패턴 매칭(regular path pattern matching)과 같은 사용 편의성 외에도, 누산기 개념(accumulator concepts)을 사용하면 데이터의 중간 쿼리 상태를 그대로 유지할 수 있습니다.
성능
크든 작든 관련 데이터를 쿼리하는 우수한 성능을 제공합니다. 네이티브 그래프에는 각 버텍스가 인접한 엣지 정보만을 유지하는 소위 인덱스 없는 인접 속성(index-free adjacency property)을 가지고 있으며, 버텍스 연결에 대한 인덱스는 존재하지 않습니다. 따라서 데이터 크기가 증가하는 동안 네이티브 그래프가 일정한 성능을 낼 수 있도록 합니다. 엣지를 통해 주어진 버텍스의 이웃 노드를 순회하는 것은 그래프 크기와 무관하기 때문에 성능은 일정합니다. 주어진 쿼리에 대해 관련 없는 데이터를 로드하거나 건드릴 필요가 없습니다. 데이터 크기가 급격히 증가하는 실시간 빅데이터 분석 쿼리에 적합한 솔루션입니다.
더 나은 문제 해결
그래프 데이터베이스는 관계형 쿼리의 현실적이거나 비현실적이거나 모든 문제를 해결합니다. 예를 들어 페이지랭크(PageRank), 경사하강법(gradient descent), 기타 데이터 마이닝 및 머신러닝 알고리즘과 같은 반복 알고리즘이 있습니다. 연구에 따르면 일부 그래프 쿼리 언어는 튜링 컴플리트(Turing Complete) 하다는 것을 증명하였으므로 어떤 알고리즘이든 작성할 수 있습니다. 그러나 시장에는 표현력이 제한된 많은 쿼리 언어가 있습니다. 가설을 세운 질문을 최대한 많이 도출하여 해답을 찾을 수 있는지 확인하세요.
실시간으로 데이터 갱신과 동시에 쿼리 지원
그래프 데이터베이스는 빅데이터에 대한 실시간 갱신을 수행하는 동시에 쿼리를 지원할 수 있습니다. 이는 데이터 레이크용으로 설계된 Hadoop HDFS와 같은 기존 빅데이터 관리 시스템의 주요 단점으로, 순차 스캔 및 새로운 데이터 추가(랜덤 검색 없이)가 의도된 작업의 특성이며 전체 파일의 빠른 I/O를 보장하는 아키텍처 입니다. 그러나 그래프 데이터베이스는 관련 데이터만 터치한다는 가정이 있으므로 순차 스캔은 그래프 데이터베이스에 최적화된 설계가 아닙니다.
유연한 온라인 스키마 환경
그래프 데이터베이스는 쿼리를 실행하는 동안 유연한 온라인 스키마 전개를 제공합니다. 데이터 모델을 확장하거나 축소하기 위해 새로운 버텍스, 엣지 타입 또는 속성을 계속 추가 및 삭제할 수 있습니다. 기존 쿼리의 대부분은 여전히 동작하며, 매우 자주 그리고 끊임없이 변화하는 객체 유형을 관리하는 것이 매우 편리합니다. 관계형 데이터베이스는 이와 같은 매우 흔한 데이터 관리 요구 사항에 쉽게 적용할 수 없습니다.
강력한 순환 경로 쿼리를 쉽게 적용
유용한 많은 실생활 쿼리는 그래프(또는 데이터 네트워크)에서 직간접적인 연결을 찾습니다. 이러한 쿼리 수행을 가능하게 하는 것이 그래프 데이터베이스의 핵심 기능 중 하나입니다. 예를 들어, 어떤 회사에서 회사에 직간접적으로 투자한 투자자를 찾는 경우와 어떤 제품이 제시되었을 때 해당 제품과 직간접적으로 관련된 하위 부품을 찾는 경우 입니다.
또한 공통 버텍스를 공유하는 여러 도달 가능성 쿼리로 단일 쌍 버텍스(single-pair-vertex) 도달 가능성 쿼리(reachability queries)를 확장할 수 있습니다. 도달 가능성 경로 쿼리 세트를 함께 묶어 흥미로운 하위 그래프 패턴을 형성하도록 서로를 제한할 수 있습니다. 이것이 소위 결합 그래프 쿼리(conjunctive graph query - CQ)입니다. CQ는 사용자가 하위 그래프 패턴을 만들 수 있도록 하고 데이터베이스에 이 패턴과 일치하는 모든 하위 그래프 인스턴스를 반환하도록 요청합니다.
예를 들어, 어떤 회사에서 회사에 직간접적으로 투자하는 투자자를 찾는데, 투자자는 회사의 설립자와 직간접적으로 연결되어 있다고 하면, 연결 가능성 쿼리는 미리 결정된 JOIN 수가 없기 때문에 관계형 데이터베이스에서는 이러한 쿼리를 수행하기 매우 어려운 것으로 많은 사람들이 알고 있습니다. 경로의 일부 측정값을 기반으로 연결(경로)의 순위를 지정하면 더 어려워집니다. 예를 들면, 두 도시 간의 모든 비행 일정에서 최단 경로(shorted path)를 찾는 것 또는 소셜 그래프에서 어떤 사용자와 나를 연결할 수 있는 가장 최단 거리에 있는 사용자를 찾는 것과 같습니다. 그래프 쿼리 언어의 엣지 패턴에서 이러한 순환 경로 쿼리를 표현하기 위해 정규 표현식을 사용하는 것은 쉽습니다. 대조적으로, SQL 99 순환절을 사용하는 경우에는 SQL에서 이 작업을 수행하는 것은 매우 어렵습니다(여기에서 예제를 확인하세요).
아래에서는 SQL 사용자를 위해 설계된 그래프 쿼리 언어인 GSQL 의 순환 쿼리에 대한 몇 가지 예제를 제공 합니다.
- 3홉 내에서 주어진 회사에 직간접적으로 투자한 모든 투자자(기업 또는 개인)를 찾는 것을 GSQL에서는 한 줄로 표현할 수 있습니다. "Invested_by"는 기업과 투자자를 연결하는 엣지 타입입니다. "<"는 소스가 가장자리의 오른쪽에 있음을 나타내며, "1..3"은 “Invested_by” 엣지를 한 번에서 세 번까지 반복하는 순환 범위를 의미합니다.
Investors = SELECT tgt
FROM Company:src - (<Invested_by*1..3) - :tgt
WHERE src.name = "TigerGraph";
- 상한선 없이 해당 기업에 직간접적으로 투자한 모든 투자자(기업 또는 개인)를 찾는 것을 GSQL에서는 반복되는 엣지 패턴의 상한선을 제거하여 한 줄로 표현할 수 있습니다.
Investors = SELECT tgt
FROM Company:src - (<Invested_by*1..) - :tgt
WHERE src.name = "TigerGraph";
- 해당 회사에 직간접적으로 투자한 투자자이면서 회사의 설립자를 직간접적으로 알고 있는 개인 투자자를 찾는 것을 GSQL에서는 다음과 같이 표현할 수 있습니다.
Investors = SELECT tgt
FROM Company:src - (<Invested_by*1..) - Person:tgt,
:tgt - (Knows>*1..)- Person:founder-(Founded>)- :src
WHERE src.name = "TigerGraph"
집계 쿼리별 그룹화
그래프 데이터베이스는 기존의 그룹별 쿼리 외에 관계형 데이터베이스에서는 상상할 수 없거나 비현실적인 특정 클래스의 그룹별 집계 쿼리를 수행할 수 있습니다. 테이블 형식 모델 인해 관계형 데이터베이스의 집계 쿼리는 데이터가 함께 그룹화되는 방식에 따라 크게 제한됩니다. 대조적으로 그래프 모델은 관련 데이터를 그룹화하고 집계하는 데 더 유연합니다. 이 기사를 보면, 누산기(버텍스 및 엣지의 런타임 속성 또는 쿼리의 전역 상태)를 사용하는 그래프 순회를 위한 집계의 최신 표현 능력에 대해 설명합니다. 관계형 데이터베이스는 선별적인 데이터 포인트에 대해 이런 종류의 유연한 집계를 수행할 수 없다고 생각합니다(저는 10년 동안 Oracle, MS SQL Server, Apache 오픈 소스 플랫폼 등과 같은 상용 관계형 데이터베이스 커널관련 분야에서 일했습니다).
여러 차원 결합 및 계층화
그래프 데이터베이스는 시계열, 인구 통계학, 지리 차원 등을 포함한 여러 차원을 결합하여 서로 다른 차원의 세분화 계층과 함께 빅데이터를 관리할 수 있습니다. 시간과 지리적 차원 모두를 기반으로 인구 그룹을 분할하려는 응용 프로그램을 생각해 보십시오. 신중하게 설계된 그래프 스키마를 통해 데이터 과학자와 비즈니스 분석가는 그래프 데이터베이스에서 거의 모든 분석 쿼리를 수행할 수 있습니다. 이 기능은 전통적으로 C++ 및 Java와 같은 저 수준 프로그래밍 언어에서만 가능합니다. 훌륭한 웨비나 시리즈는 이 점을 더 명확하게 합니다.
AI 인프라
그래프 데이터베이스는 엔터티 간의 관계 정보가 잘 구조화되어 있어 우수한 AI 인프라 역할을 하며, 이를 통해 간접적인 사실과 지식을 더 잘 추론할 수 있어, 머신러닝 전문가들이 좋아합니다. 다른 데이터 모델이 거의 만족하지 못하는 풍부한 정보와 편리한 데이터 접근성을 제공합니다. 예를 들어 구글 Expander팀은 스마트 메시징 기술에 이를 사용했습니다. 구글에서 만든 지식 그래프는 인간을 더 잘 이해하기 위해 만들어졌고, 지식 추론에 서 더 많은 발전이 이루어 지고 있습니다. 그리고 최근에는 신경망 최적화 구성으로 그래프 구조 데이터를 강조하는 DeepMind(https://arxiv.org/abs/1806.01261)에서 GNN 개념을 더욱 지지했습니다. 실시간 AI 데이터 인프라 역할을 하는 성공적인 그래프 데이터베이스의 핵심은 다음과 같습니다.
- 새로운 데이터 스트림으로 실시간 데이터 갱신 지원
- 데이터 과학자에게 완전한 제어를 제공하는 표현력이 뛰어나고 사용자 친화적인 선언적 쿼리 언어
- 인간의 뉴런이 신경망을 통해 정보를 보내는 것처럼 실시간(1초 미만)의 깊고 효율적인 딥 링크 탐색(>3홉) 지원
- 빅그래프를 관리하기 위한 스케일 아웃과 스케일 업 지원
결론적으로, 우리는 전통적인 관계형 데이터베이스로는 해결할 수 없는 빅데이터를 관리하는 네이티브 그래프 데이터베이스의 많은 장점을 보았습니다.
그렇지만 새로운 기술이 기존 기술을 대체하고 있고, 그래프 데이터베이스의 채택에는 여전히 장애물이 존재합니다. 그 중 하나는 취업 시장에서 SQL 개발자보다 그래프를 이해하고 그래프 쿼리를 사용할 수 있는 역량을 갖춘 개발자가 적다는 것입니다. 또 다른 하나는 그래프 데이터베이스 쿼리 언어의 비표준화입니다. 많은 마케팅 과대 광고와 불완전한 제품으로 인해 성능과 가용성이 저하되어 필요한 기업에서 그래프 모델을 채택하는 속도가 느려졌습니다. 그래프 데이터베이스에 대해 자세히 알고 싶다면, 주요 그래프 데이터베이스의 장단점을 비교하는 무료 ebook 을 다운로드하십시오.
https://www.tigergraph.com/blog/what-are-the-major-advantages-of-using-a-graph-database/