Docs Menu
Docs Home
/
MongoDB Kafka Connector
/ /

스키마 지정

이 사용 예시 는 데이터에 사용자 지정 스키마 를 적용 하도록 MongoDB Kafka 소스 connector 를 구성하는 방법을 보여줍니다. 스키마 는 Apache Kafka 주제 의 데이터에 대한 구조 및 유형 정보를 지정하는 정의입니다. 소스 connector 로 채워진 주제 에 대한 데이터의 구조가 일관적인 적인지 확인해야 하는 경우 스키마 를 사용합니다.

connector 에서 스키마를 사용하는 방법에 학습 보려면 스키마 적용 가이드 를 참조하세요.

애플리케이션 이 MongoDB 컬렉션 의 고객 데이터를 추적 하고 이 데이터를 Kafka 주제 에 게시한다고 가정해 보겠습니다. 고객 데이터의 구독자가 일관된 형식의 데이터를 받도록 하려고 합니다. 데이터에 스키마 를 적용 하도록 선택합니다.

요구 사항과 솔루션은 다음과 같습니다.

요구 사항
솔루션
MongoDB 컬렉션에서 고객 데이터 받기
Configure a MongoDB source connector to receive updates to data from a specific database and collection.
See Receive Data from a Collection.
고객 데이터 스키마 제공
Specify a schema that corresponds to the structure and data types of the customer data.
고객 데이터에서 Kafka 메타데이터 생략하기
Include only the data from the fullDocument field.

위의 요구 사항을 충족하는 전체 구성 파일 은 구성 지정을 참조하세요.

MongoDB 컬렉션에서 데이터를 수신하도록 소스 커넥터를 구성하려면 데이터베이스 및 컬렉션 이름을 지정합니다. 이 예에서는 다음과 같이 customers 데이터베이스의 purchases 컬렉션을 읽도록 커넥터를 구성할 수 있습니다.

database=customers
collection=purchases

collection의 샘플 고객 데이터 문서에는 다음 정보가 포함되어 있습니다.

{
"name": "Zola",
"visits": [
{
"$date": "2021-07-25T17:30:00.000Z"
},
{
"$date": "2021-10-03T14:06:00.000Z"
}
],
"goods_purchased": {
"apples": 1,
"bananas": 10
}
}

샘플 문서에서 스키마가 다음 데이터 유형을 사용하여 필드를 표시해야 하는지 결정합니다.

필드 이름
데이터 유형
설명
이름
Name of the customer
방문
고객이 방문한 날짜
goods_purchased
지도 string (가정된 유형)을 정수 로 values
상품 이름 및 고객이 구매한 각 품목의 수량

아래 예시 스키마에 표시된 것처럼 Apache Avro 스키마 형식을 사용하여 데이터를 설명할 수 있습니다.

{
"type": "record",
"name": "Customer",
"fields": [{
"name": "name",
"type": "string"
},{
"name": "visits",
"type": {
"type": "array",
"items": {
"type": "long",
"logicalType": "timestamp-millis"
}
}
},{
"name": "goods_purchased",
"type": {
"type": "map",
"values": "int"
}
}
]
}

중요

변환기

Avro 바이너리 인코딩을 사용하여 Apache Kafka를 통해 데이터를 보내려면 Avro 변환기를 사용해야 합니다. 자세한 내용은 변환기 가이드를 참조하세요.

connector는 고객 데이터 문서와 문서를 설명하는 메타데이터를 Kafka 주제에 게시합니다. 다음 설정을 사용하여 기록의 fullDocument 필드에 포함된 문서 데이터만 포함하도록 connector를 설정할 수 있습니다.

publish.full.document.only=true

fullDocument필드에 대한 자세한 내용은 Change Streams 가이드를 참조하세요.

사용자 정의 스키마 connector 구성은 다음과 비슷해야 합니다:

connector.class=com.mongodb.kafka.connect.MongoSourceConnector
connection.uri=<your MongoDB connection URI>
database=customers
collection=purchases
publish.full.document.only=true
output.format.value=schema
output.schema.value={\"type\": \"record\", \"name\": \"Customer\", \"fields\": [{\"name\": \"name\", \"type\": \"string\"}, {\"name\": \"visits\", \"type\": {\"type\": \"array\", \"items\": {\"type\": \"long\", \"logicalType\": \"timestamp-millis\"}}}, {\"name\": \"goods_purchased\", \"type\": {\"type\": \"map\", \"values\": \"int\"}}]}
value.converter.schemas.enable=true
value.converter=org.apache.kafka.connect.json.JsonConverter
key.converter=org.apache.kafka.connect.storage.StringConverter

참고

포함된 스키마

이전 구성에서 Kafka Connect JSON Schema Converter는 메시지에 사용자 지정 스키마를 포함합니다. JSON Schema Converter에 대한 자세한 내용은 변환기 가이드를 참조하세요.

스키마 지정에 대한 자세한 내용은 스키마 적용 안내서를 참조하십시오.

돌아가기

기존 데이터 복사