샘플링 유형 충돌
이 페이지의 내용
버전 2.6에서 변경되었습니다.
MongoDB 의 유연한 스키마 모델은 특정 필드 에 여러 유형의 데이터를 포함할 수 있도록 허용하는 반면, 관계형 데이터베이스는 열을 단일 데이터 유형 으로 제한합니다. BI Connector 는 MongoDB 에서 데이터를 샘플링하여 관계형 스키마 모델을 생성하지만, BI Connector 가 MongoDB 문서의 필드 에서 다양한 데이터 유형을 샘플링할 때 유형 변환 충돌이 발생할 수 있습니다.
여러 데이터 유형이 있을 때 발생할 수 있는 유형 변환 충돌에는 스칼라 유형 간의 충돌과 문서 및 배열과 같은 복합 유형과 관련된 충돌, 이렇게 두 가지 주요 카테고리가 있습니다.
참고
BI Connector는 샘플링된 데이터의 하위 집합만 사용하여 스키마 생성 중 유형 충돌을 검색합니다. 데이터 세트에 필드에서 유형 충돌이 포함되어 있고 충돌하는 유형이 샘플에 모두 존재하지 않는 경우, 생성된 스키마는 이러한 충돌을 해결할 준비가 되지 않아 쿼리 지연 시간이 증가할 수 있습니다.
--samplesize
및 --schemaRefreshIntervalSecs
설정과 같은 샘플링 구성에 대한 자세한 내용은 스키마 옵션을 참조하세요.
스칼라-스칼라 충돌
스칼라-스칼라 충돌이 발생하면 BI Connector는 다음 격자를 사용하여 두 가지 데이터 유형 중 최소 상한을 결정합니다.
예시
지정된 필드에 int
, double
및 string
유형이 포함된 경우 최소 상한은 string
입니다.
스칼라-스칼라 충돌이 발생하면 BI Connector는 information_schema.COLUMNS
테이블에 행을 삽입하고 COLUMN_COMMENT
열에 다양한 샘플링된 유형을 나열합니다.
복합 충돌
복합 충돌은 문서 또는 배열과 관련된 유형 변환 충돌입니다. 다음 섹션에서는 BI Connector가 두 가지 유형의 복합 충돌을 해결하는 방법에 대해 설명합니다.
문서 충돌
문서와 관련된 충돌이 발생하면 BI Connector는 점 표기법을 사용하여 문서 유형의 필드를 별도의 열로 표시합니다. 예를 들어, conflict
collection에는 다음 문서가 포함되어 있습니다.
{ _id: 0, a: "foo" } // "a" is scalar (string) { _id: 1, a: { a: "bar", b: "baz" } } // "a" is composite (document)
BI Connector는 스칼라-복합 충돌을 감지하고 다음과 같은 관계형 스키마를 생성합니다.
테이블: conflict
_id | a | aa | ab |
---|---|---|---|
0 | "foo" | NULL | NULL |
1 | NULL | "bar" | "baz" |
문서와 관련된 충돌이 발생하면 BI Connector는 information_schema.COLUMNS
테이블에 행을 삽입하고 COLUMN_COMMENT
열에 다양한 샘플링된 유형을 나열합니다.
배열 충돌
배열과 관련된 충돌이 발생하면 BI Connector는 충돌 필드에 외래 키, 배열 인덱스 및 값에 대한 열이 있는 새 테이블을 만듭니다. BI Connector는 배열을 새 테이블의 여러 행으로 풀고 그에 따라 열을 채웁니다. 예를 들어, conflict
collection에는 다음 문서가 포함되어 있습니다.
{ _id: 0, a: "foo" } // "a" is scalar (string) { _id: 1, a: ["bar", "baz"] } // "a" is composite (array)
BI Connector는 위의 내용을 다음 두 테이블로 렌더링합니다.
테이블: conflict
_id |
---|
0 |
1 |
테이블: conflict_a
_id | a_idx | a |
---|---|---|
0 | NULL | "foo" |
1 | 0 | "bar" |
1 | 1 | "baz" |
배열과 관련된 충돌이 발생하면 BI Connector는 다음을 수행합니다.
information_schema.COLUMNS
테이블에 행을 삽입하고COLUMN_COMMENT
열에서 샘플링된 다양한 유형을 나열합니다.배열이
information_schema.COLUMNS
테이블의 행에 매핑되는 방식에 대한 정보가 포함된information_schema.TABLES
테이블에 행을 삽입합니다.