{"id":334695,"date":"2022-06-19T03:00:06","date_gmt":"2022-06-19T03:00:06","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=334695"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=334695","title":{"rendered":"<span>Postgresso #5 (42)<\/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\/2s\/n3\/it\/2sn3itwh3pgjxai1wvwvouurizo.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/2s\/n3\/it\/2sn3itwh3pgjxai1wvwvouurizo.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-144-released-2470\/\">PostgreSQL 14.4<\/a><\/b><\/p>\n<p>  \u042d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u043b\u0438\u0437, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0431\u0430\u0433 \u043f\u0440\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 PostgreSQL 14. \u041d\u0435\u0437\u0430\u0434\u043e\u043b\u0433\u043e \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b \u0434\u0430\u0436\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u043e\u043d\u0441:<\/p>\n<p>  <b><a href=\"https:\/\/www.postgresql.org\/about\/news\/postgresql-14-out-of-cycle-release-coming-june-16-2022-2466\/\">PostgreSQL 14 out-of-cycle release coming June 16, 2022<\/a><\/b><\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 PG14 \u0441\u0442\u0430\u043b\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/sql-createindex#SQL-CREATEINDEX-CONCURRENTLY\">CREATE INDEX CONCURRENTLY<\/a> \u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/sql-reindex?lang=ru\">REINDEX CONCURRENTLY<\/a> \u043c\u043e\u0433\u0443\u0442 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043f\u043e\u043f\u043e\u0440\u0442\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u044b. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432 14.4 \u0443\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u0438\u0447\u0430\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u044d\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>pg_amcheck<\/code> \u0441 \u0444\u043b\u0430\u0433\u043e\u043c <code>--heapallindexed<\/code> (\u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e btree-\u0438\u043d\u0434\u0435\u043a\u0441\u044b).<\/p>\n<p>  \u041d\u043e \u044d\u0442\u0438\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 PostgreSQL 14 \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0442\u0441\u044f. \u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0445 \u0432 <a href=\"https:\/\/www.postgresql.org\/docs\/release\/14.4\/\">release notes<\/a> \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<p>  <b><a href=\"https:\/\/jkatz05.com\/post\/postgres\/may-2022-release-should-i-update\/\">Notes On Updating To PostgreSQL 14.3, 13.7, 12.11, 11.16, And 10.21<\/a><\/b><\/p>\n<p>  \u042d\u0442\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f \u044d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430 PostgreSQL. <i>\u0414\u0436\u043e\u043d\u0430\u0442\u0430\u043d \u041a\u0430\u0446<\/i> (Jonathan Katz) \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445 \u0441 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/sql-createindex#SQL-CREATEINDEX-CONCURRENTLY\">CREATE INDEX CONCURRENTLY<\/a> \u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/sql-reindex?lang=ru\">REINDEX CONCURRENTLY<\/a>. \u041e\u043d \u043f\u043e\u044f\u0441\u043d\u044f\u0435\u0442: \u0431\u0430\u0433\u0438 \u0432\u044b\u043b\u0435\u0437\u043b\u0438, \u043a\u043e\u0433\u0434\u0430 \u0435\u0449\u0451 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 GA PostgreSQL 14 (14.0) \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f VACUUM \u0434\u043b\u044f \u044d\u0442\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434. \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0448\u0438\u043b\u043e \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c \u044d\u0442\u0443 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e, \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0432 \u0440\u0438\u0441\u043a \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e\u0439 \u043f\u043e\u0440\u0447\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u043c. \u0418 \u043f\u043e\u043e\u0431\u0435\u0449\u0430\u043b, \u0447\u0442\u043e \u0432 14.4 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0430. <\/p>\n<p>  \u0415\u0449\u0451 \u0432 PostgreSQL 14.3 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0437\u0430\u043a\u0440\u044b\u043b\u0438 <a href=\"https:\/\/www.postgresql.org\/support\/security\/CVE-2022-1552\/\">\u0434\u044b\u0440\u0443<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0432\u043d\u043e, \u0434\u0430\u0436\u0435 \u0432 \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 (\u0442\u043e \u0435\u0441\u0442\u044c PostgreSQL 9.6 \u0438 \u0441\u0442\u0430\u0440\u0448\u0435). \u041d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c (\u043d\u043e \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0439 PG-\u044d\u043a\u043a\u0430\u0443\u043d\u0442) \u043c\u043e\u0433 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0437\u043b\u043e\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0439 SQL-\u0437\u0430\u043f\u0440\u043e\u0441 \u0438, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b (<a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/routine-vacuuming\">Autovacuum<\/a>, <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/sql-reindex\">REINDEX<\/a>, <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/sql-createindex\">CREATE INDEX<\/a>, <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/sql-refreshmaterializedview\">REFRESH MATERIALIZED VIEW<\/a>, <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/sql-cluster\">CLUSTER<\/a> \u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/app-pgamcheck\">pg_amcheck<\/a>), \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0441\u0443\u043f\u0435\u0440\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d\u0442\u043e \u0431\u044b\u043b\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043e\u043f\u0430\u0441\u043d\u043e \u0434\u043b\u044f Web-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0430\u0440\u0435\u043d\u0434\u0430\u0442\u043e\u0440\u0430\u043c\u0438 (multi-tenant).<\/p>\n<p>  \u0414\u0436\u043e\u043d\u0430\u0442\u0430\u043d \u043f\u043e\u044f\u0441\u043d\u044f\u0435\u0442, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0447\u0438\u043d\u0438\u043b\u0438 \u0432 PostgreSQL 14.3, \u0438 \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442, \u0430 \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0449\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0430\u0442\u0447.<br \/>  \u00a0<br \/>  \u00a0  <\/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>  PGConf.Russia \u0441\u043e\u0441\u0442\u043e\u0438\u0442\u0441\u044f 20 \u0438 21 \u0438\u044e\u043d\u044f 2022 \u0433\u043e\u0434\u0430 \u0432 \u041c\u043e\u0441\u043a\u0432\u0435, \u0432 \u0431\u0438\u0437\u043d\u0435\u0441-\u0446\u0435\u043d\u0442\u0440\u0435 \u0433\u043e\u0441\u0442\u0438\u043d\u0438\u0446\u044b \u00ab\u0420\u044d\u0434\u0438\u0441\u0441\u043e\u043d \u0421\u043b\u0430\u0432\u044f\u043d\u0441\u043a\u0430\u044f\u00bb. \u0414\u043e\u043a\u043b\u0430\u0434\u044b \u0438 \u043c\u0430\u0441\u0442\u0435\u0440-\u043a\u043b\u0430\u0441\u0441\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0434\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u0434\u043d\u0435\u0439, \u0432 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 (\u043e\u043d\u043b\u0430\u0439\u043d \u0438 \u043e\u0444\u043b\u0430\u0439\u043d), \u043d\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u0447\u043d\u043e \u2014 \u0430\u043a\u0446\u0435\u043d\u0442 \u043d\u0430 \u0436\u0438\u0432\u043e\u043c \u043e\u0431\u0449\u0435\u043d\u0438\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438.<\/p>\n<p>  \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e <a href=\"https:\/\/pgconf.ru\/2022\/timetable\">\u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/a>, \u0435\u0441\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0430 <a href=\"https:\/\/pgconf.ru\/2022\/talks\">\u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432<\/a>. <\/p>\n<p>  \u041e\u0431\u0435\u0449\u0430\u043d\u043e \u0443\u0447\u0430\u0441\u0442\u0438\u0435 <i>\u0411\u0440\u044e\u0441\u0430 \u041c\u043e\u043c\u0434\u0436\u0430\u043d\u0430<\/i> (Bruce Momjian, EDB), \u0441 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u043c <b><a href=\"https:\/\/pgconf.ru\/2022\/322843\">\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 PostgreSQL 15<\/a><\/b> (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b).<\/p>\n<p>  \u041e\u0442 \u043d\u0430\u0448\u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f Postgres Professional \u0431\u0443\u0434\u0443\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0446\u0435\u043b\u044b\u0445 3 \u0434\u043e\u043a\u043b\u0430\u0434\u0430:<br \/>  <i>\u041f\u0430\u0432\u0435\u043b \u0422\u043e\u043b\u043c\u0430\u0447\u0451\u0432<\/i> \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442 \u043e \u0441\u0432\u043e\u0451\u043c <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/662021\/\">\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438<\/a> \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \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, \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432 JOIN (<b><a href=\"https:\/\/pgconf.ru\/2022\/316547\">\u041a\u043e\u043b\u043b\u0430\u043f\u0441 \u0432 \u043f\u043b\u0430\u043d\u0430\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0414\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u043c \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c<\/a><\/b>),<br \/>  <i>\u0415\u0433\u043e\u0440 \u0420\u043e\u0433\u043e\u0432<\/i> \u2014 \u043e \u0441\u0432\u043e\u0435\u0439 <a href=\"https:\/\/postgrespro.ru\/education\/books\/internals\">\u043a\u043d\u0438\u0433\u0435<\/a> (<b><a href=\"https:\/\/pgconf.ru\/2022\/315697\">\u0418\u0437\u043d\u0430\u043d\u043a\u0430 \u00abPostgreSQL \u0438\u0437\u043d\u0443\u0442\u0440\u0438\u00bb<\/a><\/b>),<br \/>  <i>\u041f\u0430\u0432\u0435\u043b \u041b\u0443\u0437\u0430\u043d\u043e\u0432<\/i> \u2014 \u043e \u043d\u043e\u0432\u043e\u043c \u0432 PostgreSQL 15 (<b><a href=\"https:\/\/pgconf.ru\/2022\/316488\">PostgreSQL 15: \u043d\u0430 \u0444\u0438\u043d\u0438\u0448\u043d\u043e\u0439 \u043f\u0440\u044f\u043c\u043e\u0439<\/a><\/b>).<\/p>\n<p>  \u0422\u0435\u043c\u044b \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b. \u0427\u0442\u043e\u0431\u044b \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u043c (PGCon 2022), \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u0437\u0434\u0435\u0441\u044c, \u0441\u043a\u0430\u0436\u0435\u043c, \u0442\u0430\u043a\u0438\u0435 \u0434\u043e\u043a\u043b\u0430\u0434\u044b:<\/p>\n<p>  <b><a href=\"https:\/\/pgconf.ru\/2022\/315993\">\u041a\u0430\u043a Patroni \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u043e\u0442\u0435\u0440\u0438 \u0441\u043b\u043e\u0442\u043e\u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438?<\/a><\/b> \u2014 <i>\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u041a\u0443\u043a\u0443\u0448\u043a\u0438\u043d<\/i> \u0438\u0437 Zalando \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442, \u043a\u0430\u043a Patroni \u0440\u0435\u0448\u0430\u0435\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 PostgreSQL.<\/p>\n<p>  <b><a href=\"https:\/\/pgconf.ru\/2022\/323863\">\u0422\u0435\u043c\u043f\u043e\u0440\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0438 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/a><\/b> \u2014 <i>\u0418\u0432\u0430\u043d \u0424\u0440\u043e\u043b\u043a\u043e\u0432<\/i> (Postgres Professional, \u0432 \u044d\u0442\u043e\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0435 \u043d\u0438\u0436\u0435 \u0435\u0433\u043e \u0436\u0435 \u0441\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0430\u0445): <i>\u044f \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u043d\u043e\u0431\u043e\u0439 \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u0430\u0442 \u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438: \u0442\u043e \u0443 \u0441\u0442\u043e\u0440\u043e\u043d \u043d\u0435 \u0441\u0445\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u043e\u0442\u0447\u0435\u0442\u044b \u0437\u0430 \u043c\u0435\u0441\u044f\u0446, \u0442\u043e \u0441\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043e\u0442\u0447\u0435\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0432 \u041c\u043e\u0441\u043a\u0432\u0435 \u0438 \u0421\u0430\u043d-\u0424\u0440\u0430\u043d\u0446\u0438\u0441\u043a\u043e, \u0442\u043e \u0435\u0449\u0435 \u0447\u0435\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0432 \u0442\u0430\u043a\u043e\u043c \u0436\u0435 \u0440\u043e\u0434\u0435.<\/i><\/p>\n<p>  <b><a href=\"https:\/\/pgconf.ru\/2022\/323863\">\u0423\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0435\u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438<\/a><\/b> \u2014 <i>\u041c\u0438\u0445\u0430\u0438\u043b \u0426\u0432\u0435\u0442\u043a\u043e\u0432<\/i> \u043e\u0431\u0435\u0449\u0430\u0435\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u043e\u0432\u044b\u0439, Storage-\u0446\u0435\u043d\u0442\u0440\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u043c\u0443 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044e \u0434\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  <b><a href=\"https:\/\/pgconf.ru\/2022\/317252\">\u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 PostgreSQL<\/a><\/b> \u2014 <i>\u0424\u0451\u0434\u043e\u0440 \u0421\u0438\u0433\u0430\u0435\u0432<\/i> (\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440 Postgres Professional \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430): <i>PostgreSQL \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u043d\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u0442\u0435\u043c\u0438 \u0438\u043b\u0438 \u0438\u043d\u044b\u043c\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430\u043c\u0438.<\/i><br \/>  \u00a0<br \/>  \u00a0<br \/>  <b><a href=\"https:\/\/www.pgcon.org\/2022\/\">PGCon 2022 (\u041a\u0430\u043d\u0430\u0434\u0430)<\/a><\/b><\/p>\n<p>  \u041f\u043e\u0447\u0438\u0442\u0430\u0432 <a href=\"https:\/\/www.pgcon.org\/events\/pgcon_2022\/schedule\/\">\u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/a>, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043c \u0432\u044b\u0441\u0442\u0443\u043f\u0438\u043b\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u043d\u0430\u043c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0439. \u041c\u0430\u0441\u0442\u0435\u0440-\u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043a\u043b\u0430\u0434\u044b 26-27-\u0433\u043e \u043c\u0430\u044f \u0432 \u0442\u0440\u0451\u0445 \u043f\u043e\u0442\u043e\u043a\u0430\u0445:<\/p>\n<p>  <a href=\"https:\/\/www.pgcon.org\/2022\/stream1.php\">stream1<\/a>:<br \/>  26-\u0435, 13:00 \u2014 13:45. <a href=\"https:\/\/www.pgcon.org\/events\/pgcon_2022\/schedule\/session\/245-breaking-away-from-freeze-and-wraparound\/\">Breaking away from FREEZE and Wraparound<\/a>, <i>\u041c\u0430\u0441\u0430\u0445\u0438\u043a\u043e \u0421\u0430\u0432\u0430\u0434\u0430<\/i> (Masahiko Sawada, EDB);<br \/>  26-\u0435, 14:00 \u2014 14:45. <a href=\"https:\/\/www.pgcon.org\/events\/pgcon_2022\/schedule\/session\/258-develop-an-oracle-compatible-database-based-on-postgres\/\">Develop an Oracle-compatible database based on Postgres<\/a>, <i>\u0413\u0440\u0430\u043d\u0442 \u0414\u0436\u043e\u0443<\/i> (Grant Zhou, HighGo Software);<br \/>  26-\u0435, 15:00 \u2014 15:45. <a href=\"https:\/\/www.pgcon.org\/events\/pgcon_2022\/schedule\/session\/267-advanced-database-testing-in-cicd-pipelines\/\">Advanced database testing in CI\/CD pipelines<\/a>, <i>\u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432<\/i> (Postgres.ai).<\/p>\n<p>  27-\u0435, 12:15 \u2014 13:15. <a href=\"https:\/\/www.pgcon.org\/events\/pgcon_2022\/schedule\/session\/279-cloning-postgres-databases-on-kubernetes-how-we-designed-database-forks-in-a-managed-database-as-a-service\/\">Cloning Postgres databases on Kubernetes: how we designed database forks in a managed database-as-a-service<\/a>, <i>\u041e\u043b\u0435\u043a\u0441\u0438\u0439 \u041a\u043b\u044e\u043a\u0438\u043d<\/i> (Oleksii Kliukin, Timescale).<\/p>\n<p>  <a href=\"https:\/\/www.pgcon.org\/2022\/stream2.php\">stream2<\/a>:<br \/>  27-\u0435, 12:15 \u2014 13:15. <a href=\"https:\/\/www.pgcon.org\/events\/pgcon_2022\/schedule\/session\/282-practical-use-case-for-orioledb\/\">Practical use case for OrioleDB<\/a>, <i>\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u041a\u043e\u0440\u043e\u0442\u043a\u043e\u0432, \u0410\u043b\u044f\u043a\u0441\u0435\u0439 \u0420\u0430\u043c\u0430\u043d\u0430\u045e<\/i> (Aliaksei Ramanau, \u043e\u0431\u0430 OrioleDB) \u2014 <i>\u0434\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0439\u0448\u0438\u0435 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 <a href=\"https:\/\/www.youtube.com\/watch?v=1GgyEqLNXiM\">\u0431\u0435\u0441\u0435\u0434\u044b<\/a>. \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0435\u0449\u0430\u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430.<\/i><\/p>\n<p>  <a href=\"https:\/\/www.pgcon.org\/2022\/stream3.php\">stream3<\/a>:<br \/>  26-\u0435, 10:00 \u2014 10:45. <a href=\"https:\/\/www.pgcon.org\/events\/pgcon_2022\/schedule\/session\/239-highly-efficient-interconnection-for-distributed-postgresql\/\">Highly efficient interconnection for distributed PostgreSQL<\/a>, <i>\u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u0423\u0440\u0441\u0435\u0433\u043e\u0432, \u0424\u0451\u0434\u043e\u0440 \u0421\u0438\u0433\u0430\u0435\u0432<\/i> (\u043e\u0431\u0430 Postgres Professional) \u2014 <i>\u041e \u043f\u043e\u0434\u0445\u043e\u0434\u0430\u0445 \u043a \u0448\u0430\u0440\u0434\u0438\u043d\u0433\u0443, \u0447\u0435\u0433\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0432 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/postgres-fdw\">postgres_fdw<\/a>, \u043a\u0430\u043a \u0438\u0437 N*M \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0441\u0434\u0435\u043b\u0430\u0442\u044c N+M<\/i>.<br \/>  26-\u0435, 12:00 \u2014 12:45. <a href=\"https:\/\/www.pgcon.org\/events\/pgcon_2022\/schedule\/session\/256-create-index-concurrently-implementation-details\/\">CREATE INDEX CONCURRENTLY implementation details<\/a>, <i>\u0410\u043d\u0434\u0440\u0435\u0439 \u0411\u043e\u0440\u043e\u0434\u0438\u043d<\/i> (Yandex);<br \/>  26-\u0435, 13:00 \u2014 13:45. <a href=\"https:\/\/www.pgcon.org\/events\/pgcon_2022\/schedule\/session\/268-common-db-schema-change-mistakes\/\">Common DB schema change mistakes<\/a>, <i>\u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432<\/i> (Postgres.ai).<\/p>\n<p>  27-\u0435, 12:15 \u2014 13:15. <a href=\"https:\/\/www.pgcon.org\/events\/pgcon_2022\/schedule\/session\/229-new-toast-in-town-one-toast-fits-all\/\">New TOAST in Town. One TOAST FITS ALL<\/a>, <i>\u041e\u043b\u0435\u0433 \u0411\u0430\u0440\u0442\u0443\u043d\u043e\u0432<\/i> (Postgres Professional) \u2014 <i>\u041e\u043b\u0435\u0433 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442 \u0438 \u043f\u0440\u043e\u0434\u0432\u0438\u0433\u0430\u0435\u0442 <a href=\"https:\/\/postgrespro.com\/blog\/pgsql\/5969433\">\u0442\u0435\u043c\u0443 TOAST API<\/a> \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u2014 TOASTER<\/i>.<\/p>\n<p>  \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043e <b><a href=\"https:\/\/wiki.postgresql.org\/wiki\/PgCon_2022_Developer_Unconference\">PgCon 2022 Developer Unconference<\/a> (25-\u0433\u043e \u043c\u0430\u044f)<\/b>:<\/p>\n<p>  Unconference \u2014 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0436\u0430\u043d\u0440. \u041e\u043d \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u043f\u0435\u0445\u043e\u043c \u0438 \u043d\u0430 PGConf.Russia, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440. \u042d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0435\u0441\u0441\u0438\u044f \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432, \u0442\u0435\u043c\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u044f\u0432\u043b\u044f\u044e\u0442 \u043f\u0440\u044f\u043c\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438. \u041e\u0434\u043d\u0430 \u0438\u0437 \u0442\u0435\u043c \u2014 <a href=\"https:\/\/wiki.postgresql.org\/wiki\/PgCon_2022_Developer_Unconference#PostgreSQL_vs_the_block_size\">PostgreSQL vs the block size [impact of block size on performance]<\/a> \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0432 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0435 <a href=\"https:\/\/lists.postgresql.org\/\">hackers<\/a>. <i>\u0422\u043e\u043c\u0430\u0441 \u0412\u043e\u043d\u0434\u0440\u0430<\/i> (Tomas Vondra, EDB) \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u0430 \u0430\u043d\u043a\u043e\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432 \u0432 \u0434\u0443\u0445\u0435 <a href=\"https:\/\/github.com\/tvondra\/pg-block-bench-pgbench\">TPC-B<\/a> \u0438 <a href=\"https:\/\/github.com\/tvondra\/pg-block-bench-tpch\">TPC-H<\/a> \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0431\u043b\u043e\u043a\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 WAL. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0434\u043e 50% \u0431\u044b\u043b \u043f\u0440\u0438 \u043c\u0430\u043b\u044b\u0445 (4 \u041a\u0411) \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0445\u043e\u0442\u044f, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u0412 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c \u043c\u043d\u043e\u0433\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0442\u0435\u0442\u044b Postgres. \u0412\u0435\u0440\u0441\u0438\u044f \u0422\u043e\u043c\u0430\u0441\u0430: \u044d\u0442\u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c \u0441 HDD \u043d\u0430 SSD. \u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u043e\u043d \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0438 HDD\/SSD, \u0432\u044b\u0432\u043e\u0434\u044b \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u0438\u0441\u044c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0432 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0435.<br \/>  \u00a0<br \/>  \u00a0<br \/>  <b><a href=\"https:\/\/postgrespro.ru\/blog\/news\/5969517\">Postgres Professional \u043d\u0430 HighLoad++ Foundation 2022<\/a><\/b><\/p>\n<p>  \u0413\u0435\u043d\u0435\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 <i>\u041e\u043b\u0435\u0433 \u0411\u0430\u0440\u0442\u0443\u043d\u043e\u0432<\/i>, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440 <i>\u0424\u0451\u0434\u043e\u0440 \u0421\u0438\u0433\u0430\u0435\u0432<\/i> \u0438 \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a <i>\u041d\u0438\u043a\u0438\u0442\u0430 \u041c\u0430\u043b\u0430\u0445\u043e\u0432<\/i> \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u043e \u043d\u043e\u0432\u044b\u0445 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f\u0445 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 TOAST (The Oversized-Attribute Storage Technique \u0438\u043b\u0438 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0440\u0445\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432).<\/p>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u0437 <a href=\"http:\/\/www.sai.msu.su\/~megera\/postgres\/talks\/toast-highload-2022.pdf\">\u0434\u043e\u043a\u043b\u0430\u0434\u0430<\/a>. <\/p>\n<p>  <i>\u041f\u0430\u0432\u0435\u043b \u041b\u0443\u0437\u0430\u043d\u043e\u0432<\/i> \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043e \u0441\u0430\u043c\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0432\u0435\u0440\u0441\u0438\u0438 PostgreSQL 15.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0434\u0435\u043b\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0434\u043d\u044f \u0418\u0432\u0430\u043d \u041f\u0430\u043d\u0447\u0435\u043d\u043a\u043e, \u0437\u0430\u043c\u0435\u0441\u0442\u0438\u0442\u0435\u043b\u044c \u0433\u0435\u043d\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0430 Postgres Professional \u0438 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0441\u0442\u0440\u043e\u043d\u043e\u043c, \u043f\u0440\u043e\u0432\u0435\u043b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u043b\u0435\u043a\u0446\u0438\u044e \u00ab\u0410\u0441\u0442\u0440\u043e\u043b\u0438\u043a\u0431\u0435\u0437 2.0. \u0417\u0432\u0435\u0437\u0434\u044b, \u0438\u0445 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435, \u0436\u0438\u0437\u043d\u044c \u0438 &#8230;.\u00bb.<br \/>  \u00a0<br \/>  \u00a0  <\/p>\n<h2>POC-DB, \u043f\u0440\u0435\u0432\u044c\u044e-\u0440\u0435\u043b\u0438\u0437\u044b \u0438 \u0438\u0433\u0440\u0443\u0448\u0435\u0447\u043d\u044b\u0435 DB<\/h2>\n<p>  <b><a href=\"https:\/\/cloud.google.com\/blog\/products\/databases\/introducing-alloydb-for-postgresql\">Introducing AlloyDB for PostgreSQL<\/a><\/b><\/p>\n<p>  Google I\/O \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043f\u0440\u0435\u0432\u044c\u044e \u0441\u0432\u043e\u0435\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 PostgreSQL-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0439 DBaaS AlloyDB (alloy \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u043f\u043b\u0430\u0432). \u0423\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442, \u0447\u0442\u043e \u043d\u0430 \u0442\u0435\u0441\u0442\u0430\u0445 \u043e\u043d\u0430 \u0432 4 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0439 PostgreSQL \u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u0445 \u0438 \u0432 100 \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0439 \u043d\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445. \u0418 \u0432 2 \u0440\u0430\u0437\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0439 DBaaS Amazon.<\/p>\n<p>  \u0412 \u0440\u0443\u0441\u043b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438, \u0441\u0442\u0438\u043c\u0443\u043b\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e \u0441 Oracle, \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0438 <a href=\"https:\/\/cloud.google.com\/blog\/products\/databases\/migrate-oracle-to-postgresql\">Database Migration Service<\/a> \u2014 \u0442\u043e\u0436\u0435 \u043f\u043e\u043a\u0430 \u043f\u0440\u0435\u0432\u044c\u044e (\u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0441\u0445\u0435\u043c\u044b Oracle -> PG \u043d\u0430 \u0431\u0430\u0437\u0435 <a href=\"https:\/\/ora2pg.darold.net\/start.html\">Ora2Pg<\/a>). <\/p>\n<p>  \u0411\u0430\u0437\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f, <b>\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0418\u0418 \u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f<\/b> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f vacuum, \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u0440\u0430\u0441\u0441\u043b\u043e\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (data tiering). <\/p>\n<p>  \u0418\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0432\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 <i>\u0428\u0435\u0448\u0430\u0434\u0440\u0438 \u0420\u0430\u043d\u0433\u0430\u043d\u0430\u0442\u0430<\/i> \u0438 <i>\u0420\u0430\u0432\u0438 \u041c\u0443\u0440\u0442\u0438<\/i> (Sheshadri Ranganath<br \/>  Engineering Director, \u043e\u0431\u0430 \u0447\u0438\u0441\u043b\u044f\u0442\u0441\u044f \u043a\u0430\u043a Engineering Director, AlloyDB for PostgreSQL) \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043d\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e (Columnar engine). \u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438 \u0432 EXPLAIN:  <\/p>\n<pre><code class=\"pgsql\">         ->  Parallel Custom Scan (columnar scan) on lineorder  (cost=20.00..879.88 rows=49016 width=4) (actual time=0.220..8.205 rows=36230 loops=3)                Filter: ((lo_discount = 1) AND (lo_quantity = 1))                Rows Removed by Columnar Filter: 19959121                Rows Aggregated by Columnar Scan: 21216                CU quals: ((lo_quantity = 1) AND (lo_discount = 1))                Columnar cache search mode: native<\/code><\/pre>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b. \u041c\u043e\u0436\u043d\u043e <a href=\"https:\/\/cloud.google.com\/free\/\">\u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e<\/a>.<\/p>\n<p>  <b><a href=\"https:\/\/neon.tech\/blog\/hello-world\/\">SELECT \u2019Hello, World\u2019. Serverless Postgres built for the cloud<\/a> (Neon)<\/b><\/p>\n<p>  CEO \u043c\u043e\u043b\u043e\u0434\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Neon (\u0440\u0430\u043d\u0435\u0435 Zenith) <a href=\"https:\/\/www.rbc.ru\/magazine\/2019\/01\/5c1baef09a79470d23908f47\"><i>\u041d\u0438\u043a\u0438\u0442\u0430 \u0428\u0430\u043c\u0433\u0443\u043d\u043e\u0432<\/i><\/a> \u0441\u0430\u043c \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u0443\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 Postgres. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0445 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043a\u0430 \u0441\u0442\u0430\u0432\u044f\u0442 \u0432 <a href=\"https:\/\/neon.tech\/early-access\/\">\u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0436\u0438\u0434\u0430\u044e\u0449\u0438\u0445<\/a>, \u043d\u043e \u041d\u0438\u043a\u0438\u0442\u0430 \u043e\u0431\u0435\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u043a\u043e\u0440\u043e \u0434\u043e\u0441\u0442\u0443\u043f \u043e\u0442\u043a\u0440\u043e\u044e\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445.<\/p>\n<p>  \u0421\u043e\u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u2014 <i>\u0425\u0430\u0439\u043a\u043a\u0438 \u041b\u0438\u043d\u043d\u0430\u043a\u0430\u043d\u0433\u0430\u0441<\/i> (Heikki Linnakangas, <a href=\"https:\/\/wiki.postgresql.org\/wiki\/Committers\">\u043a\u043e\u043c\u043c\u0438\u0442\u0435\u0440<\/a> PostgreSQL) \u0438 <i>\u0421\u0442\u0430\u0441 \u041a\u0435\u043b\u044c\u0432\u0438\u0447<\/i>, \u0432 <a href=\"https:\/\/neon.tech\/team\/\">\u043a\u043e\u043c\u0430\u043d\u0434\u0435<\/a> \u043c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u0444\u0430\u043c\u0438\u043b\u0438\u0439 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0418\u0437 \u0437\u0430\u043f\u0430\u0434\u043d\u044b\u0445 \u0437\u0432\u0451\u0437\u0434 \u2014 <i>\u041f\u0438\u0442\u0435\u0440 \u0413\u0430\u0439\u0433\u0430\u043d<\/i> (Peter Geoghegan, <a href=\"https:\/\/www.postgresql.org\/community\/contributors\/\">\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 (major) \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440<\/a> \u0438 <a href=\"https:\/\/wiki.postgresql.org\/wiki\/Committers\">\u043a\u043e\u043c\u043c\u0438\u0442\u0435\u0440<\/a> PostgreSQL). <\/p>\n<p>  \u0412 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 Neon \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439. \u042d\u0442\u043e <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%91%D0%B5%D1%81%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F#:~:text=%D0%91%D0%B5%D1%81%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BD%D1%8B%D0%B5%20%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%20(%D0%B0%D0%BD%D0%B3%D0%BB.%20serverless%20computing),%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0%2C%20%D1%83%D0%BD%D0%B8%D1%87%D1%82%D0%BE%D0%B6%D0%B0%D1%8E%D1%89%D0%B8%D0%B5%D1%81%D1%8F%20%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F\">\u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f<\/a> \u0431\u0430\u0437\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442, \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e\u0442\u0441\u044f (scales down to zero on inactivity); \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u0434\u0430 \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u043b\u0438 \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e, \u0441\u043a\u0440\u044b\u0442\u044b \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u043b\u0430\u043a\u043e\u043c. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 Rust, \u043a\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439.<\/p>\n<p>  \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435: \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0421\u0423\u0411\u0414 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u0442\u0430\u043a\u0430\u044f \u0443\u0436 \u0440\u0435\u0434\u043a\u043e\u0441\u0442\u044c. \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u0437\u0430\u043c\u0435\u0442\u043a\u0435 \u043e Neon \u043d\u0430 <a href=\"https:\/\/news.ycombinator.com\/item?id=31536827\">ycombinator<\/a> \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0442:<br \/>  <a href=\"https:\/\/firebase.google.com\/products\/firestore\">Firestore<\/a> (Firebase, NoSQL),<br \/>  <a href=\"https:\/\/aws.amazon.com\/ru\/dynamodb\/\">DynamoDB<\/a> (Amazon,NoSQL),<br \/>  <a href=\"https:\/\/azure.microsoft.com\/ru-ru\/services\/cosmos-db\/\">CosmosDB<\/a> (MS Azure, NoSQL),<br \/>  <a href=\"https:\/\/fauna.com\/\">FaunaDB<\/a> (\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u0430\u044f RDBMS \u0441 GraphQL),<br \/>  <a href=\"https:\/\/www.mongodb.com\/atlas\/database\">MongoDB<\/a> (NoSQL),<br \/>  \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0420\u0421\u0423\u0411\u0414 <i>NewSQL<\/i>, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <a href=\"https:\/\/www.cockroachlabs.com\/\">CockroachDB<\/a> \u0438 <a href=\"https:\/\/planetscale.com\/\">Planetscale<\/a> (\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430 \u0441 MySQL), \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435 \u043f\u043b\u0430\u043d\u044b.<\/p>\n<p>  \u0421 \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0438\u0434\u0435\u043e\u043b\u043e\u0433\u0438\u0435\u0439 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u0443\u044e *aaS-\u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u2014 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_%D0%BA%D0%B0%D0%BA_%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B0\">FaaS<\/a> (F \u2014 Function). \u0418 \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0441\u043b\u043e\u0432\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430-\u0441\u043a\u0435\u043f\u0442\u0438\u043a\u0430: <i>At the moment I cannot imagine a more misleading IT buzzword than #serverless<\/i>.<\/p>\n<p>  \u0421\u0435\u0440\u0432\u0438\u0441\u044b \u0441 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0435\u0439 (compute scale-to-zero) \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442: <a href=\"https:\/\/cloud.google.com\/run\">Cloud Run<\/a> (Google), <a href=\"https:\/\/aws.amazon.com\/ru\/lambda\/\">AWS Lambda<\/a> (Amazon), <a href=\"https:\/\/fly.io\/\">fly.io<\/a>, \u0430 \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0445 \u0421\u0423\u0411\u0414 \u043f\u043e\u043a\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e.<\/p>\n<p>  <b><a href=\"https:\/\/notes.eatonphil.com\/distributed-postgres.html\">Let&#8217;s build a distributed Postgres proof of concept<\/a><\/b><\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0432\u043f\u043e\u043b\u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0439 POC-\u0431\u0430\u0437\u044b \u0438\u0437 600 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 <i>\u0424\u0438\u043b \u0418\u0442\u043e\u043d<\/i> (Phil Eaton) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 4 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<br \/>  \u0434\u043b\u044f \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 SQL,<br \/>  \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c Postgres,<br \/>  \u0434\u043b\u044f Raft,<br \/>  \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438 \u0441\u0430\u043c\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439.<\/p>\n<p>  \u0418 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0430\u0437\u0430, \u0430 \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0438\u0448\u0443\u0449\u0438\u0435 CREATE TABLE, INSERT \u0438 \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0435 SELECT, \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0435.<\/p>\n<p>  \u0412 \u044d\u0442\u0438 600 \u0441\u0442\u0440\u043e\u043a \u0432\u0445\u043e\u0434\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 Raft, HTTP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u0430\u0437\u0430 <a href=\"https:\/\/github.com\/etcd-io\/bbolt\">bbolt<\/a>, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0430 Go. \u041f\u0440\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0432 JSON. \u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b Postgres \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043d\u0430 <a href=\"https:\/\/github.com\/jackc\/pgproto3\">jackc\/pgproto3<\/a>, \u0442\u043e\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c \u043d\u0430 Go.<\/p>\n<p>  <b><a href=\"https:\/\/github.com\/erikgrinaker\/toydb\">toyDB<\/a><\/b><\/p>\n<p>  \u041f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443 \u0433\u0440\u0435\u0445 \u043d\u0435 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 <i>\u042d\u0440\u0438\u043a\u0430 \u0413\u0440\u0438\u043d\u0430\u043a\u0435\u0440\u0430<\/i> (Erik Grinaker), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f: toyDB.<\/p>\n<p>  \u042d\u0442\u043e \u0442\u043e\u0436\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0430\u044f SQL-\u0431\u0430\u0437\u0430 (\u043d\u0430 Rust), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445. \u041d\u0435\u0448\u0443\u0442\u043e\u0447\u043d\u0430\u044f \u0438\u0433\u0440\u0443\u0448\u043a\u0430, \u0445\u043e\u0442\u044f \u0438 \u043d\u0438 \u0432 \u043a\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0432 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445:<\/p>\n<ul>\n<li>\u0434\u0432\u0438\u0436\u043e\u043a \u043e\u0431\u043c\u0435\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0441 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u043e\u043c \u043f\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Raft_(algorithm)\">Raft<\/a>;<\/li>\n<li>\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u044b\u0439 ACID-\u0434\u0432\u0438\u0436\u043e\u043a \u0441 MVCC \u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Snapshot_isolation\">\u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0435\u0439 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u043d\u044d\u043f\u0448\u043e\u0442\u043e\u0432<\/a>;<\/li>\n<li>\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c\u0438 B+tree \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u043d\u0430 \u0431\u0430\u0437\u0435 \u043b\u043e\u0433\u043e\u0432 (log-structured backends, \u0432\u0438\u0434\u0438\u043c\u043e, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0443 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/LSM-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE\">LSM<\/a>, \u043d\u043e \u044d\u0442\u043e \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0438);<\/li>\n<li>\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 (\u044d\u0432\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f) \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 <a href=\"https:\/\/www.osp.ru\/dbms\/1995\/01\/13031404#part_2_4\">\u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/a> (time-travel support);<\/li>\n<li>SQL-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441 \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f\u043c\u0438, \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c\u0438, \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u043c\u0438 (JOINs), \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u0435\u0439 \u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438.<\/li>\n<\/ul>\n<p>  \u0418\u0433\u0440\u0443\u0448\u043a\u0430 \u043f\u0440\u043e\u0448\u043b\u0430 \u0442\u044b\u0441\u044f\u0447\u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u2014 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0435\u0439 \u043c\u043d\u043e\u0433\u0438\u0445 \u043d\u0435\u0438\u0433\u0440\u0443\u0448\u0435\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/p>\n<p>  <b><a href=\"https:\/\/supabase.com\/\">Supabase<\/a><\/b><\/p>\n<p>  \u042d\u0442\u043e \u043c\u043e\u043b\u043e\u0434\u0430\u044f \u0421\u0423\u0411\u0414, \u043d\u043e \u0443\u0436\u0435 \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 POC \u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u044c\u044e. Supabase \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u0430\u044f \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Firebase\">Firebase<\/a>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0438 \u0432\u044b\u0448\u0435 \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 Neon.<\/p>\n<p>  \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0431\u0430\u0437\u0443 Postgres \u0443\u0436\u0435 \u0441 \u0440\u0430\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u2014 RLS, <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/ddl-rowsecurity\">Row Level Security<\/a>);<br \/>  \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 3 API, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u044f\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0438\u0437 \u0441\u0445\u0435\u043c\u044b: \u044d\u0442\u043e Rust, <a href=\"https:\/\/github.com\/supabase\/realtime\">Realtime<\/a> (\u043e \u043d\u0451\u043c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0438\u0436\u0435) \u0438 <a href=\"https:\/\/graphql.org\/\">GraphQL<\/a> (\u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/pypi.org\/project\/pg_graphql\/\">pg_graphql<\/a>, \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 PostgreSQL);<br \/>  \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 Typescript-\u0444\u0443\u043d\u043a\u0446\u0438\u0439;<br \/>  \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432;<br \/>  \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c (\u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u044d\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437 \u043b\u043e\u0433\u043e\u0432 PostgreSQL \u0438 <a href=\"https:\/\/www.cloudflare.com\/products\/cloudflare-logs\/\">Cloudflare)<\/a>.<\/p>\n<p>  Realtime \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0443 \u043d\u0438\u0445 \u0441 2019-\u0433\u043e, \u043d\u043e RLS \u043a \u043d\u0435\u043c\u0443 \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u043b\u0438 \u0432 \u0434\u0435\u043a\u0430\u0431\u0440\u0435 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0433\u043e\u0434\u0430: <b><a href=\"https:\/\/supabase.com\/blog\/2021\/12\/01\/realtime-row-level-security-in-postgresql\">Realtime Postgres RLS now available on Supabase<\/a><\/b>. Realtime \u2014 \u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0431\u0430\u0437\u0435 PostgreSQL \u0438 \u0448\u0438\u0440\u043e\u043a\u043e\u0432\u0435\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f websocket. \u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u0438\u0445 \u0437\u043d\u0430\u0442\u044c \u043f\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435 RLS \u0432 \u0431\u0430\u0437\u0435. <\/p>\n<p>  \u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0441\u0432\u043e\u0451 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438: <b><a href=\"https:\/\/supabase.com\/blog\/2022\/03\/08\/audit\">Postgres Auditing in 150 lines of SQL<\/a><\/b><\/p>\n<p>  <i>\u041e\u043b\u0438\u0432\u0435\u0440 \u0420\u0430\u0439\u0441<\/i> (Oliver Rice, supabase) \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u044d\u0442\u0438 150 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u0410\u0443\u0434\u0438\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439:  <\/p>\n<pre><code class=\"pgsql\">SELECT audit.enable_tracking('public.members');<\/code><\/pre>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u041e\u043b\u0438\u0432\u0435\u0440 \u0432\u0432\u0451\u043b \u0432 \u0441\u0432\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0441 JSONB, BRIN-\u0438\u043d\u0434\u0435\u043a\u0441.<\/p>\n<p>  \u041d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u044d\u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0442\u043e\u0442 \u0430\u0443\u0434\u0438\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u043e. \u0417\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u043b\u044f \u0430\u0443\u0434\u0438\u0442\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0438\u0451\u043c\u043e\u0432 \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u043a\u043e\u0433\u0434\u0430, \u0441\u043a\u0430\u0436\u0435\u043c, \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u043e\u0442\u043a\u0430\u0442\u0438\u043b\u0430\u0441\u044c. \u041d\u0430\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 <a href=\"https:\/\/postgrespro.ru\/docs\/enterprise\/14\/atx\">AUTONOMOUS TRANSACTIONS<\/a>: \u0442\u0430\u043a\u0430\u044f \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439, \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u043c\u043e\u0436\u0435\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/\u043e\u0442\u043a\u0430\u0442\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439. \u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0431\u044b\u043b\u043e \u0432 <b><a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/337180\/\">\u0420\u0430\u0437\u043b\u0438\u0447\u0438\u044f Postgres Pro Enterprise \u0438 PostgreSQL<\/a><\/b>.<\/p>\n<p>  <b><a href=\"https:\/\/github.com\/mgramin\/malewicz\">Malewicz<\/a> (\u043a\u043b\u0438\u0435\u043d\u0442)<\/b><\/p>\n<p>  \u0410\u0432\u0442\u043e\u0440 \u041c\u0430\u043b\u0435\u0432\u0438\u0447\u0430, <i>\u041c\u0430\u043a\u0441\u0438\u043c \u0413\u0440\u0430\u043c\u0438\u043d<\/i> (\u0441\u043c. \u043d\u0438\u0436\u0435 \u0435\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 <a href=\"https:\/\/github.com\/mgramin\/awesome-db-tools\">Awesome DB Tools<\/a>) \u0442\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435:<\/p>\n<p>  <i>Malewicz \u044d\u0442\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u0411\u0414, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0432\u0438\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0441\u0445\u0435\u043c\u0435 \u0411\u0414, \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b, \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043e\u0431\u0449\u0438\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0411\u0414. \u041d\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u0442\u043e\u0447\u0435\u043d \u043d\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c \u2014 DBA, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u043f\u0435\u0440\u0444\u043e\u043c\u0430\u043d\u0441\u0435\u0440\u044b, data people \u0441\u0430\u043c\u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0437\u043d\u0430\u044e\u0442, \u0447\u0442\u043e \u0438\u043c \u043d\u0443\u0436\u043d\u043e \u0438 \u0432 \u043a\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435, \u0442\u0430\u043a\u0438 \u0437\u0430\u0447\u0435\u043c \u0438\u043c \u043c\u0435\u0448\u0430\u0442\u044c? \u0410 Malewicz \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0451 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c sql-\u0444\u0430\u0439\u043b\u0435 \u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Jinja\">jinja2<\/a>-\u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u041f\u0440\u043e\u0435\u043a\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u043d\u043d\u0435\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043c\u0435\u043b\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u0438\u0434\u0435\u0438 \u0438 \u043a\u0440\u0438\u0442\u0438\u043a\u0443, \u0430\u0432\u0442\u043e\u0440\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u044f\u0442\u043d\u043e.<\/i><\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u043d\u0430 <a href=\"https:\/\/github.com\/mgramin\/malewicz\">\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/a> \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u041c\u0430\u043b\u0435\u0432\u0438\u0447 \u0441\u0443\u043f\u0440\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439: \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u043d\u0438\u0435 SQL \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e HTML, \u0447\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 AJAX-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 <a href=\"https:\/\/turbo.hotwired.dev\/\">Turbo<\/a> \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 JavaScript. \u041c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0438 \u0432 docker.<\/p>\n<p>  <b><a href=\"https:\/\/github.com\/pramsey\/pgsql-http\">PostgreSQL HTTP Client<\/a><\/b><\/p>\n<p>  \u042d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e <b>http<\/b>, \u043d\u0430\u043f\u0438\u0441\u0430\u043b <i>\u041f\u043e\u043b \u0420\u044d\u043c\u0437\u0438<\/i> (Paul Ramsey). \u0421\u0432\u043e\u044e \u0446\u0435\u043b\u044c \u043e\u043d \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043b \u0442\u0430\u043a:<\/p>\n<p>  <i>\u0412\u0430\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0441\u044f \u0431\u044b \u0442\u0440\u0438\u0433\u0433\u0435\u0440, \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 web-\u0441\u0435\u0440\u0432\u0438\u0441? \u0427\u0442\u043e\u0431\u044b \u043e\u043d \u043c\u043e\u0433 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0451\u0440\u043d\u0443\u043b \u0441\u0435\u0440\u0432\u0438\u0441, \u0447\u0442\u043e\u0431\u044b \u0442\u043e\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u043b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0430\u0437\u044b. \u0412\u043e\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 http.<\/i><\/p>\n<p>  \u0421\u0430\u043c\u0430\u044f \u0441\u0432\u0435\u0436\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u2014 <a href=\"https:\/\/github.com\/pramsey\/pgsql-http\/releases\/tag\/v1.5.0\">1.5.0<\/a>, \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432. \u0415\u0441\u0442\u044c <a href=\"http:\/\/www.postgresonline.com\/journal\/archives\/371-http-extension.html\">\u043f\u0430\u043a\u0435\u0442<\/a> \u0434\u043b\u044f Windows, \u043d\u043e \u0430\u0432\u0442\u043e\u0440 \u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442.<\/p>\n<p>  <b><a href=\"https:\/\/fabianlindfors.se\/blog\/schema-migrations-in-postgres-using-reshape\/\">Zero-downtime schema migrations in Postgres using Reshape<\/a><\/b><\/p>\n<p>  \u0417\u0430\u043e\u0434\u043d\u043e POC-\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438: <i>\u0424\u0430\u0431\u0438\u0430\u043d \u041b\u0438\u043d\u0434\u0444\u043e\u0440\u0441<\/i> (Fabian Lindfors) \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u0441\u0432\u043e\u0435\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 (POC) \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 <a href=\"https:\/\/github.com\/fabianlindfors\/reshape\">reshape<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 1:1, \u0430 \u043c\u0435\u043d\u044f\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0442\u0430\u0431\u043b\u0438\u0446: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443.<\/p>\n<p>  \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435. Reshape \u043d\u0435 \u0440\u0430\u0437\u0440\u0443\u0448\u0430\u0435\u0442 \u0441\u0442\u0430\u0440\u0443\u044e \u0441\u0445\u0435\u043c\u0443, \u043a\u043b\u0438\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0436\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e \u0441\u0442\u0430\u0440\u043e\u0439 \u0438 \u043d\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u0430\u043c. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u044d\u0442\u0430\u043f\u043d\u043e, \u0431\u0435\u0437 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0431\u0430\u0437\u044b.<\/p>\n<p>  \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0430 \u2014 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0437\u044b\u0432\u044b.<br \/>  \u00a0<br \/>  \u00a0  <\/p>\n<h3>\u0412\u0441\u0451 \u043e \u0442\u043e\u0441\u0442\u0435\u0440\u0430\u0445<\/h3>\n<p>  <b><a href=\"https:\/\/postgrespro.com\/blog\/pgsql\/5969559\">New TOAST in town: the \u201cpluggable TOAST API\u201d concept and what it means for the community<\/a><\/b><\/p>\n<p>  \u041d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/662820\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0435<\/a>. \u041d\u043e \u0432 \u044d\u0442\u043e\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0437\u0430\u043c\u0435\u0442\u043a\u0435 <i>\u041e\u043b\u0435\u0433 \u0411\u0430\u0440\u0442\u0443\u043d\u043e\u0432<\/i>, \u0433\u0435\u043d\u0434\u0438\u0440 Postgres Professional, \u043f\u043e\u0434\u044b\u0442\u043e\u0436\u0438\u0432\u0430\u0435\u0442 \u0446\u0435\u043b\u0438 \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 TOAST API \u0438 \u2014 \u044d\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u2014 \u043f\u0440\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u044b\u0433\u043e\u0434\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u043e\u0442 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e API. \u0418\u0434\u0435\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u043c\u043e\u0433\u0443\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0434 TOAST API, \u043d\u0435 \u0434\u043e\u0436\u0438\u0434\u0430\u044f\u0441\u044c \u043e\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u043d\u0443\u0436\u043d\u044b\u0445 \u043f\u0430\u0442\u0447\u0435\u0439. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d\u0438 \u0441\u043c\u043e\u0433\u0443\u0442 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f (\u043f\u043e\u0434\u043e\u0431\u043d\u043e \u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043d\u0435\u0434\u0430\u0432\u043d\u043e Elasticsearch, MariaDB \u0438 MongoDB, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0432 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e <a href=\"https:\/\/en.wikipedia.org\/wiki\/Server_Side_Public_License\">SSPL<\/a> \u2014 Server Side Public License). \u042d\u0442\u0438\u043c \u0441\u0442\u0438\u043c\u0443\u043b\u0438\u0440\u0443\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043b\u043e\u0434\u0430\u043c\u0438 open source, \u043d\u043e \u0438 \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u0431\u044b\u043b\u044c\u044e \u043e\u0442 \u043d\u043e\u0432\u0448\u0435\u0441\u0442\u0432.<\/p>\n<p>  \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0430 3 \u0442\u043e\u0441\u0442\u0435\u0440\u0430: <b>default toaster<\/b> \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, <b>jsonb_toaster<\/b> \u0438 <b>bytea_toaster<\/b>. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0435\u0441\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0435\u0441\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435. \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u0445 \u0437\u0434\u0435\u0441\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435:<\/p>\n<p>  <b><a href=\"https:\/\/obartunov.livejournal.com\/205362.html\">One TOAST fits ALL: JSONB TOASTER<\/a><\/b><\/p>\n<p>  \u041e\u0431 \u044d\u0442\u043e\u043c \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0432\u044b\u043f\u0443\u0441\u043a\u0435, \u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u0446\u0435\u043b\u0438 \u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430:<br \/>  <i>\u041d\u0430 \u043b\u0435\u0442\u043d\u0438\u0439 \u043a\u043e\u043c\u043c\u0438\u0442\u0444\u0435\u0441\u0442 \u0443\u0448\u0451\u043b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 <a href=\"https:\/\/commitfest.postgresql.org\/38\/3490\/\">Pluggable toaster<\/a>. \u042d\u0442\u043e API \u0434\u043b\u044f TOAST, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0438\u0434\u0435\u0438 AM API \u0434\u043b\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0415\u0441\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u043a\u0438\u043c API, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 TOAST \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0442\u0430\u043a\u043e\u0433\u043e TOAST \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u0430.<\/i><\/p>\n<p>  <b><a href=\"https:\/\/highload.ru\/foundation\/2022\/abstracts\/8963?\">Pluggable TOAST or One TOAST fits ALL<\/a><\/b> \u2014 \u0434\u043e\u043a\u043b\u0430\u0434 <i>\u041e\u043b\u0435\u0433\u0430 \u0411\u0430\u0440\u0442\u0443\u043d\u043e\u0432\u0430, \u0424\u0451\u0434\u043e\u0440\u0430 \u0421\u0438\u0433\u0430\u0435\u0432\u0430<\/i> \u0438 <i>\u041d\u0438\u043a\u0438\u0442\u044b \u041c\u0430\u043b\u0430\u0445\u043e\u0432\u0430<\/i> \u043d\u0430 <a href=\"https:\/\/highload.ru\/foundation\/2022\">Highload++ Foundation<\/a>.<\/p>\n<p>  <a href=\"http:\/\/www.sai.msu.su\/~megera\/postgres\/talks\/json-build-2020.pdf\">JSON(B) Roadmap<\/a> \u2014 \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u043e GSON (Generic JSON) API, \u0432\u0430\u0436\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 JSONB \u043a\u0430\u043a \u0441 JSON, \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c.<\/p>\n<p>  <b><a href=\"http:\/\/www.sai.msu.su\/~megera\/postgres\/talks\/toast-pgcon-2022.pdf\">New TOAST in Town: One TOAST Fits All<\/a><\/b>;<br \/>  <b><a href=\"http:\/\/www.sai.msu.su\/~megera\/postgres\/talks\/jsonb-highload-2021.pdf\">Pro JSONB \u043d\u0430 \u0421\u0442\u0435\u0440\u043e\u0438\u0434\u0430\u0445<\/a><\/b>;<br \/>  <b><a href=\"http:\/\/www.sai.msu.su\/~megera\/postgres\/talks\/bytea-pgconfonline-2021.pdf\">Appendable bytea TOAST<\/a><\/b>; <br \/>  <b><a href=\"http:\/\/www.sai.msu.su\/~megera\/postgres\/talks\/jsonb-pgconfnyc-2021.pdf\">Understanding JSONB Performance<\/a><\/b>;<br \/>  <b><a href=\"http:\/\/www.sai.msu.su\/~megera\/postgres\/talks\/jsonb-pgvision-2021.pdf\">Scaling JSONB<\/a><\/b>;<br \/>  <b><a href=\"http:\/\/www.sai.msu.su\/~megera\/postgres\/talks\/bytea-pgconfonline-2021.pdf\">Appendable bytea TOAST<\/a><\/b>;<br \/>  <b><a href=\"https:\/\/commitfest.postgresql.org\/38\/3490\/\">Pluggable toaster<\/a><\/b> \u2014 \u043d\u0430 \u043a\u043e\u043c\u043c\u0438\u0442\u0444\u0435\u0441\u0442\u0435.<br \/>  \u00a0<br \/>  \u00a0  <\/p>\n<h2>\u0420\u044b\u043d\u043e\u043a<\/h2>\n<p>  <b><a href=\"https:\/\/www.it-world.ru\/it-news\/reviews\/184837.html\">\u041e\u0431\u0437\u043e\u0440 IT-Weekly<\/a><\/b><\/p>\n<p>  <i><b>Postgres Professional \u0438 Loginom Company<\/b> (\u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445) \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0441\u0442\u0432\u0435. \u0421\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044e, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0444\u043b\u0430\u0433\u043c\u0430\u043d\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u2013 \u0421\u0423\u0411\u0414 Postgres Pro \u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 low-code \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Loginom.<\/i><\/p>\n<p>  <b><a href=\"https:\/\/www.comnews.ru\/content\/220343\/2022-05-22\/2022-w20\/diversifikaciya-sertifikacii\">\u0414\u0438\u0432\u0435\u0440\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/a><\/b><\/p>\n<p>  <i>\u0417\u0430\u043c\u0435\u0441\u0442\u0438\u0442\u0435\u043b\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0430 Postgres Professional <i>\u0418\u0432\u0430\u043d \u041f\u0430\u043d\u0447\u0435\u043d\u043a\u043e<\/i> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432. \u041e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0438\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <b>\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u043c Google Summer<\/b>, \u043e\u0442\u043a\u0443\u0434\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432. \u0426\u0435\u043b\u0435\u0432\u0430\u044f \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u044f \u2014 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u044b, \u0442\u0430\u043a\u0436\u0435 \u0438\u0434\u0435\u0442 \u043e\u0442\u0431\u043e\u0440 \u043c\u0435\u043d\u0442\u043e\u0440\u043e\u0432. \u0424\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0437\u0430 \u0441\u0447\u0435\u0442 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439-\u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432, \u0432 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435 \u2014 \u0438 \u0437\u0430 \u0441\u0447\u0435\u0442 \u0433\u0440\u0430\u043d\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c. \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u043e\u043d\u0441 \u044d\u0442\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432\u044b \u0441\u043e\u0441\u0442\u043e\u0438\u0442\u0441\u044f \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0438\u044e\u043d\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0433\u043e\u0434\u0430.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0418\u0432\u0430\u043d \u041f\u0430\u043d\u0447\u0435\u043d\u043a\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u043b \u043e\u0431 \u0438\u043d\u0438\u0446\u0438\u0430\u0442\u0438\u0432\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f <b>\u0428\u043a\u043e\u043b\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u044b\u0445 \u043d\u0430\u0443\u043a<\/b>. \u0411\u0430\u0437\u043e\u0439 \u0434\u043b\u044f \u043d\u0435\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u0438\u043b\u0438 \u0432\u0443\u0437, \u0438\u043b\u0438 \u043a\u043e\u043d\u0441\u043e\u0440\u0446\u0438\u0443\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439. \u042d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0433\u043e\u0432\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0438\u0434\u0443\u0442. \u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u0434\u0430\u0447, \u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043a\u0430\u0434\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u043a\u0440\u0443\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u0430\u0434\u0430\u043d\u0430 \u043e\u0447\u0435\u043d\u044c \u0432\u044b\u0441\u043e\u043a\u0430\u044f \u043f\u043b\u0430\u043d\u043a\u0430 \u0434\u043b\u044f \u043e\u0442\u0431\u043e\u0440\u0430 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0447\u0430\u0449\u0438\u0445\u0441\u044f.<\/i><br \/>  \u00a0<br \/>  \u00a0  <\/p>\n<h2>\u041a\u043d\u0438\u0433\u0438, \u043e\u043d\u043b\u0430\u0439\u043d-\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0438, \u0436\u0430\u043d\u0440 for dummies<\/h2>\n<p>  <\/p>\n<h3>Postgres Books<\/h3>\n<p>  \u0412 \u0441\u043f\u0438\u0441\u043a\u0435 <b><a href=\"https:\/\/www.postgresql.org\/docs\/books\/\">Postgres Books<\/a><\/b> 2 \u043a\u043d\u0438\u0433\u0438 \u0437\u0430 2022:<\/p>\n<p>  <b><a href=\"https:\/\/www.amazon.fr\/POSTGRESQL-Architecture-notions-avanc%C3%A9es-%C3%A9dition\/dp\/2822706913\">PostgreSQL \u2014 Architecture et notions avanc\u00e9es<\/a><\/b><br \/>  \u0410\u0432\u0442\u043e\u0440\u044b \u2014 <i>\u0413\u0438\u0439\u043e\u043c \u041b\u0435\u043b\u0430\u0440\u0436<\/i> \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0443 \u043d\u0430\u0441 <i>\u0416\u0443\u043b\u044c\u0435\u043d \u0420\u0443\u043e<\/i> (Guillaume Lelarge, Julien Rouhaud). \u041d\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u043e\u043c.<\/p>\n<p>  <b><a href=\"https:\/\/www.amazon.com\/PostgreSQL-Administration-Cookbook-administrators-effectively\/dp\/1803248971\">PostgreSQL 14 Administration Cookbook<\/a><\/b><br \/>  \u0410\u0432\u0442\u043e\u0440\u044b \u2014 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c 2ndQuadrant (\u0442\u0435\u043f\u0435\u0440\u044c \u0432\u043d\u0443\u0442\u0440\u0438 EDB) <i>\u0421\u0430\u0439\u043c\u043e\u043d \u0420\u0438\u0433\u0433\u0441<\/i> \u0438 <i>\u0414\u0436\u0430\u043d\u043d\u0438 \u0427\u0438\u043e\u043b\u043b\u0438<\/i> (Simon Riggs, Gianni Ciolli). \u042f\u0437\u044b\u043a \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439.<\/p>\n<p>  \u041d\u0443 \u0430 \u043c\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441-\u0445\u0438\u0442 \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u2014 <b><a href=\"https:\/\/postgrespro.ru\/education\/books\/internals\">PostgreSQL \u0438\u0437\u043d\u0443\u0442\u0440\u0438<\/a><\/b> <i>\u0415\u0433\u043e\u0440\u0430 \u0420\u043e\u0433\u043e\u0432\u0430<\/i>. \u0423\u0436\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0442\u0441\u044b\u043b\u043a\u0438 \u043a \u043d\u0435\u0439 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c \u043d\u0430 \u0445\u0430\u0431\u0440\u0435.<\/p>\n<h3>awesome<\/h3>\n<p>  \u0412 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/652375\/\">\u0444\u0435\u0432\u0440\u0430\u043b\u044c\u0441\u043a\u043e\u043c<\/a> \u0432\u044b\u043f\u0443\u0441\u043a\u0435 Postgresso \u043c\u044b \u0434\u0430\u0432\u0430\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 <b><a href=\"https:\/\/dhamaniasad.github.io\/awesome-postgres\/\">awesome-postgres<\/a><\/b> \u2014 \u044d\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0444\u0442\u0430, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u0437\u0430 <a href=\"https:\/\/awesomeopensource.com\/project\/shlomi-noach\/awesome-mysql\">awesome-mysql<\/a>). \u0410\u0432\u0442\u043e\u0440 \u041c\u0430\u043b\u0435\u0432\u0438\u0447\u0430, <i>\u041c\u0430\u043a\u0441\u0438\u043c \u0413\u0440\u0430\u043c\u0438\u043d<\/i> (\u0441\u043c. \u0432\u044b\u0448\u0435) \u0441\u043e\u0431\u0440\u0430\u043b \u0435\u0449\u0451 \u043e\u0434\u0438\u043d awesome: <a href=\"https:\/\/github.com\/mgramin\/awesome-db-tools\">Awesome DB Tools<\/a>. \u041e PostgreSQL \u0442\u0430\u043c \u043d\u0435\u043c\u0430\u043b\u043e.<\/p>\n<p>  \u041d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0435 \u0440\u0443\u0441\u0441\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 <a href=\"https:\/\/wiki.postgresql.org\/wiki\/Main_Page\/ru\">postgres-wiki<\/a>, \u0433\u0434\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u0441\u0441\u044b\u043b\u043e\u043a, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a PostgreSQL \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u0438 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c.<\/p>\n<p>  <b><a href=\"https:\/\/wiki.postgresql.org\/wiki\/User:Jer\">Jeremy Schneider<\/a>: Latest PostgreSQL Happiness Hints<\/b><\/p>\n<p>  <i>\u0414\u0436\u0435\u0440\u0435\u043c\u0438 \u0428\u043d\u0430\u0439\u0434\u0435\u0440<\/i> \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0443 (\u0432\u0437\u044f\u0442\u0430 \u0438\u0437 \u0435\u0433\u043e tweeter), \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0437\u0432\u0430\u043b <b>Latest PostgreSQL Happiness Hints<\/b>: \u0437\u0434\u0435\u0441\u044c \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u043b\u044e\u0431\u043e\u043c\u0443 \u0441\u0442\u0435\u043a\u0443 PostgreSQL, \u0433\u043e\u0442\u043e\u0432\u043e\u043c\u0443 \u043a \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438. \u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u044d\u0442\u0438\u0445 \u0432\u0435\u0449\u0435\u0439 \u043e\u0431\u0449\u0435\u043f\u0440\u0438\u0437\u043d\u0430\u043d\u0430, \u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u043b\u0438\u0436\u0435 \u043a \u043c\u043e\u0438\u043c \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043c\u043d\u0435\u043d\u0438\u044f\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0443\u043b \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439). \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0434\u0435\u0438 \u043d\u0435 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ad\/_z\/es\/ad_zeszz4-1tpyqnimmjjvnxym8.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/ad\/_z\/es\/ad_zeszz4-1tpyqnimmjjvnxym8.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  <b><a href=\"https:\/\/www.crunchydata.com\/blog\/postgres-constraints-for-newbies\">Postgres Constraints for Newbies<\/a><\/b><\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f <i>\u0415\u043b\u0438\u0437\u0430\u0432\u0435\u0442\u044b \u041a\u0440\u0438\u0441\u0442\u0435\u043d\u0441\u0435\u043d<\/i> (Elizabeth Christensen, Crunchy Data) \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e for newbies, 4 dummies, \u043d\u043e \u043e\u043d\u0430 \u043d\u0435\u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0438 \u0434\u043b\u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u0437\u0440\u0435\u043b\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435 \u0441\u0440\u0430\u0437\u0443 \u0441\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0448\u044c, \u043a\u0430\u043a \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f (\u0442\u043e \u0435\u0441\u0442\u044c CONSTRAINTS) \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0432 \u0432\u0430\u0448\u0435\u0439 \u0431\u0430\u0437\u0435. \u0410 \u0437\u0434\u0435\u0441\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0433\u043b\u0430\u0432\u043a\u0430 \u043f\u0440\u043e <i>\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/i>. \u0418 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b \u0432 \u043a\u043e\u043d\u0446\u0435. \u0414\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0415\u043b\u0438\u0437\u0430\u0432\u0435\u0442\u0430 \u0432\u0437\u044f\u043b\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u0431\u0440\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440\u043e\u0432.<\/p>\n<p>  \u0417\u0430\u043c\u0435\u0442\u0438\u043c \u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445: \u043e\u0431 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0445 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0441\u0442\u0430\u0442\u044c\u044f <i>\u0418\u0432\u0430\u043d\u0430 \u0424\u0440\u043e\u043b\u043a\u043e\u0432\u0430<\/i> \u0438\u0437 Postgres Professional: <b><a href=\"https:\/\/postgrespro.com\/blog\/undefined\/5969284\">Trying to gain peace of mind by using constraints in PostgreSQL<\/a><\/b><\/p>\n<p>  \u042d\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u0434\u043b\u044f \u043d\u044c\u044e\u0431\u0438\u0441, \u043d\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u2014 \u043e\u0442 \u043d\u044c\u044e\u0431\u0438\u0441 \u0434\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u043c\u043d\u043e\u0433\u0438\u0445 \u0438 \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u0411\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u043f\u044b\u0442 \u0418\u0432\u0430\u043d\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0438 \u043f\u043e\u0434\u0432\u0438\u0433\u043d\u0443\u043b \u0435\u0433\u043e \u043d\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 (\u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u0441\u043a\u043e\u0440\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442), \u044d\u0442\u043e <i>\u0432\u044b\u0441\u0442\u0440\u0430\u0434\u0430\u043d\u043d\u0430\u044f<\/i> \u0441\u0442\u0430\u0442\u044c\u044f. \u0426\u0438\u0442\u0430\u0442\u0430:<\/p>\n<p>  <i>\u041e\u0434\u043d\u0430\u0436\u0434\u044b \u044f \u0431\u044b\u043b \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u0435\u043c \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u043a\u0443\u0440\u0441\u043e\u0432 \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442 \u0441\u0434\u0435\u043b\u0430\u043b \u043e\u0448\u0438\u0431\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u0435\u043b\u0430 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043b\u0430\u0442\u0435\u0436\u0430\u043c \u0432\u044b\u0441\u043b\u0430\u043b\u0438 $300,000 \u0432\u043c\u0435\u0441\u0442\u043e $300. \u0410 \u0431\u044b\u043b\u0430 \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0430\u044f \u0437\u0430\u043d\u0443\u0434\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043b\u044f \u043f\u0430\u0440\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c\/\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c, \u0432\u044b\u0441\u043b\u0430\u043d\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0442\u044c 1\/10 \u043e\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439, \u0438 \u043c\u043d\u043e\u0433\u043e \u043d\u0435\u0440\u0432\u043e\u0432 \u0441\u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043b\u0438 \u0431\u044b.<\/i><\/p>\n<p>  \u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0430\u0440\u0430\u043d\u043e\u0439\u044f \u044d\u0442\u043e \u043f\u043b\u044e\u0441 \u0434\u043b\u044f \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0433\u043e \u0431\u0438\u0437\u043d\u0435\u0441\u0430? \u041f\u043e\u0447\u0435\u043c\u0443 <i>\u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c<\/i> \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e? \u041a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u044b \u044d\u043a\u0437\u043e\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f? \u041e\u0442\u0432\u0435\u0442\u044b \u0432 \u0441\u0442\u0430\u0442\u044c\u0435.<br \/>  \u00a0<br \/>  \u00a0  <\/p>\n<h2>\u041e\u043f\u0440\u043e\u0441\u044b<\/h2>\n<p>  <b><a href=\"https:\/\/www.timescale.com\/blog\/the-2022-state-of-postgresql-survey-is-now-open\/\">The 2022 State of PostgreSQL Survey Is Now Open!<\/a><\/b><\/p>\n<p>  Timescale \u043e\u043f\u044f\u0442\u044c \u043e\u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u0441\u0432\u043e\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 (\u0441 <a href=\"https:\/\/drive.google.com\/drive\/folders\/14elckaNv7FLKyWhzp3JKd3tH6PvI9F45\">\u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0438<\/a> \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0441\u0430\u043c\u0438\u0445 \u0440\u0435\u0441\u043f\u043e\u043d\u0434\u0435\u043d\u0442\u043e\u0432) \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043e\u0431\u0437\u043e\u0440 (\u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0433\u043e\u0434\u0443 \u0438\u0437-\u0437\u0430 \u043a\u043e\u0432\u0438\u0434\u0430 \u043e\u0431\u0437\u043e\u0440 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u2014 <a href=\"https:\/\/drive.google.com\/drive\/folders\/19mnQHaQHZ760J4HrLsZ3IGIrvpWEh_u1\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439<\/a> \u0431\u044b\u043b \u0432 2019-\u043c \u0433\u043e\u0434\u0443). \u0421 \u043d\u0438\u043c \u044d\u0442\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0437\u0430\u043c\u0435\u0442\u043a\u0430 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0430 \u044d\u0442\u0438 2 \u0433\u043e\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Postgres <i>\u0447\u0430\u0449\u0435<\/i> \u0438 <i>\u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0447\u0430\u0449\u0435<\/i>, \u0432\u044b\u0440\u043e\u0441 \u0441 52% \u0434\u043e 67%.<\/p>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0432 \u043e\u0431\u043b\u0430\u043a\u0430\u0445. \u0412 2019-\u043c 51% \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 PostgreSQL \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043b\u0438 \u0438\u0445 \u0432 AWS, \u0430 46% \u043f\u043e\u043b\u0430\u0433\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u0432 \u0426\u041e\u0414 (self-managed data center). \u0412 2021 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442, \u043d\u043e 36.4 % \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442 PostgreQSL \u0443 \u0441\u0435\u0431\u044f, 35.3% \u2014 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u043c \u0426\u041e\u0414\u0438 32.8% \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u043e\u0431\u043b\u0430\u043a\u0435.<\/p>\n<p>  \u0412\u043e\u0442 \u0441\u0430\u043c \u043e\u0431\u0437\u043e\u0440: <b><a href=\"https:\/\/www.timescale.com\/blog\/2021-state-of-postgres-survey-results\/\">2021 State of PostgreSQL survey results<\/a><\/b>. \u041a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430 \u0448\u0438\u043a\u0430\u0440\u043d\u043e \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d, \u0438, \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435. \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u043d\u0438\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u0430: \u043a\u0430\u043a \u0432\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435\/\u043f\u0438\u0448\u0435\u0442\u0435? <i>\u041f\u043e\u0441\u0442\u0433\u0440\u0435\u0441 \u0438\u043b\u0438 \u041f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u043a\u044e\u044d\u043b? \u0418\u043b\u0438 \u041f\u0438\u0414\u0436\u0438?<\/i> (\u041f\u043e\u0441\u0442\u0433\u0440\u0435\u0441 \u2014 65%). <br \/>  \u00a0<br \/>  \u00a0  <\/p>\n<h2>ARM<\/h2>\n<p>  \u041d\u0435 \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 <a href=\"https:\/\/www.cnews.ru\/news\/top\/2022-05-05_proizvoditelya_bajkalov\">\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/a> \u0411\u0430\u0439\u043a\u0430\u043b \u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0441 \u0441 ARM, \u044d\u0442\u0430 \u0442\u0435\u043c\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430 \u0434\u043b\u044f \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 (\u043d\u0443 \u0430 \u043c\u044b \u0432\u0435\u0434\u044c \u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0430\u0448\u0438 \u0435\u0436\u0435\u043c\u0435\u0441\u044f\u0447\u043d\u044b\u0435 \u043e\u0431\u0437\u043e\u0440\u044b \u0434\u043b\u044f <i>\u0432\u0441\u0435\u0445<\/i> \u0440\u0443\u0441\u0441\u043a\u043e\u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0445 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0438\u0441\u0442\u043e\u0432, \u0436\u0438\u0432\u0443\u0449\u0438\u0445 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0438\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f).<\/p>\n<p>  <b><a href=\"https:\/\/www.percona.com\/blog\/economical-comparison-of-aws-cpus-for-mysql-arm-vs-intel-vs-amd\/?utm_campaign=pzcampaign&amp;utm_source=twitter&amp;utm_medium=organic&amp;utm_content=blog\">Economical Comparison of AWS CPUs for MySQL (ARM vs Intel vs AMD)<\/a><\/b><\/p>\n<p>  \u0414\u0430, MySQL, \u0430 \u043d\u0435 PostgreSQL, \u043d\u043e \u0442\u0435\u043c\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f ARM \u0441 Intel (\u0438 AMD) \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435. <i>\u041d\u0438\u043a \u041a\u0440\u0438\u0447\u043a\u043e<\/i> (Nik Krichko) \u0438\u0437 Percona \u043e\u0441\u0435\u043d\u044c\u044e \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u0441\u0435\u0440\u0438\u044e \u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438: <a href=\"https:\/\/www.percona.com\/blog\/comparing-graviton-performance-to-arm-and-intel-for-mysql\/\">Comparing Graviton (ARM) Performance to Intel and AMD for MySQL (Part 1<\/a>, <a href=\"https:\/\/www.percona.com\/blog\/comparing-graviton-arm-performance-to-intel-and-amd-for-mysql-part-2\/\">2<\/a>, <a href=\"https:\/\/www.percona.com\/blog\/comparing-graviton-arm-performance-to-intel-and-amd-for-mysql-part-3\/\">3<\/a>). \u0418\u0437\u043c\u0435\u0440\u044f\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0435\u0440\u043a\u043e\u043d\u043e\u0432\u0441\u043a\u043e\u0433\u043e <a href=\"https:\/\/www.percona.com\/software\/database-tools\/percona-monitoring-and-management\">PMM<\/a> (Percona Monitoring and Management), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c MySQL, PostgreSQL \u0438 MongoDB. \u0412 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445: ARM \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u0438\u043d\u043e\u0433\u0434\u0430 \u0432 1.5 \u0440\u0430\u0437\u0430, \u043d\u043e \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435), \u0437\u0430\u0442\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u0448\u0435\u0432\u043b\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0430\u0432\u0442\u043e\u0440 \u0440\u0435\u0448\u0438\u043b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439.<\/p>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u043d\u043e\u0433\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0445 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432. \u0410 \u0441\u043e\u0432\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 \u0442\u0430\u043a\u043e\u0439: \u0438\u0441\u0445\u043e\u0434\u0438\u0442\u0435 \u0438\u0437 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443? \u041f\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u043c \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0430\u043c\u044b\u0439 \u0434\u0435\u0448\u0451\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 vCPU, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0442\u0430\u043a\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443.<br \/>  \u00a0<br \/>  \u00a0  <\/p>\n<h2>\u0421\u044e\u0440\u043f\u0440\u0438\u0437\u044b Linux<\/h2>\n<p>  <b><a href=\"https:\/\/tanelpoder.com\/posts\/linux-hiding-interrupt-cpu-usage\/\">Is Your Linux Version Hiding Interrupt CPU Usage From You?<\/a><\/b><\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u0438 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a PostgreSQL \u043d\u0435 \u0438\u043c\u0435\u0435\u0442. \u041d\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0435\u0451 \u0434\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u043a \u043d\u0435\u0439 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043d\u0430 \u0434\u043d\u044f\u0445 \u043d\u0430\u0448\u0435\u0439 \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>CONFIG_IRQ_TIME_ACCOUNTING<\/code>, \u0442\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u0432\u0438\u0434\u043d\u044b. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f <code>idle<\/code>, \u0430 \u043e\u043d \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. <\/p>\n<p>  <b><a href=\"https:\/\/dev.to\/yugabyte\/introducing-nodetop-2d49\">Introducing nodetop<\/a><\/b><\/p>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438 \u043e\u0431 \u041e\u0421: <i>\u0424\u0440\u0438\u0442\u0441 \u0425\u043e\u043e\u0433\u043b\u0430\u043d\u0434<\/i> (Frits Hoogland) \u043f\u0438\u0448\u0435\u0442 \u0432 \u0431\u043b\u043e\u0433\u0435 YugabyteDB \u043e\u0431 \u0443\u0442\u0438\u043b\u0438\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u0441\u0434\u0435\u043b\u0430\u043b \u0434\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u041e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <a href=\"https:\/\/github.com\/prometheus\/node_exporter\">node_exporter<\/a> \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438. Nodetop \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 Rust. \u0423\u0442\u0438\u043b\u0438\u0442\u0430 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 CPU, IO. \u041f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Sar_(Unix)\">sar<\/a>, <a href=\"https:\/\/rtfm.co.ua\/linux-opisanie-utility-iostat\/\">iostat<\/a> \u0438 <a href=\"https:\/\/linux-notes.org\/dstat-instrument-dlya-monitoringa-v-linux\/\">dstat<\/a>, \u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0451 \u044d\u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0438 \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0413\u0440\u0430\u043d\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<br \/>  \u00a0<br \/>  \u00a0  <\/p>\n<h2>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f<\/h2>\n<p>  <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><\/p>\n<p>  \u0412 PostgreSQL 14 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0440\u0435\u0436\u0438\u043c \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 (<code>pipeline mode<\/code>) \u0434\u043b\u044f libpq C API. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u0432\u044b\u0436\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0441\u0435\u0442\u0438 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u043c\u0438. \u0417\u0430\u0434\u0430\u0447\u0430 \u0434\u043b\u044f \u043d\u0435\u043c\u0430\u043b\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043b\u044e\u0434\u0435\u0439 \u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u043e\u0447\u0435\u043d\u044c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0445, \u0443 \u043a\u043e\u0433\u043e \u0431\u0430\u0437\u0430 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435.<\/p>\n<p>  \u0412 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 <i>\u041b\u043e\u0440\u0435\u043d\u0446\u0430 \u0410\u043b\u044c\u0431\u0435<\/i> (Laurenz Albe, Cybertec) \u0435\u0441\u0442\u044c \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/protocol-overview#PROTOCOL-QUERY-CONCEPTS\">\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/a> (<a href=\"https:\/\/www.postgresql.org\/docs\/current\/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY\">extended query protocol<\/a>) \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0435 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0432 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u043e\u043c \u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435; SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0434\u0430\u0436\u0435 \u043a\u0443\u0441\u043a\u0438 C-\u043a\u043e\u0434\u0430, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432.<\/p>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u043c\u0441\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0441\u043e\u0432\u0435\u0442\u0443\u0435\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f <i>\u0415\u0433\u043e\u0440\u0430 \u0420\u043e\u0433\u043e\u0432\u0430<\/i> \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/574702\/\">\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u0432 PostgreSQL: 1. \u042d\u0442\u0430\u043f\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/a>.<\/p>\n<p>  \u041d\u0443 \u0430 \u041b\u043e\u0440\u0435\u043d\u0446 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u043b\u043b\u0435\u0433\u0438 <i>\u0425\u0430\u043d\u0441\u0430-\u042e\u0440\u0433\u0435\u043d\u0430 \u0428\u0451\u043d\u0438\u0433\u0430<\/i> (Hans-J\u00fcrgen Sch\u00f6nig) \u043e \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430\u0445: <b><a href=\"https:\/\/www.cybertec-postgresql.com\/en\/postgresql-network-latency-does-make-a-big-difference\/\">PostgreSQL: Network Latancy Does Make A Big Difference<\/a><\/b>.<\/p>\n<p>  \u0410 \u0432\u043e\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0435\u0433\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u041b\u043e\u0440\u0435\u043d\u0446\u0430: <b><a href=\"https:\/\/www.cybertec-postgresql.com\/en\/cancel-hanging-postgresql-query\/\">Help, I Cannot Cancel A PostgreSQL Query!<\/a><\/b><\/p>\n<p>  \u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f. \u041a\u0430\u043a \u0442\u0430\u043a\u043e\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f? \u041b\u043e\u0440\u0435\u043d\u0446 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438 PostgreSQL, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u0447\u0438\u043d\u044b, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0440\u0432\u0430\u043d. \u0421\u043e\u0432\u0435\u0442\u0443\u0435\u0442 \u043d\u0435 \u0437\u043b\u043e\u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0442\u044c <code>kill -9<\/code>, \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u0440\u0430\u0439\u043d\u0438\u0445-\u043a\u0440\u0430\u0439\u043d\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043f\u0443\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043d\u0435 \u0436\u0435\u043b\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u043e\u043c (gdb).<\/p>\n<p>  <b><a href=\"https:\/\/www.crunchydata.com\/blog\/postgres-query-optimization-left-join-vs-union-all\">Postgres Query Optimization: LEFT JOIN vs UNION ALL<\/a><\/b><\/p>\n<p>  <i>\u0414\u044d\u0432\u0438\u0434 \u041a\u0440\u0438\u0441\u0442\u0438\u043d\u0435\u0441\u0435\u043d<\/i> (David Christensen, Crunchy Data) \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043d\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0434\u0430\u0432\u0430\u044f\u0441\u044c \u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u0438\u0433\u0440\u044b\u0448 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a: 1\u043c\u0441 \u043f\u0440\u043e\u0442\u0438\u0432 2-3\u0441 \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435. \u041e\u043d \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043d\u044e\u0430\u043d\u0441\u0430\u043c\u0438, \u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441.<\/p>\n<p>  \u0422\u0430\u043c \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0435\u0441\u0442\u044c LEFT JOIN. \u0412 \u043d\u043e\u0432\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043e\u043d \u043a\u0430\u043a \u0431\u044b \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 2 \u0447\u0430\u0441\u0442\u0438: \u0432 \u043e\u0434\u043d\u043e\u0439 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 (INNER JOIN), \u0432 \u0434\u0440\u0443\u0433\u043e\u0439 UNION ALL.<\/p>\n<p>  \u0414\u044d\u0432\u0438\u0434 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u0432 \u0431\u043b\u043e\u0433\u0435 Crunchy Data: <b><a href=\"https:\/\/www.crunchydata.com\/blog\/tentative-smarter-query-optimization-in-postgres-starts-with-pg_stat_statements\">Query Optimization in Postgres with pg_stat_statements<\/a><\/b>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e, \u043c\u043e\u043b, \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0437\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e. \u0410 \u043c\u044b \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u043b\u0438 \u0431\u044b \u0438 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0438 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439 <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>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438 \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/662820\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c Postgresso<\/a>.<br \/>  \u00a0<br \/>  \u00a0  <\/p>\n<h2>\u0418\u0435\u0440\u0430\u0440\u0445\u0438\u0438<\/h2>\n<p>  <b><a href=\"https:\/\/hoverbear.org\/blog\/postgresql-hierarchical-structures\/\">Hierarchical Structures in PostgreSQL<\/a><\/b><\/p>\n<p>  \u0412 \u0431\u043b\u043e\u0433\u0435 <i>\u0410\u043d\u044b \u0425\u043e\u0431\u0434\u0435\u043d<\/i> (Ana Hobden) \u043a\u043e\u043d\u0441\u0430\u043b\u0442\u0438\u043d\u0433\u043e\u0432\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 <a href=\"https:\/\/github.com\/Hoverbear-Consulting\">Hoverbear<\/a> (\u043f\u0430\u0440\u044f\u0449\u0438\u0439, \u043b\u0435\u0442\u0430\u044e\u0449\u0438\u0439 \u043c\u0435\u0434\u0432\u0435\u0434\u044c \u0438\u043b\u0438 \u043c\u0435\u0434\u0432\u0435\u0434\u0438\u0446\u0430) \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0435\u0449\u0451 \u0432 2020, \u043d\u043e \u0442\u0435\u043c\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f. \u041a\u0430\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0438 \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f\u043c\u0438 \u0432 \u043d\u0435\u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0421\u0423\u0411\u0414 PostgreSQL. \u0423 \u0410\u043d\u044b \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u044e\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435: <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/rules-materializedviews\">\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/a> (Materialized View) \u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0435 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/queries-with\">CTE<\/a>. \u0414\u0440\u0443\u0433\u043e\u0435, \u0433\u0434\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u043a\u043e\u0434\u0430, \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f <a href=\"https:\/\/www.postgresql.org\/docs\/12\/ltree.html\">ltree<\/a>, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0435\u0433\u043e, \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c <b>ltree<\/b>.<br \/>  \u00a0<br \/>  \u00a0  <\/p>\n<h2>pgAdmin 4<\/h2>\n<p>  <b><a href=\"https:\/\/www.enterprisedb.com\/blog\/pgadmin-4-architecture\">pgAdmin 4 Architecture<\/a><\/b><\/p>\n<p>  \u041d\u0435 \u0447\u0430\u0441\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e\u0431 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u041e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u0441\u043e \u0441\u0445\u0435\u043c\u043a\u0430\u043c\u0438 <i>\u0419\u043e\u0433\u0435\u0448\u044c \u041c\u0430\u0445\u0430\u0434\u0436\u0430\u043d<\/i> (Yogesh Mahajan, EDB). \u041a\u0441\u0442\u0430\u0442\u0438, \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0448\u043b\u0430 \u0432\u0435\u0440\u0441\u0438\u044f 6.10: <b><a href=\"https:\/\/www.pgadmin.org\/docs\/pgadmin4\/6.10\/release_notes_6_10.html\">pgAdmin 4 v. 6.10<\/a><\/b>. \u0412 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043d\u0435\u0442. \u0414\u043e\u0431\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u043d\u044f\u0442\u044c \u0448\u0438\u0440\u0438\u043d\u0443 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 Dashboard.<br \/>  \u00a0<br \/>  \u00a0  <\/p>\n<h2>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u043b\u0438\u0437\u044b<\/h2>\n<p>  <b><a href=\"https:\/\/www.postgresql.org\/about\/news\/postgresql-anonymizer-10-privacy-by-design-for-postgres-2452\/\">PostgreSQL Anonymizer 1.0<\/a><\/b><\/p>\n<p>  \u041c\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e\u0431 \u044d\u0442\u043e\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 Dalibo, \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0430\u0437\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u0433\u043e\u0442\u043e\u0432\u043e (\u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438) \u043a \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>  PostgreSQL Anonymizer \u043f\u0440\u044f\u0447\u0435\u0442 \u0438\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (personally identifiable information \u2014 PII), \u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0431\u0430\u0437\u0430\u0445 PostgreSQL. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 3 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0430\u043d\u043e\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438:<\/p>\n<ul>\n<li>\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (<a href=\"https:\/\/postgresql-anonymizer.readthedocs.io\/en\/latest\/dynamic_masking\/\">dynamic masking<\/a>),<\/li>\n<li>\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (<a href=\"https:\/\/postgresql-anonymizer.readthedocs.io\/en\/latest\/static_masking\/\">static masking<\/a>) \u0438<\/li>\n<li><a href=\"https:\/\/postgresql-anonymizer.readthedocs.io\/en\/latest\/anonymous_dumps\/\">anonymous dumps<\/a> (\u043f\u0440\u043e\u0441\u0442\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 SQL-\u0444\u0430\u0439\u043b).<\/li>\n<\/ul>\n<p>  \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 <a href=\"https:\/\/postgresql-anonymizer.readthedocs.io\/en\/latest\/masking_functions\/\">\u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a>, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a<br \/>  Substitution, Randomization, Faking, Pseudonymization, Partial Scrambling, Shuffling, Noise Addition and Generalization. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0438\u0445 \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u0437\u0430 \u0441\u0435\u0431\u044f, \u043d\u0430 \u044d\u0442\u043e\u0439 <a href=\"https:\/\/postgresql-anonymizer.readthedocs.io\/en\/latest\/masking_functions\/\">\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043a\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438.<\/p>\n<p>  \u0412\u043e\u0442 <a href=\"https:\/\/postgresql-anonymizer.readthedocs.io\/en\/latest\/\">\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f<\/a> \u0438 <a href=\"https:\/\/gitlab.com\/dalibo\/postgresql_anonymizer\/-\/blob\/master\/CHANGELOG.md\">CHANGELOG<\/a>, \u0430\u043d\u043e\u043d\u0438\u043c\u0430\u0439\u0437\u0435\u0440 \u043d\u0430 <a href=\"https:\/\/gitlab.com\/dalibo\/postgresql_anonymizer\/\">\u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a>, \u0437\u0434\u0435\u0441\u044c <a href=\"https:\/\/postgresql-anonymizer.readthedocs.io\/en\/latest\/INSTALL\/\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438<\/a>.<\/p>\n<p>  <b><a href=\"https:\/\/github.com\/wal-g\/wal-g\/releases\/tag\/v2.0.0\">WAL-G 2.0.0<\/a><\/b><\/p>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u0441 \u0434\u0432\u0443\u043c\u044f \u043d\u0443\u043b\u044f\u043c\u0438 \u043c\u043d\u043e\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e. \u041f\u043e \u0434\u0435\u043b\u044c\u0442\u0430-\u0431\u044d\u043a\u0430\u043f\u0430\u043c \u043e\u043d \u043e\u0431\u0440\u0430\u0442\u043d\u043e <b>\u043d\u0435<\/b>\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438: \u0434\u0435\u043b\u044c\u0442\u0430-\u0431\u044d\u043a\u0430\u043f\u044b \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u0435\u0439 1.1 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u043c\u0438. <\/p>\n<p>  \u041f\u043e \u0442\u0435\u043c\u0435 Postgres 12 \u043d\u043e\u0432\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u044d\u043a\u0430\u043f\u043e\u0432 <a href=\"https:\/\/pgbackrest.org\/\">pgBackRest<\/a> (beta), \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>wal-restore<\/code> \u0438 <code>delete garbage<\/code>, \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 WAL-\u0444\u0430\u0439\u043b \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<p>  \u041c\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043a\u0430\u0441\u0430\u044e\u0442\u0441\u044f S3. \u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0431\u044d\u043a\u0430\u043f\u043e\u0432 Greenplum.<\/p>\n<p>  <b><a href=\"https:\/\/temboard.readthedocs.io\/en\/v7\/CHANGELOG\/\">temBoard 7.11<\/a><\/b><\/p>\n<p>  \u042d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 PostgreSQL. \u0421\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043b\u0435\u0433\u043a\u0438\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 Web-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p>  \u0412 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 \u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0447\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c; \u043c\u043e\u0436\u043d\u043e \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u043d\u0430 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b; \u043a\u043b\u044e\u0447 \u0430\u0433\u0435\u043d\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438. \u0414\u043b\u044f <a href=\"https:\/\/temboard.readthedocs.io\/en\/v7\/QUICKSTART\/\">\u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430<\/a> \u0432\u044b\u043b\u043e\u0436\u0435\u043d <code>docker-compose.yml<\/code>-\u0444\u0430\u0439\u043b: \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c temBoard \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 PostgreSQL-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u0445.<\/p>\n<p>  <i>\u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0432\u0441\u0451.<\/i><\/p>\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\/667350\/\"> https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/667350\/<\/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\/2s\/n3\/it\/2sn3itwh3pgjxai1wvwvouurizo.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/2s\/n3\/it\/2sn3itwh3pgjxai1wvwvouurizo.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-144-released-2470\/\">PostgreSQL 14.4<\/a><\/b><\/p>\n<p>  \u042d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u043b\u0438\u0437, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0431\u0430\u0433 \u043f\u0440\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 PostgreSQL 14. \u041d\u0435\u0437\u0430\u0434\u043e\u043b\u0433\u043e \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b \u0434\u0430\u0436\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u043e\u043d\u0441:<\/p>\n<p>  <b><a href=\"https:\/\/www.postgresql.org\/about\/news\/postgresql-14-out-of-cycle-release-coming-june-16-2022-2466\/\">PostgreSQL 14 out-of-cycle release coming June 16, 2022<\/a><\/b><\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 PG14 \u0441\u0442\u0430\u043b\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/sql-createindex#SQL-CREATEINDEX-CONCURRENTLY\">CREATE INDEX CONCURRENTLY<\/a> \u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/sql-reindex?lang=ru\">REINDEX CONCURRENTLY<\/a> \u043c\u043e\u0433\u0443\u0442 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043f\u043e\u043f\u043e\u0440\u0442\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u044b. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432 14.4 \u0443\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u0438\u0447\u0430\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u044d\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>pg_amcheck<\/code> \u0441 \u0444\u043b\u0430\u0433\u043e\u043c <code>--heapallindexed<\/code> (\u043a\u043e\u0442\u043e\u0440\u0430\u044f, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e btree-\u0438\u043d\u0434\u0435\u043a\u0441\u044b).<\/p>\n<p>  \u041d\u043e \u044d\u0442\u0438\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 PostgreSQL 14 \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0442\u0441\u044f. \u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0445 \u0432 <a href=\"https:\/\/www.postgresql.org\/docs\/release\/14.4\/\">release notes<\/a> \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439.  <\/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-334695","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/334695","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=334695"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/334695\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=334695"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=334695"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=334695"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}