소스 필터 사용 - AWS Database Migration Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

소스 필터 사용

소스 필터를 사용하여 소스에서 대상으로 전송되는 레코드의 수와 유형을 제한할 수 있습니다. 예를 들어, 본사 사업장에서 근무하는 직원만이 대상 데이터베이스로 이동하도록 지정할 수 있습니다. 필터는 선택 규칙의 일부입니다. 데이터 열에서 필터를 적용합니다.

소스 필터는 다음 제약 조건을 준수해야 합니다.

  • 선택 규칙에는 필터가 전혀 없거나 필터가 하나 이상 있을 수 있습니다.

  • 모든 필터에는 하나 이상의 필터 조건이 있을 수 있습니다.

  • 필터를 2개 이상 사용하는 경우, 필터 사이에서 AND 연산자를 사용하는 것처럼 필터 목록이 결합됩니다.

  • 단일 필터 내에서 필터 조건을 2개 이상 사용하면 필터 조건 사이에서 OR 연산자를 사용하는 것처럼 필터 조건 목록이 결합됩니다.

  • rule-action = 'include'인 경우 필터만이 적용됩니다.

  • 필터에는 열 이름과 필터 조건 목록이 필요합니다. 필터 조건에는 연산자에 따라 값이 한 개, 두 개 또는 아무 값에도 연결되지 않는 필터 연산자가 있어야 합니다.

  • 열 이름, 테이블 이름, 조회 이름 및 스키마 이름은 대소문자를 구분합니다. Oracle 및 Db2는 항상 대문자를 사용해야 합니다.

  • 필터는 정확한 이름을 가진 테이블만 지원합니다. 필터는 와일드카드를 지원하지 않습니다.

소스 필터 사용 시 다음과 같은 제한 사항이 적용됩니다.

  • 필터는 오른쪽에서 왼쪽으로 쓰는 언어의 열을 계산하지 않습니다.

  • LOB 열에 필터를 적용하지 마십시오.

  • 생성 후 업데이트되지 않는 변경 불가능 열에만 필터를 적용합니다. 생성 후 업데이트할 수 있는 변경 가능 열에 소스 필터가 적용되면 불리한 동작이 발생할 수 있습니다.

    예를 들어, 열의 특정 행을 제외하거나 포함하는 필터는 나중에 행이 변경되더라도 항상 지정된 행을 제외하거나 포함합니다. A열에 1~10 행을 제외하거나 포함시키고 나중에 11~20 행이 되도록 변경한다고 가정합니다. 이 경우, 데이터가 더 이상 동일하지 않은 경우에도 계속 제외되거나 포함됩니다.

    마찬가지로 필터 범위 외부의 행이 나중에 업데이트(또는 업데이트 및 삭제)되고, 필터에 의해 정의된 대로 제외되거나 포함되어야 한다고 가정합니다. 이 경우, 대상에서 복제됩니다.

JSON에서 소스 필터 규칙 생성

선택 규칙의 JSON filters 파라미터를 사용하여 소스 필터를 생성할 수 있습니다. filters 파라미터는 1개 이상의 JSON 객체 배열을 지정합니다. 각 객체는 소스 필터 유형, 열 이름 및 필터 조건을 지정하는 파라미터를 가지고 있습니다. 이러한 필터 조건에는 하나 이상의 필터 연산자 및 필터 값이 포함됩니다.

다음 표에는 filters 객체에서 소스 필터링을 지정하기 위한 파라미터가 나와 있습니다.

파라미터

filter-type

source

column-name

필터를 적용할 원본 열의 이름이 있는 파라미터입니다. 이름은 대/소문자를 구분합니다.

filter-conditions

filter-operator 값에 따라 filter-operator 파라미터와 0개 이상의 관련 값 파라미터를 포함하는 하나 이상의 객체로 구성된 배열입니다.

filter-operator

다음 값 중 하나를 가진 파라미터:

  • lte – 하나의 값보다 작거나 같음

  • ste – 하나의 값보다 작거나 같음(lte 별칭)

  • gte – 하나의 값보다 크거나 같음

  • eq – 하나의 값과 같음

  • noteq – 하나의 값과 같지 않음

  • between – 두 값과 같음 또는 두 값 사이의 값임

  • notbetween – 두 값과 같지 않음 또는 두 값 사이의 값이 아님

  • nullNULL

  • notnullNULL 값 없음

value 또는

start-valueend-value 또는

값 없음

0개 이상의 값 파라미터가 filter-operator과 연관되어 있음:

  • filter-operatorlte, ste, gte, eq 또는 noteq인 경우, 값 파라미터 하나를 지정하는 데 value를 사용합니다.

  • filter-operatorbetween 또는 notbetween인 경우, start-valueend-value를 사용하여 두 개의 값 파라미터를 지정합니다.

  • filter-operatornull 또는 notnull인 경우, 값 없음 파라미터를 지정하십시오.

다음 예제에서는 소스 필터를 사용하는 일반적인 방법에 대해 다룹니다.

예 단일 필터

다음 필터는 empid >= 100인 모든 직원을 대상 데이터베이스로 복제합니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "gte", "value": "50" },{ "filter-operator": "noteq", "value": "100" }] }] }] }
예 여러 필터 연산자

다음 필터는 여러 필터 연산자를 단일 데이터 열에 적용합니다. 이 필터는 (empid <= 10) OR (empid is between 50 and 75) OR (empid >= 100)인 모든 직원을 대상 데이터베이스로 복제합니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "lte", "value": "10" }, { "filter-operator": "between", "start-value": "50", "end-value": "75" }, { "filter-operator": "gte", "value": "100" }] }] }] }
예 여러 필터

다음 필터는 여러 필터를 테이블의 열 2개에 적용합니다. 이 필터는 (empid <= 100) AND (dept = tech)인 모든 직원을 대상 데이터베이스로 복제합니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "lte", "value": "100" }] }, { "filter-type": "source", "column-name": "dept", "filter-conditions": [{ "filter-operator": "eq", "value": "tech" }] }] }] }
예 NULL 값 필터링

다음 필터는 빈 값을 필터링하는 방법을 보여줍니다. 이 필터는 dept = NULL인 모든 직원을 대상 데이터베이스로 복제합니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "dept", "filter-conditions": [{ "filter-operator": "null" }] }] }] }
예 NOT 연산자를 사용한 필터링

일부 연산자는 음수 형식으로 사용할 수 있습니다. 다음 필터는 (empid is < 50) OR (empid is > 75)인 모든 직원을 대상 데이터베이스로 복제합니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "notbetween", "start-value": "50", "end-value": "75" }] }] }] }
예 혼합 필터 연산자 사용

AWS DMS 버전 3.5.0부터 포함 연산자와 음수 연산자를 혼합하여 사용할 수 있습니다.

다음 필터는 (empid != 50) AND (dept is not NULL)인 모든 직원을 대상 데이터베이스로 복제합니다.

{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empid", "filter-conditions": [{ "filter-operator": "noteq", "value": "50" }] }, { "filter-type": "source", "column-name": "dept", "filter-conditions": [{ "filter-operator": "notnull" }] }] }] }

null을 다른 필터 연산자와 함께 사용할 때는 다음 사항에 유의하십시오.

  • 동일한 필터 내에서 포함, 음수 및 null 필터 조건을 함께 사용하면 NULL 값이 있는 레코드가 복제되지 않습니다.

  • 동일한 필터 내에서 포함 필터 조건 없이 음수 필터 조건과 null 필터 조건을 함께 사용하면 데이터가 복제되지 않습니다.

  • null 필터 조건을 명시적으로 설정하지 않고 음수 필터 조건을 사용하면 NULL 값이 있는 레코드가 복제되지 않습니다.

시간과 날짜를 기준으로 필터링

가져올 데이터를 선택할 때 필터 기준의 일부로 날짜 또는 시간을 지정할 수 있습니다. AWS DMS에서는 필터링에 YYYY-MM-DD 날짜 형식과 YYYY-MM-DD HH:MM:SS 시간 형식을 사용합니다. AWS DMS 비교 함수는 SQLite 규칙을 준수합니다. SQLite 데이터 형식과 날짜 비교에 관한 자세한 내용은 SQLite 설명서의 SQLite 버전 3의 데이터 형식을 참조하십시오.

다음 필터는 날짜에서 필터링하는 방법을 보여줍니다. 이 필터는 empstartdate >= January 1, 2002인 모든 직원을 대상 데이터베이스로 복제합니다.

예 단일 날짜 필터
{ "rules": [{ "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "employee" }, "rule-action": "include", "filters": [{ "filter-type": "source", "column-name": "empstartdate", "filter-conditions": [{ "filter-operator": "gte", "value": "2002-01-01" }] }] }] }