OSv2 인덱싱 데이터 제약
OSv2는 인덱싱할 때 기본 키, 자료형과 값의 크기를 검사합니다. 배치 데이터소스의 위반은 인덱싱 작업을 실패시키며, 스트리밍 데이터소스에서는 위반한 레코드를 제외합니다. 같은 데이터 문제라도 나타나는 실패 방식이 다릅니다.
기본 키와 중복
단일 트랜잭션 안에 기본 키가 중복되면 인덱싱이 실패합니다. 서로 다른 트랜잭션에 같은 키가 있으면 나중 트랜잭션의 값을 사용합니다.
다음 자료형은 기본 키로 사용할 수 없습니다.
- Geopoint와 Geoshape
- 배열
- 시계열 속성
- 실수형인 Decimal, Double과 Float
자료형과 값 검증
매 동기화에서 데이터소스 스키마와 객체 유형 스키마의 자료형이 맞아야 합니다. 기존 속성의 기본 자료형을 바꿀 때도 모든 기존 값이 대상 자료형과 엄격하게 호환되어야 합니다.
예를 들어 Double에서 Integer로 바꿀 때 소수 부분이 있는 값이 있거나, 숫자로 바꿀 문자열에 통화 기호가 있으면 실패할 수 있습니다. A property could not be cast to the new type 오류가 그 사례입니다. 스키마 이전은 지원하는 변환 방향을 제공하지만 잘못된 값을 자동으로 정리하거나 강제로 변환하지 않습니다.
다음 값과 구조도 허용하지 않습니다.
| 항목 | 조건 |
|---|---|
| 실수의 특수값 | NaN, 양의 무한대와 음의 무한대를 허용하지 않습니다. |
| 빈 문자열 | 허용하지 않습니다. OSv1에서 빈 문자열을 조용히 null로 바꾸던 동작과 다릅니다. |
| Geopoint 문자열 | 괄호 없이 쉼표로 구분한 위도와 경도여야 합니다. 예: -29.123, 150.982 |
| 중첩 배열 | 허용하지 않습니다. |
| 배열 안의 null 원소 | 허용하지 않습니다. |
Geopoint에는 OSv1보다 엄격한 검증을 적용합니다. 제한 뷰 데이터소스의 세부 권한 정책에서 컬렉션 필드를 부정하는 Not 조건을 사용하려면 그 컬렉션에 비어 있지 않음 제약이 있어야 합니다. Ontology Manager에서 관련 속성을 필수(Required)로 설정하는 방식으로 구성합니다.
속성 크기
| 속성 | 최대 크기 |
|---|---|
| String | 12MB |
| 배열 | 100,000개 원소 |
이 크기 제한은 우선 배치 데이터소스 기반 객체 유형에 적용하며 초과하면 인덱싱이 실패합니다. 같은 속성별 제한의 스트리밍 적용은 예정된 기능입니다. 스트리밍에는 별도로 레코드 1MB와 속성 250개 한도가 있으므로 배치 문자열의 12MB를 스트리밍 레코드 허용량으로 사용하면 안 됩니다.
12MB를 넘는 문자열이나 큰 바이너리 자료는 미디어 참조로 연결합니다. 100,000개를 넘는 배열로 관계를 표현해야 한다면 링크 유형을 사용하는 모델을 검토합니다.
인덱싱 한도와 액션 입력 및 편집 한도는 서로 다른 경로에 적용됩니다. 저장할 수 있는 속성 크기가 곧 한 액션으로 편집할 수 있는 크기를 뜻하지는 않습니다.