เด…เดชเตเดชเดพเดšเตเดšเต† เด•เดพเดซเตเด•เดฏเตเด•เตเด•เดพเดฏเดฟ เดกเต†เดฌเต†เดธเดฟเดฏเด‚ - เดธเดฟเดกเดฟเดธเดฟ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เด…เดชเตเดชเดพเดšเตเดšเต† เด•เดพเดซเตเด•เดฏเตเด•เตเด•เดพเดฏเดฟ เดกเต†เดฌเต†เดธเดฟเดฏเด‚ - เดธเดฟเดกเดฟเดธเดฟ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เดŽเดจเตเดฑเต† เดœเต‹เดฒเดฟเดฏเดฟเตฝ, เดžเดพเตป เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดชเตเดคเดฟเดฏ เดธเดพเด™เตเด•เต‡เดคเดฟเด• เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ / เดธเต‹เดซเตเดฑเตเดฑเตเดตเต†เดฏเตผ เด‰เตฝเดชเตเดชเดจเตเดจเด™เตเด™เตพ เด•เดพเดฃเดพเดฑเตเดฃเตเดŸเต, เดฑเดทเตเดฏเตป เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจ เด‡เดจเตเดฑเตผเดจเต†เดฑเตเดฑเดฟเตฝ เด‡เดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เด•เตเดฑเดตเดพเดฃเต. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเดฒเต‚เดŸเต†, เดŽเดจเตเดฑเต† เดธเดฎเต€เดชเด•เดพเดฒ เดชเดฐเดฟเดถเต€เดฒเดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดตเดฟเดŸเดตเต เดจเดฟเด•เดคเตเดคเดพเตป เดžเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚, เดฐเดฃเตเดŸเต เดœเดจเดชเตเดฐเดฟเดฏ DBMS-เด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต (PostgreSQL, MongoDB) Debezium เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เด•เดพเดซเตเด• เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต CDC เด‡เดตเดจเตเดฑเตเด•เตพ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเดคเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดฟ เดตเดจเตเดจเดชเตเดชเต‹เตพ. เดšเต†เดฏเตเดค เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต† เดซเดฒเดฎเดพเดฏเดฟ เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸ เดˆ เด…เดตเดฒเต‹เด•เดจ เดฒเต‡เด–เดจเด‚ เดฎเดฑเตเดฑเตเดณเตเดณเดตเตผเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเดฎเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

เดŽเดจเตเดคเดพเดฃเต เดกเดฟเดฌเต†เดธเดฟเดฏเดตเตเด‚ เดธเดฟเดกเดฟเดธเดฟเดฏเตเด‚ เดชเตŠเดคเตเดตเดพเดฏเดฟ?

เดกเต†เดฌเต†เดธเดฟเดฏเด‚ - CDC เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดจเตเดฑเต† เดชเตเดฐเดคเดฟเดจเดฟเดงเดฟ (เดกเดพเดฑเตเดฑ เดฎเดพเดฑเตเดฑเด‚ เด•เตเดฏเดพเดชเตเดšเตผ เดšเต†เดฏเตเดฏเตเด•), เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดชเดฑเดžเตเดžเดพเตฝ, เด…เดชเตเดชเดพเดšเตเดšเต† เด•เดพเดซเตเด• เด•เดฃเด•เตเดŸเต เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจ เดตเดฟเดตเดฟเดง DBMS-เด•เตพเด•เตเด•เดพเดฏเตเดณเตเดณ เด•เดฃเด•เตเดŸเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเดฎเดพเดฃเต เด‡เดคเต.

เดˆ เด“เดชเตเดชเตบ เดธเต‹เดดเตเดธเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต, เด…เดชเตเดชเดพเดšเตเดšเต† เดฒเตˆเดธเตปเดธเต v2.0 เดจเต เด•เต€เดดเดฟเตฝ เดฒเตˆเดธเตปเดธเตเดณเตเดณเดคเตเด‚ Red Hat เดธเตเดชเต‹เตบเดธเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเตเด‚. 2016 เดฎเตเดคเตฝ เดตเดฟเด•เดธเดจเด‚ เดจเดŸเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต, เด‡เดชเตเดชเต‹เตพ เด‡เดคเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ DBMS-เดจเต เด”เดฆเตเดฏเต‹เด—เดฟเด• เดชเดฟเดจเตเดคเตเดฃ เดจเตฝเด•เตเดจเตเดจเต: MySQL, PostgreSQL, MongoDB, SQL เดธเต†เตผเดตเตผ. เด•เดธเดพเดจเตเดฆเตเดฐเดฏเตเด•เตเด•เตเด‚ เด’เดฑเดพเด•เตเด•เดฟเดณเดฟเดจเตเด‚ เด•เดฃเด•เตเดŸเดฑเตเด•เตพ เด‰เดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เด…เดต เดจเดฟเดฒเดตเดฟเตฝ "เดเตผเดฒเดฟ เด†เด•เตโ€Œเดธเดธเต" เดจเดฟเดฒเดฏเดฟเดฒเดพเดฃเต, เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเตเด•เตพ เดชเดฟเดจเตเดจเดพเด•เตเด• เด…เดจเตเดฏเต‹เดœเตเดฏเดค เด‰เดฑเดชเตเดชเตเดจเตฝเด•เตเดจเตเดจเดฟเดฒเตเดฒ.

เดžเด™เตเด™เตพ เดธเดฟเดกเดฟเดธเดฟเดฏเต† เดชเดฐเดฎเตเดชเดฐเดพเด—เดค เดธเดฎเต€เดชเดจเดตเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ (เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดกเดฟเดฌเดฟเดŽเด‚เดŽเดธเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดตเดพเดฏเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ), เด•เตเดฑเดžเตเดž เดฒเต‡เดฑเตเดฑเตปเดธเดฟ, เด‰เดฏเตผเดจเตเดจ เดตเดฟเดถเตเดตเดพเดธเตเดฏเดค, เดฒเดญเตเดฏเดค เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเดฐเดฟ เดคเดฒเดคเตเดคเดฟเตฝ เดกเดพเดฑเตเดฑ เดฎเดพเดฑเตเดฑ เดธเตเดŸเตเดฐเต€เดฎเดฟเด‚เด—เต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดจเต‡เดŸเตเดŸเด™เตเด™เดณเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต. เดธเดฟเดกเดฟเดธเดฟ เด‡เดตเดจเตเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดถเต‡เด–เดฐเดฎเดพเดฏเดฟ เด•เดพเดซเตเด• เด•เตเดฒเดธเตเดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เด…เดตเดธเดพเดจ เดฐเดฃเตเดŸเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพ เดจเต‡เดŸเดฟเดฏเดคเต.

เด•เต‚เดŸเดพเดคเต†, เด‡เดตเดจเตเดฑเตเด•เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด’เดฐเตŠเดฑเตเดฑ เดฎเต‹เดกเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจ เดตเดธเตเดคเตเดคเดฏเตเด‚ เด—เตเดฃเด™เตเด™เดณเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดตเตเดฏเดคเตเดฏเดธเตเดค เดกเดฟเดฌเดฟเดŽเด‚เดŽเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดธเต‚เด•เตเดทเตเดฎเดคเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด…เดจเตเดคเดฟเดฎ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต เดตเดฟเดทเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ.

เด…เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เด’เดฐเต เดธเดจเตเดฆเต‡เดถ เดฌเตเดฐเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต† เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดŸเตเดฐเดพเด•เตเด•เตเดšเต†เดฏเตเดฏเตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเดŸเต† เดคเดฟเดฐเดถเตเดšเต€เดจ เดธเตเด•เต†เดฏเดฟเดฒเดฟเด‚เด—เดฟเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดค เดคเตเดฑเด•เตเด•เตเดจเตเดจเต. เด…เดคเต‡เดธเดฎเดฏเด‚, เดกเดฟเดฌเดฟเดŽเด‚เดŽเดธเดฟเตฝ เดจเดฟเดจเตเดจเดฒเตเดฒ, เด•เดพเดซเตเด• เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดกเดพเดฑเตเดฑ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดจเดคเดฟเดจเดพเตฝ, เดกเดพเดฑเตเดฑเดพ เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเดฒเต† เด†เด˜เดพเดคเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเต.

เดกเต†เดฌเต†เดธเดฟเดฏเด‚ เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต

Debezium เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดˆ เดฒเดณเดฟเดคเดฎเดพเดฏ เดธเตเด•เต€เดฎเดฟเดฒเต‡เด•เตเด•เต เดตเดฐเตเดจเตเดจเต:

DBMS (เดกเดพเดฑเตเดฑ เด‰เดฑเดตเดฟเดŸเดฎเดพเดฏเดฟ) โ†’ เด•เดพเดซเตเด• เด•เดฃเด•เตเดฑเตเดฑเดฟเดฒเต† เด•เดฃเด•เตเดฑเตเดฑเตผ โ†’ เด…เดชเตเดชเดพเดšเตเดšเต† เด•เดพเดซเตเด• โ†’ เด‰เดชเดญเต‹เด•เตเดคเดพเดตเต

เด’เดฐเต เดšเดฟเดคเตเดฐเต€เด•เดฐเดฃเดฎเต†เดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเดพเตป เด’เดฐเต เดกเดฏเด—เตเดฐเด‚ เดจเตฝเด•เตเด‚:

เด…เดชเตเดชเดพเดšเตเดšเต† เด•เดพเดซเตเด•เดฏเตเด•เตเด•เดพเดฏเดฟ เดกเต†เดฌเต†เดธเดฟเดฏเด‚ - เดธเดฟเดกเดฟเดธเดฟ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดˆ เดธเตเด•เต€เด‚ เดŽเดจเดฟเด•เตเด•เต เดถเดฐเดฟเด•เตเด•เตเด‚ เด‡เดทเตเดŸเดฎเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เด’เดฐเต เดธเดฟเด™เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตผ เดฎเดพเดคเตเดฐเดฎเต‡ เดธเดพเดงเตเดฏเดฎเดพเด•เต‚ เดŽเดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต.

เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดธเตเดฅเดฟเดคเดฟ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต: เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑ เดคเดŸเดพเด•เด‚ เดจเดฟเดฑเดฏเตเด•เตเด•เตเด• (เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เดกเดฏเด—เตเดฐเดพเดฎเดฟเดฒเต† เด…เดตเดธเดพเดจ เดฒเดฟเด™เตเด•เต) Debezium เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด’เดฐเต‡เดฏเตŠเดฐเต เดฎเดพเตผเด—เตเด—เดฎเดฒเตเดฒ. เด…เดชเตเดชเดพเดšเตเดšเต† เด•เดพเดซเตเด•เดฏเดฟเดฒเต‡เด•เตเด•เต เด…เดฏเดšเตเดš เด‡เดตเดจเตเดฑเตเด•เตพ เดตเดฟเดตเดฟเดง เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเดพเด•เตเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต:

  • เด•เดพเดทเต†เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด…เดชเตเดฐเดธเด•เตเดคเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดจเต€เด•เตเด•เด‚เดšเต†เดฏเตเดฏเตฝ;
  • เด…เดฑเดฟเดฏเดฟเดชเตเดชเตเด•เตพ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเต;
  • เดคเดฟเดฐเดฏเตฝ เดธเต‚เดšเดฟเด• เด…เดชเตเดกเต‡เดฑเตเดฑเตเด•เตพ;
  • เดšเดฟเดฒ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด“เดกเดฟเดฑเตเดฑเต เดฒเต‹เด—เตเด•เตพ;
  • เดชเด™เตเด•เต โ‚ฌ |

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดœเดพเดต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เด•เดพเดซเตเด• เด•เตเดฒเดธเตเดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ/เดธเดพเดงเตเดฏเดค เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดคเดฏเตเด‚ เด‰เดฃเตเดŸเต. เด‰เตพเดšเตเดšเต‡เตผเดคเตเดค เด•เดฃเด•เตเดฑเตเดฑเตผ. เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เดชเตเดฒเดธเต, เด…เดคเตเดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดงเดฟเด• เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เดจเดฟเดฐเดธเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ (เด’เดฐเต เด•เดฃเด•เตเดŸเดฑเดฟเดจเตเดฑเต†เดฏเตเด‚ เด•เดพเดซเตเด•เดฏเตเดŸเต†เดฏเตเด‚ เดฐเต‚เดชเดคเตเดคเดฟเตฝ). เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดˆ เดธเตŠเดฒเตเดฏเต‚เดทเตป เดชเดคเดฟเดชเตเดชเต 1.1 เดฎเตเดคเตฝ เด…เดตเดธเดพเดจเดฟเดชเตเดชเดฟเดšเตเดšเดคเดฟเดจเดพเตฝ เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเต เด‡เดจเดฟ เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ (เดญเดพเดตเดฟเดฏเดฟเดฒเต† เดฑเดฟเดฒเต€เดธเตเด•เดณเดฟเตฝ เด‡เดคเต เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดคเต‡เด•เตเด•เดพเด‚).

เดˆ เดฒเต‡เด–เดจเด‚ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเตเด‚, เด…เดคเต เดคเต†เดฑเตเดฑเต เดธเดนเดฟเดทเตเดฃเตเดคเดฏเตเด‚ เดธเตเด•เต‡เดฒเดฌเดฟเดณเดฟเดฑเตเดฑเดฟเดฏเตเด‚ เดจเตฝเด•เตเดจเตเดจเต.

เด•เดฃเด•เตเดฑเตเดฑเตผ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป

เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เดฎเต‚เดฒเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต† เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดŸเตเดฐเดพเด•เตเด•เตเดšเต†เดฏเตเดฏเดพเตป เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต:

  1. เดกเดพเดฑเตเดฑเดพ เด‰เดฑเดตเดฟเดŸเด‚, เดชเดคเดฟเดชเตเดชเต 5.7, PostgreSQL 9.6+, MongoDB 3.2+ (MongDB XNUMX+) เดฎเตเดคเตฝ MySQL เด†เด•เดพเด‚เดชเดŸเตเดŸเดฟเด• เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเด•);
  2. เด…เดชเตเดชเดพเดšเตเดšเต† เด•เดพเดซเตเด• เด•เตเดฒเดธเตเดฑเตเดฑเตผ
  3. เด•เดพเดซเตเด• เด•เดฃเด•เตเดŸเต เด‡เตปเดธเตเดฑเตเดฑเตปเดธเต (เดชเดคเดฟเดชเตเดชเตเด•เตพ 1.x, 2.x);
  4. เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดค Debezium เด•เดฃเด•เตเดฑเตเดฑเตผ.

เด†เดฆเตเดฏเดคเตเดคเต† เดฐเดฃเตเดŸเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•, เด…เดคเดพเดฏเดคเต. เด’เดฐเต เดกเดฟเดฌเดฟเดŽเด‚เดŽเดธเตเด‚ เด…เดชเตเดชเดพเดšเตเดšเต† เด•เดพเดซเตเด•เดฏเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดชเดฐเดฟเดงเดฟเด•เตเด•เดชเตเดชเตเดฑเดฎเดพเดฃเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดŽเดฒเตเดฒเดพเด‚ เด’เดฐเต เดธเดพเตปเดกเตโ€Œเดฌเต‹เด•เตโ€Œเดธเดฟเตฝ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดตเตผเด•เตเด•เต, เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เด’เดซเต€เดทเตเดฏเตฝ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เด‰เดฃเตเดŸเต. เดกเต‹เด•เตเด•เตผ-compose.yaml.

เด…เดตเดธเดพเดจ เดฐเดฃเตเดŸเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เดณเดฟเตฝ เดžเด™เตเด™เตพ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เตเด‚.

0. เด•เดพเดซเตเด• เด•เดฃเด•เตเดŸเต

เด‡เดตเดฟเดŸเต†เดฏเตเด‚ เดชเดฟเดจเตเดจเต€เดŸเตเดณเตเดณ เดฒเต‡เด–เดจเดคเตเดคเดฟเดฒเตเด‚, เดŽเดฒเตเดฒเดพ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเตเด‚ Debezium เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดค เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเดฟเดจเตเดฑเต† เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเต. เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เดชเตเดฒเด—เดฟเตป เดซเดฏเดฒเตเด•เดณเตเด‚ (เด•เดฃเด•เตเดŸเดฑเตเด•เตพ) เด‡เดคเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เด•เต‚เดŸเดพเดคเต† เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดพเดซเตเด• เด•เดฃเด•เตเดŸเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดจเตฝเด•เตเดจเตเดจเต.

เดจเดฟเด™เตเด™เตพ Confluent-เตฝ เดจเดฟเดจเตเดจเต Kafka Connect เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด‰เดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฏ เด•เดฃเด•เตเดŸเดฑเตเด•เดณเตเดŸเต† เดชเตเดฒเด—เดฟเดจเตเด•เตพ เดจเดฟเด™เตเด™เตพ เดคเดจเตเดจเต† เดšเต‡เตผเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. plugin.path เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดตเดดเดฟ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด• CLASSPATH. เดตเตผเด•เตเด•เตผ เดธเตเดฑเตเดฑเดพเตผเดŸเตเดŸเต เด•เดฎเดพเตปเดกเดฟเดฒเต‡เด•เตเด•เต เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เดณเดพเดฏเดฟ เด•เตˆเดฎเดพเดฑเตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเตเด•เดณเดฟเดฒเต‚เดŸเต†เดฏเดพเดฃเต เด•เดพเดซเตเด• เด•เดฃเด•เตเดŸเต เดตเตผเด•เตเด•เดฑเดฟเดจเตเด‚ เด•เดฃเด•เตเดŸเดฑเตเด•เตพเด•เตเด•เตเดฎเตเดณเตเดณ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต. เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเตเด• เดชเตเดฐเดฎเดพเดฃเต€เด•เดฐเดฃเด‚.

เด•เดฃเด•เตเดฑเตเดฑเตผ เดชเดคเดฟเดชเตเดชเดฟเตฝ Debeizum เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเตเดดเตเดตเตป เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเด‚ เดฐเดฃเตเดŸเต เด˜เดŸเตเดŸเด™เตเด™เดณเดฟเดฒเดพเดฏเดพเดฃเต เดจเดŸเดคเตเดคเตเดจเตเดจเดคเต. เด…เดต เด“เดฐเต‹เดจเตเดจเตเด‚ เดจเดฎเตเด•เตเด•เต เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเด‚:

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

เด…เดตเตเดฐเต‹เดฏเต† เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด•เตเดฑเดฟเดชเตเดชเต

เดกเดฟเดซเต‹เตพเดŸเตเดŸเดพเดฏเดฟ, เดกเต†เดฌเต†เดธเดฟเดฏเด‚ JSON เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดกเดพเดฑเตเดฑ เดŽเดดเตเดคเตเดจเตเดจเต, เด‡เดคเต เดธเดพเตปเดกเตโ€Œเดฌเต‹เด•เตโ€Œเดธเตเด•เตพเด•เตเด•เตเด‚ เดšเต†เดฑเดฟเดฏ เด…เดณเดตเดฟเดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑเด•เตพเด•เตเด•เตเด‚ เดธเตเดตเต€เด•เดพเดฐเตเดฏเดฎเดพเดฃเต, เดชเด•เตเดทเต‡ เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดฒเต‹เดกเต เดšเต†เดฏเตโ€Œเดค เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเดฟเตฝ เด‡เดคเต เดชเตเดฐเดถเตโ€Œเดจเดฎเดพเด•เดพเด‚. JSON เด•เตบเดตเต†เตผเดŸเตเดŸเดฑเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฌเดฆเตฝ เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเต€เดฐเดฟเดฏเดฒเตˆเดธเต เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด†เดตเตเดฑเต‡เดพ เด’เดฐเต เดฌเตˆเดจเดฑเดฟ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต, เด…เดคเต เด…เดชเตเดชเดพเดšเตเดšเต† เด•เดพเดซเตเด•เดฏเดฟเดฒเต† 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

Avro เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เด…เดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เด‰เดณเตเดณ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดชเดฐเดฟเดงเดฟเด•เตเด•เดชเตเดชเตเดฑเดฎเดพเดฃเต - เด•เต‚เดŸเตเดคเตฝ, เดตเตเดฏเด•เตเดคเดคเดฏเตเด•เตเด•เดพเดฏเดฟ, เดžเด™เตเด™เตพ JSON เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

2. เด•เดฃเด•เตเดฑเตเดฑเตผ เดคเดจเตเดจเต† เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเดฑเดฟเดจเตเดฑเต† เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดชเต‹เด•เดพเด‚, เด…เดคเต เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดตเดพเดฏเดฟเด•เตเด•เตเด‚.

เดฐเดฃเตเดŸเต เดกเดฟเดฌเดฟเดŽเด‚เดŽเดธเตเด•เตพเด•เตเด•เดพเดฏเตเดณเตเดณ เด•เดฃเด•เตเดฑเตเดฑเดฑเตเด•เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ เดจเต‹เด•เตเด•เดพเด‚: 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. เดœเต‹เดกเดฟเด•เดณเดพเดฏเดฟ เดˆ เด“เดชเตโ€Œเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด“เดฐเต‹ เดคเดตเดฃเดฏเตเด‚ เดนเตƒเดฆเดฏเดฎเดฟเดŸเดฟเดชเตเดชเต เดธเดจเตเดฆเต‡เดถเด‚ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดฎเตเดชเต‹เตพ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดกเดพเดฑเตเดฑ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดพเด•เตเด•เตเดจเตเดจเต. เด…เด™เตเด™เดจเต†, เด•เดฃเด•เตเดฑเตเดฑเตผ เดจเดฟเดฒเดตเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจ เดŽเตฝเดŽเดธเตเดŽเตป (เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตเดฒเต‹เดŸเตเดŸเดฟเตฝ) เดจเดฟเดฐเดจเตเดคเดฐเด‚ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดคเต เด‡เดจเดฟ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดค WAL เดซเดฏเดฒเตเด•เตพ เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเดพเตป DBMS-เดจเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เด“เดชเตเดทเดจเตเด•เตพ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดตเดฐเด™เตเด™เตพเด•เตเด•เต, เด•เดพเดฃเตเด• เดชเตเดฐเดฎเดพเดฃเต€เด•เดฐเดฃเด‚.

เด•เต‚เดŸเตเดคเตฝ เดถเตเดฐเดฆเตเดง เด…เตผเดนเดฟเด•เตเด•เตเดจเตเดจ เดฎเดฑเตเดฑเตŠเดฐเต เด“เดชเตเดทเตป 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
}
}

เดฐเดฃเตเดŸเต เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเดฒเตเด‚, เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดฎเดพเดฑเตเดฑเดฟเดฏ เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเดจเตเดฑเต† เด•เต€เดฏเตเด‚ (เดชเดฟเด•เต†) เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเดŸเต† เดธเดพเดฐเดพเด‚เดถเดตเตเด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต: เดฑเต†เด•เตเด•เต‹เตผเดกเต เดฎเตเดฎเตเดชเต เดŽเดจเตเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดŽเดจเตเดคเดพเดฏเดฟเดคเตเดคเต€เตผเดจเตเดจเต.

  • เด•เต‡เดธเดฟเตฝ INSERT: เดฎเตเดฎเตเดชเดคเตเดคเต† เดฎเต‚เดฒเตเดฏเด‚ (before) เดคเตเดฒเตเดฏเดฎเดพเดฃเต nullเดคเดฟเดฐเตเด•เดฟเดฏ เดšเดฐเดŸเต เดชเดฟเดจเตเดจเดพเดฒเต†.
  • เด•เต‡เดธเดฟเตฝ UPDATE: at payload.before เดตเดฐเดฟเดฏเตเดŸเต† เดฎเตเดฎเตเดชเดคเตเดคเต† เด…เดตเดธเตเดฅ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚, เด’เดชเตเดชเด‚ เด‡เตป payload.after - เดฎเดพเดฑเตเดฑเดคเตเดคเดฟเดจเตเดฑเต† เดธเดคเตเดคเดฏเดฟเตฝ เดชเตเดคเดฟเดฏเดคเต.

2.2 เดฎเต‹เด‚เด—เต‹เดกเดฟเดฌเดฟ

เดกเดฟเดฌเดฟเดŽเด‚เดŽเดธเต เดชเตเดฐเตˆเดฎเดฑเดฟ เดจเต‹เดกเดฟเดจเตเดฑเต† เด’เดชเตเดฒเต‹เด—เดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดฎเต‹เด‚เด—เต‹เดกเดฟเดฌเดฟ เดฑเต†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฎเต†เด•เตเด•เดพเดจเดฟเดธเด‚ เดˆ เด•เดฃเด•เตเดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

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 เด•เดฃเด•เตเดฑเตเดฑเดฟเดตเดฟเดฑเตเดฑเดฟ เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเตเดฎเตเดชเต binlog เดซเดฏเดฒเตเด•เตพ DBMS-เดจเต เดคเดจเตเดจเต† เดคเดฟเดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เด‡เดคเต เด•เดฃเด•เตเดฑเตเดฑเตผ เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเดŸ เด…เดตเดธเตเดฅเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเดจเตเดจเดคเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเด•เตเด‚, เดธเดพเดงเดพเดฐเดฃ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฌเดฟเตปเดฒเต‹เด—เตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดจ เดคเตเดŸเดฐเตเดจเตเดจเดคเดฟเดจเต เด…เดคเต เดชเตเดฐเดพเดฐเด‚เดญ เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเต เดฎเต‹เดกเดฟเตฝ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.
    • เด“เตบ เดฎเต‹เด‚เด—เต‹เดกเดฟเดฌเดฟ. เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดชเดฑเดฏเตเดจเตเดจเต: เดฒเต‹เด—เต/เด’เดชเตเดฒเต‹เด—เต เดซเดฏเดฒเตเด•เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•เดฏเตเด‚ เด•เดฃเด•เตเดŸเดฑเดฟเดจเต เด…เดคเต เดจเดฟเตผเดคเตเดคเดฟเดฏ เดธเตเดฅเดพเดจเดคเตเดคเต เดจเดฟเดจเตเดจเต เดฑเต€เดกเดฟเด‚เด—เต เดคเตเดŸเดฐเดพเตป เด•เดดเดฟเดฏเดพเดคเดฟเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเดพเตฝ เด•เดฃเด•เตเดŸเดฑเดฟเดจเตเดฑเต† เดชเต†เดฐเตเดฎเดพเดฑเตเดฑเด‚ เดŽเดฒเตเดฒเดพ DBMS-เดจเตเด‚ เดธเดฎเดพเดจเดฎเดพเดฃเต. เด•เดฃเด•เตเดฑเตเดฑเตผ เดธเด‚เดธเตเดฅเดพเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเดฎเต†เดจเตเดจ เดตเดธเตเดคเตเดคเดฏเดฟเดฒเดพเดฃเต เด‡เดคเต เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเดŸเต เด•เต‚เดŸเดพเดคเต† เดฎเต‹เดกเดฟเตฝ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เดชเตเดฐเดพเดฐเด‚เดญ เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเต.

      เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด’เดดเดฟเดตเดพเด•เตเด•เดฒเตเด•เตพ เด‰เดฃเตเดŸเต. เด•เดฃเด•เตเดฑเตเดฑเตผ เดตเดณเดฐเต†เด•เตเด•เดพเดฒเด‚ เดตเดฟเดšเตเด›เต‡เดฆเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸ เด…เดตเดธเตเดฅเดฏเดฟเดฒเดพเดฃเต†เด™เตเด•เดฟเตฝ (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเต‹เด‚เด—เต‹เดกเดฟเดฌเดฟ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดŽเดคเตเดคเดพเตป เด•เดดเดฟเดžเตเดžเดฟเดฒเตเดฒ), เดˆ เดธเดฎเดฏเดคเตเดคเต เด“เดชเตเดฒเต‹เด—เต เดคเดฟเดฐเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด•เดฃเด•เตเดทเตป เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด•เดฃเด•เตเดฑเตเดฑเตผ เด†เดฆเตเดฏเด‚ เดฒเดญเตเดฏเดฎเดพเดฏ เดธเตเดฅเดพเดจเดคเตเดคเต เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเดฐเตเด‚. , เด…เดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เด•เดพเดซเตเด•เดฏเดฟเดฒเต† เดšเดฟเดฒ เดกเดพเดฑเตเดฑ เด…เดฒเตเดฒ เด…เดŸเดฟเด•เตเด•เตเด‚.

เดคเต€เดฐเตเดฎเดพเดจเด‚

เดธเดฟเดกเดฟเดธเดฟ เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเตเดฎเดพเดฏเตเดณเตเดณ เดŽเดจเตเดฑเต† เด†เดฆเตเดฏ เด…เดจเตเดญเดตเดฎเดพเดฃเต เดกเต†เดฌเต†เดธเดฟเดฏเด‚, เดฎเตŠเดคเตเดคเดคเตเดคเดฟเตฝ เดตเดณเดฐเต† เดชเต‹เดธเดฟเดฑเตเดฑเต€เดตเต เด†เดฃเต. เดชเตเดฐเดงเดพเดจ DBMS-เดจเตเดฑเต† เดชเดฟเดจเตเดคเตเดฃ, เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดŽเดณเตเดชเตเดชเด‚, เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเด‚เด—เดฟเดจเตเดณเตเดณ เดชเดฟเดจเตเดคเตเดฃ, เด’เดฐเต เดธเดœเต€เดต เด•เดฎเตเดฎเตเดฏเต‚เดฃเดฟเดฑเตเดฑเดฟ เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด•เตˆเด•เตเด•เต‚เดฒเดฟ เดจเตฝเด•เดฟ. เดชเดฐเดฟเดถเต€เดฒเดจเดคเตเดคเดฟเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเดตเตผเด•เตเด•เดพเดฏเดฟ, เด—เตˆเดกเตเด•เตพ เดตเดพเดฏเดฟเด•เตเด•เดพเตป เดžเดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เด•เดพเดซเตเด• เด•เดฃเด•เตเดŸเต ะธ เดกเต†เดฌเต†เดธเดฟเดฏเด‚.

Kafka Connect-เดจเตเดณเตเดณ JDBC เด•เดฃเด•เตเดฑเตเดฑเดฑเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดฎเตเดชเต‹เตพ, Debezium-เดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดจเต‡เดŸเตเดŸเด‚ DBMS เดฒเต‹เด—เตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดพเดฃเต, เด‡เดคเต เด•เตเดฑเดžเตเดž เด•เดพเดฒเดคเดพเดฎเดธเดคเตเดคเต‹เดŸเต† เดกเดพเดฑเตเดฑ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. JDBC เด•เดฃเด•เตเดฑเตเดฑเตผ (เด•เดพเดซเตเด• เด•เดฃเด•เตเดŸเต เดจเตฝเด•เดฟเดฏเดคเต) เด’เดฐเต เดจเดฟเดถเตเดšเดฟเดค เด‡เดŸเดตเต‡เดณเดฏเดฟเตฝ เดŸเตเดฐเดพเด•เตเด•เต เดšเต†เดฏเตโ€Œเดค เดชเดŸเตเดŸเดฟเด•เดฏเต† เด…เดจเตเดตเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเต, (เด…เดคเต‡ เด•เดพเดฐเดฃเดคเตเดคเดพเตฝ) เดกเดพเดฑเตเดฑ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดฎเตเดชเต‹เตพ เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ (เด‡เดฒเตเดฒเดพเดคเตเดค เดกเดพเดฑเตเดฑเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเด™เตเด™เดจเต† เด…เดจเตเดตเต‡เดทเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚?).

เดธเดฎเดพเดจเดฎเดพเดฏ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เดพเดตเตเดจเตเดจเดคเดพเดฃเต (Debezium เด•เต‚เดŸเดพเดคเต†):

เดชเดฟ.เดŽเดธเต

เดžเด™เตเด™เดณเตเดŸเต† เดฌเตเดฒเต‹เด—เดฟเดฒเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด•:

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•