{"id":335998,"date":"2022-07-21T21:00:06","date_gmt":"2022-07-21T21:00:06","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=335998"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=335998","title":{"rendered":"<span>Postgresso #6 (43)<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/jb\/2z\/sv\/jb2zsvvwbxqsh_a-hf44_9rgxoi.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/jb\/2z\/sv\/jb2zsvvwbxqsh_a-hf44_9rgxoi.jpeg\" data-blurred=\"true\"\/><br \/>  <i>\u0418\u0422-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u2014 \u044d\u0442\u043e \u043a\u0430\u043a \u0432\u043e\u0434\u043e\u043f\u0440\u043e\u0432\u043e\u0434, \u0431\u0435\u0437 \u043d\u0435\u0451 \u0436\u0438\u0437\u043d\u044c \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430. \u0418 \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c Postgresso.<\/i>  <\/p>\n<hr\/>\n<p>  <b><a href=\"https:\/\/www.postgresql.org\/about\/news\/postgresql-15-beta-2-released-2479\/\">PostgreSQL 15 Beta 2<\/a><\/b><\/p>\n<p>  \u0412 Beta 2 \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 (generally available) \u0432\u0435\u0440\u0441\u0438\u0438 PostgreSQL, \u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0437\u0430 \u0432\u0440\u0435\u043c\u044f Beta-\u0444\u0430\u0437\u044b. \u041e\u0442\u043b\u0438\u0447\u0438\u044f \u043e\u0442 Beta 1 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u043d\u0430 <a href=\"https:\/\/www.postgresql.org\/about\/news\/postgresql-15-beta-2-released-2479\/\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0440\u0435\u043b\u0438\u0437\u0430<\/a> \u2014 \u044d\u0442\u043e 14 \u043d\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u041e\u0431 \u043e\u0442\u043b\u0438\u0447\u0438\u044f\u0445 PostgreSQL 15 (\u043d\u0435 Beta 2, \u0430 \u00ab\u0433\u043e\u0442\u043e\u0432\u043e\u0439\u00bb \u0432\u0435\u0440\u0441\u0438\u0438) \u043e\u0442 PostgreSQL 14 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/www.postgresql.org\/docs\/15\/release-15.html\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c Beta 2 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/www.postgresql.org\/download\/\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>. \u0414\u043e \u0432\u0435\u0440\u0441\u0438\u0438 GA \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0435\u0449\u0451 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e RC (release candidate).<br \/>  <a name=\"habracut\"><\/a><br \/>  <b><a href=\"https:\/\/www.citusdata.com\/blog\/2022\/06\/17\/citus-11-goes-fully-open-source\/\">Citus 11 for Postgres goes fully open source, with query from any node<\/a><\/b><\/p>\n<p>  \u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043e, \u0447\u0442\u043e \u043e\u0442\u043d\u044b\u043d\u0435 Citus (11-\u044f \u0432\u0435\u0440\u0441\u0438\u044f) <b>\u043e\u0442\u043a\u0440\u044b\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e<\/b>. \u0412 11.0 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u043b\u044e\u0431\u043e\u0433\u043e \u0443\u0437\u043b\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0441\u0445\u0435\u043c\u0430 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0443\u044e\u0442\u0441\u044f. \u041f\u0438\u0448\u0443\u0449\u0438\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e 2PC (\u0441 2-\u0444\u0430\u0437\u043d\u044b\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c). \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043d\u0435\u0434\u0435\u043c\u043e\u043a\u0440\u0430\u0442\u0438\u0447\u043d\u0430\u044f: \u0435\u0441\u0442\u044c \u0443\u0437\u0435\u043b-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u043e\u0440 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0443\u0437\u043b\u043e\u0432. <a href=\"https:\/\/www.citusdata.com\/blog\/2022\/03\/26\/test-drive-citus-11-beta-for-postgres\/#section1\">\u0417\u0434\u0435\u0441\u044c<\/a> \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u043e\u0431 \u043e\u0442\u043b\u0438\u0447\u0438\u044f\u0445 11.0 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439, \u043d\u043e \u044d\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u043a Beta-\u0432\u0435\u0440\u0441\u0438\u0438. \u0418\u0437 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u044b\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0430\u043d\u043e\u043d\u0441\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u0447\u0442\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438 \u0441\u0445\u0435\u043c\u044b, \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432 11.0 beta.<\/p>\n<p>  <b><a href=\"https:\/\/cloud.google.com\/blog\/products\/databases\/postgresql-interface-for-spanner-now-ga\">Introducing PostgreSQL interface for Spanner: availability at scale with the interface you know<\/a><\/b><\/p>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0431\u044b\u043b \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u0435\u0449\u0451 \u0432 \u043e\u043a\u0442\u044f\u0431\u0440\u0435 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0433\u043e\u0434\u0430, \u043c\u044b \u043e\u0431 \u044d\u0442\u043e\u043c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0443\u0436\u0435 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/580306\/\">\u043f\u0438\u0441\u0430\u043b\u0438<\/a>. \u041f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a <a href=\"https:\/\/cloud.google.com\/blog\/products\/databases\/get-more-out-of-spanner-with-granular-instance-sizing\">spanner-with-granular-instance-sizing<\/a> \u2014 \u0433\u0440\u0430\u043d\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 Spanner, \u043f\u043b\u0430\u0442\u0438\u0448\u044c \u0437\u0430 \u0442\u0435 \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u044b, \u043a\u0430\u043a\u0438\u0435 \u0442\u0435\u0431\u0435 \u043d\u0443\u0436\u043d\u044b. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0438 <a href=\"https:\/\/cloud.google.com\/free\/\">\u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c<\/a>.<\/p>\n<h2>\u041a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438<\/h2>\n<p>  <b><a href=\"https:\/\/pgconf.ru\/2022\">PGConf.Russia 2022<\/a><\/b><\/p>\n<p>  \u0412\u044b\u043b\u043e\u0436\u0435\u043d\u044b \u0432\u0438\u0434\u0435\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 \u043d\u0430 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0435\u0439 20-21-\u0433\u043e \u0438\u044e\u043d\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043a\u043b\u0430\u0434\u044b \u043c\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/667350\/\">\u043f\u0440\u043e\u0448\u043b\u043e\u043c \u041f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0441\u043e<\/a>, \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0445 (\u0438 \u0434\u0440\u0443\u0433\u0438\u0435) \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c. <\/p>\n<p>  \u0410 \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u043f\u0438\u0441\u043e\u043a \u043b\u0443\u0447\u0448\u0438\u0445 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432 \u043f\u043e \u0438\u0442\u043e\u0433\u0430\u043c \u043e\u0431\u0449\u0435\u0433\u043e \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u044f.   <\/p>\n<ul>\n<li>1: <b><a href=\"https:\/\/pgconf.ru\/2022\/315715\">Autovacuum. \u0412\u0440\u0435\u0434\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b<\/a><\/b> (<i>\u0412\u0430\u0434\u0438\u043c \u042f\u0446\u0435\u043d\u043a\u043e<\/i>, CTO Tantor Labs);<\/li>\n<li>2: <b><a href=\"https:\/\/pgconf.ru\/2022\/323024\">\u0415\u0441\u0442\u044c \u043b\u0438 \u0436\u0438\u0437\u043d\u044c \u043d\u0430 \u0412\u0435\u043d\u0435\u0440\u0435<\/a><\/b> (<i>\u0412\u043b\u0430\u0434\u0438\u043c\u0438\u0440 \u0421\u0443\u0440\u0434\u0438\u043d<\/i>, \u0434\u043e\u0446\u0435\u043d\u0442 \u041c\u0413\u0423 \u0438\u043c. \u041c.\u0412.\u041b\u043e\u043c\u043e\u043d\u043e\u0441\u043e\u0432\u0430);<\/li>\n<li>3: <b><a href=\"https:\/\/pgconf.ru\/2022\/316430\">\u0425\u043e\u0442\u0438\u0442\u0435 \u043b\u0438 \u0432\u044b \u0437\u043d\u0430\u0442\u044c, \u0447\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f VACUUM?<\/a><\/b> (<i>\u0410\u043d\u0434\u0440\u0435\u0439 \u0417\u0443\u0431\u043a\u043e\u0432<\/i>, \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0438\u0441\u0442\u0435\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 Postgres Professional);<\/li>\n<li>4: <b><a href=\"https:\/\/pgconf.ru\/2022\/314089\">\u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043e\u0442 MVP \u0434\u043e HighLoad (\u043e\u043f\u044b\u0442 \u0441 \u041e\u0421\u0410\u0413\u041e)<\/a><\/b> (<i>\u0412\u0438\u043a\u0442\u043e\u0440 \u0411\u0443\u0448\u043c\u0438\u043d<\/i>, \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0430\u0440\u0442\u043d\u0435\u0440 \u00ab\u0410\u043b\u044c\u0444\u0430\u0441\u0442\u0440\u0430\u0445\u043e\u0432\u0430\u043d\u0438\u044f\u00bb).<\/li>\n<\/ul>\n<p>\u0421\u0435\u0440\u0435\u0431\u0440\u044f\u043d\u044b\u0439 \u0434\u043e\u043a\u043b\u0430\u0434 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D1%83%D1%80%D0%B4%D0%B8%D0%BD,_%D0%92%D0%BB%D0%B0%D0%B4%D0%B8%D0%BC%D0%B8%D1%80_%D0%93%D0%B5%D0%BE%D1%80%D0%B3%D0%B8%D0%B5%D0%B2%D0%B8%D1%87\">\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e<\/a> \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0430\u0441\u0442\u0440\u043e\u043d\u043e\u043c\u0438\u0438, \u0412\u043b\u0430\u0434\u0438\u043c\u0438\u0440\u0430 \u0421\u0443\u0440\u0434\u0438\u043d\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u043b \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044e:<br \/>  <i>\u041d\u0430 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u0412\u0435\u043d\u0435\u0440\u044b \u0430\u0434\u0441\u043a\u0430\u044f \u0436\u0430\u0440\u0430 \u2014 \u0442\u0430\u043c \u043f\u043b\u0430\u0432\u044f\u0442\u0441\u044f \u043e\u043b\u043e\u0432\u043e \u0438 \u0441\u0432\u0438\u043d\u0435\u0446. \u0420\u043e\u0431\u043e\u0442\u044b-\u043f\u0435\u0440\u0432\u043e\u043f\u0440\u043e\u0445\u043e\u0434\u0446\u044b \u043f\u043e\u0433\u0438\u0431\u0430\u043b\u0438, \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u044f \u0412\u0435\u043d\u0435\u0440\u0443. \u041a\u0430\u043a\u0438\u0435 \u0442\u0443\u0442 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u044b \u043e \u0436\u0438\u0437\u043d\u0438? \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u2014 \u043c\u043e\u0433\u0443\u0442! \u041d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043e\u0431\u044a\u0451\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0436\u0438\u0437\u043d\u0438, \u043d\u0430 \u0412\u0435\u043d\u0435\u0440\u0435 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043d\u0430 \u0417\u0435\u043c\u043b\u0435. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u0436\u0438\u0437\u043d\u0438 \u0443\u0436\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b. \u0421\u0442\u0430\u043d\u0435\u0442 \u043b\u0438 \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0412\u0435\u043d\u0435\u0440\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0417\u0435\u043c\u043b\u0451\u0439?<\/i><\/p>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u0431\u0437\u043e\u0440\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u043d\u0435\u043c\u0430\u043b\u043e \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u044b PGConf.Russia \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043b\u0435\u0442.<\/p>\n<h3>Postgres.FM \u0438 Postgres.TV, \u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0438 \u0438 \u0432\u0442\u043e\u0440\u043d\u0438\u043a\u0438<\/h3>\n<p>  <b><a href=\"https:\/\/postgres.fm\/episodes\/slow-queries-and-slow-transactions\">Slow queries and slow transactions<\/a><\/b><\/p>\n<p>  5-\u0433\u043e \u0438\u044e\u043b\u044f <i>\u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432<\/i> (<a href=\"https:\/\/postgres.ai\">Postgres.ai<\/a>) \u0438 <i>\u041c\u0430\u0439\u043a\u043b \u041a\u0440\u0438\u0441\u0442\u043e\u0444\u0430\u0439\u0434\u0438\u0441<\/i> (Michael Christofides, \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c <a href=\"https:\/\/www.pgmustard.com\/\">pgMustard<\/a>) \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0441\u0432\u043e\u0439 \u0430\u0443\u0434\u0438\u043e-\u043f\u0440\u043e\u0435\u043a\u0442 <b><a href=\"https:\/\/postgres.fm\/\">Postgres FM<\/a><\/b> (\u0434\u043e\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 <a href=\"https:\/\/www.youtube.com\/channel\/UCqX_FVBw4RL-DMDwZ_H86gg\">Postgres TV<\/a> \u041d\u0438\u043a\u043e\u043b\u0430\u044f \u0438 <i>\u0418\u043b\u044c\u0438 \u041a\u043e\u0441\u043c\u043e\u0434\u0435\u043c\u044c\u044f\u043d\u0441\u043a\u043e\u0433\u043e<\/i>) \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043e\u043d\u0438 \u0441 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439: \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0438\u0445, \u0430 \u0438 \u043e \u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u043e, \u0430 \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0438 \u043f\u043e\u0442\u0435\u0440\u043f\u0435\u0442\u044c.<\/p>\n<p>  \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e \u2014 14-\u0433\u043e \u0438\u044e\u043b\u044f \u2014 \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0438 \u041c\u0430\u0439\u043a\u043b \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438 <b><a href=\"https:\/\/postgres.fm\/episodes\/managed-services-vs-diy\">Managed services vs. DIY<\/a><\/b>. \u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u043c\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438.<\/p>\n<p>  \u041c\u0430\u0439\u043a\u043b <a href=\"https:\/\/www.pgmustard.com\/blog\/postgres-fm-a-new-postgres-podcast\">\u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0435<\/a> \u0438 \u0441\u0432\u043e\u0435\u0439 \u043b\u044e\u0431\u0432\u0438 \u043a \u043f\u043e\u0434\u043a\u0430\u0441\u0442\u0430\u043c \u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 pgMustard. \u041e\u043d \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u0434\u0443\u044d\u0442 \u0441 \u041d\u0438\u043a\u043e\u043b\u0430\u0435\u043c \u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0431\u043b\u0438\u0436\u0435 \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c DBA, \u043a \u0432\u044b\u0441\u043e\u043a\u043e\u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c, \u0430 \u0441\u0430\u043c \u041c\u0430\u0439\u043a\u043b \u0431\u043b\u0438\u0436\u0435 \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0438 \u043d\u0443\u0436\u0434\u0430\u043c \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u043e\u0432.<\/p>\n<p>  \u0412\u0441\u0442\u0440\u0435\u0447\u0438 Postgres.TV \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u043f\u043e \u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430\u043c. \u0412\u0438\u0434\u0435\u043e-\u0432\u0435\u0440\u0441\u0438\u044f \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 Postgres.TV, \u0430 \u0430\u0443\u0434\u0438\u043e-\u0432\u0435\u0440\u0441\u0438\u044f \u2014 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043d\u0430 Postgres.FM. \u041d\u043e Postgres.TV \u044d\u0442\u0438\u043c \u043d\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u0435\u0442\u0441\u044f: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0432\u0438\u0434\u0435\u043e \u0441 \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c <i>\u042f\u043d\u0430 \u041a\u0430\u0440\u0440\u043c\u0430\u043d\u0430\u0441\u0430<\/i> (\u041d\u0438\u0434\u0435\u0440\u043b\u0430\u043d\u0434\u044b, EDB) \u2014 <a href=\"https:\/\/www.youtube.com\/watch?v=wEIo8ero-K4\">PostgresTV guests: Jan Karremans. Postgres and Kubernetes<\/a>, \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0430\u0443\u0434\u0438\u043e-\u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430 Postgres.FM.<\/p>\n<p>  \u0414\u043e \u044d\u0442\u043e\u0433\u043e \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0432 \u0441\u043e\u0430\u0432\u0442\u043e\u0440\u0441\u0442\u0432\u0435 \u0441 \u0418\u043b\u044c\u0451\u0439 \u041a\u043e\u0441\u043c\u043e\u0434\u0435\u043c\u044c\u044f\u043d\u0441\u043a\u0438\u043c \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u0438\u0441\u044c \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u043c\u0438 <a href=\"https:\/\/www.youtube.com\/results?search_query=%23RuPostgres\">\u041f\u043e\u0441\u0442\u0433\u0440\u0435\u0441-\u0432\u0442\u043e\u0440\u043d\u0438\u043a\u0430\u043c\u0438<\/a> (#ruPostgres). \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u0431\u044b\u043b\u043e \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u043e 5 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u043d\u0430\u0437\u0430\u0434 \u2014 \u0441 <i>\u0415\u0433\u043e\u0440\u043e\u043c \u0420\u043e\u0433\u043e\u0432\u044b\u043c<\/i>: <a href=\"https:\/\/www.youtube.com\/watch?v=tTOQj7x0YcQ\">\u0412\u043d\u0443\u0442\u0440\u0438 PostgreSQL<\/a>. \u0410\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 \u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0438\u0441\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h2>\u041e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>  <b><a href=\"https:\/\/postgrespro.com\/blog\/pgsql\/5969631\">Egor Rogov. PostgreSQL 14 Internals<\/a><\/b><\/p>\n<p>  \u041a\u043d\u0438\u0433\u0430 <i>\u0415\u0433\u043e\u0440\u0430 \u0420\u043e\u0433\u043e\u0432\u0430<\/i> (<a href=\"https:\/\/postgrespro.ru\/education\/books\/internals\">\u0437\u0434\u0435\u0441\u044c<\/a> \u043e \u0435\u0451 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435) \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439. \u041f\u043e\u043a\u0430 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e 1-\u044f \u0447\u0430\u0441\u0442\u044c. \u041e\u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 <a href=\"https:\/\/edu.postgrespro.com\/postgresql_internals-14_part1_en.pdf\">\u0432 PDF<\/a>. \u041f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f <i>\u041b\u044e\u0434\u043c\u0438\u043b\u0430 \u041c\u0430\u043d\u0442\u0440\u043e\u0432\u0430<\/i>. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0432 \u0441\u043a\u043e\u0440\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>  <b><a href=\"https:\/\/postgrespro.ru\/education\/courses\/QPT\">PostgreSQL 13. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/a><\/b><\/p>\n<p>  \u041a\u0443\u0440\u0441 QPT-13 \u0432\u044b\u043b\u043e\u0436\u0435\u043d \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 postgrespro.ru. \u041a\u0443\u0440\u0441 \u0434\u0432\u0443\u0445\u0434\u043d\u0435\u0432\u043d\u044b\u0439. \u0423\u0447\u0435\u0431\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u044b, \u0441\u0441\u044b\u043b\u043a\u0438 <a href=\"https:\/\/postgrespro.ru\/education\/courses\/QPT\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <b><a href=\"https:\/\/postgrespro.ru\/education\/courses\/DBA1\">DBA1 \u0432 \u042d\u043b\u0438\u0441\u0442\u0435<\/a><\/b><\/p>\n<p>  \u0412\u044b\u043b\u043e\u0436\u0435\u043d\u044b \u0432\u0438\u0434\u0435\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0434\u043e PostgreSQL 13 \u043a\u0443\u0440\u0441\u0430 DBA1, \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u042d\u043b\u0438\u0441\u0442\u0435 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u043e\u0442\u0434\u0435\u043b\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f Postgres Professional \u0432 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443. \u041a\u0443\u0440\u0441 \u0434\u043b\u0438\u043b\u0441\u044f 3 \u0434\u043d\u044f, \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u044b 2 \u0438\u0437 \u043d\u0438\u0445, 3-\u0439 \u0434\u0435\u043d\u044c \u0432\u044b\u043b\u043e\u0436\u0430\u0442 \u0441\u043a\u043e\u0440\u043e.<\/p>\n<h2>\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0438 \u00ab\u0447\u0443\u0436\u0438\u0435\u00bb \u0434\u0430\u043d\u043d\u044b\u0435<\/h2>\n<p>  <b><a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/676792\/\">\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 Oracle \u043d\u0430 PostgreSQL: \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u044d\u0442\u0430\u043f\u044b, \u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0442\u0438\u043f\u044b \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/a><\/b><\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f <i>\u041f\u0435\u0442\u0440\u0430 \u041f\u0435\u0442\u0440\u043e\u0432\u0430<\/i> (Postgres professional), \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 <b>\u0441\u0435\u0440\u0438\u044e \u0438\u0437 4 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438<\/b>. \u041e\u0447\u0435\u043d\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c, \u041f\u0451\u0442\u0440 \u043f\u0438\u0448\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0432\u043e\u0439 \u043d\u0435\u043c\u0430\u043b\u044b\u0439 \u043e\u043f\u044b\u0442. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0435\u0441\u0442\u044c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u044b \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u0432\u0448\u0438\u0435 \u043d\u0430 <a href=\"https:\/\/pgconf.ru\/\">PGConf.Russia<\/a> \u0440\u0430\u0437\u043d\u044b\u0445 \u043b\u0435\u0442. \u0412\u043e\u0442 \u043f\u043e\u043b\u0434\u044e\u0436\u0438\u043d\u044b \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430:<\/p>\n<ul>\n<li><a href=\"https:\/\/pgconf.ru\/2020\/274661\">\u041a\u0430\u043a \u044f \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441 60K \u0441\u0442\u0440\u043e\u043a \u0438\u0437 150 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440 PL\/SQL \u0432 Postgres<\/a> (<i>\u0410\u043d\u0430\u0442\u043e\u043b\u0438\u0439 \u0410\u043d\u0444\u0438\u043d\u043e\u0433\u0435\u043d\u043e\u0432<\/i>, \u0410\u041e \u00ab\u0412\u041d\u0418\u0418\u0416\u0422\u00bb) \u0438 \u0435\u0433\u043e \u0436\u0435<\/li>\n<li><a href=\"https:\/\/pgconf.ru\/202110\/308499\">\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Oracle PL\/SQL \u043d\u0430 Postgres pl\/pgSQL: \u0432\u0437\u0433\u043b\u044f\u0434 \u0434\u0432\u0430 \u0433\u043e\u0434\u0430 \u0441\u043f\u0443\u0441\u0442\u044f<\/a>;<\/li>\n<li><a href=\"https:\/\/pgconf.ru\/2020\/278050\">\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u0433\u043e \u041f\u041e \u0441 Oracle \u043d\u0430 PostgreSQL<\/a> (<i>\u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0413\u0440\u0435\u0431\u0435\u043d\u0449\u0438\u043a\u043e\u0432<\/i>, \u041e\u041e\u041e \u00ab\u0414\u0438\u0430\u0441\u043e\u0444\u0442\u00bb);<\/li>\n<li><a href=\"https:\/\/pgconf.ru\/2020\/271655\">\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Oracle \u043d\u0430 PostgreSQL \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440\u0430<\/a> (<i>\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u041a\u0432\u0430\u0440\u0430\u0446\u0445\u0435\u043b\u0438\u044f<\/i>, \u0411\u0410\u0420\u0421 \u0413\u0440\u0443\u043f);<\/li>\n<li><a href=\"https:\/\/pgconf.ru\/2020\/271697\">\u041f\u0440\u0438\u0441\u043b\u043e\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f. \u041a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u0440\u0443\u0436\u0438\u043b\u0438 MSSQL, Postgres, \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u0432\u043e\u044e \u00ab\u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e\u00bb \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u043d\u0430 Postgres \u043e\u0434\u043d\u0443 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u041c\u0418\u0421 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438<\/a> (<i>\u0422\u0430\u0440\u0430\u0441 \u0427\u0438\u043a\u0438\u043d<\/i>, \u041e\u041e\u041e \u00ab\u0420\u0422 \u041c\u0418\u0421\u00bb);<\/li>\n<li><a href=\"https:\/\/pgconf.ru\/202110\/309514\">\u0418\u0437 Oracle \u0432 Postgres \u043f\u043e \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u043c \u0440\u0435\u043b\u044c\u0441\u0430\u043c. \u041d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u043d\u044e\u0430\u043d\u0441\u044b<\/a> (<i>\u041d\u0438\u043a\u0438\u0442\u0430 \u041b\u0435\u0432\u0447\u0435\u043d\u043a\u043e<\/i>, \u041f\u0410\u041e \u00ab\u0420\u043e\u0441\u0442\u0435\u043b\u0435\u043a\u043e\u043c\u00bb);<\/li>\n<li><a href=\"https:\/\/pgconf.ru\/202110\/309467\">\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 ECM \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u043d\u0430 PostgreSQL<\/a> (<i>\u041d\u0438\u043a\u0438\u0442\u0430 \u0414\u0440\u0435\u0439<\/i>, OT-OIL)<\/li>\n<\/ul>\n<p>  <b><a href=\"https:\/\/aws.amazon.com\/ru\/blogs\/database\/handle-empty-strings-when-migrating-from-oracle-to-postgresql\/\">Handle empty strings when migrating from Oracle to PostgreSQL<\/a><\/b><\/p>\n<p>  \u042d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0432\u0430\u0436\u043d\u044b\u0445 \u0442\u0435\u043c \u043f\u0440\u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 Oracle -> Postgres: \u043f\u0443\u0441\u0442\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 NULL. \u0410\u0432\u0442\u043e\u0440\u044b \u2014 <i>\u0428\u0430\u0448\u0438\u043a\u0430\u043d\u0442\u0430 \u041f\u0430\u0442\u0442\u0430\u043d\u044c\u044f\u043a<\/i> \u0438 <i>\u0414\u0438\u043f\u0430\u043a \u041c\u0430\u0445\u0442\u043e<\/i> (Sashikanta Pattanayak \u0438 Deepak Mahto) \u2014 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u0442\u0438\u0440\u0443\u044e\u0442 \u044d\u0442\u043e \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435, \u043d\u043e \u0438 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 PostgreSQL. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/functions-conditional\">NULLIF<\/a> (\u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u044b \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439<font color=\"red\">[??]<\/font>).<\/p>\n<p>  \u041f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u0438\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0440\u0430\u043a\u043b\u043e\u0432\u0443\u044e <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/18\/sqlrf\/NVL.html\">NVL<\/a> \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u043e\u0432\u043e\u0439 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/functions-conditional#FUNCTIONS-COALESCE-NVL-IFNULL\">COALESCE<\/a>, \u043a\u0430\u043a \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0440\u0430\u043a\u043b\u043e\u0432\u043e\u0439 <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/sqlrf\/DECODE.html\">DECODE<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441 CASE. \u041d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <a href=\"https:\/\/github.com\/orafce\/orafce?ysclid=l5o9kaivbf508879919\">Orafce<\/a>, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 NVL \u0438 Decode. <\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u0442\u043e \u0447\u0442\u043e\u0431\u044b \u0433\u043b\u0443\u0431\u043e\u043a\u0430 \u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u0437\u0430\u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<br \/>  <a href=\"https:\/\/d1.awsstatic.com\/whitepapers\/Migration\/oracle-database-amazon-aurora-postgresql-migration-playbook-12.4.pdf\">Migration Playbook. Oracle Database 19c To Amazon Aurora with PostgreSQL Compatibility (12.4)<\/a> \u2014 PDF 400-\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0441\u043e\u0431\u0438\u044f \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0432 \u0442\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0441 <a href=\"https:\/\/docs.aws.amazon.com\/SchemaConversionTool\/latest\/userguide\/CHAP_Welcome.html\">AWS Schema Conversion Tool<\/a> \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442.<\/p>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438, \u043d\u0430 \u0442\u0435\u043c\u0443 NULL \u0431\u044b\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0439\u0448\u0438\u0439 \u0434\u043e\u043a\u043b\u0430\u0434 <i>\u0410\u043b\u0435\u043a\u0441\u0435\u0439 \u0411\u043e\u0440\u0449\u0435\u0432\u0430<\/i> (Postgres Professional) \u043d\u0430 PGConf.Russia 2022: <b><a href=\"https:\/\/pgconf.ru\/2022\/316638\">NULLs \u0432 Postgres<\/a><\/b>. \u041c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0433\u043e, \u043d\u043e \u043a\u043e\u043d\u0442\u0440\u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0441\u0430\u043c\u044b\u0445 NULL. \u0412 Postgres NULL \u043d\u0435 \u0440\u0430\u0432\u0435\u043d NULL, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. \u041d\u043e (\u0432 PostgreSQL 15) \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 (\u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439) \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 NULL \u0432 PostgreSQL 15:<br \/>  <b><a href=\"https:\/\/blog.rustprooflabs.com\/2022\/07\/postgres-15-unique-improvement-with-null\">Postgres 15 improves UNIQUE and NULL<\/a><\/b><\/p>\n<p>  <i>\u0420\u0430\u0439\u0430\u043d \u041b\u044d\u043c\u0431\u0435\u0440\u0442<\/i> (Ryan Lambert, \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0438 CEO RustProof Labs) \u0441\u043a\u0430\u0447\u0430\u043b \u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u0442 PostgreSQL 15 Beta 2. \u0415\u0433\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 <b>UNIQUE null treatment option<\/b>, \u0434\u0430\u0432\u043d\u043e <a href=\"https:\/\/postgrespro.ru\/list\/thread-id\/2566454?ysclid=l5tzphoaki755907712\">\u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0432\u0448\u0435\u0435\u0441\u044f<\/a> \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0434:<br \/>  <i>\u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c NULL \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u0420\u0430\u043d\u044c\u0448\u0435 NULL \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u043a \u0440\u0430\u0437\u043d\u044b\u0435 (\u0440\u0430\u0437\u043b\u0438\u0447\u0438\u043c\u044b\u0435) \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b <font color=\"red\">[?? \u0442\u0430\u043a?]<\/font>\u0441 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c <b>UNIQUE NULLS NOT DISTINCT<\/b><\/i>. \u0420\u0430\u0439\u0430\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043d\u043e\u0432\u0435\u0439\u0448\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 PostgreSQL.<\/p>\n<p>  <b><a href=\"https:\/\/www.migops.com\/blog\/handling-trailing-zeros-with-numeric-datatype-in-postgresql\/\">Handling Trailing Zeros With Numeric Datatype in PostgreSQL<\/a><\/b><\/p>\n<p>  \u0410\u0432\u0442\u043e\u0440, <i>\u0414\u0436\u0430\u0433\u0430\u0434\u0438\u0448 \u041f\u0430\u043d\u0443\u0433\u0430\u043d\u0442\u0438<\/i> (Jagadeesh Panuganti, MigOps) \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0442\u0438\u043f NUMBER (Oracle) vs. NUMERIC (PostgreSQL), \u0438\u0445 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043d\u0443\u043b\u044f\u043c\u0438 \u0432 \u0445\u0432\u043e\u0441\u0442\u0435 \u0447\u0438\u0441\u043b\u0430. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 (\u043d\u0435 \u0442\u0430\u043a\u0430\u044f \u0443\u0436 \u0434\u0440\u0430\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f, \u043a\u0430\u0436\u0435\u0442\u0441\u044f) \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0432 PostgreSQL \u0434\u043e 12-\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 13-\u0439, \u0433\u0434\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>trim_scale()<\/code>. <\/p>\n<p>  <b><a href=\"https:\/\/www.migops.com\/blog\/oracle-vs-postgresql-transaction-control-statements\/\">Oracle vs PostgreSQL \u2013 Transaction control statements<\/a><\/b><\/p>\n<p>  \u041a\u043e\u0440\u043e\u0442\u0435\u043d\u044c\u043a\u0430\u044f, \u043d\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f. <i>\u0410\u0445\u0438\u043b \u0411\u0430\u043d\u0430\u043f\u043f\u0430\u0433\u0430\u0440\u0438<\/i> (Akhil Reddy Banappagari, MigOps) \u043e\u0431\u0435\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u0432 \u0441\u0442\u0430\u0442\u044c\u044e, \u0432\u044b \u043e\u0431\u0440\u0435\u0442\u0451\u0442\u0435 \u044f\u0441\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f PL\/SQL \u0438 PL\/pgSQL. \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441 BEGIN (\u0438 END). \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442 \u0432 Oracle \u0438 PostgreSQL COMMIT \u0438 ROLLBACK, \u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u043d\u0430 (\u0441\u043e\u0432\u0441\u0435\u043c \u0440\u0430\u0437\u043d\u0443\u044e) \u0440\u0430\u0431\u043e\u0442\u0443 \u0431\u043b\u043e\u043a\u043e\u0432 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439. <\/p>\n<p>  <b><a href=\"https:\/\/kiranrao.ca\/2022\/05\/04\/zero-downtime-migrations.html\">Changing Tires at 100mph: A Guide to Zero Downtime Migrations<\/a><\/b> <\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f <i>\u041a\u0438\u0440\u0430\u043d\u0430 \u0420\u0430\u043e<\/i> (Kiran Rao, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u043a\u0430\u043d\u0430\u0434\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u0421\u0430\u043d-\u0424\u0440\u0430\u043d\u0446\u0438\u0441\u043a\u043e) \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u0430: \u043a\u0430\u043a \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e? \u0412\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043f\u0443\u0441\u0442\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443;<\/li>\n<li>\u043f\u0438\u0448\u0438\u0442\u0435 \u0438 \u0432 \u0441\u0442\u0430\u0440\u0443\u044e, \u0438 \u0432 \u043d\u043e\u0432\u0443\u044e<\/li>\n<li>\u043f\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u0430\u043c \u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0441\u0442\u0430\u0440\u043e\u0439 \u0432 \u043d\u043e\u0432\u0443\u044e<\/li>\n<li>\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c<\/li>\n<li>\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u043d\u043e\u0432\u0443\u044e<\/li>\n<li>\u043d\u0435 \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u0441\u0442\u0430\u0440\u0443\u044e<\/li>\n<li>\u0441\u043e\u0442\u0440\u0438\u0442\u0435 \u0441\u0442\u0430\u0440\u0443\u044e<\/li>\n<\/ol>\n<p>  \u041d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b: \u0442\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0442\u0430\u043a\u0438\u0445 \u0432\u0435\u0449\u0430\u0445, \u043a\u0430\u043a \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/uuid-ossp\">uuid-ossp<\/a>, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 <a href=\"https:\/\/leopard.in.ua\/2016\/09\/20\/safe-and-unsafe-operations-postgresql#.YtZ6DzfP2Uk\">\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435\/\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/a>, \u043c\u043d\u043e\u0433\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u0432 \u043a\u043e\u0434\u0430. <\/p>\n<p>  <b><a href=\"https:\/\/www.freecodecamp.org\/news\/how-to-join-mysql-and-postgres-in-a-live-materialized-view\/\">How to Join MySQL and Postgres in a Live Materialized View<\/a><\/b><\/p>\n<p>  <i>\u0411\u043e\u0431\u0431\u0438 \u0418\u043b\u0438\u0435\u0432<\/i> (Bobby Iliev) \u043f\u0438\u0448\u0435\u0442: <i>\u043a\u043e\u0433\u0434\u0430 \u0442\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0448\u044c \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u043d\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0442\u044b, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0448\u044c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445<\/i> [\u0432 \u0441\u043c\u044b\u0441\u043b\u0435 \u0421\u0423\u0411\u0414]. <i>\u041e\u0431\u044b\u0447\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 JOIN \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0421\u0423\u0411\u0414, \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c, \u043d\u043e \u044d\u0442\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Materialize \u0434\u043b\u044f JOIN \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 MySQL \u0438 Postgres \u0432 <\/i>\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438<i> (<b>live materialized view<\/b>). \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0438, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u0440\u0430\u0437\u0443 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0421\u0423\u0411\u0414 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 SQL.<\/i><\/p>\n<p>  <b><a href=\"https:\/\/github.com\/fatkodima\/online_migrations\">OnlineMigrations<\/a><\/b><\/p>\n<p>  \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432 \u043f\u043e\u043c\u043e\u0449\u044c \u043c\u0438\u0433\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u043c, \u043d\u0430 Ruby. \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0432 \u043a\u043e\u0434\u0435 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438, \u043d\u0435 \u0434\u0430\u0451\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438\u0445 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>  \u0410\u0432\u0442\u043e\u0440\u044b (\u043a\u043e\u043c\u0430\u043d\u0434\u0430 <a href=\"https:\/\/github.com\/fatkodima\">fatkodima<\/a>) \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 online_migrations \u0441 <b><a href=\"https:\/\/github.com\/ankane\/strong_migrations\">strong_migrations<\/a><\/b>, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0439 GitLab: online_migrations \u044d\u0442\u043e \u0441\u0443\u043f\u0435\u0440\u0441\u0435\u0442 strong_migrations, \u0441 \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0444\u0438\u0447\u0430\u043c\u0438 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 API. \u0413\u043b\u0430\u0432\u043d\u044b\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e <i>strong_migrations<\/i> \u0434\u0430\u0451\u0442 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0432\u0438\u0434\u0435, \u0430 \u0432\u044b \u0443\u0436 \u0442\u0430\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0430\u043c\u0438, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u043a <i>online_migrations<\/i> \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u0434. \u041f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432:<\/p>\n<ul>\n<li>\u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\/\u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432;<\/li>\n<li>\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0442\u0438\u043f\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0432 \u0437\u0430\u043c\u0435\u043d\u0435 PRIMARY\/FOREIGN KEYS \u0441 integer \u043d\u0430 bigint);<\/li>\n<li>\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0441 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438;<\/li>\n<li>\u0434\u043e\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (backfilling data);<\/li>\n<li>\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439.<\/li>\n<\/ul>\n<p>  \u0412 <i>online_migrations<\/i> \u0435\u0441\u0442\u044c \u0441\u0440\u0435\u0434\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0442\u0430\u0431\u043b\u0438\u0446, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"https:\/\/github.com\/fatkodima\/online_migrations\/blob\/master\/BACKGROUND_MIGRATIONS.md\">background migrations<\/a> \u0442\u0435\u0445 \u0436\u0435 \u0430\u0432\u0442\u043e\u0440\u043e\u0432.<\/p>\n<p>  <b><a href=\"https:\/\/github.com\/salsita\/node-pg-migrate\">node-pg-migrate 6.2.2<\/a><\/b><\/p>\n<p>  \u0421\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f PostgreSQL (\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0434\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0441 \u043d\u0438\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <a href=\"https:\/\/www.cockroachlabs.com\/\">CockroachDB<\/a>). \u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u043d\u0430 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Node.js\">Node.js<\/a>. \u041d\u0430\u0447\u0438\u043d\u0430\u043b \u043f\u0440\u043e\u0435\u043a\u0442 <i>\u0422\u044d\u043e \u042d\u0444\u0440\u0430\u0438\u043c<\/i> (Theo Ephraim), \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0448\u0441\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 <a href=\"https:\/\/www.salsitasoft.com\/\">Salsita Software<\/a>. \u0412 <a href=\"https:\/\/github.com\/salsita\/node-pg-migrate\/releases\/tag\/v6.2.2\">\u0432\u0435\u0440\u0441\u0438\u0438 6.2.2<\/a> \u0435\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e-\u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u0430\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u043b\u0443\u0447\u0448\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c.<\/p>\n<p>  <b><a href=\"https:\/\/github.com\/pgspider\/pgspider_ext\">PGSpider<\/a><\/b><\/p>\n<p>  PGSpider (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 pgspider_ext) \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. pgspider_ext \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/fdwhandler\">Foreign Data Wrapper<\/a>(FDW). \u041e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 Big Data \u0438 IoT.<\/p>\n<p>  PGSpider \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c (\u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c). \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0435\u0442 \u043a\u043b\u044e\u0447\u0430 \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, PGSpider \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0435\u0433\u043e \u0441\u0430\u043c. \u0423\u043c\u0435\u0435\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0441 \u043f\u043e\u0445\u043e\u0436\u0438\u043c\u0438 \u0441\u0445\u0435\u043c\u0430\u043c\u0438 \u0432 \u043e\u0434\u043d\u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443.<\/p>\n<p>  \u0427\u0435\u0440\u0435\u0437 FDW PGSpider \u0443\u043c\u0435\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0442\u044c\u0441\u044f \u0441:<\/p>\n<ul>\n<li>PostgreSQL (postgres_fdw);<\/li>\n<li>MySQL (mysql_fdw);<\/li>\n<li>DynamoDB (dynamodb_fdw);<\/li>\n<li>GridDB (griddb_fdw);<\/li>\n<li>JDBC (jdbc_fdw);<\/li>\n<li>ODBC (odbc_fdw);<\/li>\n<li>SQLite (sqlite_fdw);<\/li>\n<li>MongoDB (mongo_fdw);<\/li>\n<li>InfluxDB (influxdb_fdw);<\/li>\n<li>Parquet S3 (parquet_s3_fdw).<\/li>\n<\/ul>\n<p>  PGSpider \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0432 Toshiba Corporation Corporate Software Engineering &amp; Technology Center.<\/p>\n<h2>\u041a\u043b\u0430\u0441\u0441\u0438\u043a\u0430<\/h2>\n<p>  <b><a href=\"https:\/\/www.theregister.com\/2022\/06\/14\/database_from_the_1980s_needs\/\">Database from the 1980s needs time travel says author<\/a><\/b><\/p>\n<p>  \u0418\u0422-\u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0441\u0442 \u0441 32-\u043b\u0435\u0442\u043d\u0438\u043c \u0441\u0442\u0430\u0436\u0435\u043c, <i>\u041b\u0438\u043d\u0434\u0437\u0438 \u041a\u043b\u0430\u0440\u043a<\/i> (Lindsay Clark), \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0438\u0434\u0435\u0439, \u043e\u0432\u043b\u0430\u0434\u0435\u0432\u0430\u0432\u0448\u0438\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u043e\u043c \u2014 <b><i>\u041c\u0430\u0439\u043a\u043b\u043e\u043c \u0421\u0442\u043e\u0443\u043d\u0431\u0440\u0435\u0439\u043a\u0435\u0440\u043e\u043c<\/i><\/b> (Michael Stonebraker), \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442, \u043e\u0431\u043e\u0431\u0449\u0430\u0435\u0442. \u041e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u0430\u043a\u0438\u0439 \u043a\u043e\u043b\u043b\u0430\u0436 \u0438\u0437 \u0446\u0438\u0442\u0430\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0430. \u041e\u043d\u0438 \u043a\u0430\u0441\u0430\u044e\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e <i>\u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/i>, \u043d\u043e \u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043c\u043d\u043e\u0433\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<\/p>\n<p>  \u0422\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0442\u043e\u0433\u043e \u0436\u0435 \u0430\u0432\u0442\u043e\u0440\u0430. \u041e\u043d, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <b><a href=\"https:\/\/www.theregister.com\/2022\/05\/25\/oracle_rivalry_no_longer_the\/\">We have bigger targets than beating Oracle, say open source DB pioneers<\/a><\/b> \u043e\u0431\u0438\u043b\u044c\u043d\u043e \u0446\u0438\u0442\u0438\u0440\u0443\u0435\u0442 \u0438 <i>\u041f\u0435\u0442\u0440\u0430 \u0417\u0430\u0439\u0446\u0435\u0432\u0430<\/i> \u2014 \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 MySQL (\u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c Percona, \u043a\u043e\u043d\u0435\u0447\u043d\u043e).<\/p>\n<h2>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/h2>\n<p>  <b><a href=\"https:\/\/www.cybertec-postgresql.com\/en\/column-order-in-postgresql-does-matter\/\">Column Order In PostgreSQL Does Matter<\/a><\/b><\/p>\n<p>  <i>\u0425\u0430\u043d\u0441-\u042e\u0440\u0433\u0435\u043d \u0428\u0451\u043d\u0438\u0433<\/i> (Hans-J\u00fcrgen Sch\u00f6nig, \u0421ybertec) \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0442\u0435\u043c\u0443 \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u043e\u0439: \u043a\u0430\u043a \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b \u0432\u043b\u0438\u044f\u0442\u044c? \u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u0432 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445? \u0425\u0430\u043d\u0441-\u042e\u0440\u0433\u0435\u043d \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0443 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 \u0432 1500 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0438 \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e count \u043f\u043e 1000-\u043d\u043e\u043c\u0443 \u0441\u0442\u043e\u043b\u0431\u0446\u0443 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 20 \u0440\u0430\u0437 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0439, \u0447\u0435\u043c \u043f\u043e 1-\u043c\u0443, \u0438 \u0432 10, \u0447\u0435\u043c \u043f\u043e 100-\u043c\u0443.<\/p>\n<p>  \u041d\u0430\u043f\u043e\u043c\u043d\u0438\u043c \u043e \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u043b\u0435\u0433\u0438 <i>\u041f\u0430\u0432\u043b\u0430 \u0422\u043e\u043b\u043c\u0430\u0447\u0451\u0432\u0430<\/i> <b><a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/662021\/\">\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 PostgreSQL \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435<\/a><\/b>. \u041e\u043d \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u0442 JOIN \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0442\u0430\u0431\u043b\u0438\u0446, \u0438 \u0443\u0431\u0435\u0436\u0434\u0430\u0435\u0442\u0441\u044f: \u0442\u043e, \u043a\u0430\u043a \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u0437\u0430\u043f\u0440\u043e\u0441, \u0438\u043c\u0435\u0435\u0442 \u0435\u0449\u0451 \u043a\u0430\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u0447\u0438\u0441\u043b\u043e \u0442\u0430\u0431\u043b\u0438\u0446 \u0432\u0435\u043b\u0438\u043a\u043e. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0425\u0430\u043d\u0441\u0430-\u042e\u0440\u0433\u0435\u043d\u0430, \u041f\u0430\u0432\u0435\u043b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0445 \u0437\u0430\u043f\u0438\u0441\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445, \u0432\u043b\u0438\u044f\u044e\u0449\u0438\u0445 \u043d\u0430 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>  <b><a href=\"https:\/\/dev.to\/yugabyte\/postgres-and-the-curious-case-of-the-cursory-cursors-3l3h\">Postgres and the curious case of the cursory cursors<\/a><\/b><\/p>\n<p>  <i>\u0424\u0440\u0438\u0442\u0441 \u0425\u043e\u043e\u0433\u043b\u0430\u043d\u0434<\/i> (Frits Hoogland, Yugabyte) \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439: \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 SQL-\u0437\u0430\u043f\u0440\u043e\u0441 (\u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u043d\u0451\u043c) \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e 133\u043c\u0441, \u0442\u043e 750\u043c\u0441. \u041d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u043d \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443: \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0445 SQL, \u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0437 \u0432\u043d\u0443\u0442\u0440\u0438 PL\/pgSQL-\u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0439 <br \/>  <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/plpgsql-cursors\">refcursor<\/a>. \u041f\u043b\u0430\u043d\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0440\u0430\u0437\u043d\u044b\u0435.<\/p>\n<p>  <b><a href=\"https:\/\/www.percona.com\/blog\/working-with-large-postgresql-databases\/\">Working With Large PostgreSQL Databases<\/a><\/b><\/p>\n<p>  \u0412 \u0431\u043b\u043e\u0433\u0435 Percona \u0420\u043e\u0431\u0435\u0440 \u0411\u0435\u0440\u043d\u044c\u0435 (Robert Bernier) \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0431\u0430\u0437 PostgreSQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0438\u0431\u043a\u0438\u0439, \u043d\u043e \u043d\u0435 \u0440\u0435\u0437\u0438\u043d\u043e\u0432\u044b\u0439 (\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b \u0438 \u044f, \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u0443\u043f\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 32\u0422\u0411 \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b). \u0420\u043e\u0431\u0435\u0440 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u0441\u0432\u043e\u0438 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 (\u043d\u0435)\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0430\u0437\u044b:<\/p>\n<ul>\n<li>\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0431\u0430\u0437\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c;<\/li>\n<li>\u0438\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e;<\/li>\n<li>\u043e\u043d\u0438 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438;<\/li>\n<li>\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0431\u0430\u0437\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u043b\u0435\u0440\u0430\u043d\u0442\u043d\u044b \u043a \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438, \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u0435;<\/li>\n<li>\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442;<\/li>\n<li>\u0438\u0445 \u043d\u0430\u0434\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c, \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0446\u0438\u043a\u043b\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438;<\/li>\n<li>\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0431\u0430\u0437\u044b \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0440\u0435\u0430\u043a\u0446\u0438\u0438 \u043d\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b;<\/li>\n<li>\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0431\u0430\u0437\u044b \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u043a \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c (\u043a <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B4%D0%BE%D0%BB%D0%B3\">\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u043e\u043b\u0433\u0430\u043c<\/a>);<\/li>\n<\/ul>\n<p>  \u0423 \u044d\u0442\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0430 \u043d\u0435\u043c\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u0412\u043e\u0442 \u043e postgreSQL 15: <b><a href=\"https:\/\/www.percona.com\/blog\/introducing-postgresql-15-working-with-distinct\/\">Introducing PostgreSQL 15: Working with DISTINCT<\/a><\/b><\/p>\n<p>  SELECT DISTINCT \u2014 \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u0438 \u0432\u0430\u0436\u043d\u0435\u0439\u0448\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041d\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c \u043d\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 (\u043e UNIQUE NULLS NOT DISTINCT \u0441\u043c. \u0432\u044b\u0448\u0435), \u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435: \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0420\u043e\u0431\u0435\u0440 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u043d \u0438 \u043a\u0430\u043a \u0440\u0430\u0441\u0442\u0451\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432.<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0443 \u0420\u043e\u0431\u0435\u0440\u0430 \u0438 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0442\u0435\u043c\u0443 \u0431\u043e\u0440\u044c\u0431\u044b \u0441 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/routine-vacuuming#VACUUM-FOR-WRAPAROUND\">wraparound<\/a> (\u043a\u0441\u0442\u0430\u0442\u0438, \u043d\u0443 \u043a\u043e\u0433\u0434\u0430 \u0436\u0435, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432 PostgreSQL \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f <a href=\"https:\/\/postgrespro.ru\/list\/thread-id\/2583107?ysclid=l5ogbzrb3o662086265\">64-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u044b\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439<\/a>?): <b><a href=\"https:\/\/www.percona.com\/blog\/overcoming-vacuum-wraparound\/\">Overcoming VACUUM WRAPAROUND<\/a><\/b>. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0435\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a 5 \u043f\u0440\u0438\u0447\u0438\u043d wraparound, \u0438 \u043d\u0435 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0432\u043f\u043e\u043b\u043d\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b:<\/p>\n<ul>\n<li>\u0430\u0432\u0442\u043e\u0432\u0430\u043a\u0443\u0443\u043c \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d;<\/li>\n<li>\u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438;<\/li>\n<li>\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043c\u043f\u044b \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (\u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f) [??Database logical dumps (on a REPLICA using streaming replication)??];<\/li>\n<li>\u043c\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0432 \u0441\u0435\u0441\u0441\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043a\u0443\u0441\u043a\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 [??Many session connections with locks extending across large swaths of the data cluster??];<\/li>\n<li>\u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u044b\u0435 DML-\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0444\u043e\u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0430\u0432\u0442\u043e\u0432\u0430\u043a\u0443\u0443\u043c\u0430.<\/li>\n<\/ul>\n<p>  \u0415\u0441\u0442\u044c \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u0435\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0441\u0440\u043e\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u044f\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 wraparound \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u043b\u0441\u044f \u043d\u0430 \u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/p>\n<p>  <b><a href=\"https:\/\/www.cybertec-postgresql.com\/en\/debugging-deadlocks-in-postgresql\/\">Debugging Deadlocks In PostgreSQL<\/a><\/b><\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f <i>\u041b\u043e\u0440\u0435\u043d\u0446\u0430 \u0410\u043b\u044c\u0431\u0435<\/i> (Laurenz Albe, Cybertec) \u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u0445 (\u0442\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442 deadlocks). \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043d \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0435\u0451, \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u043e\u043d\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u043b\u0430\u0441\u044c \u0432 \u043b\u043e\u0433\u0435, \u043f\u043e\u0442\u043e\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u0435\u0445\u043d\u0438\u043a\u0430\u0445 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f;<\/li>\n<li>\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0431\u0430\u0437\u044b, \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u044b;<\/li>\n<li>\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/runtime-config-locks\">deadlock_timeout<\/a><\/li>\n<\/ul>\n<p>  \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432 \u0442\u0430\u0439\u043c\u0430\u0443\u0442, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c <code>client_addr<\/code> \u0438 <code>client_port<\/code> \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/monitoring-stats#MONITORING-PG-STAT-ACTIVITY-VIEW\">pg_stat_activity<\/a>. \u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u043a\u043e\u043f\u0430\u044e\u0449\u0438\u043c \u0433\u043b\u0443\u0431\u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/465263\/\">\u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 PostgreSQL: 3. \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432<\/a>.<\/p>\n<h2>ZFS<\/h2>\n<p>  \u0410 \u0435\u0449\u0451 \u0420\u043e\u0431\u0435\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u043e \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438, \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%B8_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8\">Copy-On-Write<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Btrfs\">Btrfs<\/a>, <a href=\"https:\/\/ru.wikipedia.org\/wiki\/ZFS\">ZFS<\/a> (\u043a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u0430\u043c\u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0438\u043b\u0438 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 ZFS, \u0432\u0430\u043c \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u0435\u0442 \u0447\u0442\u0435\u043d\u0438\u0435 <b><a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/588180\/\">\u0411\u0438\u0442\u0432\u044b \u043d\u0430 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 ZFS<\/a><\/b>).<\/p>\n<p>  <b><a href=\"https:\/\/arstechnica.com\/information-technology\/2020\/05\/zfs-101-understanding-zfs-storage-and-performance\/\">ZFS 101\u2014Understanding ZFS storage and performance<\/a><\/b><\/p>\n<p>  <i>\u0414\u0436\u0438\u043c \u0421\u043e\u043b\u0442\u0435\u0440<\/i> (Jim Salter, Ars Technica) \u043f\u0438\u0448\u0435\u0442: <i>ZFS \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u043c\u0430\u043c\u0438 \u0438 \u0441\u043b\u043e\u044f\u043c\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c copy-on-write (<a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%B8_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8\">CoW<\/a>), \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e \u044d\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043e\u0442 RAID-\u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432<\/i>.<\/p>\n<p>  \u042d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u043d \u043f\u043e\u044f\u0441\u043d\u044f\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u043c\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438). \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441 \u00ab\u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043a\u0438\u0440\u043f\u0438\u0447\u0438\u043a\u043e\u0432\u00bb:<br \/>  <code>zpools, vdevs<\/code> \u0438 <code>devices.<\/code> <br \/>  \u0414\u0430\u043b\u044c\u0448\u0435 \u043e\u043d \u043f\u043e\u044f\u0441\u043d\u044f\u0435\u0442 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0441\u043b\u043e\u0439 \u00ab\u043a\u0438\u0440\u043f\u0438\u0447\u0435\u0439\u00bb \u043f\u043e\u0432\u044b\u0448\u0435:<br \/>  <code>datasets, blocks<\/code> \u0438 <code>sectors.<\/code><\/p>\n<p>  <b><a href=\"https:\/\/people.freebsd.org\/~seanc\/postgresql\/scale15x-2017-postgresql_zfs_best_practices.pdf\">PostgreSQL + ZFS. Best Practices and Standard Procedures<\/a><\/b><\/p>\n<p>  \u0412 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <i>\u0428\u043e\u043d\u0430 \u0427\u0438\u0442\u0442\u0435\u043d\u0434\u0435\u043d\u0430<\/i> (Sean Chittenden) 110 \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u2014 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u043c\u043e\u0439 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0436\u0430\u043d\u0440, \u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u0435\u043d.<\/p>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u043a\u043e\u0433\u043e-\u0442\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0430 \u0442\u0435\u043c\u0430, \u043f\u043e\u0434\u043d\u044f\u0442\u0430\u044f <i>\u041b\u043e\u0440\u0435\u043d\u0446\u043e\u043c \u0410\u043b\u044c\u0431\u0435<\/i> <b><a href=\"https:\/\/www.cybertec-postgresql.com\/en\/pipeline-mode-better-performance-on-slow-network\/\">Pipeline Mode For Better PostgreSQL Performance On Slow Networks<\/a><\/b>, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u044b \u043a\u043e\u0441\u043d\u0443\u043b\u0438\u0441\u044c \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/667350\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0435<\/a>, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0438 \u0432 \u0441\u0442\u0430\u0442\u044c\u044e \u0420\u043e\u0431\u0435\u0440\u0430 <b><a href=\"https:\/\/www.percona.com\/blog\/how-postgresql-pipeline-mode-works\/\">How PostgreSQL Pipeline Mode Works<\/a><\/b>.<\/p>\n<h2>\u0415\u0449\u0451 \u0441\u0442\u0430\u0442\u044c\u0438<\/h2>\n<p>  <b><a href=\"https:\/\/www.crunchydata.com\/blog\/fuzzy-name-matching-in-postgresql\">Fuzzy Name Matching in Postgres<\/a><\/b><\/p>\n<p>  <i>\u041f\u043e\u043b \u0420\u044d\u043c\u0437\u0438<\/i> (Paul Ramsey, Crunchy Data) \u0433\u0435\u043d\u0435\u0440\u0438\u0442 50 \u0442\u044b\u0441. \u0438\u043c\u0451\u043d \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0448\u0442\u0443\u043a\u0438 \u2014 <b><a href=\"https:\/\/www.fakenamegenerator.com\/\">Fake Name Generator<\/a><\/b>, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 COPY \u0432 PostgreSQL \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0438\u0441\u043a\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u0430, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f LIKE. \u0423\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c. \u041f\u043e\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/fuzzystrmatch#id-1.11.7.24.7\">\u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u041b\u0435\u0432\u0435\u043d\u0448\u0442\u0435\u0439\u043d\u0430<\/a> \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/fuzzystrmatch\">fuzzystrmatch<\/a>, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u0441 \u043d\u0438\u043c \u0438 \u0441 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/fuzzystrmatch#id-1.11.7.24.6\">soundex<\/a>. \u0420\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a soundex \u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u041b\u0435\u0432\u0435\u043d\u0448\u0442\u0435\u0439\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435, \u0438 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c\u0438. \u041e \u0442\u0430\u043a\u0438\u0445 \u0432\u0435\u0449\u0430\u0445 \u043a\u0430\u043a \u0442\u0440\u0438\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/pgtrgm\">pg_trgm<\/a> \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f.<\/p>\n<p>  <b><a href=\"https:\/\/www.crunchydata.com\/blog\/indexes-selectivity-and-statistics\">Postgres Indexes, Selectivity, and Statistics<\/a><\/b><\/p>\n<p>  \u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u041f\u043e\u043b\u0430 \u0420\u044d\u043c\u0437\u0438, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432 \u0436\u0430\u043d\u0440\u0435 <i>Indexes, Selectivity, and Statistics for Dummies<\/i>: \u0432 \u043d\u0435\u0439 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0438 \u043f\u043e \u0430\u0431\u0437\u0430\u0446\u0443 \u043d\u0430 \u043f\u043e\u043d\u044f\u0442\u0438\u044f, \u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u0442\u043e\u043b\u044c\u043a\u043e <a href=\"https:\/\/www.postgresql.org\/docs\/current\/sql-createstatistics.html\">\u0441\u0441\u044b\u043b\u043a\u0430<\/a>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043a\u0440\u043e\u043c\u043d\u043e\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0442\u0430\u0442\u044c\u044f \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430. \u0422\u0430\u043c \u0435\u0441\u0442\u044c \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0440\u0430\u0437 \u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435 \u0432 PostGIS.<\/p>\n<p>  \u0418, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435, \u043f\u043e\u0447\u0438\u0442\u0430\u0439\u0442\u0435 <i>\u0415\u0433\u043e\u0440\u0430 \u0420\u043e\u0433\u043e\u0432\u0430<\/i> <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/576100\/?ysclid=l5axqberup994822922\">\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u0432 PostgreSQL: 2. \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430<\/a>.<\/p>\n<p>  <b><a href=\"https:\/\/aaronoellis.com\/articles\/using-postgres-schemas\">Using Postgres Schemas<br \/>  <\/a><\/b><\/p>\n<p>  \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f <i>\u0410\u0430\u0440\u043e\u043d\u0430 \u042d\u043b\u043b\u0438\u0441\u0430<\/i> (Aaron O. Ellis) \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u043e \u0441\u0445\u0435\u043c\u0430\u043c\u0438 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438, CREATE SCHEMA, CREATE USER, CREATE ROLE, GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA\u2026 TO\u2026 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 PostgreSQL.<\/p>\n<p>  <b><a href=\"https:\/\/sqlfordevs.io\/uuid-prevent-enumeration-attack\">UUIDs to prevent Enumeration Attacks<\/a><\/b><\/p>\n<p>  \u0420\u0435\u0447\u044c \u0438\u0434\u0451\u0442 \u043e\u0431 \u0430\u0442\u0430\u043a\u0430\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 URL \u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0443\u0433\u0430\u0434\u0430\u0442\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0451\u043d\u043d\u044b\u0435 \u0430\u0432\u0442\u043e\u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u043e\u043c id. \u0412 \u044d\u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 MySQL \u0438 PostgreSQL \u043d\u0430\u0434\u043e \u0437\u0430\u0449\u0438\u0449\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 id, \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u044d\u0442\u043e \u0432 MySQL \u0438 PostgreSQL \u0431\u0443\u0434\u0435\u0442 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443.<\/p>\n<p>  <b><a href=\"https:\/\/andreas.scherbaum.la\/blog\/archives\/1118-2-+-2-4-16.html\">2 + 2 * 4 = 16?<\/a><\/b><\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f \u0441 \u0442\u0430\u043a\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432 \u0431\u043b\u043e\u0433\u0435 <b><a href=\"https:\/\/andreas.scherbaum.la\/blog\/\">ads&#8217; corner<\/a><\/b> <i>\u0410\u043d\u0434\u0440\u0435\u0430\u0441\u0430 \u0428\u0435\u0440\u0431\u0430\u0443\u043c\u0430<\/i> (Andreas Scherbaum, Adjust, \u0411\u0435\u0440\u043b\u0438\u043d). \u0420\u0435\u0447\u044c \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445. &#171;+&#187; \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0438 \u043d\u0435 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0430 \u0447\u0435\u043c \u0443\u0433\u043e\u0434\u043d\u043e, \u0445\u043e\u0442\u044f \u0431\u044b \u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u044e\u0441 \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u043d\u0443\u0436\u0434\u044b.<\/p>\n<p>  \u0417\u0430\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Adjust GMBH, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043f\u043b\u043e\u0442\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f PostgreSQL. \u041f\u0440\u0435\u0434\u0441\u0435\u0434\u0430\u0442\u0435\u043b\u044c \u0441\u043e\u0432\u0435\u0442\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u2014 <i>\u0410\u043d\u0434\u0440\u0435\u0439 \u041a\u0430\u0437\u0430\u043a\u043e\u0432<\/i>, \u0441\u043e\u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c Acquired.io. \u0412 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0435 PostgreSQL-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438.<\/p>\n<h2>\u0418\u0437 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b<\/h2>\n<p>  <b><a href=\"https:\/\/habr.com\/ru\/post\/675792\/\">\u041a\u0430\u043a \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u0448\u043a\u0443\u0440\u044b \u0438 \u043b\u043e\u0432\u0438\u0442\u044c \u0442\u0440\u043e\u043b\u043b\u0435\u0439 \u0432 Telegram \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Kafka, Kubernetes, PostgreSQL \u0438 Redis<\/a><\/b><\/p>\n<p>  \u0414\u0430, \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0438\u0437 \u041f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u0445\u0430\u0431\u0440\u0430. \u0410\u0432\u0442\u043e\u0440 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0430\u043c\u043e\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0437\u0430 \u043d\u0438\u043c. \u0417\u0434\u0435\u0441\u044c \u0438 \u043e\u0431 \u0438\u0433\u0440\u0430\u0445, \u0438 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c-\u0431\u043e\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f, \u0438 Kafka, \u0438 \u0434\u0440\u0443\u0433\u043e\u0435, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>  \u041f\u043e \u0447\u0430\u0441\u0442\u0438 PostgreSQL: <i>\u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043c\u043e\u0433 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u0432\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430. \u042f \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0441 \u0443\u0441\u043b\u043e\u0432\u0438\u0435\u043c \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0435\u0439\u043d\u0442\u044b. \u0422\u0430\u043a\u0436\u0435, \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u0438 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0442\u0430\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u043a\u0430\u043a INSERT\u2026 ON CONFLICT DO.<\/i> <\/p>\n<p>  \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c (\u0434\u0435\u0442\u0430\u043b\u0438 \u043e\u0431\u0435\u0449\u0430\u043d\u044b, \u043d\u043e \u043f\u043e\u043a\u0430 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b), \u0447\u0442\u043e <a href=\"https:\/\/www.postgresql.org\/docs\/15\/sql-merge.html\">MERGE<\/a> \u0432\u0435\u0440\u0441\u0438\u0438 PostgreSQL 15 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0441\u044f \u0431\u044b \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e INSERT\u2026 ON CONFLICT DO. <\/p>\n<h2>\u041e\u0431\u043b\u0430\u043a\u0430<\/h2>\n<p>  <b><a href=\"https:\/\/mcs.mail.ru\/app\/services\/databases\">VK Cloud Solutions: Patch Management <\/a><\/b><\/p>\n<p>  \u041d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 Patch Management \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u0439 \u0411\u0414. \u0421\u0435\u0439\u0447\u0430\u0441 \u043e\u043d \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f PostgreSQL. \u041a\u043e\u0433\u0434\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0411\u0414, \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435, \u0438 \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u0438\u043b\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043d\u0430\u0436\u0430\u0442\u044c \u00ab\u041f\u043e\u0432\u044b\u0441\u0438\u0442\u044c\u00bb \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442 \u0411\u0414 \u0437\u0430 1\u201310 \u043c\u0438\u043d\u0443\u0442. \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043c\u0430\u0436\u043e\u0440\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u2014 \u043f\u0435\u0440\u0435\u0441\u043a\u043e\u0447\u0438\u0442\u044c \u0441 PostgreSQL 11 \u043d\u0430 PostgreSQL 13 \u043d\u0435\u043b\u044c\u0437\u044f. \u041f\u043e\u043c\u0438\u043c\u043e \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c API-\u0437\u0430\u043f\u0440\u043e\u0441, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/mcs.mail.ru\/app\/services\/databases\">\u0432\u043e\u0439\u0442\u0438 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c<\/a>.<\/p>\n<h2>\u0420\u0435\u043b\u0438\u0437\u044b<\/h2>\n<p>  <b><a href=\"https:\/\/github.com\/EnterpriseDB\/barman\/releases\/tag\/release%2F3.0.0\">Barman 3.0.0<\/a><\/b><\/p>\n<p>  \u0415\u0441\u0442\u044c \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430\u0440\u0443\u0448\u0430\u044e\u0449\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438:<\/p>\n<ul>\n<li>PostgreSQL 9.6 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f;<\/li>\n<li>\u0440\u0435\u0436\u0438\u043c Rsync-\u0431\u044d\u043a\u0430\u043f\u043e\u0432 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0435\u043f\u0435\u0440\u044c <code>concurrent<\/code>, \u0430 \u043d\u0435 <code>exclusive<\/code> (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f)<\/li>\n<li>\u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u044d\u043a\u0430\u043f\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <code>backup.info<\/code>, \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 Barman \u043d\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0431\u044d\u043a\u0430\u043f\u0430\u043c\u0438, \u0432\u0437\u044f\u0442\u044b\u043c\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 3.0.0. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c <code>pg-backup-api<\/code> \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0430\u043f\u0433\u0440\u0435\u0439\u0434\u0438\u0442\u044c \u0435\u0433\u043e \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 0.2.0.<\/li>\n<\/ul>\n<p>  \u041f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 PostgreSQL 15. \u0415\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>  <b><a href=\"https:\/\/github.com\/OPMDG\/check_pgactivity\">check_pgactivity 2.6<\/a><\/b><\/p>\n<p>  check_pgactivity \u2014 \u044d\u0442\u043e PostgreSQL-\u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 <a href=\"https:\/\/www.nagios.org\/\">Nagios<\/a>. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f <a href=\"https:\/\/opm.readthedocs.io\/probes\/check_pgactivity.html\">\u0437\u0434\u0435\u0441\u044c<\/a>. <a href=\"https:\/\/github.com\/OPMDG\/check_pgactivity\/releases\/tag\/REL2_6\">\u041d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f<\/a> \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430 \u0441 PostgreSQL 14. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0430\u0433\u043e\u0432.<\/p>\n<p>  <b><a href=\"https:\/\/github.com\/polterguy\/magic\">Magic 14.0.5<\/a><\/b><\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u043d\u0430\u043c \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0432\u043e\u044e \u0431\u0430\u0437\u0443 (\u0431\u0443\u0434\u044c \u0442\u043e PostgreSQL, MySQL \u0438\u043b\u0438 MS SQL) \u0432 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434 \u0442\u0430\u043a, \u0447\u0442\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0445\u043e\u0442\u044c \u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430. \u0415\u0449\u0451 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u043e\u0431\u043b\u0430\u043a\u043e \u2014 Aista Magic Cloud. \u041d\u0430\u0437\u0432\u0430\u043d\u043e \u0432 \u0447\u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u2014 <a href=\"https:\/\/aista.com\/\">Aista<\/a>.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u2014 <a href=\"https:\/\/github.com\/polterguy\/magic\/releases\/tag\/v14.0.5\">14.0.5<\/a>. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/aista.com\/\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>.<\/p>\n<p>  <b><a href=\"https:\/\/github.com\/dimitri\/pgloader\">PGLoader 3.6.6<\/a><\/b><\/p>\n<p>  \u0423\u0442\u0438\u043b\u0438\u0442\u0430 <i>\u0414\u0438\u043c\u0438\u0442\u0440\u0438 \u0424\u043e\u043d\u0442\u0435\u0439\u043d\u0430<\/i> (Dimitri Fontaine, Citus, Microsoft). \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 PostgreSQL \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 COPY. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 FDW, \u0437\u0434\u0435\u0441\u044c \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u0441\u0442\u0438\u043b\u0435: \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043e\u0442\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>  PGLoader \u0443\u043c\u0435\u0435\u0442 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, MySQL <code>datestamp<\/code> 0000-00-00 \u0438 0000-00-00 00:00:00 \u043e\u043d \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0432 NULL \u0434\u043b\u044f PostgreSQL, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u0435 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442 \u0433\u043e\u0434\u0430 \u043d\u043e\u043c\u0435\u0440 0.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u2014 <a href=\"https:\/\/github.com\/dimitri\/pgloader\/releases\/tag\/v3.6.6\">3.6.6<\/a>, \u0432 \u043d\u0435\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>  <b><a href=\"https:\/\/github.com\/dimitri\/pgcopydb\">gcopydb<\/a><\/b><\/p>\n<p>  \u0415\u0449\u0451 \u043e\u0434\u043d\u043e \u0434\u0435\u0442\u0438\u0449\u0435 \u0424\u043e\u043d\u0442\u0435\u0439\u043d\u0430: pgcopydb \u2014 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a <code>pg_dump | pg_restore<\/code> \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 Postgres-\u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c\u0438. \u0418 \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e. \u041f\u043e\u0447\u0435\u043c\u0443 \u2014 \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u043d\u0430 <a href=\"https:\/\/github.com\/dimitri\/pgcopydb\">\u0433\u0438\u0442\u0445\u0430\u0431\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/a>.<\/p>\n<hr\/>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/675116\/\"> https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/675116\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/jb\/2z\/sv\/jb2zsvvwbxqsh_a-hf44_9rgxoi.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/jb\/2z\/sv\/jb2zsvvwbxqsh_a-hf44_9rgxoi.jpeg\" data-blurred=\"true\"\/><br \/>  <i>\u0418\u0422-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u2014 \u044d\u0442\u043e \u043a\u0430\u043a \u0432\u043e\u0434\u043e\u043f\u0440\u043e\u0432\u043e\u0434, \u0431\u0435\u0437 \u043d\u0435\u0451 \u0436\u0438\u0437\u043d\u044c \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430. \u0418 \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0442\u044c Postgresso.<\/i>  <\/p>\n<hr\/>\n<p>  <b><a href=\"https:\/\/www.postgresql.org\/about\/news\/postgresql-15-beta-2-released-2479\/\">PostgreSQL 15 Beta 2<\/a><\/b><\/p>\n<p>  \u0412 Beta 2 \u0435\u0441\u0442\u044c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0439 (generally available) \u0432\u0435\u0440\u0441\u0438\u0438 PostgreSQL, \u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0437\u0430 \u0432\u0440\u0435\u043c\u044f Beta-\u0444\u0430\u0437\u044b. \u041e\u0442\u043b\u0438\u0447\u0438\u044f \u043e\u0442 Beta 1 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u043d\u0430 <a href=\"https:\/\/www.postgresql.org\/about\/news\/postgresql-15-beta-2-released-2479\/\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0440\u0435\u043b\u0438\u0437\u0430<\/a> \u2014 \u044d\u0442\u043e 14 \u043d\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u041e\u0431 \u043e\u0442\u043b\u0438\u0447\u0438\u044f\u0445 PostgreSQL 15 (\u043d\u0435 Beta 2, \u0430 \u00ab\u0433\u043e\u0442\u043e\u0432\u043e\u0439\u00bb \u0432\u0435\u0440\u0441\u0438\u0438) \u043e\u0442 PostgreSQL 14 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/www.postgresql.org\/docs\/15\/release-15.html\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c Beta 2 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/www.postgresql.org\/download\/\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>. \u0414\u043e \u0432\u0435\u0440\u0441\u0438\u0438 GA \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0435\u0449\u0451 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e RC (release candidate).  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-335998","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/335998","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=335998"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/335998\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=335998"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=335998"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=335998"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}