그래프 데이터베이스란?

그래프 데이터베이스의 정의

그래프 데이터베이스는 관계를 저장하고 탐색하도록 특별히 구축되었습니다. 관계는 그래프 데이터베이스에서 매우 중요한 존재이기 때문에 그래프 데이터베이스의 가치는 대부분 이러한 관계에서 파생됩니다. 그래프 데이터베이스는 노드를 사용하여 데이터 엔터티를 저장하고 엣지로는 엔터티 간의 관계를 저장합니다. 엣지는 항상 시작 노드, 끝 노드, 유형과 방향을 가지며, 상-하위 관계, 동작, 소유자 등을 문서화 합니다. 하나의 노드가 가질 수 있는 관계의 수와 종류에는 제한이 없습니다.

그래프 데이터베이스의 그래프는 특정 엣지의 유형 또는 전체 그래프를 전반을 통하여 트래버스될 수 있습니다. 그래프 데이터베이스에서 노드 간의 관계는 쿼리 시간에는 포함되지 않지만 데이터베이스에서 유지되기 때문에 조인 또는 관계를 트래버스하는 속도가 매우 빠릅니다. 그래프 데이터베이스는 데이터 간의 관계를 만들고 이러한 관계를 신속하게 쿼리해야 할 때 소셜 네트워킹, 추천 엔진, 이상 탐지 등의 사용 사례에 유용합니다.

다음 그래프는 소셜 네트워크 그래프의 사례입니다. 사람들(노드)과 그 사이의 관계(엣지)를 보면 어떤 사람의 "친구의 친구"가 누구인지를 알 수 있습니다. “하워드의 친구의 친구” 같은 관계를 예로 들 수 있습니다. 

소셜 네트워크 그래프의 사례

사용 사례

이상 탐지

그래프 데이터베이스는 정교한 이상 탐지와 예방 기능이 있습니다. 그래프 데이터베이스를 사용하면 관계를 사용하여 거의 실시간으로 금융이나 구매 트랜잭션을 처리할 수 있습니다. 빠른 그래프 쿼리를 사용하면 구매하려는 사람이 이미 알려진 이상 사례에 포함된 것과 같은 이메일 주소와 신용 카드를 사용하는지 여부를 감지할 수 있습니다. 또한, 그래프 데이터베이스는 하나의 개인 이메일 주소와 연결된 여러 사람들 또는 IP 주소는 같지만 실제로는 서로 다른 주소에 거주하는 사람들 간의 관계 패턴을 파악하는 데 도움이 될 수 있습니다. 

추천 엔진

그래픽 데이터베이스는 훌륭한 추천 애플리케이션입니다. 그래프 데이터베이스를 사용하면 고객 관심 분야, 친구, 구매 이력과 같은 정보 카테고리들 사이의 그래프 관계를 저장할 수 있습니다. 고도의 가용성을 가진 그래프 데이터베이스를 사용하여 같은 운동을 즐기고 비슷한 구매 이력을 가진 다른 사용자가 어떤 제품을 구입했는지에 따라 사용자에게 제품을 추천할 수 있습니다. 또는 공통의 친구가 있지만 서로는 아직 모르는 사람들을 찾아내어 친구를 추천할 수도 있습니다. 

가장 많이 사용되는 그래프 데이터베이스

Amazon Neptune

Amazon Neptune는 수십억 개의 관계를 저장하고 밀리 초의 지연 시간으로 그래프를 쿼리하는데 최적화된 특별한 용도의 고성능 그래프 데이터베이스 엔진입니다. Neptune은 널리 사용되는 그래프 모델 속성 그래프와 W3C (Worldwide Web Consortium)의 RDF(Resource Description Framework)를 지원할 뿐만 아니라 고도로 연결된 데이터세트의 효율적 탐색을 돕는 쿼리를 작성할 수 있도록 각각의 쿼리 언어인 Apache TinkerPop Gremlin과 SPARQL도 지원합니다. 

고도의 가용성이 특징인 Neptune은 읽기 전용 복제본, 특정 시점으로 복구, Amazon S3으로 연속 백업, 가용 영역 간 복제 등의 기능을 갖추고 있습니다. Neptune은 유휴 중 암호화를 지원하므로 안전합니다. Neptune은 종합 관리형 솔루션이기 때문에 더 이상 하드웨어 프로비저닝, 소프트웨어 패치, 설정, 구성, 백업과 같은 데이터베이스 관리 작업을 염려할 필요가 없습니다.

AWS re:Invent 2017에서 Amazon Neptune 공개

Neo4j

Neo4j는 오픈 소스, 비관계형, 네이티브 그래프 데이터베이스로, 애플리케이션에 ACID(Atomicity, Consistency, Isolation, Durability: 원자 보장성, 일관성, 격리성, 지속성) 호환 트랜잭션 백엔드를 제공합니다. Neo4j는 속성 그래프 모델을 스토리지 수준까지 효율적으로 구현하는 네이티브 그래프 데이터베이스입니다. Neo4j는 완벽한 데이터베이스 속성을 제공하여 ACID 트랜잭션 컴플라이언스, 클러스터 지원, 런타임 페일오버를 수행합니다. Neo4j는 Gremlin뿐만 아니라 자체 Cypher 쿼리 언어를 지원합니다.

Neo4j를 사용하여 실행하려면 AWS Marketplace를 참조하십시오.