그래프 데이터베이스와 관계형 데이터베이스의 차이점은 무엇인가요?


그래프 데이터베이스와 관계형 데이터베이스의 차이점은 무엇인가요?

그래프 데이터베이스와 관계형 데이터베이스는 모두 관계가 있는 관련 데이터 항목을 저장하지만 데이터 관계를 표현하는 것은 매우 다릅니다. 관계형 데이터베이스는 행과 열이 있는 표 형식으로 데이터를 저장합니다. 모든 데이터는 테이블에도 저장되며 데이터 간의 관계는 원래 테이블에 대한 참조(일명 외래 키)로 표현됩니다. 런타임 시 관계형 데이터베이스는 JOIN 문을 사용하여 이러한 참조를 명시적으로 해결합니다. 대부분의 관계형 데이터베이스는 특정 규모에서는 이 연산을 효율적으로 수행할 수 있지만, 소셜 네트워크에서 두 사람이 어떤 관계를 맺고 있는지 알아내는 것과 같이 알 수 없는 수의 연결을 통해 관련 정보를 찾아야 하는 경우와 같이 대량 또는 알 수 없는 수의 참조를 처리해야 하는 경우 이러한 연산은 비효율적입니다.

반면 그래프 데이터베이스는 데이터를 엔터티와 관계의 네트워크로 저장합니다. 그래프 데이터베이스는 데이터를 참조로 저장하는 대신 엔터티와 관계 데이터를 모두 명시적으로 저장합니다. 런타임 시 그래프 데이터베이스는 수학적 그래프 이론을 활용하여 엔터티와 관계에 대한 연산을 효율적으로 수행합니다. 계산된 그래프 데이터베이스 대신 엔터티 간의 관계가 명시적으로 저장되므로 데이터베이스는 복잡한 데이터 상호 연결이 있는 사용 사례에 대한 쿼리 및 메모리 관리에 더 효율적이므로 애플리케이션 성능이 크게 향상될 수 있습니다.


관계형 데이터베이스에 대해 읽어보기 »
그래프 데이터베이스에 대해 읽어보기
 

데이터 모델: 그래프 데이터베이스와 관계형 데이터베이스

그래프 데이터베이스와 관계형 데이터베이스 모두 정보를 저장하고 데이터 간의 관계를 표현합니다. 하지만 관계형 모델은 데이터 항목을 우선으로 하는 반면, 그래프 모델은 항목 간의 관계를 우선으로 합니다.

관계형 데이터베이스 모델

관계형 데이터베이스는 정보를 행과 열로 구성하는 데이터 테이블을 사용합니다. 열에는 데이터 엔터티의 특정 속성이 저장되며, 행은 개별 데이터 레코드를 나타냅니다. 

관계형 데이터베이스의 고정 스키마를 사용하려면 기본 키와 외래 키를 사용하여 테이블 간의 관계를 사전에 설명해야 합니다. 

소셜 미디어 애플리케이션에서 서로 친구 관계일 수도 있는 고객 프로필이 있다고 가정해보겠습니다. 일반적인 모델에는 데이터를 모델링하기 위해 2개의 테이블이 필요합니다.
고객 테이블은 다음과 같을 수 있습니다


ID

이름

위치

C1

Alejandro

USA

C2

Ana

USA

C3

Kwaku

USA

C4

Pat

USA

친구 테이블은 다음과 같을 수 있습니다.


고객 ID

친구 ID

C1

C2

C1

C3

C2

C4

C2

C1

C3

C1

C3

C4

쿼리 시 “Alejandro의 친구 이름이 무엇인가요?”와 같은 질문에 답하려면 데이터베이스 엔진이 먼저 Customer 테이블에서 Alejandro에 대한 행을 찾습니다.
 


ID

이름

위치

C1

Alejandro

USA

다음으로 엔진이 Alejandro의 ID를 사용하여 friends 테이블에 있는 모든 행의 합집합을 생성합니다.
 


ID

이름

위치

고객 ID

친구 ID

C1

Alejandro

USA

C1

C2

C1

Alejandro

USA

C1

C3

이제 각 행에 대해 엔진이 각 Friend ID에 대한 고객 테이블로 다시 합집합을 생성합니다.
 


ID

이름

위치

고객 ID

친구 ID

ID

이름

위치

C1

Alejandro

USA

C1

C2

C2

Ana

USA

C1

Alejandro

USA

C1

C3

C3

Kwaku

USA

마지막으로 엔진이 친구들의 이름을 반환합니다.
 


이름

Ana

Kwaku

보시다시피, 관계형 데이터의 연결을 사용하면 검색하려는 정보를 표현하기 위해 대규모 데이터 구조를 구축하게 됩니다. 관계형 데이터베이스에는 이러한 구조의 영향을 최소화하기 위한 최적화 기능이 있지만 조인 수가 많을수록 필요한 데이터의 양이 크게 증가하여 성능이 저하되고 메모리 사용량이 증가합니다.

그래프 데이터베이스 모델

반면 그래프 데이터베이스는 속성, 관계 및 객체가 포함된 그래프 구조를 사용하여 데이터를 표현합니다. 노드는 객체이고, 엣지는 노드 간의 관계를 나타내며, 속성은 노드와 엣지의 특성을 설명합니다. 이러한 동적 구조 덕분에 그래프 데이터베이스는 연결된 데이터를 표현하는 데 유용합니다. 관계 및 데이터 유형과 관련하여 더 큰 유연성을 제공합니다.

위와 같은 소셜 네트워크 데이터 예시를 사용하여 그래프 데이터베이스는 각각 4개의 속성과 2개의 엣지를 가진 3개의 노드를 사용하여 데이터를 저장합니다.

이제 그래프 데이터베이스가 “Alejandro의 친구 이름은 무엇인가요?”라는 쿼리를 처리하는 방법을 살펴보겠습니다.

먼저, Alejandro를 나타내는 Customer 노드를 찾습니다(아래 강조 표시됨).

다음으로 친구 엣지를 가로질러 이동하거나 순회합니다. 그래프 데이터베이스를 순회하는 것은 관계형 데이터베이스에서 JOIN을 수행하는 것과 비슷하지만, 명시적으로 요청하지 않는 한 쿼리의 이전 정보가 유지되지 않습니다. 아래 예에서는 두 친구 엣지만 메모리에 유지됩니다.

셋째, 인접 노드로 순회를 계속합니다.

마지막으로 엔진이 친구들의 이름을 반환합니다.
 


이름

Ana

Kwaku

보시다시피 두 엔진 모두 동일한 정보를 반환할 수 있지만 여러 연결을 순회할 때 그래프 데이터베이스에 관계를 명시적으로 저장하면 이 요청을 더 효율적으로 처리할 수 있습니다. 이러한 장점은 여기에 표시된 것과 같은 단순한 쿼리에는 큰 의미가 없지만, 그래프 쿼리 언어의 구조와 함께 이러한 최적화를 통해 이러한 관계 순회를 많이 또는 알 수 없는 만큼 수행해야 하는 질문을 처리하는 데 필요한 복잡성과 메모리 사용량을 크게 줄일 수 있습니다.

주요 차이점: 그래프 데이터베이스와 관계형 데이터베이스

관계형 데이터베이스와 그래프 데이터베이스는 서로 다른 데이터 모델 외에도 기능과 유용성 면에서 차별화되는 많은 차이점이 있습니다.

쿼리

그래프 데이터베이스는 연결된 데이터를 빠르게 찾고 검색하도록 최적화된 사용자 지정 쿼리 언어를 사용합니다. TinkerPop Gremlin, openCypher, SPARQL을 비롯한 이러한 언어는 재귀적 데이터 액세스, 경로 찾기, 그래프 알고리즘과 같은 작업에 필요한 복잡한 데이터 상호 연결을 활용하는 쿼리 작성을 단순화하기 위해 특별히 제작되었습니다.

반면 관계형 데이터베이스는 SQL을 사용하여 데이터를 검색하고 조작합니다. SQL을 사용하면 테이블에 대해 SELECT, INSERT, UPDATE, DELETE와 같은 다양한 유형의 쿼리를 수행할 수 있습니다. 관계형 데이터베이스는 테이블 간의 관계가 잘 정의되어 있는 정형 데이터를 처리하는 데 탁월합니다. 여러 테이블에서 복잡한 필터링, 집계 및 조인을 수행하는 데 특히 효과적입니다.

성능

그래프 데이터베이스는 객체와 관계를 모두 데이터로 저장하고 인덱스를 사용하여 관련 엔터티 간을 효율적으로 순회합니다. 그래프 데이터베이스는 관계를 데이터로 저장하므로 데이터베이스는 이러한 연결을 동적으로 계산할 필요 없이 엔터티 사이를 빠르게 탐색할 수 있습니다. 노드 간의 직접 연결을 통해 즉각적인 액세스가 가능하므로 관계를 빠르게 쿼리하고 추적할 수 있습니다. 이러한 기능은 그래프 데이터베이스의 효율성을 크게 높여줍니다.

또는 관계형 데이터베이스는 인덱스 조회와 동적으로 계산된 조인을 사용하여 엔터티 간의 관계를 식별합니다. 여러 테이블을 조인할 수 있지만 시스템에서 더 많은 데이터에 대해 더 큰 인덱스를 스캔해야 하므로 시간이 많이 걸립니다. 이로 인해 필요한 데이터를 검색하는 데 많은 연결이 필요한 사용 사례에서 관계형 데이터베이스는 그래프 데이터베이스와 동일한 성능을 제공하지 않습니다.

사용 편의성

그래프 데이터베이스는 관계 중심적이므로 연결된 데이터를 사용할 때 작업을 손쉽게 수행할 수 있습니다. 이러한 데이터베이스는 다중 관계가 있는 경로를 탐색하는 멀티 홉 쿼리에 뛰어난 성능을 발휘합니다. 또한 SPARQL, Gremlin 또는 openCypher와 같은 그래프 쿼리 언어를 사용하여 간단한 그래프 전용 구문으로 상호 연결된 데이터를 탐색하는 쿼리를 표현할 수 있습니다.

관계형 데이터베이스는 SQL을 사용하므로 멀티 홉 쿼리를 관리할 때 부자연스럽게 느껴질 수 있습니다. 쿼리에 여러 조인이 있고 쿼리가 중첩된 여러 하위 쿼리에 걸쳐 있는 경우 SQL을 작성하기가 어려워집니다. 주의를 기울이지 않으면 읽고 유지 관리가 어려운 부피가 큰 쿼리가 되기 십상입니다.

그렇긴 하지만 관계형 데이터베이스는 성숙도가 높고 다양한 사용 사례에 널리 사용되고 있습니다. 커뮤니티 지원뿐만 아니라 시스템을 최적화하는 데 이용할 수 있는 도구와 리소스도 많습니다.

사용 사례: 그래프 데이터베이스와 관계형 데이터베이스

그래프 데이터베이스와 관계형 데이터베이스에는 여러 가지 유용한 사용 사례가 있습니다. 데이터 모델이 서로 다르고 몇 가지 핵심적인 차이점이 있기 때문에 뛰어난 성능을 발휘하는 영역도 서로 다릅니다.

그래프 데이터베이스

그래프 데이터베이스는 데이터를 동적으로 변경하고 조정할 수 있는 유연한 스키마를 제공합니다. 데이터 관계에 초점을 맞추므로, 분석, 시맨틱 검색 또는 추천 엔진에 유용합니다. 다음과 같은 시나리오에서는 그래프 데이터베이스를 선택하는 것이 좋습니다.

  • 소셜 네트워크, 사기 탐지, 지식 그래프, 보안 그래프, 맞춤형 추천 엔진 등 복잡한 관계가 있는 데이터로 작업하는 경우
  • 데이터베이스 구조의 나머지 부분에 영향을 미치지 않고 엣지, 노드 및 속성을 수정할 수 있는 진화형 스키마가 필요한 경우
  • 상호 연결된 데이터로 작업하는 경우 관계 간에 여러 번 또는 알 수 없는 횟수의 홉을 수행해야 합니다(친구의 친구 유형 쿼리).

그래프 데이터베이스는 유연하고 확장 가능하고 동적이며 데이터 간의 관계를 보여주는 데 탁월합니다.

관계형 데이터베이스

관계형 데이터베이스는 데이터 무결성을 훌륭하게 지원하는 구조화된 스키마를 제공합니다. 다음과 같은 시나리오에서는 관계형 데이터베이스를 선택하는 것이 좋습니다.

  • 금융 거래에서처럼 ACID를 준수해야 하고 높은 수준의 데이터 무결성 및 일관성이 요구되는 경우
  • 엔터프라이즈 리소스 관리와 같이 표 형식 데이터 모델에 잘 맞는 고도로 구조화된 데이터로 작업하는 경우
  • 데이터의 관계가 한정적인 경우

차이점 요약: 관계형 데이터베이스와 그래프 데이터베이스

 
관계형 데이터베이스

그래프 데이터베이스

모델

행과 열이 있는 표 형식

데이터가 노드와 엣지로 표시되는 상호 연결된 노드

운영

생성, 읽기, 업데이트 및 삭제(CRUD)와 같은 SQL 작업

CRUD 및 그래프 순회 연산을 비롯한 연산

성능

관계형 데이터베이스는 관계를 탐색할 때 복잡한 쿼리로 인해 성능이 저하될 수 있습니다.

그래프 데이터베이스는 연결된 데이터 간의 관계를 표현하고 쿼리하는 데 탁월한 성능을 발휘합니다.

사용 편의성

관계형 데이터베이스는 대규모 데이터 세트 및 정형 데이터에 적합합니다. 멀티 홉 쿼리의 경우 처리하는 데 어려움이 있습니다.

그래프 데이터베이스는 관계 중심 데이터를 처리할 때 사용하기가 용이합니다. 그래프 쿼리 언어를 사용하면 멀티 홉 데이터를 빠르게 쿼리할 수 있습니다.
     

AWS는 관계형 데이터베이스 및 그래프 데이터베이스 요구 사항을 어떻게 지원하나요?

Amazon Web Services(AWS)는 관계형 데이터베이스 사용 사례와 그래프 데이터베이스 사용 사례를 위한 솔루션을 모두 제공합니다.

 

관계형 데이터베이스

Amazon Relational Database Service(Amazon RDS)는 클라우드에서 관계형 데이터베이스를 쉽게 설정, 운영 및 확장할 수 있는 관리형 서비스입니다. 이 서비스에서는 비용 효율적이고 크기 조정 가능한 데이터베이스 용량을 제공하는 한편, 시간 소모적인 데이터베이스 관리 작업도 수행합니다. Amazon RDS는 다음과 같은 여러 데이터베이스 엔진을 지원합니다.

Amazon Aurora는 규모에 따른 성능 및 고가용성, 완전한 오픈 소스 MySQL 및 PostgreSQL 호환 버전을 제공하는 현대적 관계형 데이터베이스 서비스입니다. 또한 Aurora는 하드웨어 프로비저닝, 데이터베이스 설정, 패치 적용 및 백업과 같은 시간 소모적인 관리 태스크를 자동화하는 동시에 1/10의 비용으로 상용 데이터베이스의 보안, 가용성 및 신뢰성을 제공하는 완전관리형 서비스입니다.

그래프 데이터베이스

Amazon Neptune은 특별히 구축된 고성능 그래프 데이터베이스 엔진입니다. 수십억 개의 관계를 저장하고 밀리초의 지연 시간으로 그래프를 쿼리하도록 최적화되어 있습니다.
Neptune은 널리 사용되는 그래프 모델인 속성 그래프와 W3C의 Resource Description Framework(RDF)를 지원합니다. 또한 Gremlin 및 SPARQL과 같은 쿼리 언어를 지원하므로, 고도로 연결된 데이터 세트를 탐색하는 쿼리를 작성할 수 있습니다.
Neptune은 다음과 같은 여러 기능을 제공합니다.

  • 읽기 전용 복제본, 특정 시점 복구, 지속적 백업, 가용 영역 간 복제 등의 기능으로 고가용을 보장합니다.
  • Neptune은 저장 시 암호화를 지원하므로 안전합니다.
  • 완전관리형 서비스입니다. 따라서 하드웨어 프로비저닝, 소프트웨어 패치, 설정, 구성 또는 백업과 같은 데이터베이스 관리 작업에 대해 걱정할 필요가 없습니다.

지금 계정을 만들어 AWS에서 그래프 데이터베이스와 관계형 데이터베이스를 시작하세요.