관리 메뉴

Hee'World

TigerGraph란? 본문

Database/Graph Database

TigerGraph란?

Jonghee Jeon 2022. 5. 1. 14:09

 

  • TigerGraph
    •  처음부터 쿼리 및 분석의 대규모 병렬 계산을 지원하기 위해 개발된 그래프 데이터베이스
    •  TigerGraph의 그래프 질의 언어인 GSQL은 SQL과의 호환성을 위해 설계되었으며
    •  동시에 BSP(Bulk-Synchronous Processing) 용어로 생각할 수 있도록 하며 높은 성능의 이점을 누릴 수 있음
    •  고유 스토리지가 그래프 노드, 에지 및 속성을 저장하기 위해 MPP(Massive Parallel Processing)* 방식 설계됨
    •  사용자가 쿼리 및 분석을 수행할 시, 스케일-업 및 스케일-아웃의 성능을 제공
    • TigerGraph는 메모리에 데이터를 저장하는 것이 기본 설정이지만 필수사항은 아니기 때문에 인-메모리 데이터베이스가 아님
    • 사용자는 그래프 처리 시에 사용할 수 있는 메모리 양을 지정하는 매개 변수를 설정할 수 있으며, 전체 그래프가 메모리의 양을 넘어서면 초과분이 Disk에 저장됨

     * MPP - 많은 독립적인 노드들이 고속의 네트워크로 서로 연결이 된 하나의 매우 커다란 분산 메모리 컴퓨터 시스템 (https://ko.wikipedia.org/wiki/%EB%8C%80%EA%B7%9C%EB%AA%A8_%EB%B3%91%EB%A0%AC_%EC%BB%B4%ED%93%A8%ED%84%B0)

  • 병렬화 및 공유 값
    • TigerGraph는 아키텍처의 모든 측면에서 MPP(Massively Parallel Processing)를 지원하는 설계를 채택
    • 그래프 쿼리가 병렬 계산과 호환되며 실제로 그래프 쿼리 특성은 노드 사이의 에지를 따라 그래프에서 여러 경로를 통과하는 것임. 이러한 순회 작업은 병렬/다중 스레드 실행에 적합하고 다양한 그래프 알고리즘은 이러한 순회 작업을 특정 쿼리에 따라 처리하도록 수행
    • TigerGraph의 GSQL을 사용하여 복잡한 그래프 트래버설을 코드의 몇 줄(이 단락보다 짧음)로 표현할 수 있음
  • C++로 작성된 저장소 및 처리 엔진
    • TigerGraph의 스토리지 엔진과 프로세싱 엔진은 C++로 구현
    • C++가 제공하는 메모리 관리의 세밀한 제어 때문에 채택되었으며 메모리 관리는 TigerGraph가 단일 쿼리에서 많은 에지를 동시에 순회하는 기능에 기여함
    • 자바 가상 머신에서와 같이 이미 제공된 메모리 관리를 사용하는 구현은 편리하지만 사용자가 메모리 사용을 최적화하는 것은 어려움
  • 자동 파티셔닝
    • 빅데이터 환경은 데이터 용량이 너무 크기 때문에 단일 서버에 효율적으로 저장할 수 없어 데이터베이스 솔루션을 여러 시스템으로 확장할 수 있어야함
    • TigerGraph는 고성능을 유지하기 위해 서버 클러스터에 걸쳐 그래프 데이터를 자동으로 분할하도록 설계함
    • 해시 인덱스는 서버 내 데이터 위치뿐만 아니라 서버 내 데이터 위치도 결정하는 데 사용
    • 노드에서 연결되는 모든 에지는 동일한 서버에 저장
  • 분산 컴퓨팅
    • TigerGraph는 그래프의 많은 부분을 순회하는 분석 쿼리의 성능을 크게 향상시키는 분산 계산 모드를 지원
    • 분산 질의 모드에서는 모든 서버가 질의에 대해 작업하도록 요청되며, 각 서버의 실제 참여는 필요에 따라 이루어집니다.
    • 순호 경로가 서버 A에서 서버 B로 교차할 때 서버 B가 알아야 할 최소한의 정보가 전달
    • 서버 B는 전반적인 쿼리 요청에 대해 이미 알고 있기 때문에 쉽게 처리할 수 있음
  • GSQL
    • TigerGraph는 자체 고급 그래프 쿼리 및 업데이트 언어인 GSQL을 제공
    • 대부분 GSQL 쿼리의 핵심은 SQL에 가깝게 모델링된 SELECT FROM-WHERE 블록
    • GSQL 쿼리는 또한 효율적인 병렬 계산을 지원하는 두 가지 주요 확장 기능을 제공
    • 노드 및 에지 계산 기능을 지정하는 새로운 ACCUM 절과 이러한 계산 기능의 병렬 실행으로 생성된 입력을 집계하는 누산기 변수
    • GSQL 쿼리에는 기본 인프라에서 추상화되고 SQL과 호환되는 선언적 의미 체계가 있음
  • TigerGraph 한국시장 진출 이력
    • 2021년 7월 한국지사 설립을 통해 한국시장 진출(https://www.newswire.co.kr/newsRead.php?no=927286)
    • 2021년 8월 이은철 한국 지사장 임명(https://www.ciokorea.com/news/203799)
    • 2021년 11월 조현기 기술이사 영입(https://www.datanet.co.kr/news/articleView.html?idxno=166846)
  • TigerGraph Architecture

TigerGraph System Architecture(https://docs.tigergraph.com/tigergraph-server/current/intro/internal-architecture)

 

  • GSQL 컴파일러쿼리 계획 생성을 담당. 다운스트림에서는 쿼리 계획을 쿼리 인터프리터로 보내거나 쿼리 계획을 기반으로 기본 기계 코드를 생성할 수 있음. 컴파일러 모듈은 유형 검사, 의미 체계 검사, 쿼리 변환, 계획 생성, 코드 생성 및 카탈로그 관리를 수행. GSQL 컴파일러는 데이터 정의 언어(DDL), 데이터 로딩 언어(DLL) 및 데이터 조작 언어(DML)에 대한 구문을 지원. GSQL 쿼리 텍스트는 GSQL 쉘 콘솔에 입력하거나 REST API 호출을 통해 입력할 수 있음. 컴파일러에서 쿼리 계획이 생성되면 사용자의 선택에 따라 실시간으로 쿼리를 평가하기 위해 인터프리터로 보낼 수 있음. 또는 실행 계획을 코드 생성 모듈로 보낼 수 있음. 여기서 C++ UDF 및 REST Endpoint가 생성되고 동적 링크 라이브러리로 컴파일됨. 컴파일된 모드가 선택되면 GSQL 쿼리는 REST API 또는 GSQL 셸을 통해 다른 매개변수로 호출할 수 있는 서비스로 자동 배포
  • GraphStudio Visual SDK그래픽 사용자 인터페이스. GraphStudio는 그래프 데이터 분석의 모든 단계를 사용하기 쉬운 하나의 그래픽 웹 브라우저 사용자 인터페이스로 통합. GraphStudio는 임시 대화형 분석과 끌어서 놓기 쿼리 작성을 통해 TigerGraph 플랫폼을 사용하는 방법을 배우는 데 유용함. 구성 요소에는 스키마 빌더, 시각적 데이터 로더, 그래프 탐색기 및 GSQL 시각적 IDE가 포함. 이러한 구성 요소(그래프 탐색기 제외)는 GSQL 컴파일러와 직접 통신. 그래프 탐색기는 표준 UDF에 내장된 TigerGraph 시스템을 통해 기본 엔진과 통신
  • REST API는 TigerGraph 시스템과 통신하는 다른 프로세스를 위한 인터페이스. TigerGraph 시스템에는 처리량이 많은 REST 호출을 위해 프로그래밍되고 최적화된 REST 서버가 포함되어 있습니다. 모든 사용자 정의 쿼리, 토폴로지 CRUD(만들기, 읽기, 업데이트, 삭제) 표준 작업 및 데이터 수집 로드 작업은 REST Endpoint으로 설치. REST 서버는 모든 http 요청을 처리하여 요청 유효성 검사, 디스패치 및 JSON 형식 응답을 http 클라이언트에 전달
  • 표준 및 사용자 정의 UDF는 응용 프로그램 논리를 인코딩하는 C++ 함수. 이러한 UDF는 상위 레이어와 하위 레이어 사이의 다리 역할을 수행. UDF는 엔진 컴파일 시간에 링크되는 정적 라이브러리 형식으로 상주할 수 있음. 또는 엔진 런타임에 연결 가능한 동적 링크 라이브러리일 수 있음. 많은 표준 그래프 작업과 일반 그래프 알고리즘은 사전 구축된 정적 라이브러리에 코딩되어 있으며 각 시스템 릴리스에서 엔진과 연결. 임시 사용자 쿼리는 GSQL 컴파일 시간에 생성되고 런타임에 엔진에 연결
  • GSE는 스토리지 엔진. 하드웨어의 다른 계층(캐시, 메모리 및 디스크)에서 ID 관리, 메타 데이터 관리 및 토폴로지 저장소 관리를 담당. ID 관리에는 그래프 요소(정점 및 가장자리)에 대한 내부 ID 할당 또는 할당 해제가 포함. 메타 데이터 관리는 카탈로그 정보를 저장하고 시스템 상태를 유지하며 여러 시스템 구성 요소를 동기화하여 공동 작업을 수행. 토폴로지 스토리지 관리는 그래프 토폴로지 설명의 메모리 풋프린트를 최소화하는 동시에 그래프를 이상적인 병렬 컴퓨팅 및 스토리지 단위로 분할하고 압축하여 병렬 효율성을 최대화하는 데 중점적으로 수행. 또한 방금 언급한 세 가지 데이터 세트에 대한 CRUD 요청에 응답하는 커널 API도 제공
  • GPE는 병렬 엔진. 대량 동기 병렬(BSP) 방식으로 UDF를 처리. TigerGraph가 클러스터 환경에 배포된 경우 GPE는 메모리, 코어 및 시스템 파티션을 포함한 시스템 리소스를 자동으로 관리(이는 Enterprise Edition에서 지원). 리소스 관리 외에도 GPE는 주로 작업 대기열에서 작업의 병렬 처리를 담당. 태스크는 사용자 정의 UDF, 표준 UDF 또는 CRUD 조작. GPE는 쿼리 처리량을 최대화하면서 ACID 트랜잭션을 충족시키기 위해 이러한 모든 작업을 동기화, 예약 및 처리
  • 쿼리 요청 및 데이터 스트림을 버퍼링하기 위한 Kafka 메시지 서비스, 시스템 관리자가 커널 기능 호출, 백업 및 복원을 호출하기 위한 GAdmin이라는 제어 콘솔과 같은 요소도 구성되어 있음

 

  • TigerGraph 시스템 상세

https://docs.tigergraph.com/tigergraph-server/current/intro/internal-architecture

  • TigerGraph 시스템 내에서 메시지 전달은 구성 요소의 요청을 조정하는 데 사용. 향상된 RESTful 서버인 RESTPP는 작업 관리의 핵심이며, 사용자는 시스템과 상호 작용할 방법을 선택할 수 있음.
    • GSQL 클라이언트 : 하나의 TigerGraph 인스턴스는 원격 노드에서 여러 GSQL 클라이언트를 지원
    • GraphStudio : 기본 GSQL 기능의 대부분을 제공하는 그래픽 사용자 인터페이스
    • REST API : 동일한 쿼리를 여러 번 실행해야 하는 엔터프라이즈 애플리케이션은 RESTPP와 직접 통신
    • gAdmin : 시스템 관리에 사용
 
  • TigerGraph Ecosystem

TigerGraph Ecosystem

 

  • GSQL
    • EXAMPLE 1 (DDL)
      1. LinkedIn 및 Twitter의 두 그래프를 선언하는 DDL이며, LinkedIn 연결과 같은 대칭 관계는 방향이 없는 가장자리로 모델링되는 반면 비대칭 관계(예: Twitter의 팔로잉 또는 게시)는 방향 가장자리에 해당
      2. 에지 유형은 소스 및 대상 정점의 유형과 선택적 에지 속성을 지정합니다(아래의 이후 및 종료 속성 참조)
      3. 정점의 경우 SQL에서와 동일한 의미로 기본 키 속성을 선언할 수 있습니다(Person 정점의 전자 메일 속성 참조)
 CREATE VERTEX Person (email STRING PRIMARY KEY, name STRING, dob DATE)
 CREATE VERTEX Tweet (id INT PRIMARY KEY, text STRING, timestamp DATE)
 CREATE DIRECTED EDGE Posts (FROM Person, TO Tweet)
 CREATE DIRECTED EDGE Follows (FROM Person, TO Person, since DATE)
 CREATE UNDIRECTED EDGE Connected (FROM Person, TO Person, since DATE, end DATE)
 CREATE GRAPH LinkedInGraph (Person, Connected)
 CREATE GRAPH TwitterGraph (Person, Tweet, Posts, Follows)

 

 


 

참고자료

 - Alin Deutsch, Yu Xu, Mingxi Wu, Victor Lee, TigerGraph: A Native MPP Graph Database, 2019

 - https://www.tigergraph.com/ecosystem/ 

 - https://docs.tigergraph.com/gsql-ref/current/intro/intro#

 - https://docs.tigergraph.com/tigergraph-server/current/intro/internal-architecture

 

 

 

'Database > Graph Database' 카테고리의 다른 글

Cypher 기초(2/2)  (3) 2022.09.17
Cypher 기초(1/2)  (0) 2022.08.20
Neo4j DatabaseNotFoundError_status_quarantined  (0) 2022.02.12
Neo4j란?  (2) 2022.02.12
Neo4j Desktop 설치  (0) 2022.01.23
Comments