데이터 형식
개요
이 가이드에서는 MongoDB Kafka Connector 및 파이프라인을 사용할 때 사용하는 데이터 형식에 대해 알아볼 수 있습니다.
이 가이드에서는 다음 샘플 문서를 사용하여 다양한 형식의 동작을 보여 줍니다.
{company:"MongoDB"}
JSON
JSON은 JavaScript 객체 표기법을 기반으로 하는 데이터 교환 형식입니다. 샘플 문서 를 다음과 같이 JSON으로 표현합니다.
{"company":"MongoDB"}
connector로 작업할 때 JSON과 관련된 다음 데이터 형식이 발생할 수 있습니다.
JSON에 대한 자세한 내용은 공식 JSON 웹사이트를 참조하세요.
Raw JSON
원시 JSON은 문자열로 작성된 JSON 객체로 구성된 데이터 형식입니다. 샘플 문서 를 다음과 같이 원시 JSON으로 표현합니다.
"{\"company\":\"MongoDB\"}"
소스 또는 싱크 connector 에서 변환기를 지정할 JSON 때 원시 을 사용합니다.string string 변환기를 지정하는 connector 구성을 보려면 변환기 가이드 를 참조하세요.
BSON
BSON은 JSON과 유사한 객체를 위한 바이너리 직렬화 인코딩입니다. BSON은 다음과 같이 샘플 문서 를 인코딩합니다.
\x1a\x00\x00\x00\x02company\x00\x08\x00\x00\x00MongoDB\x00\x00
커넥터는 BSON 형식을 사용하여 MongoDB deployment에서 문서를 주고받습니다.
JSON Schema
JSON Schema는 JSON 객체에 대한 스키마를 지정하는 구문입니다. 스키마는 해당 주제에 유효한 값을 정의하는 Apache Kafka 주제에 첨부된 정의입니다.
다음과 같이 JSON Schema를 사용하여 샘플 문서에 대한 스키마를 지정할 수 있습니다.
{ "$schema":"http://json-schema.org/draft-07/schema", "$id":"unique id", "type":"object", "title":"Example Schema", "description":"JSON Schema for the sample document.", "required":[ "company" ], "properties":{ "company":{ "$id":"another unique id", "type":"string", "title":"Company", "description":"A field to hold the name of a company" } }, "additionalProperties":false }
커넥터에 JSON Schema 변환기를 적용할 때 JSON Schema를 사용합니다. JSON Schema 변환기를 지정하는 커넥터 구성을 보려면 변환기 가이드를 참조하세요.
자세한 내용은 공식 웹사이트를 JSON schema 참조하세요.
Avro
Apache Avro는 스키마로 설명된 데이터를 직렬화하고 전송하기 위한 오픈 소스 프레임워크입니다. Avro는 커넥터와 관련된 두 가지 데이터 형식을 정의합니다.
Apache Avro에 대한 자세한 내용은 Apache Avro 설명서를 참조하세요.
Avro Schema
Avro 스키마는 JSON 기반 스키마 정의 구문입니다. Avro 스키마는 다음과 같은 데이터 유형 그룹의 사양을 지원합니다.
경고
아브로(Avro) 유형을 지원하지 않습니다.
커넥터는 다음과 같은 아브로(Avro) 유형을 지원하지 않습니다.
enum
유형. 그 대신string
을(를) 사용합니다.fixed
유형. 그 대신bytes
을(를) 사용합니다.null
원시 유형으로 하지만null
을union
의 요소로 사용하는 것은 지원됩니다.union
요소가 2개 이상인 유형union
null
요소가 하나 이상 있는 유형
중요
싱크 커넥터와 논리형
MongoDB Kafka 싱크 커넥터는 모든 아브로(Avro) 스키마 원시 및 복합 유형을 지원하지만, 싱크 커넥터는 다음과 같은 논리형만 지원합니다.
decimal
date
time-millis
time-micros
timestamp-millis
timestamp-micros
이와 같이 샘플 문서에 대한 아브로(Avro) 스키마를 구성할 수 있습니다:
{ "type": "record", "name": "example", "doc": "example documents have a company field", "fields": [ { "name": "company", "type": "string" } ] }
MongoDB Kafka 소스 커넥터에 대한 스키마를 정의하는 경우 아브로(Avro) 스키마를 사용합니다.
모든 아브로(Avro) 스키마 유형 목록은 Apache 아브로(Avro) 사양을 참조하세요.
Avro 바이너리 인코딩
아브로(Avro)는 아브로(Avro) 스키마에 따라 정의된 JSON 객체에 대한 바이너리 직렬화 인코딩을 지정합니다.
앞의 아브로(Avro) 스키마 를 사용하는 경우 다음과 같이 아브로(Avro) 바이너리 인코딩을 사용하여 샘플 문서 를 표현할 수 있습니다.
\x0eMongoDB
소스 혹은 싱크 커넥터에 아브로(Avro) 변환기를 지정하는 경우 아브로(Avro) 바이너리 인코딩을 사용합니다. 아브로(Avro) 변환기를 지정하는 커넥터 구성을 보려면 Converters 가이드를 참조합니다.
아브로(Avro) 바이너리 인코딩에 대해 자세히 보려면 아브로(Avro) 사양의 이 섹션을 참조합니다.
바이트 배열
바이트 배열은 비구조형 바이트의 연속적인 시퀀스입니다.
앞서 언급한 인코딩을 사용하여 샘플 문서를 바이트 배열로 표현할 수 있습니다.
변환기가 Apache Kafka로 데이터를 보내거나 Apache Kafka에서 데이터를 받는 경우 바이트 배열을 사용합니다. 변환기에 대한 자세한 내용은 Converters 가이드를 참조합니다.