아마데오 펠리체

Athena Federated Query를 사용하여 Oracle 데이터베이스를 쿼리하고 Amazon S3 데이터 레이크의 데이터와 조인

소스 노드 : 995983

데이터 레이크를 사용하는 경우 아마존 단순 스토리지 서비스 (Amazon S3) Oracle을 트랜잭션 데이터 저장소로 사용하는 경우 Oracle을 사용하여 데이터 레이크의 데이터를 조인해야 할 수도 있습니다. Amazon 관계형 데이터베이스 서비스 (Amazon RDS), Oracle 실행 중 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) 또는 온프레미스 Oracle 데이터베이스(예: 대시보드 구축 또는 통합 보고 생성)

이러한 사용 사례에서는 Amazon Athena 연동 쿼리 데이터를 S3 데이터 레이크로 이동할 필요 없이 Oracle 데이터베이스 데이터에 원활하게 액세스할 수 있습니다. 이렇게 하면 이러한 작업을 관리하는 데 드는 오버헤드가 제거됩니다.

이 게시물에서는 다음을 사용하여 Athena Federated 쿼리를 설정하는 단계별 구성을 안내합니다. AWS 람다 데이터에 액세스하려면 Amazon RDS의 Oracle.

이 게시물에서는 Oracle에서 개발한 Oracle Athena Federated 쿼리 커넥터를 사용합니다. 트리안츠. 런타임에는 Amazon EC2 및 Amazon RDS에서 실행되는 Oracle XE가 포함됩니다. Oracle 인스턴스는 Amazon RDS, Amazon EC2 또는 온프레미스에 있을 수 있습니다. 다음에서 사용 가능한 Trianz Oracle AFQ 커넥터를 배포할 수 있습니다. AWS 서버리스 애플리케이션 리포지토리.

솔루션에 대해 논의한 다음 관련 단계를 자세히 설명하는 것으로 시작하겠습니다.

솔루션 개요

데이터 연합은 단일 인터페이스(아마존 아테나). 다음 다이어그램은 Lambda를 사용하여 연합 데이터 원본과 통합함으로써 Athena 연합이 작동하는 방식을 보여줍니다.

Athena는 표준 SQL을 사용하여 Amazon S3의 데이터를 쉽게 분석할 수 있게 해주는 대화형 쿼리 서비스입니다. Amazon S3 이외의 소스에 데이터가 있는 경우 Athena Federated Query를 사용하여 데이터를 쿼리하거나 파이프라인을 구축하여 여러 데이터 소스에서 데이터를 추출하고 Amazon S3에 저장할 수 있습니다. Athena Federated Query를 사용하면 관계형, 비관계형, 개체 및 사용자 지정 데이터 소스에 저장된 데이터에 대해 SQL 쿼리를 실행할 수 있습니다.

통합 쿼리가 실행되면 Athena는 데이터 원본 커넥터로 라우팅되어야 하는 쿼리 부분을 식별하고 Lambda로 실행합니다. 데이터 원본 커넥터는 원본에 연결하고, 쿼리를 실행하고, 결과를 Athena에 반환합니다. 데이터가 Lambda RAM 런타임 메모리에 맞지 않으면 데이터를 Amazon S3로 유출하고 나중에 Athena에서 액세스합니다.

Athena는 연합 쿼리를 실행하기 위해 Lambda를 내부적으로 사용하는 데이터 원본 커넥터를 사용합니다. 데이터 원본 커넥터는 사전 구축되어 있으며 Athena 콘솔 또는 Serverless Application Repository에서 배포할 수 있습니다. 쿼리를 제출하는 사용자에 따라 커넥터는 특정 데이터 요소에 대한 액세스를 제공하거나 제한할 수 있습니다.

이 솔루션을 구현하기 위해 다음 단계를 완료합니다.

  1. 다음을 사용하여 Oracle 인스턴스에 대한 비밀을 만듭니다. AWS 비밀 관리자.
  2. Lambda에서 사용할 S3 버킷 및 하위 폴더를 생성합니다.
  3. Oracle XE 인스턴스와 Athena 페더레이션을 구성합니다.
  4. Athena로 통합 쿼리를 실행합니다.

사전 조건

시작하기 전에 Oracle 데이터베이스가 실행되고 있는지 확인하십시오.

Oracle 인스턴스에 대한 비밀 만들기

첫 번째 단계는 Secrets Manager를 사용하여 사용자 이름과 비밀번호로 Oracle 인스턴스에 대한 비밀을 생성하는 것입니다.

  1. Secrets Manager 콘솔에서 기미.
  2. 왼쪽 메뉴에서 새로운 비밀을 저장.
  3. 선택 다른 유형의 비밀.
  4. Oracle XE 인스턴스에 대한 키-값 쌍(사용자 이름, 비밀번호)으로 자격 증명을 입력합니다.

  1. 럭셔리 비밀 이름, 비밀 이름을 입력합니다. 접두어 사용 OracleAFQ 그래서 찾기 쉽습니다.
  2. 나머지 필드는 기본값으로 두고 다음을 선택합니다. 다음 보기.
  3. 비밀 생성을 완료하십시오.

Lambda용 S3 버킷 생성

Amazon S3 콘솔에서 Lambda가 사용할 새 S3 버킷과 하위 폴더를 생성합니다. 이 게시물에서는 athena-accelerator/oracle.

Oracle XE 인스턴스로 Athena 페더레이션 구성

Oracle 인스턴스와 Athena 페더레이션을 구성하려면 다음 단계를 완료하십시오.

  1. AWS Serverless Application Repository 콘솔에서 다음을 선택합니다. 사용 가능한 응용 프로그램.
  2. 검색 필드에 TrianzOracleAthenaJDBC.

  1. 럭셔리 응용 프로그램 이름, 입력 TrianzOracleAthenaJDBC.
  2. 럭셔리 비밀이름접두사, 입력 OracleAFQ_XE.
  3. 럭셔리 스필버킷, 입력 Athena-accelerator/oracle.
  4. 럭셔리 JDBC커넥터 구성, 형식 사용 oracle://jdbc:oracle:thin:${secretname}@//hostname:port/servicename.

예를 들어, 다음을 입력합니다. oracle://jdbc:oracle:thin:${OracleAFQ_XE}@//12.345.67.89:1521/xe.

  1. 럭셔리 유출 암호화 비활성화, 입력 false.
  2. 럭셔리 Lambda 함수 이름, 입력 oracleconnector.
  3. 럭셔리 보안 그룹 ID에서 Oracle 인스턴스가 배포된 보안 그룹 ID를 입력합니다.

연결에 따라 유효한 인바운드 및 아웃바운드 규칙을 적용해야 합니다.

  1. 럭셔리 유출 접두사, 생성한 S3 버킷 아래에 폴더를 생성하고 이름을 지정합니다(예: athena-spill).
  2. 럭셔리 서브넷 ID, Oracle 인스턴스가 실행 중인 서브넷을 쉼표로 구분하여 사용하세요.

서브넷이 VPC에 있고 NAT 게이트웨이와 인터넷 게이트웨이가 연결되어 있는지 확인하세요.

  1. 선택 인정한다 확인란을 선택합니다.
  2. 왼쪽 메뉴에서 배포.

다음 사항을 확인하십시오. AWS 자격 증명 및 액세스 관리 (IAM) 역할에는 AWS Serverless Application Repository에 액세스할 수 있는 권한이 있습니다. AWS 클라우드 포메이션, 아마존 S3, 아마존 클라우드 워치, AWS 클라우드 트레일, Secrets Manager, Lambda 및 Athena. 자세한 내용은 다음을 참조하십시오. Athena Federated Query를 허용하는 IAM 권한 정책의 예.

Athena로 통합 쿼리 실행

다음을 사용하여 통합 쿼리를 실행하세요. lambda:trianzoracle Oracle 데이터베이스의 테이블에 대해. trianzoracle 이 블로그 이전 섹션의 7단계에서 만든 람다 함수의 이름입니다.

lambda:trianzoracle 형식을 사용하는 참조 데이터 원본 커넥터 Lambda 함수입니다. lambda:MyLambdaFunctionName. 자세한 내용은 다음을 참조하십시오. 통합 쿼리 작성.

다음 쿼리는 Oracle과 S3 데이터 레이크 간의 데이터 세트를 조인합니다.

주요 성능 모범 사례

Oracle을 사용한 Athena Federated 쿼리를 고려하고 있다면 다음 모범 사례를 권장합니다.

  • Athena Federated 쿼리는 조건자가 Oracle 데이터베이스로 푸시되므로 조건자 필터링을 사용하는 쿼리에 적합합니다. 전체 테이블 스캔을 방지하려면 쿼리에 필터 및 제한된 범위 스캔을 사용하세요.
  • SQL 쿼리에서 Oracle 데이터베이스에서 Athena로 대량의 데이터를 반환해야 하는 경우(쿼리 시간 초과 또는 성능 저하로 이어질 수 있음) Oracle에서 S3 데이터 레이크로 쿼리의 대규모 테이블을 언로드합니다.
  • 스타 스키마는 Oracle에서 일반적으로 사용되는 데이터 모델입니다. 스타 스키마 모델에서는 대규모 팩트 테이블을 S3 데이터 레이크로 언로드하고 차원 테이블은 Oracle에 그대로 둡니다. 대규모 차원 테이블이 성능 저하 또는 쿼리 시간 초과의 원인이 되는 경우 해당 테이블을 S3 데이터 레이크로 언로드하세요.
  • 통합 쿼리를 실행하면 Athena는 여러 Lambda 함수를 가동하여 데이터베이스 연결이 급증합니다. Oracle 데이터베이스 WLM 대기열 슬롯을 모니터링하여 대기열이 없는지 확인하는 것이 중요합니다. 또한 Oracle 데이터베이스 클러스터에서 동시성 확장을 사용하여 대기열에 추가하는 동시 연결의 이점을 누릴 수 있습니다.

결론

이 게시물에서는 Oracle에서 Athena Federated 쿼리를 구성하고 사용하는 방법을 배웠습니다. 이제 쿼리 실행을 위해 Oracle 데이터 웨어하우스의 모든 데이터가 Amazon S3에 언로드되고 매일 유지 관리될 때까지 기다릴 필요가 없습니다.

게시물에 설명된 모범 사례 고려 사항을 사용하면 더 나은 성능을 위해 Oracle에서 전송되는 데이터를 최소화하는 데 도움이 될 수 있습니다. 통합 쿼리에 대한 쿼리가 잘 작성되면 성능 저하가 무시할 수 있습니다.

자세한 내용은를 참조 Athena 사용자 가이드Amazon Athena 연합 쿼리 사용.


저자에 관하여

나브니트 슈클라 분석 분야의 AWS 전문 솔루션 아키텍트입니다. 그는 고객이 데이터에서 인사이트를 발견하도록 돕는 일에 열정적입니다. 그는 조직이 데이터 기반 의사 결정을 내리는 데 도움이 되는 솔루션을 구축해 왔습니다.

출처: https://aws.amazon.com/blogs/big-data/query-your-oracle-database-using-athena-federated-query-and-join-with-data-in-your-amazon-s3- 데이터 레이크/

타임 스탬프 :

더보기 AWS