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 | 설명 |
---|---|
필터 유형 |
|
필터 표현식 |
쉼표로 구분된 패턴 목록. 표현식은 Maxwell 필터 구문 |
패턴 |
Amazon RDS는 데이터베이스 및 테이블 수준에서만 필터링을 지원합니다. 열 수준 필터( 단일 통합은 총 99개까지 패턴을 보유할 수 있습니다. 콘솔에서는 단일 필터 표현식 내에 패턴을 포함하거나 여러 표현식에 패턴을 분산시킬 수 있습니다. 단일 패턴은 길이가 256자를 초과할 수 없습니다. |
다음 이미지는 콘솔의 데이터 필터 구조를 보여줍니다.
중요
개인 식별 정보, 기밀 정보 또는 민감한 정보를 필터 패턴에 포함하지 마세요.
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
라는 데이터베이스의 table1
및 table2
만 대상 데이터 웨어하우스에 복제됩니다.
필터 우선순위
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 통합에 데이터 필터를 추가하는 방법
https://console.aws.amazon.com/rds/
에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다. -
탐색 창에서 제로 ETL 통합을 선택합니다. 데이터 필터를 추가할 통합을 선택한 다음 수정을 선택합니다.
-
소스에서 하나 이상의
Include
및Exclude
문을 추가합니다.다음 이미지는 통합의 데이터 필터 예시를 보여 줍니다.
-
원하는 대로 모두 변경되었으면 계속과 변경 사항 저장을 선택합니다.
AWS CLI를 사용하여 제로 ETL 통합에 데이터 필터를 추가하려면 modify-integrationInclude
및 Exclude
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 데이터 웨어하우스로 복제합니다.
하나 이상의 데이터 필터를 제거하면 영향을 받는 모든 테이블이 재동기화됩니다.