시리즈 홈 페이지로 연결되는 링크입니다: https://www.couchbase.com/blog/couchbase-oracle-developers-part-2-architecture/
데이터 리모델링의 일환으로 관계형 모델에서 JSON 모델로 이동하는 동안 데이터 유형 매핑을 고려해야 합니다. Oracle에서는 데이터를 로드하거나 쿼리를 작성하기 전에 각 열의 유형을 명시적으로 생성하고 선언해야 합니다. Couchbase에서는 JSON 구문을 준수하기만 하면 데이터 유형 해석이 자동으로 암시적으로 이루어집니다. 다음은 이러한 데이터 유형에 대한 매핑, 변환 및 산술에 대한 개요입니다.
Oracle | 카우치베이스 | |
모델 | 관계형, 객체 관계형 | JSON 모델과 N1QL(JSON용 SQL) |
데이터 유형 | https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/Data-Types.html#GUID-A3C0D836-BADB-44E5-A5D4-265BA5968483 | https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/datatypes.html |
문자열 데이터 유형 | 문자, 바이트열, 바이트열2, 엔차트, 엔바차트, 롱바차트 | 최대 20MB 길이의 문자열입니다. JSON의 모든 문자열 데이터는 유니코드입니다. |
날짜 및 시간 데이터 유형 | 날짜, 시간, 타임스탬프, 시간대, 간격이 포함된 모든 것 | 날짜, 시간, 타임스탬프, 시간대가 있는 이 모든 항목은 다음과 같이 표시되어야 합니다. ISO 8601 형식 로 변환하여 문자열로 저장합니다. N1QL에는 서식 지정, 추출, 변환 및 산술에 대한 광범위한 기능이 있습니다.
이 문서에서는 변환 및 산술에 대해 자세히 설명합니다. |
부울 | 불린 | 부울
true 그리고 false 는 자동으로 부울 값으로 해석됩니다. |
숫자 | 번호
십진수 BIGINT SMALLINT INTEGER FLOAT REAL 더블 |
숫자 데이터: 정수, 분수 또는 지수가 될 수 있습니다. 범위는 다음과 같습니다: https://docs.couchbase.com/server/current/analytics/9_data_type.html |
이진 데이터 유형 | 바이너리
다양한 롱바이어리 |
전체 문서를 바이너리로 저장하거나 바이너리를 base64 값으로 인코딩할 수 있습니다. |
대용량 개체 데이터 유형 | ||
blob, raw, long_raw | 각 문서는 최대 20MB까지 가능합니다. 바이너리 데이터는 BASE64를 통해 인코딩할 수 있습니다. | |
CLOB | 각 문서의 용량은 최대 20MB입니다. | |
초록 유형, 중첩된 테이블 | 객체, 배열, 객체의 배열, 배열의 객체에 대한 기본 지원. 사용자 정의 불투명 데이터 유형은 지원하지 않습니다. | |
XML | 아직도 데이터베이스에서 XML을 사용하시나요? ;-) | |
모든 유형 | 모든 유형은 오라클 루틴이 매개변수 및 반환 유형으로 처리하는 유형을 유연하게 만들기 위해 개발되었습니다.
JSON 모델에서, |
|
개체 | 객체 유형 및 이와 관련된 열을 명시적으로 생성합니다: 만들기 유형 person_typ AS 객체 | 오브젝트는 데이터 유형, 오브젝트 또는 배열을 사용하여 중첩된 레벨 수에 관계없이 JSON 모델에 내장됩니다. |
배열 | VARRAY는 특정 유형의 배열을 생성한 다음 해당 유형을 열의 유형으로 사용할 수 있습니다.
URL: https://docs.oracle.com/cd/B28359_01/appdev.111/b28371/adobjcol.htm#i468598 |
배열은 JSON 데이터 모델에서 1급 시민이며 모든 값에 사용할 수 있습니다. 각 배열은 스칼라, 객체, 배열 등 모든 유형의 스칼라가 될 수 있습니다.
"A": [1, "X", [3, 4]] "B": [{"x":1}, {"x":2}] |
추가 참고 사항
날짜 및 날짜/시간 유형.
Oracle 및 기타 RDBMS에는 시간 관련 데이터를 처리하고 조작하기 위한 광범위한 데이터 유형이 있습니다. JSON에는 날짜 또는 날짜/시간 유형이 없습니다. 그래서 저희는 ISO 8601 . ISO 8601을 준수하는 문자열 형식으로 날짜 및 시간 관련 데이터를 저장한 다음 일관된 방식으로 조작하는 것이 아이디어입니다.
기본 키를 문서 키로 변환합니다.
카우치베이스 문서 키는 항상 255바이트 미만이며 일반적으로 문자열입니다. RDBMS는 테이블에 대해 단일 열 또는 여러 열(복합) 기본 키를 가질 수 있습니다. 일반적인 변환 방법 중 하나는 각 부분을 문자열로 변환한 후 각 부분 사이에 구분 기호를 넣는 것입니다. 문서 키는 버킷에 고유해야 하므로 일반적으로 테이블(컬렉션) 유형이 접두사로 붙습니다. 버킷의 예제가 있는 블로그 를 올바르게 수행하는 방법에 대해 설명합니다.