рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ, рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдирдП рддрдХрдиреАрдХреА рд╕рдорд╛рдзрд╛рди/рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рдж рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рджреБрд░реНрд▓рдн рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдореИрдВ рдЕрдкрдиреЗ рд╣рд╛рд▓ рдХреЗ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдРрд╕реЗ рдЕрдВрддрд░ рдХреЛ рднрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдЬрдм рдореБрдЭреЗ рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рдбреАрдмреАрдПрдордПрд╕ (рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рдФрд░ рдореЛрдВрдЧреЛрдбреАрдмреА) рд╕реЗ рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реАрдбреАрд╕реА рдИрд╡реЗрдВрдЯ рднреЗрдЬрдиреЗ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдореАрдХреНрд╖рд╛ рд▓реЗрдЦ, рдЬреЛ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рд╛рдордиреЗ рдЖрдпрд╛ рд╣реИ, рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рдФрд░ рд╕реАрдбреАрд╕реА рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдХреНрдпрд╛ рд╣реИ?
рдпрд╣
рдпрджрд┐ рд╣рдо рд╕реАрдбреАрд╕реА рдХреА рддреБрд▓рдирд╛ рдкрд╛рд░рдВрдкрд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг (рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реАрдзреЗ рдбреАрдмреАрдПрдордПрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ) рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдореБрдЦреНрдп рд▓рд╛рднреЛрдВ рдореЗрдВ рдХрдо рд╡рд┐рд▓рдВрдмрддрд╛, рдЙрдЪреНрдЪ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рд╕рд╛рде рдкрдВрдХреНрддрд┐ рд╕реНрддрд░ рдкрд░ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рд╣реИред рдЕрдВрддрд┐рдо рджреЛ рдЕрдВрдХ рд╕реАрдбреАрд╕реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рднрдВрдбрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдПрдХ рдЕрдиреНрдп рд▓рд╛рдн рдпрд╣ рддрдереНрдп рд╣реИ рдХрд┐ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдВрддрд┐рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдбреАрдмреАрдПрдордПрд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдПрдХ рд╕рдВрджреЗрд╢ рдмреНрд░реЛрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рде рд╣реА, рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдкрд░ рдкреНрд░рднрд╛рд╡ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рд╕реАрдзреЗ рдбреАрдмреАрдПрдордПрд╕ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рд╕рд░рд▓ рдпреЛрдЬрдирд╛ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ:
рдбреАрдмреАрдПрдордПрд╕ (рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ) тЖТ рдХрд╛рдлреНрдХрд╛ рдХрдиреЗрдХреНрдЯ рдореЗрдВ рдХрдиреЗрдХреНрдЯрд░ тЖТ рдЕрдкрд╛рдЪреЗ рдХрд╛рдлреНрдХрд╛ тЖТ рдЙрдкрднреЛрдХреНрддрд╛
рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░, рдпрд╣рд╛рдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдПрдХ рдЪрд┐рддреНрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдпреЛрдЬрдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рд╕рд┐рдВрдХ рдХрдиреЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реА рд╕рдВрднрд╡ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реНрдерд┐рддрд┐ рдЕрд▓рдЧ рд╣реИ: рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рд▓реЗрдХ рднрд░рдирд╛ (рдЙрдкрд░реЛрдХреНрдд рдЪрд┐рддреНрд░ рдореЗрдВ рдЕрдВрддрд┐рдо рд▓рд┐рдВрдХ) рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдкрд╛рдЪреЗ рдХрд╛рдлреНрдХрд╛ рдХреЛ рднреЗрдЬреЗ рдЧрдП рдИрд╡реЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
- рдХреИрд╢ рд╕реЗ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдбреЗрдЯрд╛ рд╣рдЯрд╛рдирд╛;
- рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдирд╛;
- рдЦреЛрдЬ рд╕реВрдЪрдХрд╛рдВрдХ рдЕрджреНрдпрддрди;
- рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдбрд┐рдЯ рд▓реЙрдЧ;
- ...
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ рдФрд░ рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛/рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рднреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ
рдпрд╣ рдЖрд▓реЗрдЦ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛, рдЬреЛ рджреЛрд╖ рд╕рд╣рдирд╢реАрд▓рддрд╛ рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдХрдиреЗрдХреНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореВрд▓реНрдп - рдбреЗрдЯрд╛ - рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
- рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд, рдЬреЛ MySQL рд╕рдВрд╕реНрдХрд░рдг 5.7 рд╕реЗ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, PostgreSQL 9.6+, MongoDB 3.2+ (
рдкреВрд░реА рд╕реВрдЪреА ); - рдЕрдкрд╛рдЪреЗ рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░;
- рдХрд╛рдлреНрдХрд╛ рдХрдиреЗрдХреНрдЯ рдЙрджрд╛рд╣рд░рдг (рд╕рдВрд╕реНрдХрд░рдг 1.x, 2.x);
- рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рдХрдиреЗрдХреНрдЯрд░ред
рдкрд╣рд▓реЗ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВ, рдпрд╛рдиреАред рдбреАрдмреАрдПрдордПрд╕ рдФрд░ рдЕрдкрд╛рдЪреЗ рдХрд╛рдлреНрдХрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреЛ рд▓реЛрдЧ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рд╕рдм рдХреБрдЫ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддреИрдпрд╛рд░ рд╣реИ
рд╣рдо рдЕрдВрддрд┐рдо рджреЛ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗред
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
рдПрд╡рд░реЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреЛрдЯ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЬреЛ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдФрд░ рдЫреЛрдЯреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддреНрдпрдзрд┐рдХ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рд╕рдХрддрд╛ рд╣реИред JSON рдХрдирд╡рд░реНрдЯрд░ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рд╣реИ
рдПрд╡рд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕реЗ рддреИрдирд╛рддреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
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 рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХрдиреЗрдХреНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди:
{
"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
тАФ рдХрдиреЗрдХреНрдЯрд░ рдХрд╛ рдирд╛рдо рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЗрд╕ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рдлреНрдХрд╛ рдХрдиреЗрдХреНрдЯ рд░реЗрд╕реНрдЯ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛рдиреА, рд╕реНрдерд┐рддрд┐ рджреЗрдЦреЗрдВ/рд░реАрд╕реНрдЯрд╛рд░реНрдЯ/рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ); -
connector.class
- рдбреАрдмреАрдПрдордПрд╕ рдХрдиреЗрдХреНрдЯрд░ рд╡рд░реНрдЧ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдХрдиреЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛; -
plugin.name
- рд╡рд╛рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреА рддрд╛рд░реНрдХрд┐рдХ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдХрд╛ рдирд╛рдоред рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ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 рдореЗрдВ, рдЬреЛ рдХрдиреЗрдХреНрдЯрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЬрд┐рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рддрд╣рдд рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдХрдиреЗрдХреНрдЯрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛;-
transforms
рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд▓рдХреНрд╖рд┐рдд рд╡рд┐рд╖рдп рдХрд╛ рдирд╛рдо рдХреИрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛рдП:-
transforms.AddPrefix.type
рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ; -
transforms.AddPrefix.regex
- рдПрдХ рдореБрдЦреМрдЯрд╛ рдЬреЛ рд▓рдХреНрд╖реНрдп рд╡рд┐рд╖рдп рдХреЗ рдирд╛рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ; -
transforms.AddPrefix.replacement
- рд╕реАрдзреЗ рддреМрд░ рдкрд░ рд╣рдо рдХреНрдпрд╛ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
-
рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХрдиреЗрдХреНрдЯрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдмрджреНрдз рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдХрд╛рдлреНрдХрд╛ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдПрд▓рдПрд╕рдПрди (рд▓реЙрдЧ рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛) рд╕реЗрд╡рд╛ рд╡рд┐рд╖рдп рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ offset
. рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдХрдиреЗрдХреНрдЯрд░ рдХреЛ рдкреВрд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрд╕рдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдЕрдХреНрд╕рд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ)?
- рдХрдиреЗрдХреНрдЯрд░ рд╡рд╛рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝реЗрдЧрд╛ рдФрд░ рдЬрд┐рди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╡рд╣ рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрдирдореЗрдВ рдХрд┐рд╕реА рднреА рд▓реЗрди-рджреЗрди рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдПрдЧрд╛ред
- рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╡рд┐рд╖рдп рдпрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реНрд▓реЙрдЯ рдореЗрдВ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
- рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╡рд╛рд▓ рдлрд╝рд╛рдЗрд▓реЗрдВ рдбрд┐рд╕реНрдХ рдкрд░ рд░рдЦреА рдЬрд╛рдПрдВрдЧреА рдФрд░ рд╕рдВрднрд╡рддрдГ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдВрдЧреАред
рдФрд░ рдпрд╣реАрдВ рдкрд░ рд╡рд┐рдХрд▓реНрдк рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВред heartbeat.interval.ms
╨╕ heartbeat.action.query
. рдЬреЛрдбрд╝реЗ рдореЗрдВ рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣рд░ рдмрд╛рд░ рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдХрд╛ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдкрд░ рдПрдХ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдмрджрд▓рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрд▓рдПрд╕рдПрди рдЬрд┐рд╕ рдкрд░ рдХрдиреЗрдХреНрдЯрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ (рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реНрд▓реЙрдЯ рдореЗрдВ) рд▓рдЧрд╛рддрд╛рд░ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ DBMS рдХреЛ рдЙрди WAL рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдХрд▓реНрдк рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рдЬреЛ рдХрд░реАрдм рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рд╡рд╣ рд╣реИ transforms
. рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рд╕реБрдВрджрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ...
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд╛рдордХрд░рдг рдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рд╖рдп рдмрдирд╛рддрд╛ рд╣реИ: serverName.schemaName.tableName
. рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛. рд╡рд┐рдХрд▓реНрдк transforms
рдЖрдк рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рд╡рд┐рд╖рдп рдкрд░ рд░реВрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╣рдорд╛рд░реЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж transforms
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрддрд╛ рд╣реИ: рдореЙрдирд┐рдЯрд░ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рднреА рд╕реАрдбреАрд╕реА рдЗрд╡реЗрдВрдЯ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╖рдп рдкрд░ рдЬрд╛рдПрдВрдЧреЗ data.cdc.dbname
. рдЕрдиреНрдпрдерд╛ (рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд┐рдирд╛), рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рдмрдирд╛рдПрдЧрд╛ рдЬреИрд╕реЗ: pg-dev.public.<table_name>
.
рдХрдиреЗрдХреНрдЯрд░ рд╕реАрдорд╛рдПрдБ
PostgreSQL рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ/рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ:
- PostgreSQL рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддрд╛рд░реНрдХрд┐рдХ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рд╡рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдбреАрдбреАрдПрд▓) - рддрджрдиреБрд╕рд╛рд░, рдпрд╣ рдбреЗрдЯрд╛ рд╡рд┐рд╖рдпреЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
- рдЪреВрдВрдХрд┐ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдиреЗрдХреНрдЯрд░ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдХреЗрд╡рд▓ рдЕрдЧреНрд░рдгреА DBMS рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред
- рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд┐рд╕рдХреЗ рддрд╣рдд рдХрдиреЗрдХреНрдЯрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реНрд▓реЙрдЯ рдмрдирд╛рдиреЗ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рдирд╛
рддреЛ, рдЖрдЗрдП рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХрдиреЗрдХреНрдЯрд░ рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВ:
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
: рдореЗрдВ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>
.
рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛
рд╣рдорд╛рд░реЗ рд╕рдордп рдореЗрдВ рджреЛрд╖ рд╕рд╣рдирд╢реАрд▓рддрд╛ рдФрд░ рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХрд╛ рдореБрджреНрджрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╣реИ - рдЦрд╛рд╕рдХрд░ рдЬрдм рд╣рдо рдбреЗрдЯрд╛ рдФрд░ рд▓реЗрдирджреЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рдХрд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред
рддреАрди рдСрдкреНрдЯ-рдЖрдЙрдЯ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
- рдХрд╛рдлреНрдХрд╛ рдХрдиреЗрдХреНрдЯ рд╡рд┐рдлрд▓рддрд╛. рдпрджрд┐ рдХрдиреЗрдХреНрдЯ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдЧреНрд░реБрдк.рдЖрдИрдбреА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдлрд┐рд░, рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдиреЗрдХреНрдЯрд░ рдХреЛ рджреВрд╕рд░реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкрд░ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрд╛рдлреНрдХрд╛ рдореЗрдВ рд╡рд┐рд╖рдп рдореЗрдВ рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рдмрджреНрдз рд╕реНрдерд┐рддрд┐ рд╕реЗ рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
- рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХрд╛ рдиреБрдХрд╕рд╛рди. рдХрдиреЗрдХреНрдЯрд░ рдмрд╕ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрдврд╝рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ рдЬреЛ рдХрд╛рдлреНрдХрд╛ рдХреЛ рднреЗрдЬрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛, рдФрд░ рдкреНрд░рдпрд╛рд╕ рд╕рдлрд▓ рд╣реЛрдиреЗ рддрдХ рд╕рдордп-рд╕рдордп рдкрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред
- рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдЕрдиреБрдкрд▓рдмреНрдзрддрд╛. рдХрдиреЗрдХреНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╕реНрд░реЛрдд рд╕реЗ рдкреБрдирдГ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ 16 рдкреНрд░рдпрд╛рд╕реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ
рдШрд╛рддреАрдп рдмреИрдХрдСрдлрд╝ . 16рд╡реЗрдВ рдЕрд╕рдлрд▓ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрдп рдХреЛ рдЗрд╕ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдХрд╛рдлреНрдХрд╛ рдХрдиреЗрдХреНрдЯ REST рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред- рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рдбреЗрдЯрд╛ рдирд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реНрд▓реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдкрдХреЛ рдЙрди рд╡рд╛рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд░реЛрдХреЗрдЧрд╛ рдЬреЛ рдХрдиреЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд┐рдХреНрдХреЗ рдХрд╛ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рднреА рд╣реИ: рдпрджрд┐ рдХрдиреЗрдХреНрдЯрд░ рдФрд░ рдбреАрдмреАрдПрдордПрд╕ рдХреЗ рдмреАрдЪ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдмрд╛рдзрд┐рдд рд░рд╣рддреА рд╣реИ, рддреЛ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдЦрддреНрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕рд╕реЗ рд╡рд┐рдлрд▓рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рд╕рдВрдкреВрд░реНрдг рдбреАрдмреАрдПрдордПрд╕.
- рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ MySQL рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдмрд╣рд╛рд▓ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд┐рдирд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбреАрдмреАрдПрдордПрд╕ рджреНрд╡рд╛рд░рд╛ рд╣реА рдШреБрдорд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдХрдиреЗрдХреНрдЯрд░ рд╡рд┐рдлрд▓ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд┐рдирд▓реЙрдЧ рд╕реЗ рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдореЛрдб рдореЗрдВ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
- рдкрд░ MongoDB. рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ: рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрдиреЗрдХреНрдЯрд░ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЬрдм рд▓реЙрдЧ/рдУрдкреНрд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣рдЯрд╛ рджреА рдЧрдИ рд╣реИрдВ рдФрд░ рдХрдиреЗрдХреНрдЯрд░ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рдирд╣реАрдВ рд░рдЦ рд╕рдХрддрд╛ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рд╕рднреА рдбреАрдмреАрдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрдЯрд░ рд░рд╛рдЬреНрдп рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рдПрдЧрд╛ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореЛрдб рдореЗрдВ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдиреИрдкрд╢реЙрдЯ.
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ рдЕрдкрд╡рд╛рдж рднреА рд╣реИрдВред рдпрджрд┐ рдХрдиреЗрдХреНрдЯрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЧрдпрд╛ рдерд╛ (рдпрд╛ MongoDB рдЗрдВрд╕реНрдЯреЗрдВрд╕ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрд╛), рдФрд░ рдЗрд╕ рджреМрд░рд╛рди рдУрдкрд▓реЙрдЧ рд░реЛрдЯреЗрд╢рди рд╕реЗ рдЧреБрдЬрд░рд╛, рддреЛ рдЬрдм рдХрдиреЗрдХреНрд╢рди рдмрд╣рд╛рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдиреЗрдХреНрдЯрд░ рд╢рд╛рдВрддрд┐ рд╕реЗ рдкрд╣рд▓реА рдЙрдкрд▓рдмреНрдз рд╕реНрдерд┐рддрд┐ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХрд╛рдлреНрдХрд╛ рдореЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛ рдирд╣реАрдВ рдорд╛рд░реЗрдВрдЧреЗ.
рдирд┐рд╖реНрдХрд░реНрд╖
рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рд╕реАрдбреАрд╕реА рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ рд╣реИ рдФрд░ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдмрд╣реБрдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рдкреНрд░рдореБрдЦ рдбреАрдмреАрдПрдордПрд╕ рдХреЗ рд╕рдорд░реНрдерди, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЖрд╕рд╛рдиреА, рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рд╕рдорд░реНрдерди рдФрд░ рд╕рдХреНрд░рд┐рдп рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдЬреАрдд рд╣рд╛рд╕рд┐рд▓ рдХреАред рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛рдПрдБ рдкрдврд╝реЗрдВ
рдХрд╛рдлреНрдХрд╛ рдХрдиреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЬреЗрдбреАрдмреАрд╕реА рдХрдиреЗрдХреНрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдбреАрдмреАрдПрдордПрд╕ рд▓реЙрдЧ рд╕реЗ рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдиреНрдпреВрдирддрдо рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬреЗрдбреАрдмреАрд╕реА рдХрдиреЗрдХреНрдЯрд░ (рдХрд╛рдлреНрдХрд╛ рдХрдиреЗрдХреНрдЯ рд╕реЗ) рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдореЙрдирд┐рдЯрд░ рдХреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рд╕рд╡рд╛рд▓ рдЙрдард╛рддрд╛ рд╣реИ рдФрд░ (рдЙрд╕реА рдХрд╛рд░рдг рд╕реЗ) рдбреЗрдЯрд╛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рдВрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЖрдк рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ?)ред
рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВ (рдбреЗрдмреЗрдЬрд╝рд┐рдпрдо рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд):
-
рдЬреЗрдбреАрдмреАрд╕реА рдХрдиреЗрдХреНрдЯрд░ рдХрд╛рдлреНрдХрд╛ рдХрдиреЗрдХреНрдЯ; - рдХреЗрд╡рд▓ MySQL рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдорд╛рдзрд╛рди:
-
рдУрд░реЗрдХрд▓ рдЧреЛрд▓реНрдбрдирдЧреЗрдЯ , рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ "рд╡рдЬрди рд╢реНрд░реЗрдгреА" рд╣реИред
рдкреБрдирд╢реНрдЪ
рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рднреА рдкрдврд╝реЗрдВ:
- ┬л
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдХрд╛рдлреНрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЖрдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг "; - ┬л
рд╣рдорд╛рд░реЗ рдПрд╕рдЖрд░рдИ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рдЬрд┐рдВрджрдЧреА рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╣рд╛рдирд┐рдпрд╛рдБред рднрд╛рдЧ 2 "; - ┬л
рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕, рд╣рдорд╛рд░реА рдкрд╕рдВрдж рдФрд░ рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрд╡рд▓реЛрдХрди '.
рд╕реНрд░реЛрдд: www.habr.com