2021/10/07 このエントリーをはてなブックマークに追加 はてなブックマーク - DebeziumのTutorialをチュートリアルする

DebeziumのTutorialをチュートリアルする

カテゴリ: ,

本来は個別指導、家庭教師、指導書などを意味する言葉で、パソコンの場合、特定のソフトやハードを初めて使う人向けに、機能や使い方の概要を教える機能を指します。 操作手順がアニメーション表示されたり、利用者が実際のソフトと同じ操作を画面上で練習できるなどの機能があります。

チュートリアルとは - コトバンク

僕はお笑いコンビの方も好きです。がそれはさておき


コレ
https://debezium.io/documentation/reference/tutorial.html

docker composeでやりたい場合はコレ
https://github.com/debezium/debezium-examples/tree/master/tutorial

RedHatの人がブログも書いてますね
https://rheb.hatenablog.com/entry/debezium-intro

〜 完 〜


一応どういうチュートリアルなのか、噛み砕きます。
というより、僕がこのチュートリアルを触ってみた感想と気になったところの説明のブログですね。これは。






dockerさえあれば確かめられる。podmanでも可。
Debezium側がサンプル用のimageを作ってくれているので以下を仕込んでいく

  • ZooKeeper
  • Kafka
  • MySQL
  • Kafka Connect(Debeziumのコネクタプラグイン同梱)

docker imageたちはこちらにあります

https://github.com/debezium/docker-images

composeしたものはこちら

https://github.com/debezium/debezium-examples/tree/master/tutorial


これはもうKafkaですよね。DebeziumはKafkaを前提としたツールというかライブラリです。厳密にはKafka ConnectのプラグインとしてDebeziumというものがあるという位置付けです(Source Connector)。
ここにも書いてある。
https://debezium.io/documentation/reference/features.html

アーキテクチャはこういうもの
https://debezium.io/documentation/reference/architecture.html


  • MySQLのbinlogをKafka Connectに登録されたDebezium MySQLコネクタでwatch
  • データベースに変更があった場合に検知し、Kafkaブローカーにイベントを送信

というココの部分です。


以下の形式でtopicが出来ます。超ざっくり言うと、KafkaのtopicはMQのqueueみたいな箱です。

  • ${db_sever_name}.${db_name}
  • ${db_sever_name}.${db_name}.${table_name}

このチュートリアルで言うと

DBサーバーは dbserver1、db(schema)は inventory。
テーブルはproducts、products_on_hand、customers、ordersなので以下のようなtopicが出来ます。

  • dbserver1
  • dbserver1.inventory.products
  • dbserver1.inventory.products_on_hand
  • dbserver1.inventory.customers
  • dbserver1.inventory.orders

つまり、例えば productsテーブルのCRUD操作のイベントをKafkaからサブスクライブしたい場合は dbserver1.inventory.products を見れば良いという感じです(注: CRUDと言ってもデータの変更検知なのでSELECTはイベント発火されない)。


アーキテクチャの図を見るとSinkとしてElasticsearchなど何らかのストレージ(と言って良いんだろうか)に書き込みを行う流れでしたが、このチュートリアルだとそもそもSinkConnectorを設定していないので変更イベントを書き込むことは無いですね。
単純にKafkaブローカーにconsumerのcliでアクセスしてデータ変更イベントのjsonを眺めているだけです。Kafka Connect用のElaticsearch Connector(sink)を仕込むことでDebeziumからKafkaを介してElaticsearchにJsonデータを投入できるなどが出来るようになります。


  • DebeziumはKafka Connectに乗っかっている
  • Kafkaのトピックはテーブル毎に出来る(テーブルの変更検知)
  • Kafkaのトピックはスキーマ用も出来る(DDLなどの変更検知)


https://debezium.io/documentation/reference/tutorial.html#starting-kafka-connect
https://docs.confluent.io/ja-jp/platform/6.0.1/connect/devguide.html#connect-devguide
https://github.com/debezium/debezium-examples/tree/master/tutorial



0 件のコメント:

コメントを投稿

GA