เจชเฉ‡เจธเจผ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚ เจกเฉ‡เจฌเฉ‡เจœเจผเฉ€เจ…เจฎ - เจ…เจชเจพเจšเฉ‡ เจ•เจพเจซเจ•เจพ เจฒเจˆ เจธเฉ€เจกเฉ€เจธเฉ€

เจชเฉ‡เจธเจผ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚ เจกเฉ‡เจฌเฉ‡เจœเจผเฉ€เจ…เจฎ - เจ…เจชเจพเจšเฉ‡ เจ•เจพเจซเจ•เจพ เจฒเจˆ เจธเฉ€เจกเฉ€เจธเฉ€

เจฎเฉ‡เจฐเฉ‡ เจ•เฉฐเจฎ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ…เจ•เจธเจฐ เจจเจตเฉ‡เจ‚ เจคเจ•เจจเฉ€เจ•เฉ€ เจนเฉฑเจฒ / เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจ‰เจคเจชเจพเจฆเจพเจ‚ เจตเจฟเฉฑเจš เจ†เจ‰เจ‚เจฆเจพ เจนเจพเจ‚, เจœเจฟเจธ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฐเฉ‚เจธเฉ€ เจฌเฉ‹เจฒเจฃ เจตเจพเจฒเฉ‡ เจ‡เฉฐเจŸเจฐเจจเฉˆเจŸ เจคเฉ‡ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจนเฉˆ. เจ‡เจธ เจฒเฉ‡เจ– เจฆเฉ‡ เจจเจพเจฒ, เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจนเจพเจฒเฉ€เจ† เจ…เจญเจฟเจ†เจธ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจ…เจœเจฟเจนเฉ‡ เจชเจพเฉœเฉ‡ เจจเฉ‚เฉฐ เจญเจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจพเจ‚เจ—เจพ, เจœเจฆเฉ‹เจ‚ เจฎเฉˆเจจเฉ‚เฉฐ เจกเฉ€เจฌเฉ‡เจœเจผเฉ€เจ…เจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ‡เฉฑเจ• เจ•เจพเจซเจ•เจพ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจฆเฉ‹ เจชเฉเจฐเจธเจฟเฉฑเจง DBMSs (PostgreSQL เจ…เจคเฉ‡ MongoDB) เจคเฉ‹เจ‚ CDC เจ‡เจตเฉˆเจ‚เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฃ เจฒเจˆ เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจธเฉ€เฅค เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจ‡เจน เจธเจฎเฉ€เจ–เจฟเจ† เจฒเฉ‡เจ–, เจœเฉ‹ เจ•เจฟ เจ•เฉ€เจคเฉ‡ เจ—เจ เจ•เฉฐเจฎ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ‡เจ† เจนเฉˆ, เจฆเฉ‚เจœเจฟเจ†เจ‚ เจฒเจˆ เจฒเจพเจญเจฆเจพเจ‡เจ• เจนเฉ‹เจตเฉ‡เจ—เจพ.

เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจกเฉ€เจฌเฉ‡เจœเจผเฉ€เจ…เจฎ เจ…เจคเฉ‡ เจธเฉ€เจกเฉ€เจธเฉ€ เจ•เฉ€ เจนเฉˆ?

เจกเฉ€เจฌเฉ‡เจœเจผเฉ€เจ…เจฎ - เจธเฉ€เจกเฉ€เจธเฉ€ เจธเจพเจซเจŸเจตเฉ‡เจ…เจฐ เจธเจผเฉเจฐเฉ‡เจฃเฉ€ เจฆเจพ เจชเฉเจฐเจคเฉ€เจจเจฟเจงเฉ€ (เจกเจพเจŸเจพ เจคเจฌเจฆเฉ€เจฒเฉ€ เจ•เฉˆเจชเจšเจฐ เจ•เจฐเฉ‹), เจœเจพเจ‚ เจนเฉ‹เจฐ เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจตเฉฑเจ–-เจตเฉฑเจ– DBMSs เจฒเจˆ เจ•เจจเฉˆเจ•เจŸเจฐเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจนเฉˆ เจœเฉ‹ เจ…เจชเจพเจšเฉ‡ เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฆเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒ เจนเจจเฅค

เจ‡เจธ เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ, เจ…เจชเจพเจšเฉ‡ เจฒเจพเจˆเจธเฉˆเจ‚เจธ v2.0 เจ…เจงเฉ€เจจ เจฒเจพเจ‡เจธเฉฐเจธเจธเจผเฉเจฆเจพ เจ…เจคเฉ‡ Red Hat เจฆเฉเจ†เจฐเจพ เจธเจชเจพเจ‚เจธเจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ†เฅค เจตเจฟเจ•เจพเจธ 2016 เจคเฉ‹เจ‚ เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจ‡เจน เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ DBMS เจฒเจˆ เจ…เจงเจฟเจ•เจพเจฐเจค เจธเจนเจพเจ‡เจคเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ: MySQL, PostgreSQL, MongoDB, SQL เจธเจฐเจตเจฐเฅค เจ•เฉˆเจธเฉˆเจ‚เจกเจฐเจพ เจ…เจคเฉ‡ เจ“เจฐเฉ‡เจ•เจฒ เจฒเจˆ เจตเฉ€ เจ•เจจเฉˆเจ•เจŸเจฐ เจนเจจ, เจชเจฐ เจ‰เจน เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš "เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจชเจนเฉเฉฐเจš" เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจนเจจ, เจ…เจคเฉ‡ เจจเจตเฉ‡เจ‚ เจฐเฉ€เจฒเฉ€เจœเจผ เจชเจฟเจ›เฉœเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพ เจฆเฉ€ เจ—เจฐเฉฐเจŸเฉ€ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจเฅค

เจœเฉ‡ เจ…เจธเฉ€เจ‚ เจธเฉ€เจกเฉ€เจธเฉ€ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจฐเจตเจพเจ‡เจคเฉ€ เจชเจนเฉเฉฐเจš เจจเจพเจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ (เจœเจฆเฉ‹เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจฟเฉฑเจงเฉ‡ DBMS เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจชเฉœเฉเจนเจฆเฉ€ เจนเฉˆ), เจคเจพเจ‚ เจ‡เจธเจฆเฉ‡ เจฎเฉเฉฑเจ– เจซเจพเจ‡เจฆเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ˜เฉฑเจŸ เจฒเฉ‡เจŸเฉˆเจ‚เจธเฉ€, เจ‰เฉฑเจš เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ—เจคเจพ เจ…เจคเฉ‡ เจ‰เจชเจฒเจฌเจงเจคเจพ เจฆเฉ‡ เจจเจพเจฒ เจ•เจคเจพเจฐ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจกเฉ‡เจŸเจพ เจคเจฌเจฆเฉ€เจฒเฉ€ เจธเจŸเฉเจฐเฉ€เจฎเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจธเจผเจพเจฎเจฒ เจนเฉˆเฅค เจ†เจ–เจฐเฉ€ เจฆเฉ‹ เจชเฉเจ†เจ‡เฉฐเจŸ CDC เจ‡เจตเฉˆเจ‚เจŸเจธ เจฒเจˆ เจ‡เฉฑเจ• เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจœเฉ‹เจ‚ เจ•เจพเจซเจ•เจพ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค

เจจเจพเจฒ เจนเฉ€, เจซเจพเจ‡เจฆเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ‡เจน เจคเฉฑเจฅ เจธเจผเจพเจฎเจฒ เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจฎเจพเจกเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ‡เจตเฉˆเจ‚เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ…เฉฐเจคเจฟเจฎ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– DBMS เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€เจ†เจ‚ เจธเฉ‚เจ–เจฎเจคเจพเจตเจพเจ‚ เจฌเจพเจฐเฉ‡ เจšเจฟเฉฐเจคเจพ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจธเฉเจจเฉ‡เจนเจพ เจฌเฉเจฐเฉ‹เจ•เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจจเจพเจฒ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจนเจฐเฉ€เจœเฉฑเจŸเจฒ เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— เจฆเฉ€ เจ—เฉเฉฐเจœเจพเจ‡เจธเจผ เจ–เฉเฉฑเจฒเฉเจน เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจกเฉ‡เจŸเจพ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจŸเจฐเฉˆเจ• เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจกเจพเจŸเจพ เจธเจฐเฉ‹เจค 'เจคเฉ‡ เจชเฉเจฐเจญเจพเจต เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจกเฉ‡เจŸเจพ เจธเจฟเฉฑเจงเฉ‡ DBMS เจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚, เจชเจฐ เจ•เจพเจซเจ•เจพ เจ•เจฒเฉฑเจธเจŸเจฐ เจคเฉ‹เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจกเฉ‡เจฌเฉ‡เจœเจผเฉ€เจ…เจฎ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฌเจพเจฐเฉ‡

Debezium เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจ‡เจธ เจธเจงเจพเจฐเจจ เจธเจ•เฉ€เจฎ 'เจคเฉ‡ เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ:

DBMS (เจกเจพเจŸเจพ เจธเจฐเฉ‹เจค เจตเจœเฉ‹เจ‚) โ†’ เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจ•เจจเฉˆเจ•เจŸเจฐ โ†’ เจ…เจชเจพเจšเฉ‡ เจ•เจพเจซเจ•เจพ โ†’ เจ–เจชเจคเจ•เจพเจฐ

เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, เจฎเฉˆเจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเฉˆเจฌเจธเจพเจˆเจŸ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡เจตเจพเจ‚เจ—เจพ:

เจชเฉ‡เจธเจผ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚ เจกเฉ‡เจฌเฉ‡เจœเจผเฉ€เจ…เจฎ - เจ…เจชเจพเจšเฉ‡ เจ•เจพเจซเจ•เจพ เจฒเจˆ เจธเฉ€เจกเฉ€เจธเฉ€

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจน เจธเจ•เฉ€เจฎ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจชเจธเฉฐเจฆ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ• เจ•เจจเฉˆเจ•เจŸเจฐ เจธเฉฐเจญเจต เจนเฉˆ.

เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, เจธเจฅเจฟเจคเฉ€ เจตเฉฑเจ–เจฐเฉ€ เจนเฉˆ: เจคเฉเจนเจพเจกเฉ€ เจกเฉ‡เจŸเจพ เจเฉ€เจฒ เจจเฉ‚เฉฐ เจญเจฐเจจเจพ (เจ‰เจชเจฐเฉ‹เจ•เจค เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจ†เจ–เจฐเฉ€ เจฒเจฟเฉฐเจ•) Debezium เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ•เฉ‹ เจ‡เฉฑเจ• เจคเจฐเฉ€เจ•เจพ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ…เจชเจพเจšเฉ‡ เจ•เจพเจซเจ•เจพ เจจเฉ‚เฉฐ เจญเฉ‡เจœเฉ‡ เจ—เจ เจ‡เจตเฉˆเจ‚เจŸเจธ เจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจตเฉฑเจ–-เจตเฉฑเจ– เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจฃ เจฒเจˆ:

  • เจ•เฉˆเจธเจผ เจคเฉ‹เจ‚ เจ…เจชเฉเจฐเจธเฉฐเจ—เจฟเจ• เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจนเจŸเจพเจ‰เจฃเจพ;
  • เจธเฉ‚เจšเจจเจพเจตเจพเจ‚ เจญเฉ‡เจœเจฃเจพ;
  • เจ–เฉ‹เจœ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจ…เฉฑเจชเจกเฉ‡เจŸ;
  • เจ•เฉเจ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจ†เจกเจฟเจŸ เจฒเฉŒเจ—;
  • ...

เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจœเจพเจตเจพ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉˆ เจ…เจคเฉ‡ เจ•เจพเจซเจ•เจพ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ/เจธเฉฐเจญเจพเจตเจจเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธ เจฐเจพเจนเฉ€เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจตเฉ€ เจนเฉˆ เจเจฎเจฌเฉˆเจกเจก เจ•เจจเฉˆเจ•เจŸเจฐ. เจธเจชเฉฑเจธเจผเจŸ เจชเจฒเฉฑเจธ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ‡เจธเจฆเฉ‡ เจจเจพเจฒ เจคเฉเจธเฉ€เจ‚ เจตเจพเจงเฉ‚ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ (เจ‡เฉฑเจ• เจ•เจจเฉˆเจ•เจŸเจฐ เจ…เจคเฉ‡ เจ•เจพเจซเจ•เจพ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš) เจคเฉ‹เจ‚ เจ‡เจจเจ•เจพเจฐ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹. เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจนเฉฑเจฒ เจธเฉฐเจธเจ•เจฐเจฃ 1.1 เจคเฉ‹เจ‚ เจฌเจฐเจคเจฐเจซเจผ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจนเฉเจฃ เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ เจธเจฟเจซเจพเจฐเจธเจผ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ (เจ‡เจธ เจจเฉ‚เฉฐ เจญเจตเจฟเฉฑเจ– เจฆเฉ‡ เจฐเฉ€เจฒเฉ€เจœเจผเจพเจ‚ เจตเจฟเฉฑเจš เจนเจŸเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ)เฅค

เจ‡เจน เจฒเฉ‡เจ– เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เฉ€เจคเฉ‡ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเฉ€ เจšเจฐเจšเจพ เจ•เจฐเฉ‡เจ—เจพ, เจœเฉ‹ เจ•เจฟ เจจเฉเจ•เจธ เจธเจนเจฟเจฃเจธเจผเฉ€เจฒเจคเจพ เจ…เจคเฉ‡ เจฎเจพเจชเจฏเฉ‹เจ—เจคเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ•เจจเฉˆเจ•เจŸเจฐ เจธเฉฐเจฐเจšเจจเจพ

เจธเจญ เจคเฉ‹เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจฎเฉเฉฑเจฒ - เจกเฉ‡เจŸเจพ - เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจŸเจฐเฉˆเจ• เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจนเฉˆ:

  1. เจกเฉ‡เจŸเจพ เจธเฉเจฐเฉ‹เจค, เจœเฉ‹ เจ•เจฟ เจตเจฐเจœเจจ 5.7, PostgreSQL 9.6+, MongoDB 3.2+ เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹ เจ•เฉ‡ MySQL เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ (เจชเฉ‚เจฐเฉ€ เจธเฉ‚เจšเฉ€);
  2. เจ…เจชเจพเจšเฉ‡ เจ•เจพเจซเจ•เจพ เจ•เจฒเฉฑเจธเจŸเจฐ
  3. เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ เจ‰เจฆเจพเจนเจฐเจจ (เจตเจฐเจœเจจ 1.x, 2.x);
  4. เจกเจฟเจฌเฉ‡เจœเจผเฉ€เจ…เจฎ เจ•เจจเฉˆเจ•เจŸเจฐ เจจเฉ‚เฉฐ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพเฅค

เจชเจนเจฟเจฒเฉ‡ เจฆเฉ‹ เจฌเจฟเฉฐเจฆเฉ‚เจ†เจ‚ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเฉ‹, เจฏเจพเจจเฉ€. เจกเฉ€เจฌเฉ€เจเจฎเจเจธ เจ…เจคเฉ‡ เจ…เจชเจพเจšเฉ‡ เจ•เจพเจซเจ•เจพ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฒเฉ‡เจ– เจฆเฉ‡ เจฆเจพเจ‡เจฐเฉ‡ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจœเฉ‹ เจ‡เฉฑเจ• เจธเฉˆเจ‚เจกเจฌเฉŒเจ•เจธ เจตเจฟเฉฑเจš เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจคเฉˆเจจเจพเจค เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ…เจงเจฟเจ•เจพเจฐเจค เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจคเจฟเจ†เจฐ-เจฌเจฃเจพเจ‡เจ† เจนเฉˆ docker-compose.yaml.

เจ…เจธเฉ€เจ‚ เจ†เจ–เจฐเฉ€ เจฆเฉ‹ เจฌเจฟเฉฐเจฆเฉ‚เจ†เจ‚ 'เจคเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจตเจฟเจธเจฅเจพเจฐ เจจเจพเจฒ เจงเจฟเจ†เจจ เจฆเฉ‡เจตเจพเจ‚เจ—เฉ‡เฅค

0. เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ

เจ‡เฉฑเจฅเฉ‡ เจ…เจคเฉ‡ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจธเจพเจฐเฉ€เจ†เจ‚ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจกเฉ‡เจฌเฉ‡เจœเจผเฉ€เจ…เจฎ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจตเฉฐเจกเฉ‡ เจ—เจ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡ เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจš เจตเจฟเจšเจพเจฐเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ€เจ†เจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจชเจฒเฉฑเจ—เจ‡เจจ เจซเจพเจˆเจฒเจพเจ‚ (เจ•เจจเฉˆเจ•เจŸเจฐ) เจธเจผเจพเจฎเจฒ เจนเจจ เจ…เจคเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ เจธเฉฐเจฐเจšเจจเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ•เจจเจซเจฒเฉ‚เจเจ‚เจŸ เจคเฉ‹เจ‚ เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจ‡เจฐเจพเจฆเจพ เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจ•เจจเฉˆเจ•เจŸเจฐเจพเจ‚ เจฆเฉ‡ เจชเจฒเฉฑเจ—เจ‡เจจเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฟเฉฑเจš เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจจเจพ เจชเจตเฉ‡เจ—เจพเฅค plugin.path เจœเจพเจ‚ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเฉเจ†เจฐเจพ เจธเฉˆเฉฑเจŸ เจ•เจฐเฉ‹ CLASSPATH. เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ เจตเจฐเจ•เจฐ เจ…เจคเฉ‡ เจ•เจจเฉˆเจ•เจŸเจฐเจพเจ‚ เจฒเจˆ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ เจœเฉ‹ เจ•เจฟ เจตเจฐเจ•เจฐ เจธเจŸเจพเจฐเจŸ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจตเจœเฉ‹เจ‚ เจชเจพเจธ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ เจฒเจˆ เจตเฉ‡เจ–เฉ‹ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ.

เจ•เจจเฉˆเจ•เจŸเจฐ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš เจกเฉ‡เจฌเฉ€เจœเจผเจฎ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ‹ เจชเฉœเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ†เจ“ เจ‰เจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐเฉ‡เจ• 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเฉ€เจ:

1. เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพ

เจ…เจชเจพเจšเฉ‡ เจ•เจพเจซเจ•เจพ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจŸเฉเจฐเฉ€เจฎ เจ•เจฐเจจ เจฒเจˆ, เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจตเจฟเฉฑเจš เจ–เจพเจธ เจฎเจพเจชเจฆเฉฐเจก เจธเฉˆเฉฑเจŸ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ:

  • เจ•เจฒเฉฑเจธเจŸเจฐ เจ•เจจเฉˆเจ•เจธเจผเจจ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚,
  • เจตเจฟเจธเจผเจฟเจ†เจ‚ เจฆเฉ‡ เจจเจพเจฎ เจœเจฟเจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจš เจ•เจจเฉˆเจ•เจŸเจฐ เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจ–เฉเจฆ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€,
  • เจธเจฎเฉ‚เจน เจฆเจพ เจจเจพเจฎ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ•เจจเฉˆเจ•เจŸเจฐ เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆ (เจกเจฟเจธเจŸเฉเจฐเฉ€เจฌเจฟเจŠเจŸเจก เจฎเฉ‹เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš)เฅค

เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจ…เจงเจฟเจ•เจพเจฐเจค เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆ - เจ‡เจน เจ‰เจน เจนเฉˆ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจตเจฐเจคเจพเจ‚เจ—เฉ‡เฅค เจคเจพเจ‚ เจ†เจ“ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเฉ€เจ:

docker pull debezium/connect

เจ•เฉเจจเฉˆเจ•เจŸเจฐ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจฆเจพ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเฉˆเฉฑเจŸ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ:

  • BOOTSTRAP_SERVERS=kafka-1:9092,kafka-2:9092,kafka-3:9092 - เจ•เจฒเฉฑเจธเจŸเจฐ เจฎเฉˆเจ‚เจฌเจฐเจพเจ‚ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจธเฉ‚เจšเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจ•เจพเจซเจ•เจพ เจ•เจฒเฉฑเจธเจŸเจฐ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเฉ‚เจšเฉ€;
  • OFFSET_STORAGE_TOPIC=connector-offsets - เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจผเจพ เจœเจฟเฉฑเจฅเฉ‡ เจ•เฉเจจเฉˆเจ•เจŸเจฐ เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเฉˆ;
  • CONNECT_STATUS_STORAGE_TOPIC=connector-status - เจ•เจจเฉˆเจ•เจŸเจฐ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจผเจพ;
  • CONFIG_STORAGE_TOPIC=connector-config - เจ•เจจเฉˆเจ•เจŸเจฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจกเฉ‡เจŸเจพ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจผเจพ;
  • GROUP_ID=1 โ€” เจตเจฐเจ•เจฐเจพเจ‚ เจฆเฉ‡ เจธเจฎเฉ‚เจน เจฆเจพ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจœเจฟเจธ 'เจคเฉ‡ เจ•เจจเฉˆเจ•เจŸเจฐ เจŸเจพเจธเจ• เจจเฉ‚เฉฐ เจšเจฒเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ; เจกเจฟเจธเจŸเฉเจฐเฉ€เจฌเจฟเจŠเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจนเฉˆ (เจตเฉฐเจกเจฟเจ†) เจธเจผเจพเจธเจจ.

เจ…เจธเฉ€เจ‚ เจ‡เจนเจจเจพเจ‚ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

docker run 
  -e BOOTSTRAP_SERVERS='kafka-1:9092,kafka-2:9092,kafka-3:9092' 
  -e GROUP_ID=1 
  -e CONFIG_STORAGE_TOPIC=my_connect_configs 
  -e OFFSET_STORAGE_TOPIC=my_connect_offsets 
  -e STATUS_STORAGE_TOPIC=my_connect_statuses  debezium/connect:1.2

เจเจตเจฐเฉ‹ เจฌเจพเจฐเฉ‡ เจจเฉ‹เจŸ เจ•เจฐเฉ‹

เจกเจฟเจซเฉŒเจฒเจŸ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, Debezium JSON เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฒเจฟเจ–เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจธเฉˆเจ‚เจกเจฌเฉŒเจ•เจธ เจ…เจคเฉ‡ เจ˜เฉฑเจŸ เจฎเจพเจคเจฐเจพ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฒเจˆ เจธเจตเฉ€เจ•เจพเจฐเจฏเฉ‹เจ— เจนเฉˆ, เจชเจฐ เจญเจพเจฐเฉ€ เจฒเฉ‹เจก เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค JSON เจ•เจจเจตเจฐเจŸเจฐ เจฆเจพ เจ‡เฉฑเจ• เจตเจฟเจ•เจฒเจช เจนเฉˆ เจตเจฐเจคเจฆเฉ‡ เจนเฉ‹เจ เจธเฉเจจเฉ‡เจนเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฒเฉœเฉ€เจฌเฉฑเจง เจ•เจฐเจจเจพ Avro เจ‡เฉฑเจ• เจฌเจพเจˆเจจเจฐเฉ€ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš, เจœเฉ‹ เจ…เจชเจพเจšเฉ‡ เจ•เจพเจซเจ•เจพ เจตเจฟเฉฑเจš I/O เจธเจฌ-เจธเจฟเจธเจŸเจฎ เจ‰เฉฑเจคเฉ‡ เจฒเฉ‹เจก เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

Avro เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจธเจ•เฉ€เจฎเจพ-เจฐเจœเจฟเจธเจŸเจฐเฉ€ (เจธเจ•เฉ€เจฎเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ)เฅค เจ•เจจเจตเจฐเจŸเจฐ เจฒเจˆ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจฃเจ—เฉ‡:

name: CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL
value: http://kafka-registry-01:8081/
name: CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL
value: http://kafka-registry-01:8081/
name: VALUE_CONVERTER   
value: io.confluent.connect.avro.AvroConverter

เจเจตเจฐเฉ‹ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจตเฉ‡เจฐเจตเฉ‡ เจฒเฉ‡เจ– เจฆเฉ‡ เจฆเจพเจ‡เจฐเฉ‡ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจนเจจ - เจ…เฉฑเจ—เฉ‡, เจธเจชเจธเจผเจŸเจคเจพ เจฒเจˆ, เจ…เจธเฉ€เจ‚ JSON เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

2. เจ•เจจเฉˆเจ•เจŸเจฐ เจจเฉ‚เฉฐ เจ–เฉเจฆ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพ

เจนเฉเจฃ เจคเฉเจธเฉ€เจ‚ เจธเจฟเฉฑเจงเฉ‡ เจ•เจจเฉˆเจ•เจŸเจฐ เจฆเฉ€ เจธเฉฐเจฐเจšเจจเจพ 'เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจœเฉ‹ เจธเจฐเฉ‹เจค เจคเฉ‹เจ‚ เจกเจพเจŸเจพ เจชเฉœเฉเจนเฉ‡เจ—เจพเฅค

เจ†เจ‰ เจฆเฉ‹ DBMS เจฒเจˆ เจ•เจจเฉˆเจ•เจŸเจฐเจพเจ‚ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจตเฉ‡เจ–เฉ€เจ: PostgreSQL เจ…เจคเฉ‡ MongoDB, เจœเจฟเจธ เจฒเจˆ เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจ…เจจเฉเจญเจต เจนเฉˆ เจ…เจคเฉ‡ เจœเจฟเจธ เจฒเจˆ เจ…เฉฐเจคเจฐ เจนเจจ (เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ›เฉ‹เจŸเฉ‡, เจชเจฐ เจ•เฉเจ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ!)

เจธเฉฐเจฐเจšเจจเจพ เจฆเจพ เจตเจฐเจฃเจจ JSON เจจเฉ‹เจŸเฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจ‡เฉฑเจ• POST เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ 'เจคเฉ‡ เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

2.1 PostgreSQL

PostgreSQL เจฒเจˆ เจ•เจจเฉˆเจ•เจŸเจฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจจ:

{
  "name": "pg-connector",
  "config": {
    "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
    "plugin.name": "pgoutput",
    "database.hostname": "127.0.0.1",
    "database.port": "5432",
    "database.user": "debezium",
    "database.password": "definitelynotpassword",
    "database.dbname" : "dbname",
    "database.server.name": "pg-dev",
    "table.include.list": "public.(.*)",
    "heartbeat.interval.ms": "5000",
    "slot.name": "dbname_debezium",
    "publication.name": "dbname_publication",
    "transforms": "AddPrefix",
    "transforms.AddPrefix.type": "org.apache.kafka.connect.transforms.RegexRouter",
    "transforms.AddPrefix.regex": "pg-dev.public.(.*)",
    "transforms.AddPrefix.replacement": "data.cdc.dbname"
  }
}

เจ‡เจธ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจฌเจพเจ…เจฆ เจ•เจจเฉˆเจ•เจŸเจฐ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฆเจพ เจธเจฟเจงเจพเจ‚เจค เจ•เจพเจซเจผเฉ€ เจธเจงเจพเจฐเจจ เจนเฉˆ:

  • เจชเจนเจฟเจฒเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค 'เจคเฉ‡, เจ‡เจน เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจจเจฟเจฐเจงเจพเจฐเจค เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจœเฉเฉœเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเจจเฉˆเจชเจธเจผเจพเจŸ, เจ•เฉฐเจกเฉ€เจธเจผเจจเจฒ เจฆเฉ‡ เจจเจพเจฒ เจชเฉเจฐเจพเจชเจค เจกเฉ‡เจŸเจพ เจฆเจพ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเฉˆเฉฑเจŸ เจ•เจพเจซเจ•เจพ เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฃเจพ SELECT * FROM table_name.
  • เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€เจ•เจฐเจฃ เจชเฉ‚เจฐเจพ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ•เจจเฉˆเจ•เจŸเจฐ PostgreSQL WAL เจซเจพเจˆเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจฐเฉ€เจกเจฟเฉฐเจ— เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ‡ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจตเจฐเจคเฉ‡ เจ—เจ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฌเจพเจฐเฉ‡:

  • name โ€” เจ•เฉเจจเฉˆเจ•เจŸเจฐ เจฆเจพ เจจเจพเจฎ เจœเจฟเจธ เจฒเจˆ เจนเฉ‡เจ เจพเจ‚ เจตเจฐเจฃเจฟเจค เจธเฉฐเจฐเจšเจจเจพ เจตเจฐเจคเฉ€ เจ—เจˆ เจนเฉˆ; เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš, เจ‡เจน เจจเจพเจฎ เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ REST API เจฆเฉเจ†เจฐเจพ เจ•เจจเฉˆเจ•เจŸเจฐ (เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เจฃ / เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจ / เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจ เจฒเจˆ) เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ;
  • connector.class โ€” DBMS เจ•เจจเฉˆเจ•เจŸเจฐ เจ•เจฒเจพเจธ เจœเฉ‹ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเฉ‡ เจ•เฉเจจเฉˆเจ•เจŸเจฐ เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€;
  • plugin.name WAL เจซเจพเจˆเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจฒเจพเจœเจผเฉ€เจ•เจฒ เจกเฉ€เจ•เฉ‹เจกเจฟเฉฐเจ— เจฒเจˆ เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเจพ เจจเจพเจฎ เจนเฉˆเฅค เจšเฉเจฃเจจ เจฒเจˆ เจ‰เจชเจฒเจฌเจง เจนเฉˆ wal2json, decoderbuffs ะธ pgoutput. เจชเจนเจฟเจฒเฉ‡ เจฆเฉ‹ เจจเฉ‚เฉฐ DBMS เจตเจฟเฉฑเจš เจ‰เจšเจฟเจค เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจธเจฅเจพเจชเจจเจพ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ pgoutput PostgreSQL เจธเฉฐเจธเจ•เจฐเจฃ 10 เจ…เจคเฉ‡ เจ‰เฉฑเจš เจฒเจˆ เจตเจพเจงเฉ‚ เจนเฉ‡เจฐเจพเจซเฉ‡เจฐเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ;
  • database.* โ€” เจกเจพเจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจœเฉเฉœเจจ เจฒเจˆ เจตเจฟเจ•เจฒเจช, เจœเจฟเฉฑเจฅเฉ‡ database.server.name - เจ•เจพเจซเจ•เจพ เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจตเจฟเจธเจผเฉ‡ เจฆเจพ เจจเจพเจฎ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจตเจฐเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ PostgreSQL เจ‰เจฆเจพเจนเจฐเจฃ เจฆเจพ เจจเจพเจฎ;
  • table.include.list - เจŸเฉ‡เจฌเจฒ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ‚เจšเฉ€ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจŸเจฐเฉˆเจ• เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚; เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆ schema.table_name; เจจเจพเจฒ เจ‡เจ•เฉฑเจ เฉ‡ เจจเจนเฉ€เจ‚ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ table.exclude.list;
  • heartbeat.interval.ms - เจ…เฉฐเจคเจฐเจพเจฒ (เจฎเจฟเจฒเฉ€เจธเจ•เจฟเฉฐเจŸ เจตเจฟเฉฑเจš) เจœเจฟเจธ เจจเจพเจฒ เจ•เจจเฉˆเจ•เจŸเจฐ เจ‡เฉฑเจ• เจ–เจพเจธ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ เจฆเจฟเจฒ เจฆเฉ€ เจงเฉœเจ•เจฃ เจฆเฉ‡ เจธเฉเจจเฉ‡เจนเฉ‡ เจญเฉ‡เจœเจฆเจพ เจนเฉˆ;
  • heartbeat.action.query - เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€ เจœเฉ‹ เจนเจฐ เจฆเจฟเจฒ เจฆเฉ€ เจงเฉœเจ•เจฃ เจฆเจพ เจธเฉเจจเฉ‡เจนเจพ เจญเฉ‡เจœเจฃ เจตเฉ‡เจฒเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€ (เจตเจฟเจ•เจฒเจช เจธเฉฐเจธเจ•เจฐเจฃ 1.1 เจคเฉ‹เจ‚ เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ‡เจ† เจนเฉˆ);
  • slot.name โ€” เจฐเจฟเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจฒเจพเจŸ เจฆเจพ เจจเจพเจฎ เจœเฉ‹ เจ•เฉเจจเฉˆเจ•เจŸเจฐ เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ;
  • publication.name - เจจเจพเจฎ เจชเฉเจฐเจ•เจพเจธเจผเจจ PostgreSQL เจตเจฟเฉฑเจš เจœเฉ‹ เจ•เฉเจจเฉˆเจ•เจŸเจฐ เจตเจฐเจคเจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ‡เจน เจฎเฉŒเจœเฉ‚เจฆ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเจพเจ‚ Debezium เจ‡เจธเจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ‡เจ—เจพเฅค เจœเฉ‡เจ•เจฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจœเจฟเจธ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ, เจ•เฉ‹เจฒ เจ‡เจธ เจ•เจพเจฐเจตเจพเจˆ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ เจจเจนเฉ€เจ‚ เจนเจจ, เจคเจพเจ‚ เจ•เจจเฉˆเจ•เจŸเจฐ เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจจเจพเจฒ เจฌเจพเจนเจฐ เจ† เจœเจพเจตเฉ‡เจ—เจพ;
  • transforms เจ‡เจน เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจจเจฟเจธเจผเจพเจจเจพ เจตเจฟเจธเจผเฉ‡ เจฆเจพ เจจเจพเจฎ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฆเจฒเจฃเจพ เจนเฉˆ:
    • transforms.AddPrefix.type เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจจเจฟเจฏเจฎเจค เจธเจฎเฉ€เจ•เจฐเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡;
    • transforms.AddPrefix.regex - เจฎเจพเจธเจ• เจœเจฟเจธ เจฆเฉเจ†เจฐเจพ เจŸเฉ€เจšเฉ‡ เจฆเฉ‡ เจตเจฟเจธเจผเฉ‡ เจฆเจพ เจจเจพเจฎ เจฎเฉเฉœ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ;
    • transforms.AddPrefix.replacement - เจธเจฟเฉฑเจงเจพ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจฎเฉเฉœ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค

เจฆเจฟเจฒ เจฆเฉ€ เจงเฉœเจ•เจฃ เจ…เจคเฉ‡ เจชเจฐเจฟเจตเจฐเจคเจจ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ

เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจ•เจจเฉˆเจ•เจŸเจฐ เจนเจฐเฉ‡เจ• เจตเจšเจจเจฌเฉฑเจง เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจฒเจˆ เจ•เจพเจซเจ•เจพ เจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพ เจญเฉ‡เจœเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจธเฉ‡เจตเจพ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ เจ†เจชเจฃเจพ LSN (เจฒเฉŒเจ— เจธเฉ€เจ•เจตเฉˆเจ‚เจธ เจจเฉฐเจฌเจฐ) เจฒเจฟเจ–เจฆเจพ เจนเฉˆเฅค offset. เจชเจฐ เจ•เฉ€ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‡เจ•เจฐ เจ•เจจเฉˆเจ•เจŸเจฐ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจฒเจˆ เจธเฉฐเจฐเจšเจฟเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจชเจฐ เจ‡เจธเจฆเฉ‡ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจฆเจพ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจนเจฟเฉฑเจธเจพ (เจœเจฟเจธ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจ•เจฆเฉ‡-เจ•เจฆเจพเจˆเจ‚ เจ…เจชเจกเฉ‡เจŸ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ)?

  • เจ•เจจเฉˆเจ•เจŸเจฐ WAL เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจ เจ•เจฎเจฟเจŸเจพเจ‚ เจฆเจพ เจชเจคเจพ เจจเจนเฉ€เจ‚ เจฒเจ—เจพเจเจ—เจพ เจ‰เจนเจจเจพเจ‚ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจœเฉ‹ เจ‡เจน เจฎเจพเจจเฉ€เจŸเจฐ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  • เจ‡เจธ เจฒเจˆ, เจ‡เจน เจ†เจชเจฃเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจตเจฟเจธเจผเฉ‡ เจตเจฟเฉฑเจš เจœเจพเจ‚ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจฒเจพเจŸ เจตเจฟเฉฑเจš เจ…เจชเจกเฉ‡เจŸ เจจเจนเฉ€เจ‚ เจ•เจฐเฉ‡เจ—เจพเฅค
  • เจ‡เจน, เจฌเจฆเจฒเฉ‡ เจตเจฟเฉฑเจš, WAL เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจกเจฟเจธเจ• เจ‰เฉฑเจคเฉ‡ "เจธเจŸเฉฑเจ•" เจ•เจฐเจจ เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃ เจœเจพเจตเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจธเฉฐเจญเจพเจตเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจกเจฟเจธเจ• เจธเจชเฉ‡เจธ เจ–เจคเจฎ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพเฅค

เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‡ เจตเจฟเจ•เจฒเจช เจฌเจšเจพเจ… เจฒเจˆ เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจ. heartbeat.interval.ms ะธ heartbeat.action.query. เจœเฉ‹เฉœเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ‡เจนเจจเจพเจ‚ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจจเจพเจฒ เจนเจฐ เจตเจพเจฐ เจœเจฆเฉ‹เจ‚ เจฆเจฟเจฒ เจฆเฉ€ เจงเฉœเจ•เจฃ เจฆเจพ เจธเฉเจจเฉ‡เจนเจพ เจญเฉ‡เจœเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, LSN เจœเจฟเจธ 'เจคเฉ‡ เจ•เจจเฉˆเจ•เจŸเจฐ เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเฉˆ (เจฐเจฟเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจฒเจพเจŸ เจตเจฟเฉฑเจš) เจฒเจ—เจพเจคเจพเจฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน DBMS เจจเฉ‚เฉฐ WAL เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจนเจŸเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเฉ€ เจนเฉเจฃ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจตเจฟเจ•เจฒเจช เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฒเจˆ, เจตเฉ‡เจ–เฉ‹ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ.

เจ‡เจ• เจนเฉ‹เจฐ เจตเจฟเจ•เจฒเจช เจœเฉ‹ เจจเจœเจผเจฆเฉ€เจ•เฉ€ เจงเจฟเจ†เจจ เจฆเฉ‡ เจนเฉฑเจ•เจฆเจพเจฐ เจนเฉˆ transforms. เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เจน เจธเจนเฉ‚เจฒเจค เจ…เจคเฉ‡ เจธเฉเฉฐเจฆเจฐเจคเจพ เจฌเจพเจฐเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจนเฉˆ ...

เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, Debezium เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ€ เจจเจพเจฎเจ•เจฐเจจ เจจเฉ€เจคเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจตเจฟเจธเจผเฉ‡ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ: serverName.schemaName.tableName. เจ‡เจน เจนเจฎเฉ‡เจธเจผเจพ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจตเจฟเจ•เจฒเจช transforms เจฐเฉˆเจ—เฉ‚เจฒเจฐ เจธเจฎเฉ€เจ•เจฐเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจคเฉเจธเฉ€เจ‚ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ‚เจšเฉ€ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเฉ‡ เจ‡เจตเฉˆเจ‚เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ–เจพเจธ เจจเจพเจฎ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡ เจคเฉ‡ เจฐเฉ‚เจŸ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจธเจพเจกเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจงเฉฐเจจเจตเจพเจฆ transforms เจ‡เจน เจตเจพเจชเจฐเจฆเจพ เจนเฉˆ: เจŸเจฐเฉˆเจ• เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจคเฉ‹เจ‚ เจธเจพเจฐเฉ‡ CDC เจ‡เจตเฉˆเจ‚เจŸ เจจเจพเจฎ เจฆเฉ‡ เจจเจพเจฒ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ เจœเจพเจฃเจ—เฉ‡ data.cdc.dbname. เจจเจนเฉ€เจ‚ เจคเจพเจ‚ (เจ‡เจนเจจเจพเจ‚ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚), Debezium เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจซเจพเจฐเจฎ เจฆเฉ€ เจนเจฐเฉ‡เจ• เจธเจพเจฐเจฃเฉ€ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจผเจพ เจฌเจฃเจพเจตเฉ‡เจ—เจพ: pg-dev.public.<table_name>.

เจ•เจจเฉˆเจ•เจŸเจฐ เจธเฉ€เจฎเจพเจตเจพเจ‚

PostgreSQL เจฒเจˆ เจ•เจจเฉˆเจ•เจŸเจฐ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจตเจฐเจฃเจจ เจฆเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจ‡เจน เจ‡เจธเจฆเฉ‡ เจ•เฉฐเจฎ เจฆเฉ€เจ†เจ‚ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ / เจธเฉ€เจฎเจพเจตเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจจ เจฏเฉ‹เจ— เจนเฉˆ:

  1. PostgreSQL เจฒเจˆ เจ•เจจเฉˆเจ•เจŸเจฐ เจ•เจพเจฐเจœเจธเจผเฉ€เจฒเจคเจพ เจฒเจพเจœเจผเฉ€เจ•เจฒ เจกเฉ€เจ•เฉ‹เจกเจฟเฉฐเจ— เจฆเฉ€ เจงเจพเจฐเจจเจพ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ เจ‰เจน เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจฌเจฃเจคเจฐ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฒเจˆ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจŸเจฐเฉˆเจ• เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ (DDL) - เจ‡เจธเจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ, เจ‡เจน เจกเฉ‡เจŸเจพ เจตเจฟเจธเจผเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพ.
  2. เจ•เจฟเจ‰เจ‚เจ•เจฟ เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจฒเจพเจŸ เจตเจฐเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจ•เจจเฉˆเจ•เจŸเจฐ เจฆเจพ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจธเฉฐเจญเจต เจนเฉˆ เจธเจฟเจฐเจซ เจฎเจพเจธเจŸเจฐ DBMS เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆเฅค
  3. เจœเฉ‡เจ•เจฐ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจœเจฟเจธ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจ•เจจเฉˆเจ•เจŸเจฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจœเฉเฉœเจฆเจพ เจนเฉˆ, เจ•เฉ‹เจฒ เจธเจฟเจฐเจซเจผ-เจชเฉœเฉเจนเจจ เจฆเฉ‡ เจ…เจงเจฟเจ•เจพเจฐ เจนเจจ, เจคเจพเจ‚ เจชเจนเจฟเจฒเฉ‡ เจฒเจพเจ‚เจš เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเจธเจคเฉ€ เจ‡เฉฑเจ• เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจธเจฒเจพเจŸ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

เจ‡เฉฑเจ• เจธเฉฐเจฐเจšเจจเจพ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ€ เจœเจพ เจฐเจนเฉ€ เจนเฉˆ

เจคเจพเจ‚ เจ†เจ‰ เจ†เจชเจฃเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจ•เจจเฉˆเจ•เจŸเจฐ เจตเจฟเฉฑเจš เจฒเฉ‹เจก เจ•เจฐเฉ€เจ:

curl -i -X POST -H "Accept:application/json" 
  -H  "Content-Type:application/json"  http://localhost:8083/connectors/ 
  -d @pg-con.json

เจ…เจธเฉ€เจ‚ เจœเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจกเจพเจŠเจจเจฒเฉ‹เจก เจธเจซเจฒ เจธเฉ€ เจ…เจคเฉ‡ เจ•เจจเฉˆเจ•เจŸเจฐ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจ‡เจ†:

$ curl -i http://localhost:8083/connectors/pg-connector/status 
HTTP/1.1 200 OK
Date: Thu, 17 Sep 2020 20:19:40 GMT
Content-Type: application/json
Content-Length: 175
Server: Jetty(9.4.20.v20190813)

{"name":"pg-connector","connector":{"state":"RUNNING","worker_id":"172.24.0.5:8083"},"tasks":[{"id":0,"state":"RUNNING","worker_id":"172.24.0.5:8083"}],"type":"source"}

เจธเจผเจพเจจเจฆเจพเจฐ: เจ‡เจน เจธเฉˆเฉฑเจŸเจ…เฉฑเจช เจนเฉˆ เจ…เจคเฉ‡ เจœเจพเจฃ เจฒเจˆ เจคเจฟเจ†เจฐ เจนเฉˆเฅค เจ†เจ‰ เจนเฉเจฃ เจ‡เฉฑเจ• เจ–เจชเจคเจ•เจพเจฐ เจนเฉ‹เจฃ เจฆเจพ เจฆเจฟเจ–เจพเจตเจพ เจ•เจฐเฉ€เจ เจ…เจคเฉ‡ เจ•เจพเจซเจ•เจพ เจจเจพเจฒ เจœเฉเฉœเฉ€เจ, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ…เจธเฉ€เจ‚ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจเจ‚เจŸเจฐเฉ€ เจœเฉ‹เฉœเจฆเฉ‡ เจ…เจคเฉ‡ เจฌเจฆเจฒเจฆเฉ‡ เจนเจพเจ‚:

$ kafka/bin/kafka-console-consumer.sh 
  --bootstrap-server kafka:9092 
  --from-beginning 
  --property print.key=true 
  --topic data.cdc.dbname

postgres=# insert into customers (id, first_name, last_name, email) values (1005, 'foo', 'bar', '[email protected]');
INSERT 0 1
postgres=# update customers set first_name = 'egg' where id = 1005;
UPDATE 1

เจธเจพเจกเฉ‡ เจตเจฟเจธเจผเฉ‡ เจตเจฟเฉฑเจš, เจ‡เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจนเฉ‹เจตเฉ‡เจ—เจพ:

เจธเจพเจกเฉ‡ เจฌเจฆเจฒเจพเจ… เจฆเฉ‡ เจจเจพเจฒ เจฌเจนเฉเจค เจฒเฉฐเจฎเจพ JSON

{
"schema":{
"type":"struct",
"fields":[
{
"type":"int32",
"optional":false,
"field":"id"
}
],
"optional":false,
"name":"data.cdc.dbname.Key"
},
"payload":{
"id":1005
}
}{
"schema":{
"type":"struct",
"fields":[
{
"type":"struct",
"fields":[
{
"type":"int32",
"optional":false,
"field":"id"
},
{
"type":"string",
"optional":false,
"field":"first_name"
},
{
"type":"string",
"optional":false,
"field":"last_name"
},
{
"type":"string",
"optional":false,
"field":"email"
}
],
"optional":true,
"name":"data.cdc.dbname.Value",
"field":"before"
},
{
"type":"struct",
"fields":[
{
"type":"int32",
"optional":false,
"field":"id"
},
{
"type":"string",
"optional":false,
"field":"first_name"
},
{
"type":"string",
"optional":false,
"field":"last_name"
},
{
"type":"string",
"optional":false,
"field":"email"
}
],
"optional":true,
"name":"data.cdc.dbname.Value",
"field":"after"
},
{
"type":"struct",
"fields":[
{
"type":"string",
"optional":false,
"field":"version"
},
{
"type":"string",
"optional":false,
"field":"connector"
},
{
"type":"string",
"optional":false,
"field":"name"
},
{
"type":"int64",
"optional":false,
"field":"ts_ms"
},
{
"type":"string",
"optional":true,
"name":"io.debezium.data.Enum",
"version":1,
"parameters":{
"allowed":"true,last,false"
},
"default":"false",
"field":"snapshot"
},
{
"type":"string",
"optional":false,
"field":"db"
},
{
"type":"string",
"optional":false,
"field":"schema"
},
{
"type":"string",
"optional":false,
"field":"table"
},
{
"type":"int64",
"optional":true,
"field":"txId"
},
{
"type":"int64",
"optional":true,
"field":"lsn"
},
{
"type":"int64",
"optional":true,
"field":"xmin"
}
],
"optional":false,
"name":"io.debezium.connector.postgresql.Source",
"field":"source"
},
{
"type":"string",
"optional":false,
"field":"op"
},
{
"type":"int64",
"optional":true,
"field":"ts_ms"
},
{
"type":"struct",
"fields":[
{
"type":"string",
"optional":false,
"field":"id"
},
{
"type":"int64",
"optional":false,
"field":"total_order"
},
{
"type":"int64",
"optional":false,
"field":"data_collection_order"
}
],
"optional":true,
"field":"transaction"
}
],
"optional":false,
"name":"data.cdc.dbname.Envelope"
},
"payload":{
"before":null,
"after":{
"id":1005,
"first_name":"foo",
"last_name":"bar",
"email":"[email protected]"
},
"source":{
"version":"1.2.3.Final",
"connector":"postgresql",
"name":"dbserver1",
"ts_ms":1600374991648,
"snapshot":"false",
"db":"postgres",
"schema":"public",
"table":"customers",
"txId":602,
"lsn":34088472,
"xmin":null
},
"op":"c",
"ts_ms":1600374991762,
"transaction":null
}
}{
"schema":{
"type":"struct",
"fields":[
{
"type":"int32",
"optional":false,
"field":"id"
}
],
"optional":false,
"name":"data.cdc.dbname.Key"
},
"payload":{
"id":1005
}
}{
"schema":{
"type":"struct",
"fields":[
{
"type":"struct",
"fields":[
{
"type":"int32",
"optional":false,
"field":"id"
},
{
"type":"string",
"optional":false,
"field":"first_name"
},
{
"type":"string",
"optional":false,
"field":"last_name"
},
{
"type":"string",
"optional":false,
"field":"email"
}
],
"optional":true,
"name":"data.cdc.dbname.Value",
"field":"before"
},
{
"type":"struct",
"fields":[
{
"type":"int32",
"optional":false,
"field":"id"
},
{
"type":"string",
"optional":false,
"field":"first_name"
},
{
"type":"string",
"optional":false,
"field":"last_name"
},
{
"type":"string",
"optional":false,
"field":"email"
}
],
"optional":true,
"name":"data.cdc.dbname.Value",
"field":"after"
},
{
"type":"struct",
"fields":[
{
"type":"string",
"optional":false,
"field":"version"
},
{
"type":"string",
"optional":false,
"field":"connector"
},
{
"type":"string",
"optional":false,
"field":"name"
},
{
"type":"int64",
"optional":false,
"field":"ts_ms"
},
{
"type":"string",
"optional":true,
"name":"io.debezium.data.Enum",
"version":1,
"parameters":{
"allowed":"true,last,false"
},
"default":"false",
"field":"snapshot"
},
{
"type":"string",
"optional":false,
"field":"db"
},
{
"type":"string",
"optional":false,
"field":"schema"
},
{
"type":"string",
"optional":false,
"field":"table"
},
{
"type":"int64",
"optional":true,
"field":"txId"
},
{
"type":"int64",
"optional":true,
"field":"lsn"
},
{
"type":"int64",
"optional":true,
"field":"xmin"
}
],
"optional":false,
"name":"io.debezium.connector.postgresql.Source",
"field":"source"
},
{
"type":"string",
"optional":false,
"field":"op"
},
{
"type":"int64",
"optional":true,
"field":"ts_ms"
},
{
"type":"struct",
"fields":[
{
"type":"string",
"optional":false,
"field":"id"
},
{
"type":"int64",
"optional":false,
"field":"total_order"
},
{
"type":"int64",
"optional":false,
"field":"data_collection_order"
}
],
"optional":true,
"field":"transaction"
}
],
"optional":false,
"name":"data.cdc.dbname.Envelope"
},
"payload":{
"before":{
"id":1005,
"first_name":"foo",
"last_name":"bar",
"email":"[email protected]"
},
"after":{
"id":1005,
"first_name":"egg",
"last_name":"bar",
"email":"[email protected]"
},
"source":{
"version":"1.2.3.Final",
"connector":"postgresql",
"name":"dbserver1",
"ts_ms":1600375609365,
"snapshot":"false",
"db":"postgres",
"schema":"public",
"table":"customers",
"txId":603,
"lsn":34089688,
"xmin":null
},
"op":"u",
"ts_ms":1600375609778,
"transaction":null
}
}

เจฆเฉ‹เจตเจพเจ‚ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš, เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจตเจฟเฉฑเจš เจ‰เจธ เจฐเจฟเจ•เจพเจฐเจก เจฆเฉ€ เจ•เฉเฉฐเจœเฉ€ (PK) เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจฌเจฆเจฒเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจ…เจคเฉ‡ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเจพ เจธเจพเจฐ: เจฐเจฟเจ•เจพเจฐเจก เจชเจนเจฟเจฒเจพเจ‚ เจ•เฉ€ เจธเฉ€ เจ…เจคเฉ‡ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ•เฉ€ เจฌเจฃเจฟเจ†เฅค

  • เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเจš INSERT: เจชเจนเจฟเจฒเจพเจ‚ เจฎเฉเฉฑเจฒ (before) เจฌเจฐเจพเจฌเจฐ nullเจ‰เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจคเจฐ เจœเฉ‹ เจชเจพเจˆ เจ—เจˆ เจธเฉ€เฅค
  • เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเจš UPDATE: เจคเฉ‡ payload.before เจ•เจคเจพเจฐ เจฆเฉ€ เจชเจฟเจ›เจฒเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเฉ‡เจ–เจพเจˆ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจตเจฟเฉฑเจš payload.after - เจคเจฌเจฆเฉ€เจฒเฉ€ เจฆเฉ‡ เจคเฉฑเจค เจฆเฉ‡ เจจเจพเจฒ เจจเจตเจพเจ‚เฅค

2.2 เจฎเฉ‹เจ‚เจ—เฉ‹เจกเฉ€เจฌเฉ€

เจ‡เจน เจ•เจจเฉˆเจ•เจŸเจฐ เจฎเจฟเจ†เจฐเฉ€ MongoDB เจชเฉเจฐเจคเฉ€เจ•เฉเจฐเจฟเจคเฉ€ เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, DBMS เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจจเฉ‹เจก เจฆเฉ‡ เจ“เจชเจฒเฉŒเจ— เจคเฉ‹เจ‚ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉœเฉเจนเจฆเจพ เจนเฉˆเฅค

เจ‡เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ PgSQL เจฒเจˆ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจตเจฐเจฃเจฟเจค เจ•เจจเฉˆเจ•เจŸเจฐ เจฒเจˆ, เจ‡เฉฑเจฅเฉ‡ เจตเฉ€, เจชเจนเจฟเจฒเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค 'เจคเฉ‡, เจชเฉเจฐเจพเจ‡เจฎเจฐเฉ€ เจกเจพเจŸเจพ เจธเจจเฉˆเจชเจธเจผเจพเจŸ เจฒเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ•เจจเฉˆเจ•เจŸเจฐ เจ”เจชเจฒเฉŒเจ— เจฐเฉ€เจกเจฟเฉฐเจ— เจฎเฉ‹เจก 'เจคเฉ‡ เจธเจตเจฟเจš เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจธเฉฐเจฐเจšเจจเจพ เจ‰เจฆเจพเจนเจฐเจจ:

{
"name": "mp-k8s-mongo-connector",
"config": {
"connector.class": "io.debezium.connector.mongodb.MongoDbConnector",
"tasks.max": "1",
"mongodb.hosts": "MainRepSet/mongo:27017",
"mongodb.name": "mongo",
"mongodb.user": "debezium",
"mongodb.password": "dbname",
"database.whitelist": "db_1,db_2",
"transforms": "AddPrefix",
"transforms.AddPrefix.type": "org.apache.kafka.connect.transforms.RegexRouter",
"transforms.AddPrefix.regex": "mongo.([a-zA-Z_0-9]*).([a-zA-Z_0-9]*)",
"transforms.AddPrefix.replacement": "data.cdc.mongo_$1"
}
}

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจตเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจชเจฟเจ›เจฒเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจ•เฉ‹เจˆ เจจเจตเฉ‡เจ‚ เจตเจฟเจ•เจฒเจช เจจเจนเฉ€เจ‚ เจนเจจ, เจชเจฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจœเฉเฉœเจจ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ…เจ—เฉ‡เจคเจฐ เจจเฉ‚เฉฐ เจ˜เจŸเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ transforms เจ‡เจธ เจตเจพเจฐ เจ‰เจน เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ: เจธเจ•เฉ€เจฎ เจคเฉ‹เจ‚ เจŸเฉ€เจšเฉ‡ เจฆเฉ‡ เจตเจฟเจธเจผเฉ‡ เจฆเจพ เจจเจพเจฎ เจฌเจฆเจฒเฉ‹ <server_name>.<db_name>.<collection_name> ะฒ data.cdc.mongo_<db_name>.

เจจเฉเจ•เจธ เจธเจนเจฟเจฃเจธเจผเฉ€เจฒเจคเจพ

เจธเจพเจกเฉ‡ เจธเจฎเฉ‡เจ‚ เจตเจฟเฉฑเจš เจจเฉเจ•เจธ เจธเจนเจฟเจฃเจธเจผเฉ€เจฒเจคเจพ เจ…เจคเฉ‡ เจ‰เฉฑเจš เจ‰เจชเจฒเจฌเจงเจคเจพ เจฆเจพ เจฎเฉเฉฑเจฆเจพ เจชเจนเจฟเจฒเจพเจ‚ เจจเจพเจฒเฉ‹เจ‚ เจตเจงเฉ‡เจฐเฉ‡ เจ—เฉฐเจญเฉ€เจฐ เจนเฉˆ - เจ–เจพเจธ เจ•เจฐเจ•เฉ‡ เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจกเฉ‡เจŸเจพ เจ…เจคเฉ‡ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจกเฉ‡เจŸเจพ เจชเจฐเจฟเจตเจฐเจคเจจ เจŸเจฐเฉˆเจ•เจฟเฉฐเจ— เจ‡เจธ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš เจชเจพเจธเฉ‡ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ†เจ“ เจฆเฉ‡เจ–เฉ€เจ เจ•เจฟ เจธเจฟเจงเจพเจ‚เจคเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉ€ เจ—เจฒเจค เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจนเจฐเฉ‡เจ• เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš เจกเฉ‡เจฌเฉ‡เจœเจผเฉ€เจ…เจฎ เจฆเจพ เจ•เฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพ.

เจคเจฟเฉฐเจจ เจ”เจชเจŸ-เจ†เจŠเจŸ เจตเจฟเจ•เจฒเจช เจนเจจ:

  1. เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ เจ…เจธเจซเจฒเจคเจพ. เจœเฉ‡เจ•เจฐ เจ•เจจเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจŸเจก เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธ เจฒเจˆ เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจ•เจฐเจฎเจšเจพเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ group.id เจธเฉˆเฉฑเจŸ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจซเจฟเจฐ, เจœเฉ‡เจ•เจฐ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจ…เจธเจซเจฒ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ•เจจเฉˆเจ•เจŸเจฐ เจจเฉ‚เฉฐ เจฆเฉ‚เจœเฉ‡ เจ•เจฐเจฎเจšเจพเจฐเฉ€ 'เจคเฉ‡ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจ•เจพเจซเจ•เจพ เจตเจฟเฉฑเจš เจตเจฟเจธเจผเฉ‡ เจตเจฟเฉฑเจš เจ†เจ–เจฐเฉ€ เจชเฉเจฐเจคเฉ€เจฌเฉฑเจง เจธเจฅเจฟเจคเฉ€ เจคเฉ‹เจ‚ เจชเฉœเฉเจนเจจเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค
  2. เจ•เจพเจซเจ•เจพ เจ•เจฒเฉฑเจธเจŸเจฐ เจจเจพเจฒ เจธเฉฐเจชเจฐเจ• เจฆเจพ เจจเฉเจ•เจธเจพเจจ. เจ•เจจเฉˆเจ•เจŸเจฐ เจธเจฟเจฐเจซเจผ เจ‰เจธ เจธเจฅเจฟเจคเฉ€ 'เจคเฉ‡ เจชเฉœเฉเจนเจจเจพ เจฌเฉฐเจฆ เจ•เจฐ เจฆเฉ‡เจตเฉ‡เจ—เจพ เจœเจฟเจธ เจจเฉ‚เฉฐ เจ‡เจน เจ•เจพเจซเจ•เจพ เจจเฉ‚เฉฐ เจญเฉ‡เจœเจฃ เจตเจฟเฉฑเจš เจ…เจธเจซเจฒ เจฐเจฟเจนเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเจฎเฉ‡เจ‚-เจธเจฎเฉ‡เจ‚ 'เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจญเฉ‡เจœเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ‡เจ—เจพ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ•เฉ‹เจธเจผเจฟเจธเจผ เจธเจซเจฒ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€เฅค
  3. เจกเจพเจŸเจพ เจธเจฐเฉ‹เจค เจ‰เจชเจฒเจฌเจง เจจเจนเฉ€เจ‚ เจนเฉˆ. เจ•เจจเฉˆเจ•เจŸเจฐ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจธเจฐเฉ‹เจค เจจเจพเจฒ เจฎเฉเฉœ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ‡เจ—เจพเฅค เจชเฉ‚เจฐเจต-เจจเจฟเจฐเจงเจพเจฐเจค เจนเฉˆ 16 เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ˜เจพเจคเจ• เจฌเฉˆเจ•เจ†เจซ. 16เจตเฉ€เจ‚ เจ…เจธเจซเจฒ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ•เจพเจฐเจœ เจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจšเจฟเฉฐเจจเฉเจนเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ เจซเฉ‡เจฒเฉเจน เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ REST เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจฆเฉเจ†เจฐเจพ เจฎเฉˆเจจเฉ‚เจ…เจฒเฉ€ เจฐเฉ€เจธเจŸเจพเจฐเจŸ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค
    • เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเจš PostgreSQL เจกเจพเจŸเจพ เจ–เจคเจฎ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฐเจฟเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจฒเจพเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจพเจฒ เจ•เจจเฉˆเจ•เจŸเจฐ เจฆเฉเจ†เจฐเจพ เจชเฉœเฉเจนเฉ€เจ†เจ‚ เจจเจนเฉ€เจ‚ เจ—เจˆเจ†เจ‚ WAL เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฐเฉ‹เจ•เจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจจเจจเฉเจ•เจธเจพเจจ เจนเฉˆ: เจœเฉ‡ เจ•เจจเฉˆเจ•เจŸเจฐ เจ…เจคเฉ‡ เจกเฉ€เจฌเฉ€เจเจฎเจเจธ เจตเจฟเจšเจ•เจพเจฐ เจจเฉˆเจŸเจตเจฐเจ• เจ•เจจเฉˆเจ•เจŸเฉ€เจตเจฟเจŸเฉ€ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจฒเจˆ เจตเจฟเจ˜เจจ เจชเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‡เฉฑเจ• เจธเฉฐเจญเจพเจตเจจเจพ เจนเฉˆ เจ•เจฟ เจกเจฟเจธเจ• เจธเจชเฉ‡เจธ เจ–เจคเจฎ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เฉ€, เจ…เจคเฉ‡ เจ‡เจธ เจจเจพเจฒ เจชเฉ‚เจฐเฉ‡ เจกเฉ€เจฌเฉ€เจเจฎเจเจธ เจฆเฉ€ เจ…เจธเจซเจฒเจคเจพ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค
    • เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเจš MySQL เจ•เจจเฉˆเจ•เจŸเฉ€เจตเจฟเจŸเฉ€ เจฐเฉ€เจธเจŸเฉ‹เจฐ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจฌเจฟเจจเจฒเฉŒเจ— เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ–เฉเจฆ DBMS เจฆเฉเจ†เจฐเจพ เจ˜เฉเฉฐเจฎเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจ•เจจเฉˆเจ•เจŸเจฐ เจจเฉ‚เฉฐ เจ…เจธเจซเจฒ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจœเจพเจฃ เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃเฉ‡เจ—เจพ, เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ†เจฎ เจ•เจพเจฐเจตเจพเจˆ เจจเฉ‚เฉฐ เจฌเจนเจพเจฒ เจ•เจฐเจจ เจฒเจˆ เจฌเจฟเจจเจฒเฉŒเจ—เจธ เจคเฉ‹เจ‚ เจชเฉœเฉเจนเจจเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฃ เจฒเจˆ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเจจเฉˆเจชเจธเจผเจพเจŸ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค
    • 'เจคเฉ‡ MongoDB. เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจตเจฟเฉฑเจš เจ•เจฟเจนเจพ เจ—เจฟเจ† เจนเฉˆ: เจฒเฉŒเจ—/เจ“เจชเจฒเฉŒเจ— เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพ เจฆเจฟเฉฑเจคเฉ‡ เจœเจพเจฃ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจ•เจจเฉˆเจ•เจŸเจฐ เจฆเจพ เจตเจฟเจตเจนเจพเจฐ เจ…เจคเฉ‡ เจ•เจจเฉˆเจ•เจŸเจฐ เจ‰เจธ เจธเจฅเจฟเจคเฉ€ เจคเฉ‹เจ‚ เจชเฉœเฉเจนเจจเจพ เจœเจพเจฐเฉ€ เจจเจนเฉ€เจ‚ เจฐเฉฑเจ– เจธเจ•เจฆเจพ เจœเจฟเฉฑเจฅเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ›เฉฑเจกเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจธเจพเจฐเฉ‡ DBMS เจฒเจˆ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเจพ เจนเฉˆเฅค เจ‡เจน เจ‡เจธ เจคเฉฑเจฅ เจตเจฟเฉฑเจš เจนเฉˆ เจ•เจฟ เจ•เจจเฉˆเจ•เจŸเจฐ เจฐเจพเจœ เจตเจฟเฉฑเจš เจœเจพเจตเฉ‡เจ—เจพ เจซเฉ‡เจฒเฉเจน เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเจจเฉˆเจชเจธเจผเจพเจŸ.

      เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ…เจชเจตเจพเจฆ เจนเจจ. เจœเฉ‡ เจ•เจจเฉˆเจ•เจŸเจฐ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจฒเจˆ เจกเจฟเจธเจ•เจจเฉˆเจ•เจŸ เจ•เฉ€เจคเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจธเฉ€ (เจœเจพเจ‚ เจฎเฉ‹เจ‚เจ—เฉ‹เจกเฉ€เจฌเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจคเฉฑเจ• เจจเจนเฉ€เจ‚ เจชเจนเฉเฉฐเจš เจธเจ•เจฟเจ†), เจ…เจคเฉ‡ เจ“เจชเจฒเฉŒเจ— เจจเฉ‚เฉฐ เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจฆเฉŒเจฐเจพเจจ เจ˜เฉเฉฐเจฎเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€, เจคเจพเจ‚ เจœเจฆเฉ‹เจ‚ เจ•เจจเฉˆเจ•เจธเจผเจจ เจฐเฉ€เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ•เจจเฉˆเจ•เจŸเจฐ เจธเจผเจพเจ‚เจค เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเฉ€ เจ‰เจชเจฒเจฌเจง เจธเจฅเจฟเจคเฉ€ เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เฉ‡เจ—เจพเฅค , เจ‡เจธเฉ‡ เจ•เจฐเจ•เฉ‡ เจ•เจพเจซเจ•เจพ เจตเจฟเฉฑเจš เจ•เฉเจ เจกเฉ‡เจŸเจพ เจจเจพ เจฎเจพเจฐเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ.

เจธเจฟเฉฑเจŸเจพ

เจกเฉ€เจฌเฉ‡เจœเจผเฉ€เจ…เจฎ CDC เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจจเจพเจฒ เจฎเฉ‡เจฐเจพ เจชเจนเจฟเจฒเจพ เจ…เจจเฉเจญเจต เจนเฉˆ เจ…เจคเฉ‡ เจธเจฎเฉเฉฑเจšเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจฌเจนเฉเจค เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจฐเจฟเจนเจพ เจนเฉˆเฅค เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‡ เจฎเฉเฉฑเจ– DBMS เจฆเฉ‡ เจธเจฎเจฐเจฅเจจ, เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจธเฉŒเจ–, เจ•เจฒเฉฑเจธเจŸเจฐเจฟเฉฐเจ— เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจธเจฐเจ—เจฐเจฎ เจญเจพเจˆเจšเจพเจฐเฉ‡ เจจเฉ‚เฉฐ เจฐเจฟเจธเจผเจตเจค เจฆเจฟเฉฑเจคเฉ€เฅค เจ…เจญเจฟเจ†เจธ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฃ เจตเจพเจฒเจฟเจ†เจ‚ เจฒเจˆ, เจฎเฉˆเจ‚ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฒเจˆ เจ—เจพเจˆเจกเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเฉ‹ เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ ะธ เจกเฉ€เจฌเฉ‡เจœเจผเฉ€เจ…เจฎ.

เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ เจฒเจˆ JDBC เจ•เจจเฉˆเจ•เจŸเจฐ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจตเจฟเฉฑเจš, Debezium เจฆเจพ เจฎเฉเฉฑเจ– เจซเจพเจ‡เจฆเจพ เจ‡เจน เจนเฉˆ เจ•เจฟ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ DBMS เจฒเฉŒเจ—เจธ เจคเฉ‹เจ‚ เจชเฉœเฉเจนเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจฆเฉ‡เจฐเฉ€ เจจเจพเจฒ เจกเจพเจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค JDBC เจ•เจจเฉˆเจ•เจŸเจฐ (เจ•เจพเจซเจ•เจพ เจ•เจจเฉˆเจ•เจŸ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ†) เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจฟเจค เจ…เฉฐเจคเจฐเจพเจฒ 'เจคเฉ‡ เจŸเฉเจฐเฉˆเจ• เจ•เฉ€เจคเฉ€ เจธเจพเจฐเจฃเฉ€ เจคเฉ‹เจ‚ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ (เจ‡เจธเฉ‡ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡) เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ เจœเจพเจฃ 'เจคเฉ‡ เจธเฉเจจเฉ‡เจนเฉ‡ เจจเจนเฉ€เจ‚ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ (เจคเฉเจธเฉ€เจ‚ เจ‰เจธ เจกเฉ‡เจŸเจพ เจฒเจˆ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเฉ‹ เจ‰เฉฑเจฅเฉ‡ เจจเจนเฉ€เจ‚ เจนเฉˆ?)เฅค

เจธเจฎเจพเจจ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจนเฉฑเจฒเจพเจ‚ (เจกเฉ‡เจฌเฉ‡เจœเจผเฉ€เจ…เจฎ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ) เจตเฉฑเจฒ เจงเจฟเจ†เจจ เจฆเฉ‡ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

PS

เจธเจพเจกเฉ‡ เจฌเจฒเฉŒเจ— 'เจคเฉ‡ เจตเฉ€ เจชเฉœเฉเจนเฉ‹:

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹