Amazon Athena Neptune 커넥터
Amazon Neptune은 빠르고 안정적인 종합 관리형 그래프 데이터베이스 서비스로, 고도로 연결된 데이터 세트를 사용하는 애플리케이션을 쉽게 빌드하고 실행할 수 있습니다. Neptune의 특수 목적 고성능 그래프 데이터베이스 엔진은 수십억 개의 관계를 최적으로 저장하고 단 몇 밀리초의 지연 시간으로 그래프를 쿼리합니다. 자세한 내용은 Neptune 사용 설명서를 참조하세요.
Amazon Athena Neptune 커넥터를 통해 Athena는 Neptune 그래프 데이터베이스 인스턴스와 통신할 수 있고, 이로써 SQL 쿼리로 Neptune 그래프 데이터에 액세스할 수 있습니다.
계정에서 Lake Formation을 활성화한 경우 AWS Serverless Application Repository에 배포한 Athena 페더레이션형 Lambda 커넥터의 IAM 역할은 Lake Formation에서 AWS Glue Data Catalog에 대한 읽기 액세스 권한을 가지고 있어야 합니다.
사전 조건
Neptune 커넥터를 사용하려면 다음 세 단계가 필요합니다.
-
Neptune 클러스터 설정
-
AWS Glue Data Catalog 설정
-
AWS 계정에 커넥터 배포 자세한 내용은 데이터 소스 커넥터 배포 또는 AWS Serverless Application Repository을 사용하여 데이터 원본 커넥터 배포을 참조하세요. Neptune 커넥터 배포와 관련된 자세한 내용을 알아보려면 GitHub.com의 Deploy the Amazon Athena Neptune Connector
(Amazon Athena Neptune 커넥터 배포)를 참조하세요.
제한 사항
현재 Neptune 커넥터에는 다음과 같은 제한 사항이 있습니다.
-
프라이머리 키(ID)를 비롯한 예측 열은 지원되지 않습니다.
Neptune 클러스터 설정
사용하려는 기존 Amazon Neptune 클러스터 및 속성 그래프 데이터 세트가 없는 경우 하나 설정해야 합니다.
Neptune 클러스터를 호스팅하는 VPC에 인터넷 게이트웨이와 NAT 게이트웨이가 있는지 확인합니다. Neptune 커넥터 Lambda 함수가 사용하는 프라이빗 서브넷에는 이 NAT 게이트웨이를 통한 인터넷 경로가 있어야 합니다. Neptune 커넥터 Lambda 함수는 NAT 게이트웨이를 사용하여 AWS Glue와 통신합니다.
새 Neptune 클러스터를 설정하고 샘플 데이터 세트와 함께 로드하는 방법에 대한 지침은 GitHub.com의 Sample Neptune Cluster Setup
AWS Glue Data Catalog 설정
기존의 관계형 데이터 스토어와 달리 Neptune 그래프 DB 노드 및 엣지는 세트 스키마를 사용하지 않습니다. 항목마다 필드와 데이터 형식이 다를 수 있습니다. 그러나 Neptune 커넥터는 AWS Glue Data Catalog에서 메타데이터를 검색하기 때문에 필요한 스키마가 포함된 테이블이 있는 AWS Glue 데이터베이스를 생성해야 합니다. AWS Glue 데이터베이스 및 테이블을 생성한 후 커넥터는 Athena에서 쿼리할 수 있는 테이블 목록을 채울 수 있습니다.
대소문자를 구분하지 않는 열 일치 활성화
AWS Glue에서 열 이름이 모두 소문자인 경우에도 Neptune 테이블의 열 이름을 올바른 대소문자로 확인하려면 대소문자를 구분하지 않도록 Neptune 커넥터를 구성할 수 있습니다.
이 기능을 활성화하려면 Neptune 커넥터 Lambda 함수의 enable_caseinsensitivematch
환경 변수를 true
로 설정합니다.
대소문자를 구분하는 테이블 이름의 경우 AWS Glue glabel 테이블 파라미터 지정
AWS Glue에서는 소문자 테이블 이름만 지원하므로 Neptune에 대해 AWS Glue 테이블을 생성하고 Neptune 테이블 이름이 대소문자를 구분하는 경우 glabel
AWS Glue 테이블 파라미터를 지정해야 합니다.
AWS Glue 테이블 정의에 glabel
파라미터를 포함하고 값을 원래 대소문자를 사용하는 테이블 이름으로 설정합니다. 이렇게 하면 AWS Glue에서 Neptune 테이블과 상호 작용할 때 올바른 대소문자가 유지됩니다. 다음 예제에서는 glabel
의 값을 테이블 이름 Airport
로 설정합니다.
glabel = Airport
![Neptune 테이블에 대해 테이블 이름 대소문자를 유지하도록 glabel AWS Glue 테이블 속성 설정](images/connectors-neptune-1.png)
Neptune과 함께 작동하도록 AWS Glue Data Catalog를 설정하는 방법에 대한 자세한 내용은 GitHub.com의 Set up AWS Glue Catalog
성능
쿼리에서 스캔하는 데이터를 줄이기 위해 Athena Neptune 커넥터에서 조건자 푸시다운을 수행합니다. 그러나 조건자에서 프라이머리 키를 사용하면 쿼리가 실패하게 됩니다. LIMIT
절은 스캔되는 데이터의 양을 줄이지만 조건자를 제공하지 않으면 LIMIT
절을 포함하는 SELECT
쿼리가 최소 16MB의 데이터를 스캔할 것으로 예상해야 합니다. Neptune 커넥터는 동시성으로 인한 제한에 대한 복원력이 뛰어납니다.
패스스루 쿼리
Neptune 커넥터는 패스스루 쿼리를 지원합니다. 이 특성을 사용하여 속성 그래프에서 Gremlin 쿼리를 실행하고 RDF 데이터에 대해 SPARQL 쿼리를 실행할 수 있습니다.
Neptune에서 패스스루 쿼리를 생성하려면 다음 구문을 사용하세요.
SELECT * FROM TABLE( system.query( DATABASE => '
database_name
', COLLECTION => 'collection_name
', QUERY => 'query_string
' ))
다음 예시 Neptune 패스스루 쿼리는 ATL
코드가 있는 공항을 필터링합니다. 이중 작은따옴표는 이스케이프 처리용입니다.
SELECT * FROM TABLE( system.query( DATABASE => 'graph-database', COLLECTION => 'airport', QUERY => 'g.V().has(''airport'', ''code'', ''ATL'').valueMap()' ))
추가 리소스
이 커넥터에 대한 추가 정보를 알아보려면 GitHub.com의 해당 사이트