기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Neptune 시작하기
Amazon Neptune은 수십억 개의 관계를 처리하도록 확장할 수 있는 완전관리형 그래프 데이터베이스 서비스로서, 용량 대비 저렴한 비용을 제공하며 밀리초의 지연 시간으로 관계를 쿼리할 수 있도록 지원합니다.
Neptune에 대한 자세한 정보를 보려면 Amazon Neptune 특성 개요를 참조하세요.
그래프에 대해 이미 알고 있다면 바로 그래프 노트북에서 Neptune 사용으로 넘어가세요. 또는 Neptune 데이터베이스를 바로 생성하려는 경우 를 사용하여 Amazon Neptune 클러스터 생성 AWS CloudFormation을 참조하세요.
그렇지 않으면 시작하기 전에 그래프 데이터베이스에 대해 좀 더 알아보는 것이 좋습니다.
그래프 데이터베이스 키 개념
그래프 데이터베이스는 데이터 항목 간의 관계를 저장하고 쿼리하도록 최적화되어 있습니다.
데이터 항목 자체를 그래프의 버텍스로 저장하고 두 항목 간의 관계를 엣지로 저장합니다. 각 엣지에는 유형이 있으며 한 버텍스(시작)에서 다른 버텍스(끝)로 향합니다. 관계를 엣지뿐만 아니라 조건자라고도 하며 버텍스를 노드라고도 합니다. 소위 속성 그래프에서는 버텍스와 엣지 모두에 관련된 추가 속성이 있을 수 있습니다.
다음은 소셜 네트워크에서 친구와 관심 분야를 나타내는 작은 그래프입니다.
엣지는 이름이 지정된 화살표로 표시되고, 버텍스는 서로 연결되는 특정 사람과 관심 분야를 나타냅니다.
이 그래프의 단순 순회를 통해 Justin의 친구들을 알 수 있습니다.
그래프 데이터베이스를 사용하는 이유
모델링하려는 데이터의 핵심이 엔터티 간의 연결 또는 관계일 경우 그래프 데이터베이스가 이상적입니다.
우선, 데이터 상호 연결을 그래프로 모델링한 다음 그래프에서 실제 정보를 추출하는 복잡한 쿼리를 작성하기가 쉽습니다.
관계형 데이터베이스를 사용하여 동등한 애플리케이션을 구축하려면 여러 개의 외래 키가 있는 테이블을 생성한 다음 중첩된 SQL 쿼리와 복잡한 조인을 작성해야 합니다. 이러한 접근 방식은 코딩 관점에서 볼 때 빠르게 다루기 어려워질 뿐만 아니라 데이터 양이 증가하면 성능이 빠르게 저하됩니다.
반대로 Neptune과 같은 그래프 데이터베이스는 어려움 없이 수십억 개의 버텍스 간 관계를 쿼리할 수 있습니다.
그래프 데이터베이스로 할 수 있는 작업
그래프는 행동, 소유권, 계통, 구매 선택, 개인적 관계, 가족 관계 등의 측면에서 다양한 방식으로 실제 엔터티의 상호 관계를 나타낼 수 있습니다.
그래프 데이터베이스가 가장 많이 사용되는 몇 가지 영역은 다음과 같습니다.
-
지식 그래프 – 지식 그래프를 사용하면 모든 종류의 연결된 정보를 구성하고 쿼리하여 일반적인 질문에 대한 답을 찾을 수 있습니다. 지식 그래프를 사용하면 제품 카탈로그에 주제 정보를 추가하고 Wikidata
에 포함된 것과 같은 다양한 정보를 모델링할 수 있습니다. 지식 그래프의 작동 원리와 사용 위치에 대해 자세히 알아보려면 AWS의 지식 그래프
를 참조하세요. -
자격 증명 그래프 – 고객 관심사, 친구, 구매 내역 등 정보 범주 간의 관계를 그래프 데이터베이스에 저장한 다음 해당 데이터를 쿼리하여 개인화되고 관련성 높은 추천을 할 수 있습니다.
예를 들어, 그래프 데이터베이스를 사용하여 동일한 스포츠를 팔로우하고, 유사한 구매 이력을 갖는 사람들이 구매하는 제품을 토대로 사용자에게 제품을 추천할 수 있습니다. 또는 공통의 친구를 갖고 있지만, 아직 서로 잘 모르는 사람들을 확인하여 친구를 추천할 수도 있습니다.
이러한 종류의 그래프를 자격 증명 그래프라고 하며, 사용자와의 상호 작용을 개인화하는 데 널리 사용됩니다. 자세한 내용은 AWS의 자격 증명 그래프
를 참조하세요. 자체 자격 증명 그래프를 구축하려면 Amazon Neptune을 사용한 자격 증명 그래프 샘플로 시작해 보세요. -
사기 그래프 – 그래프 데이터베이스에서는 흔히 사용됩니다. 이를 통해 신용카드 구매 내역과 구매 위치를 추적하여 평소와 다른 사용을 감지하거나 구매자가 알려진 사기 사례와 동일한 이메일 주소와 신용카드를 사용하려 하는지 감지할 수 있습니다. 사기 그래프는 개인 이메일 주소와 연결된 여러 사람이 있는지 또는 물리적 위치가 다른 여러 사람이 동일한 IP 주소를 공유하는지 확인하는 데 도움이 됩니다.
다음 그래프를 살펴보세요. 다음 그래프는 세 사람과 이들의 자격 증명 관련 정보의 관계를 보여줍니다. 각 사람은 주소, 은행 계좌, 사회보장번호가 있습니다. 그런데 Matt와 Justin의 사회보장번호가 동일합니다 이는 비정상이므로, 한 명이 사기를 칠 가능성이 있음을 나타냅니다. 사기 그래프를 쿼리하면 이러한 종류의 연결을 찾아내어 검토할 수 있습니다.
사기 그래프의 정의와 사용 위치에 대해 자세히 알아보려면 AWS의 사기 그래프
를 참조하세요. -
소셜 네트워킹 – 소셜 네트워킹 애플리케이션은 그래프 데이터베이스가 제일 먼저 사용되었고 가장 흔히 사용되는 영역 중 하나입니다.
예를 들어, 웹사이트에 소셜 피드를 빌드한다고 가정해 보겠습니다. 백엔드의 그래프 데이터베이스를 사용하여 가족, 친구, 업데이트에 '좋아요'를 누른 사람, 가까운 곳에 사는 사람의 최신 업데이트를 반영하는 결과를 사용자에게 쉽게 제공할 수 있습니다.
운전 경로 – 그래프는 현재 교통량과 일반적인 교통 패턴을 고려하여 출발지에서 목적지까지 최적의 경로를 찾는 데 도움이 될 수 있습니다.
물류 – 그래프는 지원되는 운송 및 유통 자원을 사용하여 고객 요구 사항을 충족하는 가장 효율적인 방법을 식별하는 데 도움이 될 수 있습니다.
진단 – 그래프는 복잡한 진단 트리를 나타낼 수 있으며, 이를 쿼리하여 관찰된 문제 및 고장의 원인을 식별할 수 있습니다.
과학적 연구 – 그래프 데이터베이스를 사용하면 저장 중 암호화를 이용하여 과학 데이터는 물론 민감한 의료 정보까지 저장 및 탐색하는 애플리케이션을 구축할 수 있습니다. 예를 들어, 질병 및 유전자 상호 작용의 모델을 저장할 수 있습니다. 단백질 경로 내 그래프 패턴을 검색하여 질병과 연관될 수도 있는 다른 유전자를 찾을 수 있습니다. 화학 화합물을 그래프로 모델링하고 분자 구조의 패턴을 쿼리할 수 있습니다. 여러 시스템의 의료 기록에서 환자 데이터를 상호 연관시킬 수 있습니다. 관련 정보를 신속하게 찾도록 연구 발행물을 주제별로 구성할 수 있습니다.
규제 규칙 - 복잡한 규제 요구 사항을 그래프로 저장하고 쿼리하여 비즈니스 운영에 적용될 수 있는 상황을 감지할 수 있습니다 day-to-day.
-
네트워크 토폴로지 및 이벤트 – 그래프 데이터베이스는 IT 네트워크를 관리하고 보호하는 데 도움이 될 수 있습니다. 네트워크 토폴로지를 그래프로 저장하면 네트워크에서 다양한 종류의 이벤트를 저장하고 처리할 수도 있습니다. 특정 애플리케이션을 실행 중인 호스트 수와 같은 질문에 답할 수 있습니다. 특정 호스트가 악성 프로그램에 의해 손상되었음을 보여주는 패턴을 쿼리하고, 프로그램을 다운로드한 원래 호스트까지 추적하는 데 도움이 되는 연결 데이터를 쿼리할 수 있습니다.
그래프 쿼리 방법
Neptune은 다양한 종류의 그래프 데이터를 쿼리하기 위해 설계된 3가지 특수 목적 쿼리 언어를 지원합니다. 다음 언어를 사용하여 Neptune 그래프 데이터베이스에서 데이터를 추가, 수정, 삭제 및 쿼리할 수 있습니다.
-
Gremlin은 속성 그래프를 위한 그래프 순회 언어입니다. Gremlin의 쿼리는 각 단계가 엣지를 따라 노드로 이어지는 개별 단계로 구성된 순회입니다. 자세한 내용은 Apache TinkerPop3
의 Gremlin 설명서를 참조하세요. Gremlin의 Neptune 구현은 특히 Gremlin-Groovy(직렬화된 텍스트로 전송된 Gremlin 쿼리)를 사용할 때 기타 구현과 차이가 있습니다. 자세한 내용은 Amazon Neptune에 사용되는 Gremlin 표준 규정 준수 단원을 참조하십시오.
-
openCypher – Neo4j 에서 처음 개발한 다음 2015년에 오픈 소스되고 Apache 2 오픈 소스 라이선스에 따라 openCypher
프로젝트에 기여한 속성 그래프에 대한 선언 쿼리 언어 openCypher 입니다. 언어 사양은 Cypher 쿼리 언어 참조(버전 9) 를 참조하고, 자세한 내용은 Cypher 스타일 가이드 를 참조하세요. -
SPARQL 는 World Wide Web Consortium(W3C)에서 표준화하고 SPARQL1.1 개요
) 및 1.1 쿼리 언어 사양에 설명된 그래프 패턴 일치를 기반으로 RDF 하는 데이터에 대한 선언 SPARQL 쿼리 언어 입니다. 의 Neptune 구현에 대한 Amazon Neptune의 SPARQL 표준 규정 준수 자세한 내용은 섹션을 참조하세요SPARQL.
Gremlin 및 SPARQL 쿼리 일치의 예
사람(노드)과 그 관계(엣지)를 보여주는 다음 그래프를 통해 특정인의 '친구의 친구'가 Howard의 친구의 친구인지 알 수 있습니다.
그래프를 보면 Howard는 Jack이라는 친구가 하나 있고, Jack은 Annie, Harry, Doug, Mac의 네 친구가 있음을 알 수 있습니다. 이것은 단순한 그래프로 보여준 단순한 예이지만 이런 유형의 쿼리는 복잡성, 데이터 세트 크기 및 결과 크기를 확장할 수 있습니다.
다음은 Howard의 친구의 친구 이름을 반환하는 Gremlin 순회 쿼리입니다.
g.V().has('name', 'Howard').out('friend').out('friend').values('name')
다음은 Howard 친구의 친구 이름을 반환하는 SPARQL 쿼리입니다.
prefix : <#> select ?names where { ?howard :name "Howard" . ?howard :friend/:friend/:name ?names . }
참고
모든 리소스 설명 프레임워크(RDF) 트리플의 각 부분에는 URI 연결된 이 있습니다. 위 예제에서 URI 접두사는 의도적으로 짧습니다.
Amazon Neptune을 사용하는 온라인 교육 과정 이수
비디오 학습을 좋아하는 경우 는 AWS 온라인 기술 대화
Amazon Neptune을 사용한 그래프 데이터베이스 소개, 심층 분석 및 데모
그래프 참조 아키텍처에 대해 더 자세히 알아보기
그래프 데이터베이스가 해결할 수 있는 문제와 이에 접근하는 방법에 대해 생각할 때 가장 좋은 출발점 중 하나는 Neptune 그래프 참조 아키텍처 GitHub 프로젝트입니다
여기에서 그래프 워크로드 유형에 대한 자세한 설명과 효과적인 그래프 데이터베이스를 설계하는 데 도움이 되는 3개의 섹션을 찾아볼 수 있습니다.
데이터 모델 및 쿼리 언어
- 이 섹션에서는 Gremlin과 의 차이점SPARQL과 그 중에서 선택하는 방법을 안내합니다. 그래프 데이터 모델링
- Gremlin을 사용한 속성 그래프 모델링 및 를 사용한 모델링에 대한 자세한 설명을 포함하여 그래프 데이터 RDF 모델링 결정을 내리는 방법에 대한 자세한 설명입니다SPARQL. 다른 데이터 모델을 그래프 모델로 변환
– 여기에서 관계형 데이터 모델을 그래프 모델로 변환하는 방법을 확인할 수 있습니다.
Neptune을 사용하기 위한 구체적인 단계를 안내하는 3가지 섹션도 있습니다.
Neptune 외부의 클라이언트에서 Amazon Neptune에 연결 VPC
- 이 섹션에서는 DB 클러스터VPC가 위치한 외부에서 Neptune에 연결하는 몇 가지 옵션을 보여줍니다. AWS Lambda 함수에서 Amazon Neptune에 액세스
- 여기에서 Lambda 함수에서 Neptune에 안정적으로 연결하는 방법을 알아봅니다. Amazon Kinesis Data Stream에서 Amazon Neptune으로 쓰기
– 이 섹션은 Neptune으로 쓰기 처리량이 높은 시나리오를 처리하는 데 도움이 될 수 있습니다.