그래프 데이터베이스란 무엇인가요?
그래프 데이터베이스는 서로 다른 데이터 엔터티 간의 관계를 강조하는 체계적인 데이터 컬렉션입니다. NoSQL 데이터베이스는 수학적 그래프 이론을 사용하여 데이터 연결을 보여줍니다. 고정된 테이블 구조로 데이터를 저장하는 관계형 데이터베이스와 달리 그래프 데이터베이스는 데이터를 엔터티와 관계의 네트워크로 저장합니다. 결과적으로 이러한 데이터베이스는 실제 시나리오를 모델링하는 데 더 적합하므로 성능과 유연성이 더 높은 경우가 많습니다.
그래프란 무엇인가요?
‘그래프’라는 용어는 수학 분야에서 유래했습니다. 그래프는 노드와 엣지의 컬렉션을 포함합니다.
노드
노드는 데이터 객체를 저장하는 정점입니다. 각 노드에는 수와 유형에 제한이 없는 관계가 포함될 수 있습니다.
엣지
엣지는 노드 간의 관계를 나타냅니다. 예를 들어 엣지는 상위-하위 관계, 작업 및 소유권을 설명할 수 있습니다. 일대다 관계와 다대다 관계를 모두 나타낼 수 있습니다. 엣지에는 항상 시작 노드, 종료 노드, 유형 및 방향이 있습니다.
속성
각 노드에는 해당 노드를 설명하는 속성이 있습니다. 경우에 따라 엣지에도 속성이 포함됩니다. 속성이 있는 그래프를 속성 그래프라고도 합니다.
그래프 예제
다음 속성 그래프는 소셜 네트워크 그래프의 사례입니다. 사람들(노드)과 그 사이의 관계(엣지)를 보면 어떤 사람의 ‘친구의 친구’가 누구인지 알 수 있습니다. ‘하워드의 친구의 친구’ 같은 관계를 예로 들 수 있습니다.
그래프 데이터베이스의 사용 사례는 무엇인가요?
그래프 데이터베이스는 소셜 네트워킹, 추천 엔진, 사기 탐지 등의 사용 사례에서 데이터 간의 관계를 만들고 이러한 관계를 신속하게 쿼리하기 위해 사용할 때 유용합니다.
사기 탐지
그래프 데이터베이스는 정교한 사기 탐지와 예방 기능이 있습니다. 예를 들어 그래프 데이터베이스에서 관계를 사용하여 거의 실시간으로 금융 트랜잭션을 처리할 수 있습니다. 빠른 그래프 쿼리를 사용하면 구매하려는 사람이 이미 알려진 사기 사건에 포함된 동일한 이메일 주소와 신용카드를 사용하는지 여부를 탐지할 수 있습니다. 또한 그래프 데이터베이스는 하나의 개인 이메일 주소와 연결된 여러 사람들 또는 IP 주소는 같지만 실제로는 서로 다른 위치에 거주하는 사람들 간의 관계 패턴을 통해 사기를 탐지하는 데 도움이 될 수 있습니다.
추천 엔진
그래프 모델은 추천을 제공하는 애플리케이션에 적합합니다. 고객 관심 분야, 친구, 구매 이력과 같은 정보 카테고리 사이의 그래프 관계를 저장할 수 있습니다. 고가용성 그래프 데이터베이스를 사용하면 관심사와 구매 이력이 유사한 다른 사용자가 구입한 제품을 기반으로 사용자에게 제품을 추천할 수 있습니다. 공통의 친구가 있지만 서로는 아직 모르는 사람들을 찾아내어 친구를 추천할 수도 있습니다.
경로 최적화
경로 최적화 문제에는 데이터 세트를 분석하고 특정 시나리오에 가장 적합한 값을 찾는 것이 포함됩니다. 예를 들어 그래프 데이터베이스를 사용하면 다음을 찾을 수 있습니다.
- 다양한 경로를 고려하여 지도의 A 지점에서 B 지점까지 가는 최단 경로
- 다양한 가용성, 위치 및 기술을 분석하여 특정 교대 근무에 적합한 직원
- 장비의 비용 및 수명과 같은 파라미터를 고려하여 작동에 가장 적합한 기계
그래프 쿼리는 두 노드 간의 링크 수를 세고 비교할 수 있으므로 이러한 상황을 훨씬 빠르게 분석할 수 있습니다.
패턴 발견
그래프 데이터베이스는 데이터의 복잡한 관계와 숨겨진 패턴을 발견하는 데 매우 적합합니다. 예를 들어 한 소셜 미디어 회사는 그래프 데이터베이스를 사용하여 봇 계정과 실제 계정을 구분합니다. 계정 활동을 분석하여 계정 상호 작용과 봇 활동 간의 연관성을 찾아냅니다.
지식 관리
그래프 데이터베이스는 데이터 통합, 연결된 데이터 및 정보 공유를 위한 기술을 제공합니다. 복잡한 메타데이터 또는 도메인 개념을 표준화된 형식으로 표현하며 자연어 처리를 위한 풍부한 의미 체계를 제공합니다. 지식 그래프 및 마스터 데이터 관리에도 이러한 데이터베이스를 사용할 수 있습니다. 예를 들어 기계 학습 알고리즘은 그래프 모델을 사용하여 아마존 열대 우림과 Amazon 브랜드를 구분합니다.
그래프 데이터베이스의 장점은 무엇인가요?
그래프 데이터베이스는 고도로 연결된 데이터를 관리할 수 있도록 맞춤 구축되었습니다. 현대적 데이터의 연결성과 양이 증가하면서 그래프 데이터베이스는 데이터를 비용 효율적으로 활용하고 분석할 수 있는 기회를 제공합니다. 그래프 분석의 3가지 주요 이점은 다음과 같습니다.
유연성
그래프 모델의 스키마와 구조를 애플리케이션에 따라 변경할 수 있습니다. 데이터 분석가는 기존 함수에 영향을 주지 않으면서 기존 그래프 구조를 추가하거나 수정할 수 있습니다. 도메인을 미리 모델링할 필요가 없습니다.
성능
관계형 데이터베이스 모델은 관계의 양과 깊이가 커질수록 최적성이 떨어집니다. 이로 인해 데이터 복제 및 중복이 발생합니다. 쿼리 결과를 검색하려면 여러 테이블을 처리해야 합니다. 반대로 그래프 데이터베이스 성능은 관계를 쿼리할 때 몇 배나 향상됩니다. 그래프 데이터 볼륨이 증가해도 성능이 일정하게 유지됩니다.
효율성
그래프 쿼리는 관계형 데이터베이스에 비해 더 짧기 때문에 동일한 보고서를 더 효율적으로 생성할 수 있습니다. 그래프 기술은 연결된 노드를 활용합니다. 노드 간의 관계는 쿼리 시간에는 포함되지 않지만 데이터베이스에서 유지되기 때문에 조인 또는 관계를 순회하는 프로세스의 속도가 매우 빠릅니다.
그래프 분석 및 그래프 데이터베이스의 작동 방식
그래프 데이터베이스는 표준화된 쿼리 언어와 그래프 알고리즘을 사용하여 작동합니다.
그래프 쿼리 언어
그래프 쿼리 언어는 그래프 데이터베이스와 상호 작용하는 데 사용됩니다. SQL과 마찬가지로 이 언어에도 데이터를 추가, 편집 및 쿼리하는 기능이 있습니다. 그러나 이 언어는 기본 그래프 구조를 활용하여 복잡한 쿼리를 효율적으로 처리합니다. 인터페이스를 제공하므로 다음과 같은 질문을 할 수 있습니다.
- 노드 간 홉 수
- 최장 경로/최단 경로/최적 경로
- 노드의 값
주로 사용되는 그래프 쿼리 언어로는 Apache TinkerPop Gremlin, SPARQL, openCypher 등이 있습니다.
그래프 알고리즘
그래프 알고리즘은 상호 연결된 데이터의 관계와 동작을 분석하는 연산입니다. 예를 들어 노드 간 거리와 경로를 탐색하거나 들어오는 엣지와 인접 노드를 분석하여 보고서를 생성합니다. 이 알고리즘은 데이터 요소를 연결하는 일반적인 패턴, 이상, 커뮤니티 및 경로를 식별할 수 있습니다. 그래프 알고리즘의 몇 가지 예는 다음과 같습니다.
클러스터링
이미지 처리, 통계, 데이터 마이닝과 같은 애플리케이션에서는 클러스터링을 사용하여 공통 특성에 따라 노드를 그룹화합니다. 클러스터 간 차이와 클러스터 내 유사성 모두에 대해 클러스터링을 수행할 수 있습니다.
분할
엣지가 가장 적은 노드에서 그래프를 분할하거나 잘라낼 수 있습니다. 네트워크 테스트와 같은 애플리케이션에서는 분할을 사용하여 네트워크의 취약성을 찾습니다.
검색
그래프 검색 또는 순회에는 너비 우선 또는 깊이 우선이라는 2가지 유형이 있습니다. 너비 우선 검색은 그래프의 한 노드에서 다른 노드로 이동합니다. 최적 경로 탐색에 유용합니다. 깊이 우선 검색은 단일 분기를 따라 이동하면서 특정 노드의 모든 관계를 찾습니다.
그래프 데이터베이스가 적합하지 않은 상황
전용 그래프 데이터베이스는 고도로 연결된 데이터 세트와 숨겨진 명백한 관계를 검색해야 하는 모든 분석에 가장 큰 가치를 제공합니다. 사용 사례에 맞지 않는 경우 다른 데이터베이스 유형이 더 적합할 수 있습니다.
예를 들어 품목별로 제품 재고를 기록해야 하는 시나리오를 가정해 보겠습니다. 품목 이름 및 사용 가능한 수량과 같은 세부 정보만 저장하면 됩니다. 추가 정보를 유지할 필요가 없으므로 테이블의 열은 변경되지 않습니다. 테이블 형식의 특성으로 인해 이러한 관련 없는 데이터에는 관계형 데이터베이스가 더 적합합니다.
그래프 데이터베이스를 단순히 키-값 스토어로 사용하지 않는 것도 중요합니다. 알려진 키를 사용하여 결과를 조회할 때는 그래프 데이터베이스를 만들 때 의도한 기능이 크게 유용하지 않습니다.
AWS에서는 그래프 데이터베이스 요구 사항을 어떻게 지원하나요?
Amazon Neptune는 수십억 개의 관계를 저장하고 밀리 초의 대기 시간으로 그래프를 쿼리하는데 최적화된 특별한 용도의 고성능 그래프 데이터베이스 엔진입니다. Neptune은 널리 사용되는 그래프 모델인 속성 그래프와 W3C의 Resource Description Framework(RDF)를 지원합니다. 관련된 그래프 쿼리 언어인 Apache TinkerPop Gremlin과 SPARQL을 지원하므로 상호 연결성이 높은 데이터 세트를 효율적으로 탐색하는 쿼리를 쉽게 구축할 수 있습니다. Neptune의 주요 기능은 다음과 같습니다.
- 서버리스 - 그래프 워크로드의 규모를 세밀한 증분으로 즉시 조정할 수 있으므로 최대 용량을 프로비저닝할 때보다 데이터베이스 비용을 최대 90% 절감할 수 있습니다.
- 고가용성 - 빠른 로컬 읽기 성능을 지원하는 전 세계에 분산된 애플리케이션을 위한 Amazon Neptune 글로벌 데이터베이스를 포함합니다.
- 스토리지와 컴퓨팅이 분리되어 있기 때문에 동일한 기본 스토리지를 공유하는 최대 15개의 읽기 전용 복제본을 사용하여 읽기 성능을 높일 수 있습니다. 복제본 노드에서 쓰기를 수행할 필요가 없습니다.
- 내결함성 및 자가 복구 스토리지, 시점 복구, 연속 백업 등을 통해 뛰어난 안정성과 내구성을 제공합니다. Amazon Neptune은 복사본 1개에 대한 요금으로 새로운 쓰기를 6가지 방식으로 복제하여 한 리전 내 3개 AZ에서 데이터를 안정적으로 유지합니다.
- 기본 저장 시 암호화, 네트워크 격리 및 고급 감사 기능을 통해 매우 안전하고 세분화된 액세스로 리소스 수준 권한을 제어할 수 있는 기능을 제공합니다.
- FedRAMP(Moderate 및 High)에서 SOC(1, 2, 3)에 이르는 광범위한 규정 준수 범위를 지원하며 HIPAA 적격 서비스입니다.
- 완전관리형 솔루션이기 때문에 더 이상 하드웨어 프로비저닝, 소프트웨어 패치, 설정, 구성, 백업과 같은 데이터베이스 관리 작업을 염려할 필요가 없습니다.
지금 무료 계정을 만들어 AWS에서 그래프 데이터베이스를 시작하세요.