기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
데이터 매핑 검증
데이터는 다음 프로세스를 사용하여 Neptune에서 OpenSearch로 복제됩니다.
-
해당 필드에 대한 매핑이 OpenSearch에 이미 있는 경우:
데이터 검증 규칙을 사용하여 데이터를 기존 매핑으로 안전하게 변환할 수 있는 경우 해당 필드를 OpenSearch에 저장하세요.
그렇지 않은 경우 해당 스트림 업데이트 레코드를 삭제합니다.
-
해당 필드에 대한 기존 매핑이 없는 경우 Neptune에서 필드의 데이터 유형에 해당하는 OpenSearch 데이터 유형을 찾습니다.
데이터 검증 규칙을 사용하여 필드 데이터를 OpenSearch 데이터 유형으로 안전하게 변환할 수 있는 경우 새로운 매핑과 필드 데이터를 OpenSearch에 저장하세요.
그렇지 않은 경우 해당 스트림 업데이트 레코드를 삭제합니다.
값은 Neptune 유형이 아닌 동일한 OpenSearch 유형이나 기존 OpenSearch 매핑을 기준으로 검증됩니다. 예를 들어, "123"^^xsd:int
의 값 "123"
에 대한 검증은 int
유형이 아닌 long
유형을 기준으로 이루어집니다.
Neptune은 모든 데이터를 OpenSearch에 복제하려고 시도하지만, OpenSearch의 데이터 유형이 Neptune의 데이터 유형과 완전히 다른 경우가 있습니다. 이런 상황에서는 OpenSearch에서 레코드를 인덱싱하지 않고 건너뛰기도 합니다.
예를 들어, Neptune에서는 한 속성에 유형이 다른 여러 값이 있을 수 있지만, OpenSearch의 필드는 인덱스 전체에서 유형이 같아야 합니다.
디버그 로그를 활성화하면 Neptune에서 OpenSearch로 내보내는 동안 삭제된 레코드를 볼 수 있습니다. 디버그 로그 항목의 예는 다음과 같습니다.
Dropping Record : Data type not a valid Gremlin type <Record>
데이터 유형은 다음과 같이 검증됩니다.
-
text
– Neptune의 모든 값을 OpenSearch의 텍스트에 안전하게 매핑할 수 있습니다. -
long
– OpenSearch 매핑 유형이 긴 경우 Neptune 데이터 유형에 대한 다음 규칙이 적용됩니다(아래 예에서는"testLong"
에long
매핑 유형이 있다고 가정).-
boolean
– 유효하지 않아 변환할 수 없으며, 해당 스트림 업데이트 레코드가 삭제됩니다.유효하지 않은 Gremlin의 예는 다음과 같습니다.
"testLong" : true. "testLong" : false.
유효하지 않은 SPARQL의 예는 다음과 같습니다.
":testLong" : "true"^^xsd:boolean ":testLong" : "false"^^xsd:boolean
-
datetime
– 유효하지 않아 변환할 수 없으며, 해당 스트림 업데이트 레코드가 삭제됩니다.유효하지 않은 Gremlin의 예는 다음과 같습니다.
":testLong" : datetime('2018-11-04T00:00:00').
유효하지 않은 SPARQL의 예는 다음과 같습니다.
":testLong" : "2016-01-01"^^xsd:date
-
float
,double
또는decimal
– Neptune의 값이 64비트에 속할 수 있는 정수이면 유효하며 OpenSearch에 long으로 저장됩니다. 그러나 소수 부분이 있거나,NaN
또는INF
이거나, 9,223,372,036,854,775,807보다 크거나, -9,223,372,036,854,775,808보다 작은 경우에는 유효하지 않으며 해당 스트림 업데이트 레코드가 삭제됩니다.유효한 Gremlin의 예는 다음과 같습니다.
"testLong" : 145.0. ":testLong" : 123 ":testLong" : -9223372036854775807
유효한 SPARQL의 예는 다음과 같습니다.
":testLong" : "145.0"^^xsd:float ":testLong" : 145.0 ":testLong" : "145.0"^^xsd:double ":testLong" : "145.0"^^xsd:decimal ":testLong" : "-9223372036854775807"
유효하지 않은 Gremlin의 예는 다음과 같습니다.
"testLong" : 123.45 ":testLong" : 9223372036854775900
유효하지 않은 SPARQL의 예는 다음과 같습니다.
":testLong" : 123.45 ":testLong" : 9223372036854775900 ":testLong" : "123.45"^^xsd:float ":testLong" : "123.45"^^xsd:double ":testLong" : "123.45"^^xsd:decimal
-
string
– Neptune의 값이 64비트 정수에 포함될 수 있는 정수의 문자열 표현인 경우 유효하며 OpenSearch에서long
으로 변환됩니다. 다른 모든 문자열 값은 Elasticseearchlong
매핑에 사용할 수 없으며, 해당 스트림 업데이트 레코드는 삭제됩니다.유효한 Gremlin의 예는 다음과 같습니다.
"testLong" : "123". ":testLong" : "145.0" ":testLong" : "-9223372036854775807"
유효한 SPARQL의 예는 다음과 같습니다.
":testLong" : "145.0"^^xsd:string ":testLong" : "-9223372036854775807"^^xsd:string
유효하지 않은 Gremlin의 예는 다음과 같습니다.
"testLong" : "123.45" ":testLong" : "9223372036854775900" ":testLong" : "abc"
유효하지 않은 SPARQL의 예는 다음과 같습니다.
":testLong" : "123.45"^^xsd:string ":testLong" : "abc" ":testLong" : "9223372036854775900"^^xsd:string
-
-
double
– OpenSearch 매핑 유형이double
인 경우 다음 규칙이 적용됩니다(여기서는 OpenSearch에서 'testDouble' 필드에double
매핑이 있는 것으로 가정).-
boolean
– 유효하지 않아 변환할 수 없으며, 해당 스트림 업데이트 레코드가 삭제됩니다.유효하지 않은 Gremlin의 예는 다음과 같습니다.
"testDouble" : true. "testDouble" : false.
유효하지 않은 SPARQL의 예는 다음과 같습니다.
":testDouble" : "true"^^xsd:boolean ":testDouble" : "false"^^xsd:boolean
-
datetime
– 유효하지 않아 변환할 수 없으며, 해당 스트림 업데이트 레코드가 삭제됩니다.유효하지 않은 Gremlin의 예는 다음과 같습니다.
":testDouble" : datetime('2018-11-04T00:00:00').
유효하지 않은 SPARQL의 예는 다음과 같습니다.
":testDouble" : "2016-01-01"^^xsd:date
-
부동 소수점
NaN
또는INF
– SPARQL의 값이 부동 소수점NaN
또는INF
인 경우 유효하지 않으며, 해당 스트림 업데이트 레코드가 삭제됩니다.유효하지 않은 SPARQL의 예는 다음과 같습니다.
" :testDouble" : "NaN"^^xsd:float ":testDouble" : "NaN"^^double ":testDouble" : "INF"^^double ":testDouble" : "-INF"^^double
-
숫자 또는 숫자 문자열 – Neptune의 값이
double
로 안전하게 표현할 수 있는 숫자의 숫자 문자열 표현 또는 기타 숫자인 경우 유효하며, OpenSearch에서double
로 변환됩니다. 다른 모든 문자열 값은 OpenSearchdouble
매핑에 사용할 수 없으며, 해당 스트림 업데이트 레코드는 삭제됩니다.유효한 Gremlin의 예는 다음과 같습니다.
"testDouble" : 123 ":testDouble" : "123" ":testDouble" : 145.67 ":testDouble" : "145.67"
유효한 SPARQL의 예는 다음과 같습니다.
":testDouble" : 123.45 ":testDouble" : 145.0 ":testDouble" : "123.45"^^xsd:float ":testDouble" : "123.45"^^xsd:double ":testDouble" : "123.45"^^xsd:decimal ":testDouble" : "123.45"^^xsd:string
유효하지 않은 Gremlin의 예는 다음과 같습니다.
":testDouble" : "abc"
유효하지 않은 SPARQL의 예는 다음과 같습니다.
":testDouble" : "abc"
-
-
date
– OpenSearch 매핑 유형이date
인 경우 Neptunedate
및dateTime
값이 유효하며,dateTime
형식으로 성공적으로 구문 분석할 수 있는 모든 문자열 값도 유효합니다.Gremlin 또는 SPARQL의 유효한 예는 다음과 같습니다.
Date(2016-01-01) "2016-01-01" " 2003-09-25T10:49:41" "2003-09-25T10:49" "2003-09-25T10" "20030925T104941-0300" "20030925T104941" "2003-Sep-25" " Sep-25-2003" "2003.Sep.25" "2003/09/25" "2003 Sep 25" " Wed, July 10, '96" "Tuesday, April 12, 1952 AD 3:30:42pm PST" "123" "-123" "0" "-0" "123.00" "-123.00"
유효하지 않은 예는 다음과 같습니다.
123.45 True "abc"