인프런 커뮤니티 질문&답변

준혁님의 프로필 이미지
준혁

작성한 질문수

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

connect 관련 질문

해결된 질문

작성

·

213

·

수정됨

0

안녕하세요 카프카 컨넥트 공부중 schema-registry, debezium 의 존재에 대해서 알게 되었습니다

  1. connect + schema-registry + debezium plugin 을 이용하면 source db에 실시간적으로 등록되는 데이터를 sink db 에 내가 원하는 포맷에 맞게 동기화 시켜주는 것으로 이해하였는데 맞는건가요?

  2. 이때 제가 이해한 바로는 카프카 connector, task를 직접 개발해서 jar 파일을 올리지않고 registry schema 에 avro 를 등록해주면 connector 에서 registry 에 등록된 avro 를 읽고 source db 에서 sink db 로 데이터가 동기화 되는건가요?

    1. 제가 생각한 예제 (col1, col2,col3 소스테이블에서 from_col1, from_col2 싱크테이블로 동기화)

      1. (source) col1[varchar], col2[int], col3[datetime]

      2. (sink) from_col1[varchar], from_col2[int]

  3. 만약 이게 아니라면 schema-registry 의 용도가 뭔지 알수 있을까요????

답변 2

0

데브원영 DVWY님의 프로필 이미지
데브원영 DVWY
지식공유자

안녕하세요. 답변드리겠습니다.

  1. 개별 connector의 상세 내역에 대해서는 확인하여 알려드리기 어렵습니다. 왜냐면 connector의 종류, 버전마다 모두 상이한 특징과 기능을 가지고 있기 때문입니다. 말씀하신 내용을 파악하시기 위해서는 https://debezium.io/ DOCS를 확인하시는 것을 추천드립니다.

  2. schema registry는 여러가지 포맷의 데이터를 직렬화/역직렬화 하는데 필요한 정보를 담는 플랫폼입니다. debizium은 해당 registry를 활용할 수 있는 것으로 알고 있지만, 개별 커넥터에 대한 문의는 마찬가지로 https://debezium.io/ DOCS를 확인하시는 것이 좋습니다.

  3. Schema Registry는 데이터 스키마 관리를 위한 시스템으로, 주로 복잡한 데이터 시스템에서 사용됩니다. 데이터 스키마(schema)란 데이터베이스나 파일 시스템에 저장된 데이터의 구조를 정의한 것을 의미합니다. 예를 들어, 어떤 데이터 필드가 있고, 각 필드의 데이터 타입이 무엇인지 등을 정의합니다. 관련한 상세 내용은 https://docs.confluent.io/platform/current/schema-registry/index.html를 참고해주세요.

0

안녕하세요, 인프런 AI 인턴입니다. 준혁님, 카프카 컨넥트와 관련된 질문에 대해 답변드리겠습니다.

  1. 네, 맞습니다. 카프카 컨넥트(Kafka Connect)에 스키마 레지스트리(Schema Registry)와 데베지움(Debezium) 플러그인을 이용하면 소스 데이터베이스의 변경 사항을 실시간으로 감지하고, 이를 원하는 포맷(Avro 등)으로 변환하여 싱크 데이터베이스로 동기화할 수 있습니다.

  2. 맞습니다. 스키마 레지스트리에 Avro 스키마를 등록하면 컨넥터가 이를 사용하여 데이터 형식을 관리할 수 있습니다. 컨넥터는 소스 데이터베이스에서 변경 사항을 감지하고, 스키마 레지스트리에 등록된 Avro 스키마를 이용해 데이터를 변환한 후, 이를 카프카 토픽에 퍼블리시합니다. 그런 다음 싱크 데이터베이스로 이 데이터를 동기화하게 됩니다.

    1. 예시로 든 경우와 같이 특정 컬럼을 선택해 다른 형태로 싱크 데이터베이스에 동기화하는 것도 가능합니다. 여기서 Avro 스키마는 소스 데이터베이스로부터 추출한 데이터의 구조를 정의하는 역할을 합니다.
  3. 스키마 레지스트리의 주요 용도는 데이터 프로듀서와 컨슈머間의 데이터 계약(Data contracts)을 정의하는 것입니다. 이를 통해 카프카로 쓰여진 이벤트가 항상 적절히 읽힐 수 있도록 보장하며, 잘못 형성되거나 손상된 이벤트가 작성되는 것을 방지합니다. 또한 스키마 진화, 모든 스키마의 히스토리 저장, 스키마 호환성 설정과 같은 기능을 제공할 수 있습니다.

자세한 내용은 Kafka 공식 문서에서 확인하실 수 있습니다:
- 스키마 레지스트리 및 데이터 계약: Further considerations
- 스트림 처리: Stream Processing

감사합니다. 준혁님의 카프카 공부에 도움이 되시길 바랍니다!

준혁님의 프로필 이미지
준혁

작성한 질문수

질문하기