Amazon Redshift와 Amazon RDS 제로 ETL 통합의 데이터 필터링 - Amazon Relational Database Service

Amazon Redshift와 Amazon RDS 제로 ETL 통합의 데이터 필터링

Amazon RDS 제로 ETL 통합의 데이터 필터링을 사용하여 소스 Aazon RDS 데이터베이스에서 대상 Amazon Redshift 데이터 웨어하우스로의 복제 범위를 정의할 수 있습니다. 모든 데이터를 대상에 복제하는 대신 특정 테이블을 선택적으로 포함하거나 복제에 제외하는 필터를 하나 이상 정의할 수 있습니다. 제로 ETL 통합에서는 데이터베이스 및 테이블 수준의 필터링만 사용할 수 있습니다. 열 또는 행 기준으로는 필터링할 수 없습니다.

데이터 필터링은 다음과 같은 경우에 유용할 수 있습니다.

  • 서로 다른 2개 이상의 소스 데이터베이스의 특정 테이블을 조인하며 데이터베이의 전체 데이터가 필요하지 않은 경우

  • 전체 데이터베이스 플릿 대신 테이블의 하위 집합만 사용해 분석을 수행하여 비용을 절감하려는 경우

  • 특정 테이블에서 전화번호, 주소 또는 신용카드 세부 정보와 같은 민감한 정보를 필터링하는 경우

AWS Management Console, AWS Command Line Interface(AWS CLI) 또는 Amazon RDS API를 사용하여 제로 ETL 통합에 데이터 필터를 추가할 수 있습니다.

통합에서 프로비저닝된 Amazon Redshift 클러스터를 대상으로 하는 경우 클러스터는 패치 180 이상에 있어야 합니다.

데이터 필터의 형식

단일 통합에 대해 여러 필터를 정의할 수 있습니다. 각 필터는 필터 표현식의 패턴 중 하나와 일치하는 기존 및 미래 데이터베이스 테이블을 포함하거나 제외합니다. Amazon RDS 제로 ETL 통합은 데이터 필터링에 Maxwell 필터 구문을 사용합니다.

각 필터에는 다음 요소가 포함됩니다.

Element 설명
필터 유형

Include 필터 유형에는 필터 표현식의 패턴 중 하나와 일치하는 모든 테이블이 포함됩니다. Exclude 필터 유형에는 패턴 중 하나와 일치하는 모든 테이블이 제외됩니다.

필터 표현식

쉼표로 구분된 패턴 목록. 표현식은 Maxwell 필터 구문을 사용해야 합니다.

패턴

database.table 형식의 필터 패턴. 리터럴 데이터베이스 및 테이블 이름(예: mydb.mytable)을 지정하거나 와일드카드(*)를 사용할 수 있습니다. 데이터베이스와 테이블 이름에 정규 표현식을 정의할 수도 있습니다.

Amazon RDS는 데이터베이스 및 테이블 수준에서만 필터링을 지원합니다. 열 수준 필터(database.table.column) 또는 거부 목록은 포함할 수 없습니다.

단일 통합은 총 99개까지 패턴을 보유할 수 있습니다. 콘솔에서는 단일 필터 표현식 내에 패턴을 포함하거나 여러 표현식에 패턴을 분산시킬 수 있습니다. 단일 패턴은 길이가 256자를 초과할 수 없습니다.

다음 이미지는 콘솔의 데이터 필터 구조를 보여줍니다.

제로 ETL 통합의 데이터 필터
중요

개인 식별 정보, 기밀 정보 또는 민감한 정보를 필터 패턴에 포함하지 마세요.

AWS CLI의 데이터 필터

AWS CLI를 사용하여 데이터 필터를 추가하는 경우 콘솔과 구문이 약간 다릅니다. 각 개별 패턴은 고유한 필터 유형(Include 또는 Exclude)과 연결되어야 합니다. 단일 필터 유형으로 여러 패턴을 그룹화할 수 없습니다.

예를 들어 콘솔에서는 쉼표로 구분된 다음과 같은 패턴을 단일 Include 문 내에 그룹화할 수 있습니다.

mydb.mytable, mydb./table_\d+/

하지만 AWS CLI를 사용할 때는 동일한 데이터 필터가 다음 형식이어야 합니다.

'include: mydb.mytable, include: mydb./table_\d+/'

"필터 로직"

통합에서 데이터 필터를 지정하지 않는 경우 Amazon RDS는 기본 필터 include:*.*를 가정하고 모든 테이블을 대상 데이터 웨어하우스에 복제합니다. 하지만 필터를 하나라도 지정하는 경우 로직은 가정된 exclude:*.*로 시작되며, 이는 모든 테이블이 복제에서 자동으로 제외된다는 의미입니다. 이를 통해 포함할 테이블과 데이터베이스를 직접 정의할 수 있습니다.

예를 들어 다음을 필터를 정의하는 경우:

'include: db.table1, include: db.table2'

Amazon RDS는 다음과 같이 필터를 평가합니다.

'exclude:*.*, include: db.table1, include: db.table2'

따라서 db라는 데이터베이스의 table1table2만 대상 데이터 웨어하우스에 복제됩니다.

필터 우선순위

Amazon RDS는 지정된 순서대로 데이터 필터를 평가합니다. 즉, AWS Management Console에서는 Amazon RDS가 왼쪽에서 오른쪽으로, 위에서 아래로 필터 표현식을 평가합니다. 첫 번째 필터에 특정 패턴을 지정하면 두 번째 필터 또는 바로 다음에 지정된 개별 패턴이 해당 패턴을 무시할 수 있습니다.

예를 들어, 첫 번째 필터는 Include books.stephenking일 수 있습니다. 여기에는 books 데이터베이스 내에서 이름이 stephenking인 단일 테이블이 포함됩니다. 하지만 Exclude books.*라는 두 번째 필터를 추가하면 앞에 정의된 Include 필터가 무시됩니다. 따라서 books 인덱스의 어떤 테이블도 Amazon Redshift로 복제되지 않습니다.

필터를 하나라도 지정하는 경우 로직은 가정된 exclude:*.*로 시작되며, 이는 모든 테이블이 복제에서 자동으로 제외된다는 의미입니다. 따라서 일반적으로 가장 넓은 범위에서 가장 좁은 범위로 필터를 정의하는 것이 좋습니다. 예를 들어 하나 이상의 Include 문을 사용하여 복제하려는 모든 데이터를 정의할 수 있습니다. 그런 다음 복제에서 특정 테이블을 선택적으로 제외하는 Exclude 필터를 추가해 보세요.

AWS CLI를 사용하여 정의하는 필터에도 동일한 원칙이 적용됩니다. Amazon RDS는 이러한 필터 패턴을 지정된 순서대로 평가하므로 앞서 지정된 패턴을 무시하고 이후 패턴이 적용될 수 있습니다.

예시

다음 예제에서는 제로 ETL 통합에서 데이터 필터링이 작동하는 방식을 보여줍니다.

  • 모든 데이터베이스와 모든 테이블 포함:

    'include: *.*'
  • books 데이터베이스 내의 모든 테이블 포함:

    'include: books.*'
  • 이름이 mystery인 모든 테이블 제외:

    'include: *.*, exclude: *.mystery'
  • books 데이터베이스 내에서 두 개의 특정 테이블 포함:

    'include: books.stephen_king, include: books.carolyn_keene'
  • mystery 하위 문자열이 포함된 테이블을 제외한 모든 테이블을 books 데이터베이스에 포함:

    'include: books.*, exclude: books./.*mystery.*/'
  • mystery로 시작하는 테이블을 제외한 모든 테이블을 books 데이터베이스에 포함:

    'include: books.*, exclude: books./mystery.*/'
  • mystery로 끝나는 테이블을 제외한 모든 테이블을 books 데이터베이스에 포함:

    'include: books.*, exclude: books./.*mystery/'
  • books 데이터베이스 내에서 table_stephen_king을 제외하고 이름이 table_로 시작하는 모든 테이블 포함: 예를 들어 table_movies 또는 table_books는 복제되지만 table_stephen_king은 복제되지 않습니다.

    'include: books./table_.*/, exclude: books.table_stephen_king'

통합에 데이터 필터 추가

AWS Management Console, AWS CLI 또는 Amazon RDS API를 사용하여 데이터 필터링을 구성할 수 있습니다.

중요

통합을 생성한 후 필터를 추가하면 Amazon RDS가 필터가 항상 존재했던 것처럼 필터를 재평가합니다. 현재 대상 Amazon Redshift 데이터 웨어하우스에 있는 데이터 중 새로운 필터링 기준과 일치하지 않는 모든 데이터를 제거합니다. 이 작업을 수행하면 영향을 받는 모든 테이블이 재동기화됩니다.

제로 ETL 통합에 데이터 필터를 추가하는 방법
  1. https://console.aws.amazon.com/rds/에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 제로 ETL 통합을 선택합니다. 데이터 필터를 추가할 통합을 선택한 다음 수정을 선택합니다.

  3. 소스에서 하나 이상의 IncludeExclude 문을 추가합니다.

    다음 이미지는 통합의 데이터 필터 예시를 보여 줍니다.

    RDS 콘솔에서 제로 ETL 통합의 데이터 필터
  4. 원하는 대로 모두 변경되었으면 계속변경 사항 저장을 선택합니다.

AWS CLI를 사용하여 제로 ETL 통합에 데이터 필터를 추가하려면 modify-integration 명령을 직접 호출하세요. 통합 식별자 외에도 쉼표로 구분된 IncludeExclude Maxwell 필터 목록을 사용하여 --data-filter 파라미터를 지정하세요.

다음 예시에서는 my-integration에 필터 패턴을 추가합니다.

대상 LinuxmacOS, 또는Unix:

aws rds modify-integration \ --integration-identifier my-integration \ --data-filter 'include: foodb.*, exclude: foodb.tbl, exclude: foodb./table_\d+/'

Windows의 경우:

aws rds modify-integration ^ --integration-identifier my-integration ^ --data-filter 'include: foodb.*, exclude: foodb.tbl, exclude: foodb./table_\d+/'

RDS API를 사용하여 제로 ETL 통합을 수정하려면 ModifyIntegration을 호출하세요. 통합 식별자를 지정하고 쉼표로 구분된 필터 패턴 목록을 제공하세요.

통합에서 데이터 필터 제거

통합에서 데이터 필터를 제거하면 Amazon RDS는 제거된 필터가 존재하지 않았던 것처럼 나머지 필터를 재평가합니다. 그런 다음 Amazon RDS는 이전에는 필터링 기준과 일치하지 않았지만 이제는 일치하는 모든 데이터를 대상 Amazon Redshift 데이터 웨어하우스로 복제합니다.

하나 이상의 데이터 필터를 제거하면 영향을 받는 모든 테이블이 재동기화됩니다.