그래프 데이터베이스 (Graph Database)

2023. 9. 20. 12:54·Computer Science
728x90

그래프 데이터베이스의 특징 및 역할

  • 컴퓨팅에서 그래프 데이터베이스는 데이터를 표현하고 저장하기 위해 노드, 에지 및 속성이 있는 쿼리에 그래프 구조를 사용하는 데이터베이스입니다.
    • 그래프의 중심 개념은 그래프(에지 또는 관계)입니다.
    • 관계를 통해 저장소의 데이터를 직접 연결하고 많은 경우 하나의 작업으로 검색 할 수 있습니다.
    • 그래프 데이터베이스를 사용하여 관계를 직관적으로 시각화할 수 있으므로 상호 연결된 데이터에 유용합니다.
  • 정리해보면 그래프 데이터베이스는 데이터 간의 관계를 처리하도록 설계된 데이터베이스입니다.

그래프 데이터베이스를 활용할때의 특징

  • 기본적으로 관계를 수용하는 데이터베이스 만이 연결을 효율적으로 저장, 처리 및 쿼리 할 수 있습니다.
  • 다른 데이터베이스는 시간이 오래 걸리는 JOIN 작업을 통해 쿼리 시간에 관계를 계산하지만, 그래프 데이터베이스는 모델의 데이터와 함께 연결을 저장합니다.
  • 데이터 세트의 총 크기와 관계없이 그래프 데이터베이스는 고도로 연결된 데이터와 복잡한 쿼리를 관리하는 데 탁월합니다.
  • 노드는 그래프의 엔티티입니다. 속성이라고하는 속성 (키-값 쌍)을 얼마든지 보유 할 수 있습니다.
  • 노드는 도메인에서 다른 역할을 나타내는 레이블로 태그를 지정할 수 있습니다.
  • 노드 레이블은 특정 노드에 메타 데이터 (예 : 인덱스 또는 제약 정보)를 첨부하는 역할도 할 수 있습니다.
  • 노드와 마찬가지로 관계도 속성을 가질 수 있습니다. 대부분의 경우 관계에는 가중치, 비용, 거리, 등급, 시간 간격 또는 강점과 같은 양적 속성이 있습니다.
  • 조회 단위가 다르기 때문에 쿼리 조회 시 성능차이가 발생한다

그래프 데이터베이스 플랫폼 비교해보기

  • Neo4j : 플랫폼에는 Neo4j Graph Data Science Library (오픈 소스 및 기업용 상용 라이선스를 통해 사용할 수있는 그래프 데이터를 위한 기업용 분석 작업 공간)가 포함되어 있습니다. 그래프 시각화 및 탐색도구인 Bloom, Cypher 쿼리 언어를 배울 수 있습니다.
  • Dgraph : Dgraph는 그래프 백엔드가 있는 세계에서 가장 진보 된 GraphQL 데이터베이스입니다. GitHub의 1위 그래프 데이터베이스이며 매월 500,000 회 이상 다운로드되는 Dgraph는 성능과 확장성을 위해 구축되었습니다. Dgraph는 고객 360 및 사기 탐지에서 다중 홉 및 임의 깊이 조인을 사용한 복잡한 쿼리에 이르기까지 다양한 사용 사례에 이상적입니다. 강력한 성능 및 메모리 관리로 인해 그래프 데이터베이스는 기업에 이상적이며 Dgraph Cloud를 사용하면 빠르게 시작할 수 있습니다. 0에서 수십억 개의 레코드까지 손쉽게 확장 할 수 있습니다.
  • Amazon Neptune : Amazon Neptune은 빠르고 안정적인 완전관리형 그래프 데이터베이스 서비스로 고도로 연결된 데이터 세트로 작동하는 애플리케이션을 쉽게 구축하고 실행할 수 있습니다. Amazon Neptune의 핵심은 수십 억개의 관계를 저장하고 밀리 초 지연 시간으로 그래프를 쿼리하는데 최적화된 특수 목적의 고성능 그래프 데이터베이스 엔진입니다. Neptune은 추천 엔진, 사기 감지, 지식 그래프, 약물 발견 및 네트워크 보안과 같은 그래프 사용 사례를 지원합니다. Neptune은 미사용 암호화를 지원하여 안전합니다. Neptune은 완전관리형이므로 하드웨어 프로비저닝, 소프트웨어 패치, 설정, 구성 또는 백업과 같은 데이터베이스 관리 작업에 대해 걱정할 필요가 없습니다.
  • Cassandra : Cassandra의 데이터 모델은 로그 구조화된 업데이트의 성능, 비정규화 및 구체화된 뷰에 대한 강력한 지원, 강력한 내장 캐싱으로 열 인덱스의 편리함을 제공합니다.

데이터베이스의 종류 및 특징

위의 그림처럼 데이터베이스의 종류는 기능 및 성능별로 다양하게 선택하여 활용할 수 있다.

카산드라(cassandra)와 Neo4j를 통한 데이터베이스의 활용

  • 카산드라도 대표적인 그래프 데이터베이스 중 하나입니다.
  • 해당 데이터베이스를 당장 수행하기보다 쿼리를 보면서 기존에 봤던 쿼리와의 공통점을 파악해보도록 합시다.
  • 카산드라에 대한 세부적인 이해보다 어떤 방식으로 수행되는지 쿼리를 통해 간단히 살펴보도록 합니다.
  • 데이터모델
    • Key space
    • Table
    • Row
    • column name : column value
      • SET, LIST, MAP 도 칼럼에 저장 가능
// 카산드라 Defining Database Schema

CREATE KEYSPACE reservation WITH replication = {'class':
  'SimpleStrategy', 'replication_factor' : 3};


CREATE TYPE reservation.address (
  street text,
  city text,
  state_or_province text,
  postal_code text,
  country text );


CREATE TABLE reservation.reservations_by_guest (
  guest_last_name text,
  hotel_id text,
  start_date date,
  end_date date,
  room_number smallint,
  confirm_number text,
  guest_id uuid,
  PRIMARY KEY ((guest_last_name), hotel_id) )
  WITH comment = 'Q8. Find reservations by guest name';

CREATE TABLE reservation.guests (
  guest_id uuid PRIMARY KEY,
  first_name text,
  last_name text,
  title text,
  emails set<text>,
  phone_numbers list<int>,
  addresses map<text, text>,
  address frozen<address>,
  confirm_number text )
  WITH comment = 'Q9. Find guest by ID';

위 그림처럼 다양한 형태로 데이터베이스를 활용할 수 있습니다.

마무리

  • 그래프 데이터베이스는 데이터 간 관계를 생성하고 신속하게 쿼리해야 하는 소셜 네트워킹, 추천 엔진 및 부정 탐지와 같은 사용 사례의 경우 관계형 데이터베이스보다 유용합니다.
  • 관계형 데이터베이스를 사용해 이러한 유형의 애플리케이션을 구축하려면 몇가지 문제점에 부딪히게 됩니다.
    • 외래 키가 여러 개 있는 복수의 테이블이 필요합니다.
    • RDB로 데이터를 탐색하는 SQL 쿼리에는 중첩 쿼리와 복잡한 조인이 필요하며 이는 순식간에 너무 복잡해집니다.
    • 시간이 지나면서 데이터 규모가 커짐에 따라 쿼리 성능이 현저히 저하됩니다.
  • 그래프 데이터베이스는 목적에 따라 따로 또는 함께 사용할 수 있는 보완재이지 대체재의 개념은 아닙니다.
    • 활용사례참조 : neptune
728x90
반응형

'Computer Science' 카테고리의 다른 글

ad-hoc이란? (adhoc)  (1) 2023.11.01
순회 (Traversal) 란?  (0) 2023.09.20
CI/CD(Continuous Integration/ Delivery & Deployment)란?  (0) 2023.09.19
Python과 컴파일러 언어 간의 주요 차이점  (0) 2023.09.16
k진수에서 소수 개수 구하기 (풀이)  (0) 2023.09.13
'Computer Science' 카테고리의 다른 글
  • ad-hoc이란? (adhoc)
  • 순회 (Traversal) 란?
  • CI/CD(Continuous Integration/ Delivery & Deployment)란?
  • Python과 컴파일러 언어 간의 주요 차이점
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (132) N
      • python (36) N
        • selenium (4)
        • algorithm (3)
        • Django (6) N
        • Pandas | Numpy (19)
      • SQL (9)
      • Data Engineer (29)
      • Data Scientist (3)
      • Data Analysis (4) N
      • Computer Science (35)
      • Why? (15)
      • 마음가짐 (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
그래프 데이터베이스 (Graph Database)
상단으로

티스토리툴바