рд╡рд┐рдХрд╛рд╕рдХреЛ рдПрдХ рд╡рд░реНрд╖ рдкрдЫрд┐, PostgreSQL 15 DBMS рдХреЛ рдирдпрд╛рдБ рд╕реНрдерд┐рд░ рд╢рд╛рдЦрд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдирдпрд╛рдБ рд╢рд╛рдЦрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВ рдиреЛрднреЗрдореНрдмрд░ 2027 рд╕рдореНрдо рдкрд╛рдБрдЪ рд╡рд░реНрд╖рдорд╛ рдЬрд╛рд░реА рдЧрд░рд┐рдиреЗрдЫред

рдореБрдЦреНрдп рдЖрд╡рд┐рд╖реНрдХрд╛рд░рд╣рд░реВ:

  • SQL рдЖрджреЗрд╢ "MERGE" рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛ, рдЬреБрди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "INSERT... ON CONFLICT" рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред MERGE рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рд╢рд░реНрдд SQL рдХрдердирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рдЬрд╕рд▓реЗ INSERT, UPDATE, рд░ DELETE рдХрд╛рд░реНрдпрд╣рд░реВрд▓рд╛рдИ рдПрдХрд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдорд╛ рдЬреЛрдбреНрджрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, MERGE рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рддрдкрд╛рдИрдВрд▓реЗ рдЫреБрдЯреЗрдХрд╛ рд░реЗрдХрд░реНрдбрд╣рд░реВ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реЗрд░ рдЕрд╡рд╕реНрдерд┐рддрд╣рд░реВрд▓рд╛рдИ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реЗрд░ рджреБрдИрд╡рдЯрд╛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рдорд░реНрдЬ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЧреНрд░рд╛рд╣рдХ_рдЦрд╛рддрд╛рдорд╛ рдорд░реНрдЬ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╣рд╛рд▓рд╕рд╛рд▓реИ_рд▓реЗрдирджреЗрдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ t.customer_id = ca.customer_id рдЬрдм рдорд┐рд▓реНрдпреЛ рддрдм рдЕрдкрдбреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдмреНрдпрд╛рд▓реЗрдиреНрд╕ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН = рдмреНрдпрд╛рд▓реЗрдиреНрд╕ + рд▓реЗрдирджреЗрди_value рдЬрдм рдореЗрд▓ рдЦрд╛рдБрджреИрди рддрдм рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЧреНрд░рд╛рд╣рдХ_рдЖрдИрдбреА, рдмреНрдпрд╛рд▓реЗрдиреНрд╕) VALUES (t.customer_id, рдмреНрдпрд╛рд▓реЗрдиреНрд╕) VALUES (t.customer_id);
  • рдореЗрдореЛрд░реА рд░ рдбрд┐рд╕реНрдХрдорд╛ рдбреЗрдЯрд╛ рдХреНрд░рдордмрджреНрдз рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд╣рд░реВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рд╕реБрдзрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫред рдбрд╛рдЯрд╛рдХреЛ рдкреНрд░рдХрд╛рд░рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджреИ, рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрд▓реЗ рдХреНрд░рдордмрджреНрдз рдЧрддрд┐рдорд╛ реирел% рджреЗрдЦрд┐ рекрежреж% рд╕рдореНрдо рд╡реГрджреНрдзрд┐ рджреЗрдЦрд╛рдЙрдБрдЫред
  • row_number(), rank(), dense_rank() рд░ count() рдкреНрд░рдпреЛрдЧ рдЧрд░реА рд╕рдЮреНрдЭреНрдпрд╛рд▓рдХрд╛ рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрддрд┐ рдмрдврд╛рдЗрдПрдХреЛ рдЫред
  • "SELECT DISTINCT" рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдХреЛ рд╕рд╛рде рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд╕рдореНрднрд╛рд╡рдирд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫред
  • рдмрд╛рд╣реНрдп рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рдЬрдбрд╛рди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдВрдпрдиреНрддреНрд░ рд╡рд┐рджреЗрд╢реА рдбрд╛рдЯрд╛ рд░реНрдпрд╛рдкрд░ (postgres_fdw) рд▓реЗ рдмрд╛рд╣реНрдп рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рдкрд╣рд┐рд▓реЗ рдердкрд┐рдПрдХреЛ рдХреНрд╖рдорддрд╛рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдХрдорд┐рдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫред
  • WAL рд▓реЗрдирджреЗрди рд▓рдЧрд╣рд░реВ рдХрдореНрдкреНрд░реЗрд╕ рдЧрд░реНрди LZ4 рд░ Zstandard (zstd) рдПрд▓реНрдЧреЛрд░рд┐рджрдорд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ, рдХреЗрд╣реА рд╡рд░реНрдХрд▓реЛрдбрд╣рд░реВ рдЕрдиреНрддрд░реНрдЧрдд, рдПрдХреИ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд░ рдбрд┐рд╕реНрдХ рдард╛рдЙрдБ рдмрдЪрдд рдЧрд░реНрди рд╕рдХреНрдЫред рдЕрд╕рдлрд▓рддрд╛ рдкрдЫрд┐ рд░рд┐рдХрднрд░реА рд╕рдордп рдХрдо рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА, WAL рд▓рдЧ рдорд╛ рджреЗрдЦрд┐рдиреЗ рдкреГрд╖реНрдард╣рд░реБ рдХреЛ рд╕рдХреНрд░рд┐рдп рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдХреЛ рд▓рд╛рдЧреА рд╕рдорд░реНрдерди рдердкрд┐рдПрдХреЛ рдЫред
  • pg_basebackup рдЙрдкрдпреЛрдЧрд┐рддрд╛рд▓реЗ gzip, LZ4 рд╡рд╛ zstd рд╡рд┐рдзрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдмреНрдпрд╛рдХрдЕрдк рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд╕рд░реНрднрд░-рд╕рд╛рдЗрдб рдХрдореНрдкреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкреЗрдХреЛ рдЫред рдЕрднрд┐рд▓реЗрдЦрдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдЗрдБрдХреЛ рдЖрдлреНрдиреИ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫ, рддрдкрд╛рдЗрдБрд▓рд╛рдИ рд╢реЗрд▓ рдЖрджреЗрд╢рд╣рд░реВ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдмрд┐рдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИред
  • regexp_count(), regexp_instr(), regexp_like() рд░ regexp_substr() рдкреНрд░рдпреЛрдЧ рдЧрд░реА рд╕реНрдЯреНрд░рд┐рдЩрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдердкрд┐рдПрдХреЛ рдЫред
  • range_agg() рдкреНрд░рдХрд╛рд░реНрдпрдорд╛ рдмрд╣реБрд╢реНрд░реЗрдгреА рдкреНрд░рдХрд╛рд░рд╣рд░реВ ("рдмрд╣реБ рджрд╛рдпрд░рд╛") рдЬрдореНрдорд╛ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдердкрд┐рдПрдХреЛ рдЫред
  • security_invoker рдореЛрдб рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рджреГрд╢реНрдп рд╕рд┐рд░реНрдЬрдирд╛рдХрд░реНрддрд╛рдХреЛ рд╕рдЯреНрдЯрд╛ рдХрд▓ рдЧрд░реНрдиреЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛ рдЪрд▓реНрдиреЗ рджреГрд╢реНрдпрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
  • рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рддрд┐рдХреГрддрд┐рдХреЛ рд▓рд╛рдЧрд┐, рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рдлрд┐рд▓реНрдЯрд░ рдЧрд░реНрди рд░ рд╕реНрддрдореНрднрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреЗ рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдкреНрд░реЗрд╖рдХрдХреЛ рдкрдХреНрд╖рд▓рд╛рдИ рдкреНрд░рддрд┐рдХреГрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рддрд╛рд▓рд┐рдХрд╛рдмрд╛рдЯ рдбреЗрдЯрд╛рдХреЛ рдПрдХ рдЙрдкрд╕реЗрдЯ рдЪрдпрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИред рдердк рд░реВрдкрдорд╛, рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрд▓реЗ рджреНрд╡рдиреНрджреНрд╡ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдЙрдБрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЕрдм рд╡рд┐рд╡рд╛рджрд┐рдд рд▓реЗрдирджреЗрдирд╣рд░реВ рдЫреЛрдбреНрди рд░ рддреНрд░реБрдЯрд┐ рдкрддреНрддрд╛ рд▓рд╛рдЧреНрджрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕рджрд╕реНрдпрддрд╛ рдЕрдХреНрд╖рдо рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫред рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рддрд┐рдХреГрддрд┐рд▓реЗ рджреБрдИ-рдЪрд░рдг рдХрдорд┐рдЯрд╣рд░реВ (2PC) рдХреЛ рдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
  • рдирдпрд╛рдБ рд▓рдЧ рдврд╛рдБрдЪрд╛ рдердкрд┐рдПрдХреЛ рдЫ - jsonlog, рдЬрд╕рд▓реЗ JSON рдврд╛рдБрдЪрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрд░рдЪрд┐рдд рдлрд╛рд░рдордорд╛ рдЬрд╛рдирдХрд╛рд░реА рдмрдЪрдд рдЧрд░реНрдЫред
  • рдкреНрд░рд╢рд╛рд╕рдХрд╕рдБрдЧ рдирд┐рд╢реНрдЪрд┐рдд PostgreSQL рд╕рд░реНрднрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрди рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдЫред
  • psql рдЙрдкрдпреЛрдЧрд┐рддрд╛рд▓реЗ "\dconfig" рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ (pg_settings) рдмрд╛рд░реЗ рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдЬреНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкреЗрдХреЛ рдЫред
  • рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реАрдХреЛ рдкреНрд░рдпреЛрдЧ рд╕рд░реНрднрд░рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдмрд╛рд░реЗрдорд╛ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдЬрдореНрдорд╛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреЗ рд░ рдЖрд╡рдзрд┐рдХ рд░реВрдкрдорд╛ рдбрд┐рд╕реНрдХрдорд╛ рд░рд╛рдЬреНрдп рд░рд┐рд╕реЗрдЯ рдЧрд░реНрдиреЗ рдЫреБрдЯреНрдЯреИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдмрд╛рдЯ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдЙрди рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрдЫред
  • рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд ICU рд▓реЛрдХреЗрд▓рд╣рд░реВ "ICU Collation" рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫ; рдкрд╣рд┐рд▓реЗ, рдХреЗрд╡рд▓ libc рд▓реЛрдХреЗрд▓рд╣рд░реВ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд▓реЛрдХреЗрд▓рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдереНрдпреЛред
  • рдПрдЙрдЯрд╛ рдмрд┐рд▓реНрдЯ-рдЗрди рдПрдХреНрд╕рдЯреЗрдиреНрд╕рди pg_walinspect рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ SQL рдХреНрд╡реЗрд░реАрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ WAL рд▓рдЧрд╣рд░реВрд╕рдБрдЧ рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдирд┐рд░реАрдХреНрд╖рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
  • рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐, рдбрд╛рдЯрд╛рдмреЗрд╕ рдорд╛рд▓рд┐рдХрдХреЛ рдЕрдкрд╡рд╛рдж рдмрд╛рд╣реЗрдХ, рд╕рдмреИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд╕рдБрдЧ CREATE рдЖрджреЗрд╢ рдЦрд╛рд░реЗрдЬ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рдЕрдзрд┐рдХрд╛рд░ рдерд┐рдпреЛред
  • Python 2 рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди PL/Python рдорд╛ рд╣рдЯрд╛рдЗрдпреЛред рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЕрдирдиреНрдп рдмреНрдпрд╛рдХрдЕрдк рдореЛрдб рд╣рдЯрд╛рдЗрдпреЛред

рдердкреНрдиреБрд╣реЛрд╕реН: 19:00 рджреЗрдЦрд┐ 20:00 (MSK) рд╕рдореНрдо рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдмрд╛рд░реЗ рдкрд╛рд╡реЗрд▓ рд▓реБрдЬрд╛рдиреЛрдн (Postgres Professional) рд╕рдБрдЧ рдЫрд▓рдлрд▓ рдЧрд░реНрдиреЗ рд╡реЗрдмрд┐рдирд╛рд░ рд╣реБрдиреЗрдЫред рдкреНрд░рд╕рд╛рд░рдгрдорд╛ рд╕рд╛рдореЗрд▓ рд╣реБрди рдирд╕рдХреНрдиреЗрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐, PGConf.Russia рдорд╛ рдкрд╛рд╡реЗрд▓рдХреЛ рдЬреБрди рд░рд┐рдкреЛрд░реНрдЯ "PostgreSQL 15: MERGE and more" рдХреЛ рд░реЗрдХрд░реНрдбрд┐рдЩ рдЦреБрд▓рд╛ рдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди