R2DBC рдФрд░ PostgreSQL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рдЪрд╛рд░ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкреНрд░рдЪрд╛рд░ рддреЗрдЬ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдХрд╛рд░реНрдпред рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╣реИрдВ рдЬреЛ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдЫрд╡рд┐

рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдПрдВ рдХрд┐ рдкрд┐рдЫрд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛ред 2017 рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╕реНрдкреНрд░рд┐рдВрдЧ 5 рдмрд╛рд╣рд░ рдЖрдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдо WebFlux рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ ред рд╣рд░ рдХреЛрдИ рдЗрд╕ рддрдХрдиреАрдХ (рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдЪрд╛рд░ рд╡рдХреНрд░) рдХрд╛ рддреЗрдЬреА рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд▓рдЧрд╛, рдФрд░ рдлрд┐рд░ рдЙрджреНрдпреЛрдЧ рдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рд╕рднреА рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╡рд╛рдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред рдкреНрд░рдореБрдЦ рд╕рдмрдХ рд╕реАрдЦрд╛:

  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдЕрд╡рд░реБрджреНрдз рдХрд░рдирд╛; рдпрджрд┐ рдЖрдк рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдзрд╛рдЧреЗ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдорд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рджрд┐рдЦрд╛рдИ рджреА (рд▓реЗрдЦрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ -bsideup )
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓реЛрдЪ рдореЗрдВ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ рднрд╛рд░ рдкрд░ рд▓рд╛ рдиреЗрдЯрдлреНрд▓рд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 100 рдЖрд░рдкреАрдПрд╕ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ рдЕрд╡рд░реБрджреНрдз рд╢реИрд▓реА рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣ рд╕рд╕реНрддрд╛ рдФрд░ рдЖрд╕рд╛рди рд╣реИ

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рд░ рдХреЛрдИ рдПрдХ рдФрд░ рдмрд╛рдд рд╕рдордЭ рдЧрдпрд╛ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд╣рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдПрдкреАрдЖрдИ рднреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдареАрдХ рд╣реИ, рдпрд╛ рдРрд╕рд╛ рдПрдкреАрдЖрдИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрд░реЗ рдЖрд╕рдкрд╛рд╕ рд▓рдЧрднрдЧ рд╣рд░ рдХреЛрдИ PostgreSQL рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрдм рдореБрдЭреЗ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдкред рд╣рдо рдкреБрд░рд╛рдиреЗ (10 рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрд░рд╛рдиреЗ) JDBC рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ PostgreSQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ - pgjdbc ред рдпрд╣ рдбреНрд░рд╛рдЗрд╡рд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдмрдЧ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдмрд╣реБрдд рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж)vladimirsitnikov) рд▓реЗрдХрд┐рди pgjdbc рдореЗрдВ рдПрдХ рдШрд╛рддрдХ рджреЛрд╖ рд╣реИ - рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ ред

рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ, PostgreSQL рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рджреМрдбрд╝ рд╢реБрд░реВ рд╣реБрдИ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╢рд╛рдорд┐рд▓ рдерд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдУрд░реЗрдХрд▓ рдиреЗ рднреА рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА , рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реВрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдЙрд╕рдХреЗ рдлрд╛рдЗрдмрд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ ред рд▓реЗрдХрд┐рди рддрдм рдУрд░реЗрдХрд▓ рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЗрд╣рддрд░ рд╕реЛрдЪрд╛ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ ред рдЕрднреА 3 рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:



  1. https://github.com/jasync-sql/jasync-sql - PostgreSQL рдХреЗ рд▓рд┐рдП рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдбреНрд░рд╛рдЗрд╡рд░, рдХреЛрдЯрд▓рд┐рди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдиреЗрдЯреА рдкрд░рд┐рд╡рд╣рди рд╣реИ
  2. рд╕рдорд╛рдзрд╛рди Vert.x рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ https://github.com/mauricio/postgresql-async ред рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкрд┐рдЫрд▓реЗ jasync-sql рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡рд╣реА рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореВрд▓ рдХреЛ рд╕реНрдХрд╛рд▓рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдирдпрд╛ рд╕рдорд╛рдзрд╛рди рдХреЛрдЯрд▓рд┐рди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ)ред
    рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд░реНрдЯ.рдПрдХреНрд╕ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдЬреАрд╡рд┐рдд рд╣реИ рдФрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ ред
  3. рд╕реНрдкреНрд░рд┐рдВрдЧ рдЯреАрдо рдХрд╛ рдбреНрд░рд╛рдЗрд╡рд░ https://github.com/r2dbc/r2dbc-postgresql рд╣реИ ред рдпрд╣ рдбреНрд░рд╛рдЗрд╡рд░ рддреБрд░рдВрдд рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдПрдкреАрдЖрдИ (рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдирд╣реАрдВ) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдиреЗрдЯреНрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рд╡рд╣рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЬрд╕реБрдВрдХ-рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВред

рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рдпреЗ рдбреНрд░рд╛рдЗрд╡рд░ рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рд╡реЗ рд╕рднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореМрдЬреВрджрд╛ PostgreSQL рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдбреНрд░рд╛рдЗрд╡рд░ рд╡рд╛рдпрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЛ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ рдУрд▓реЗрдЧ рдбреЛрдХреБрдХ рдирд╣реАрдВ рдЪрд╛рд╣реЗрдЧрд╛ - https://www.youtube.com/watch?v=n9tL2I_Big8 )ред рдпрд╣реА рд╣реИ, Postgres рдХреЛ рдЕрднреА рднреА SELECT рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Postgres рдкреНрд░рддреНрдпреЗрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднреА рдмрдирд╛ рд░рд╣рд╛ рд╣реИ - https://www.postgresql.org/docs/current/tutorial-arch.html ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред рд░рд┐рдЬрд▓реНрдЯ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ (рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдмреИрдЪреЛрдВ рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╛рдирд┐ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ (рдпрд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ) рдкреАрдЬреА рдбреНрд░рд╛рдЗрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ (рд╣рдо рдЕрдм рдиреЗрдЯреА рдЖрдзрд╛рд░рд┐рдд рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ рдЖрдИрдУ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрд╡реЗрд░реА рдкрд░ рдзрд╛рдЧрд╛ рдЦрд░реНрдЪ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕реАрдХреНрдпреВ рд╕рд╛рдЗрдб рдореЗрдВ - рдЪреАрдЬреЗрдВ рдЗрддрдиреА рдЕрдЪреНрдЫреА рдирд╣реАрдВ рд╣реИрдВ (рдЪрд▓реЛ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ) )

рдЖрдкрдХреЛ рдХрд┐рд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрджрд┐ рдЖрдк, рдореЗрд░реА рддрд░рд╣, рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ r2dbc-postgresql рд╢рд╛рдпрдж рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, Pivotal рдХреЗ рд▓реЛрдЧреЛрдВ рдиреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ R2DBC рдХреЗ рд╕рд╛рде(рдпрд╣ рдЕрднреА рднреА рдЖрд░рд╕реА рд╣реИ)ред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдбреНрд░рд╛рдЗрд╡рд░ рдПрдкреАрдЖрдИ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреА рдЬрдЯрд┐рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЧрд▓рддреА рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред

рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ R2DBC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг (рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЬрд╛рд╕реВрд╕реА рдХреА рд╣реИ) рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рджрд┐рдЦрддрд╛ рд╣реИ:

1. рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:

spring.r2dbc.username=postgres
spring.r2dbc.password=P4$$W0RddD
spring.r2dbc.url=r2dbc:postgresql://localhost:5432/r2dbc
spring.r2dbc.pool.enabled=true
spring.r2dbc.pool.initial-size=10
spring.r2dbc.pool.max-idle-time=1m
spring.r2dbc.pool.max-size=30
spring.data.r2dbc.repositories.enabled=true

2. рдПрдХ рдЗрдХрд╛рдИ рдмрдирд╛рдПрдБ:

public class Customer {
    @Id
    private Long id;

    private String firstName;

    private String lastName;

    public Customer(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}

3. рд╕рд╛рдорд╛рдиреНрдп рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдмрдирд╛рдПрдВ:

public interface CustomerRepository extends ReactiveCrudRepository<Customer, Long> {
}

4. рднрдВрдбрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

@RestController
@RequestMapping("/")
public class CustomerController {

    private CustomerRepository customerRepository;

    @PostMapping("/customer")
    Mono<Void> create(@RequestBody Publisher<Customer> customerFlux) {
        return customerRepository.saveAll(customerFlux).then();
    }

    @GetMapping("/customer")
    public Flux<Customer> list() {
        return customerRepository.findAll();
    }

    @GetMapping("/customer/{id}")
    public Mono<Customer> findById(@PathVariable Long id) {
        return customerRepository.findById(id);
    }
}

рдПрдХ рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рднрдВрдбрд╛рд░ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - https://github.com/Hixon10/spring-boot-r2dbc-postgresql-example ред

рдЕрдВрдд рдореЗрдВ, рдЪрд▓реЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ: рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЕрдм r2dbc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдореЗрд░реА рд░рд╛рдп рдореЗрдВ - рдпрд╣ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИред рдореИрдВ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рдПрдХ рд╕реЗрдЯ (рдбреНрд░рд╛рдЗрд╡рд░, рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛) рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдкрд╣рд▓реЗ shys рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 2021 рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдФрд░ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рдорд╛рдорд▓реЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ - рд╕рдВрдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░рдгрд╛рд▓реА (рд╕реНрдкреНрд░рд┐рдВрдЧ рд╡реЗрдмрдлреНрд▓рдХреНрд╕ + рдЖрд░ 2 рдбреАрдмреАрд╕реА рдбреЗрдЯрд╛рдмреЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░) рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд▓рдЧрддреА рд╣реИред рдЖрдЬ рд╕рдЪрдореБрдЪolegchirрдПрдХ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЗрдЦ рдХрд╛ рд▓рд┐рдВрдХ рд╣реИ - https://technology.amis.nl/2020/04/10/spring-blocking-vs-non-blocking-r2dbc-vs-ddbc-and-webflux-vs- web-mvc / ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЬреАрдд рдЬрд╛рддреА рд╣реИред

All Articles