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 |