Amazon Web Services 한국 블로그

Amazon Neptune Analytics – 대량의 그래프 데이터 분석 데이터베이스 엔진 정식 출시

데이터 과학자와 애플리케이션 개발자가 대량의 그래프 데이터를 보다 신속하게 분석하도록 지원하는 새로운 분석 데이터베이스 엔진인 Amazon Neptune Analytics의 정식 출시를 발표하게 되어 기쁩니다. Neptune Analytics를 사용하면 이제 Amazon Neptune에서 데이터 세트를 신속하게 로드하거나 또는 Amazon Simple Storage Service(S3)의 데이터 레이크를 빠르게 로드하고, 거의 실시간으로 분석 작업을 실행하며, 필요에 따라 나중에 그래프를 종료할 수 있습니다.

그래프 데이터를 사용하면 다양한 데이터 도메인 내의 복잡한 관계와 연결을 표현 및 분석할 수 있습니다. 일반적인 애플리케이션에는 커뮤니티 식별, 연결 권장 및 정보 확산 분석에 유용한 소셜 네트워크가 포함됩니다. 공급망 관리에서 그래프는 효율적인 경로 최적화 및 병목 현상 식별을 용이하게 합니다. 사이버 보안의 경우 네트워크 취약성을 드러내고 악의적인 활동 패턴을 식별합니다. 그래프 데이터는 지식 관리, 금융 서비스, 디지털 광고 및 네트워크 보안에 적용되며, 은행 거래에서 자금 세탁 네트워크를 식별하고 네트워크 취약성을 예측하는 등의 작업을 수행합니다.

2018년 5월 Neptune 출시 이후 수천 명의 고객이 그래프 데이터를 저장하고 그래프의 특정 하위 집합을 업데이트 및 삭제하는 서비스를 채택했습니다. 하지만 통찰력을 얻기 위해 데이터를 분석하려면 전체 그래프를 메모리에 로드해야 하는 경우가 많습니다. 예를 들어 금융 서비스 기업은 사기 행위를 탐지하기 위해 모든 과거 계정 거래를 로드하고 그 상관 관계를 분석해야 할 수 있습니다.

일반적인 그래프 알고리즘 실행과 같이 광범위한 그래프 데이터 세트에 대한 분석을 수행하려면 특수 도구가 필요합니다. 별도의 분석 솔루션을 활용하려면 처리를 위해 데이터를 전송하기 위한 복잡한 파이프라인을 생성해야 하는데, 이는 운영이 어렵고 시간이 많이 소요되며 오류가 발생하기 쉽습니다. 또한 기존 데이터베이스 또는 데이터 레이크에서 그래프 분석 솔루션으로 대규모 데이터 세트를 로드하는 데에는 몇 시간 또는 며칠이 걸릴 수 있습니다.

Neptune Analytics는 완전 관리형 그래프 분석 환경을 제공합니다. 인프라의 번거로운 작업을 처리하므로 쿼리와 워크플로를 통해 문제 해결에 집중할 수 있습니다. Neptune Analytics는 그래프 크기에 따라 컴퓨팅 리소스를 자동으로 할당하고 메모리에 모든 데이터를 빠르게 로드하여 몇 초 만에 쿼리를 실행합니다. 초기 벤치마킹에 따르면 Neptune Analytics는 기존 AWS 솔루션보다 최대 80배 빠르게 Amazon S3에서 데이터를 로드합니다.

Neptune Analytics는 15가지 알고리즘을 포함하는 5가지 알고리즘 제품군을 지원하며 각 알고리즘의 변형은 다양합니다. 예를 들어 경로 찾기, 커뮤니티 탐지(클러스터링), 중요 데이터 식별(중심성) 및 유사성 정량화를 위한 알고리즘을 제공합니다. 경로 찾기 알고리즘은 공급망 최적화를 위한 경로 계획 등의 사용 사례에 사용됩니다. 중앙 알고리즘(페이지 순위 등)은 가장 영향력 있는 판매자를 식별합니다. 연결된 구성 요소, 클러스터링 및 유사성 알고리즘 등의 알고리즘을 사기 탐지 사용 사례에 사용하여 연결된 네트워크가 친구 그룹인지 아니면 조직적인 사기꾼 집합으로 구성된 사기 조직인지 확인할 수 있습니다.

Neptune Analytics는 현재 널리 사용되는 그래프 쿼리 언어인 OpenCypher를 사용하여 그래프 애플리케이션을 쉽게 생성할 수 있도록 지원합니다. 개발자, 비즈니스 분석가 및 데이터 과학자는 SQL에서 영감을 받은 OpenCypher의 구문을 높이 평가하며, 이 기능이 그래프 쿼리를 작성하는 데 익숙하고 구조화되어 있음을 발견했습니다.

업무에서 활용해봅시다!
AWS News 블로그에서 주로 하는 작업으로 작동 방식을 살펴봅니다. 이 데모에서는 우선 AWS Management Console에서 Neptune으로 이동합니다. 좌측 탐색 창에 새로운 분석 섹션이 있습니다. 그래프를 선택한 다음 그래프 생성을 고릅니다.

Neptune Analytics - 그래프 생성 1

그래프 생성 페이지에서 그래프 분석 데이터베이스 엔진의 세부 정보를 입력합니다. 여기서는 각 파라미터에 대해 자세히 설명하지 않겠습니다. 각 파라미터의 이름은 설명이 필요 없습니다.

Neptune Analytics - 그래프 생성 1

Allow from public(Allow from public)에 주의를 기울이세요. 대부분의 경우 그래프를 VPC 경계에서만 사용할 수 있도록 유지해야 하기 때문입니다. 또한 프라이빗 엔드포인트를 생성하여 내 계정 VPC 네트워크 내의 머신 및 서비스에서의 프라이빗 액세스를 허용합니다.

Neptune Analytics - 그래프 생성 2

네트워크 액세스 제어 외에도 그래프에 액세스하려면 적절한 IAM 권한이 필요합니다.

마지막으로 벡터 검색을 활성화하여 데이터 세트의 임베딩을 사용하여 유사성 검색을 수행합니다. 벡터의 차원은 임베딩 생성에 사용하는 대규모 언어 모델(LLM)에 따라 달라집니다.

Neptune Analytics - 그래프 생성 3

준비가 되면 그래프 생성을 선택합니다(여기서는 표시되지 않음).

몇 분 후 내 그래프를 볼 수 있습니다. 연결 및 보안에서는 엔드포인트를 기록해 둡니다. 이는 나중에 애플리케이션에서 그래프에 액세스할 때 사용할 DNS 이름입니다.

복제본을 생성할 수도 있습니다. 복제본은 다른 가용 영역에 있는 그래프의 웜 스탠바이 사본입니다. 높은 가용성을 위해 하나 이상의 복제본을 생성하기로 결정할 수 있습니다. 기본적으로 복제본은 하나만 생성되며 가용성 요구 사항에 따라 복제본을 생성하지 않도록 선택할 수 있습니다.

Neptune Analytics - 그래프 생성 3

그래프 데이터에 대한 비즈니스 쿼리
이제 Neptune Analytics 그래프를 사용할 수 있게 되었으니 데이터를 로드하고 분석해 보겠습니다. 이 데모의 나머지 부분에서는 제가 금융 업계에서 일한다고 상상해 봅니다.

미국 증권거래위원회(SEC)에서 가져온 데이터 세트가 있습니다. 이 데이터 세트에는 자산이 1억 달러 이상인 투자자가 보유한 소유물 목록이 포함되어 있습니다. 다음은 이 데모에서 사용하는 데이터 세트의 구조를 보여주는 다이어그램입니다.

Nuptune 그래프 분석 - 데이터 세트 구조

한 투자 기업(이름을 “Seb’s Investments LLC”라고 하겠습니다)가 보유한 포지션을 보다 잘 이해하고 싶습니다. 상위 5개 지주가 어디인지, 같은 기업들 중에서 10억 달러 이상을 보유한 쪽은 또 누가 있는지 궁금합니다. 또한 Seb’s Investments LLC와 비슷한 포트폴리오를 가진 다른 투자 회사가 무엇인지 궁금합니다.

분석을 시작하기 위해 Jupyter Notebook을 Neptune 섹션(AWS Management Console 내)에 생성합니다. 노트북에서 먼저 분석 엔드포인트를 정의하고 S3 버킷에서 데이터 세트를 로드합니다. 1,700만 개의 레코드를 로드하는 데 18초밖에 걸리지 않습니다.

Neptune Analytics - 데이터 로드

그런 다음 OpenCypher 쿼리를 사용하여 데이터 세트를 탐색하기 시작합니다. 우선 파라미터를 정의합니다.

params = {'name': "Seb's Investments LLC", 'quarter': '2023Q4'}

먼저 이번 분기에 Seb’s Investments LLC의 상위 5개 지주 지분이 어디인지, 그리고 같은 회사들에서 10억 달러 이상을 보유한 쪽은 어디인지 알고 싶습니다. OpenCypher에서는 이것이 이후의 쿼리로 변환됩니다. $name 파라미터의 값은 “Seb’s Investment LLC”이고 $quarter 매개 변수의 값은 2023Q4입니다.

MATCH p=(h:Holder)-->(hq1)-[o:owns]->(holding)
WHERE h.name = $name AND hq1.name = $quarter
WITH DISTINCT holding as holding, o ORDER BY o.value DESC LIMIT 5
MATCH (holding)<-[o2:owns]-(hq2)<--(coholder:Holder)
WHERE hq2.name = '2023Q4'
WITH sum(o2.value) AS totalValue, coholder, holding
WHERE totalValue > 1000000000
RETURN coholder.name, collect(holding.name)

Neptune Analytics - 쿼리 1

그렇다면 “Seb’s Investments LLC”와 비슷한 지분을 보유한 다른 상위 5개 회사가 어디인지 알고 싶습니다. 저는 topkByNode () 함수를 사용하여 벡터 검색을 수행합니다.

MATCH (n:Holder)
WHERE n.name = $name
CALL neptune.algo.vectors.topKByNode(n)
YIELD node, score
WHERE score >0
RETURN node.name LIMIT 5

이 쿼리는 이름이 “Seb’s Investments LLC”인 특정 홀더 노드를 식별합니다. 그런 다음 홀더 노드의 임베딩 속성에 대한 Neptune Analytics 사용자 지정 벡터 유사성 검색 알고리즘을 활용하여 그래프에서 유사한 다른 노드를 찾습니다. 결과는 유사성 점수가 양수인 노드만 포함하도록 필터링되며, 쿼리는 최종적으로 최대 5개의 관련 노드 이름을 반환합니다.

넵튠 애널리틱스 - 쿼리 2

요금 및 가용성
Neptune Analystics는 오늘부터 미국 동부(오하이오, 버지니아 북부), 미국 서부(오레곤), 아시아 태평양(싱가포르, 도쿄) 및 유럽(프랑크푸르트, 아일랜드)의 7개 AWS 리전에서 사용할 수 있습니다.

AWS는 반복 구독이나 일회성 설정 요금 없이 사용량에 따라 요금을 청구합니다.

가격은 메모리에 최적화된 Neptune 용량 단위(m-NCU) 구성을 기준으로 합니다. 각 M-NCU는 1시간의 컴퓨팅 및 네트워킹 용량과 1GiB의 메모리에 해당합니다. 128개의 M-NCU부터 시작하여 최대 4096개의 M-NCU까지 구성을 선택할 수 있습니다. M-NCU 외에도 그래프 스냅샷에는 스토리지 요금이 적용됩니다.

자세한 내용은 Neptune 요금 페이지를 참조하세요.

Neptune Analytics는 대규모 그래프 데이터 세트를 분석하기 위한 새로운 분석 데이터베이스 엔진입니다. 이를 통해 사기 탐지 및 예방, 디지털 광고, 사이버 보안, 운송 물류, 생물정보학 등의 사용 사례에 대한 인사이트를 보다 신속하게 발견할 수 있습니다.

시작하기
AWS Management Console에 로그인하여 Neptune Analytics를 사용해 보십시오.

— seb