{"id":327100,"date":"2022-01-10T08:45:38","date_gmt":"2022-01-10T08:45:38","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=327100"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=327100","title":{"rendered":"<span>Postgresso 37<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"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\/rf\/e8\/r9\/rfe8r9gf-qdgzsa9ixqwgelmsya.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/rf\/e8\/r9\/rfe8r9gf-qdgzsa9ixqwgelmsya.jpeg\" data-blurred=\"true\"\/><\/p>\n<h3>\u0422\u043e\u043f\u044b<\/h3>\n<p>  <b><a href=\"https:\/\/retool.com\/blog\/best-postgresql-guis-in-2020\/\">Best PostgreSQL GUIs in 2021 (Updated)<\/a><\/b><\/p>\n<p>  <b>TOP-11<\/b> GUI \u043e\u0442 <a href=\"http:\/\/retool.com\">Retool<\/a>. \u041f\u043e\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e Retool (GUI \u0441 web-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c) \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a \u0442\u043e\u043f\u0430, \u043d\u043e \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0443 \u2014 \u043e\u043d \u0441\u043a\u0440\u043e\u043c\u043d\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u0435\u0442 \u0438\u0445 \u0441\u043f\u0438\u0441\u043e\u043a.<\/p>\n<p>  \u041f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 GUI \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u043d\u043a\u0442\u044b: \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430, \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438. \u041a PgAdmin \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0433\u043b\u0430\u0432\u043a\u0443 \u043f\u043e \u043d\u0430\u0431\u043e\u0440\u0443 \u0448\u043e\u0440\u0442\u043a\u0430\u0442\u043e\u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430 \u0434\u043b\u044f Navicat \u043f\u043e \u0438\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u044d\u0441\u0442\u0435\u0442\u0438\u0447\u043d\u043e\u043c\u0443 \u0434\u0438\u0437\u0430\u0439\u043d\u0443. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f:<\/p>\n<ol>\n<li>pgAdmin;<\/li>\n<li>Navicat;<\/li>\n<li>DBeaver;<\/li>\n<li>HeidiSQL;<\/li>\n<li>Datagrip;<\/li>\n<li>OmniDB;<\/li>\n<li>Beekeeper Studio;<\/li>\n<li>TablePlus;<\/li>\n<li>QueryPie;<\/li>\n<li>SQLGate;<\/li>\n<li>Retool.<\/li>\n<\/ol>\n<p>  \u041d\u043e \u044d\u0442\u043e, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0442\u043e\u043f \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u043e\u043f\u0430, \u0437\u043e\u043b\u043e\u0442\u043e \u043d\u0430 \u043f\u044c\u0435\u0434\u0435\u0441\u0442\u0430\u043b\u0435 \u0432\u043e\u0442 \u044d\u0442\u043e\u0433\u043e:<\/p>\n<p>  <b><a href=\"https:\/\/postgresweekly.com\/issues\/436\"><i>TOP-8<\/i>: \u0427\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0447\u0438\u0442\u0430\u043b\u0438 (\u043a\u043b\u0438\u043a\u0430\u043b\u0438) \u043d\u0430 Postgres Weekly \u0432 2021-\u043c<\/a><\/b><br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<ol>\n<li><a href=\"https:\/\/retool.com\/blog\/best-postgresql-guis-in-2020\/\">A Roundup of Postgres GUIs in 2021<\/a>.<\/li>\n<li><a href=\"https:\/\/psql-tips.org\/psql_tips_all.html\">125 psql Tips<\/a>.<\/li>\n<li><a href=\"https:\/\/hakibenita.com\/postgresql-unknown-features\">Lots of Lesser Known Postgres Features<\/a>.<\/li>\n<li><a href=\"https:\/\/hoverbear.org\/blog\/postgresql-hierarchical-structures\/\">Working with Hierarchical Structures in Postgres<\/a>.<\/li>\n<li><a href=\"https:\/\/blog.crunchydata.com\/blog\/postgres-14-its-the-little-things\">Postgres 14: It&#8217;s The Little Things<\/a>.<\/li>\n<li><a href=\"https:\/\/spin.atomicobject.com\/2021\/02\/04\/redis-postgresql\/\">Do You Really Need Redis? How to Get Away with Just PostgreSQL<\/a>.<\/li>\n<li><a href=\"https:\/\/www.cybertec-postgresql.com\/en\/postgresql-vs-redis-vs-memcached-performance\/\">Postgres vs Redis vs Memcached Performance<\/a>.<\/li>\n<li><a href=\"https:\/\/aws.amazon.com\/ru\/blogs\/database\/is-amazon-rds-for-postgresql-or-amazon-aurora-postgresql-a-better-choice-for-me\/\">Is Amazon RDS for PostgreSQL or Amazon Aurora PostgreSQL a Better Choice for Me?<\/a>  <\/li>\n<\/ol>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c Redis \u0445\u043e\u0442\u044c \u0438 \u043d\u0435 \u0432 \u043f\u0440\u0438\u0437\u0430\u0445, \u0437\u0430\u0442\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0438\u043b\u0441\u044f \u0434\u0432\u0443\u0445 \u0441\u0442\u0440\u043e\u0447\u0435\u043a. \u0414\u0432\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Crunchy Data.<\/p>\n<p>  \u0412 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445 \u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0442\u0440\u043e\u0439\u043a\u0435 (\u043e #1 \u0441\u043c. \u0432\u044b\u0448\u0435):<\/p>\n<p>  <b>#2: <a href=\"https:\/\/psql-tips.org\/psql_tips_all.html\">psql Tips<\/a><\/b><\/p>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435, \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c <i>\u041b\u0435\u0442\u0438\u0446\u0438\u0435\u0439 \u0410\u0432\u0440\u043e<\/i> (L\u00e6titia Avrot) \u043e \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0443\u043d\u043a\u0442\u0435 \u043f\u043e \u0430\u0431\u0437\u0430\u0446\u0443 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c. \u041b\u0435\u0442\u0438\u0446\u0438\u044f \u2014 \u0441\u043e\u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0438\u0446\u0430 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0438 <a href=\"https:\/\/wiki.postgresql.org\/wiki\/Postgres_Women\">Postgres Women<\/a> \u0438 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043e\u043c\u0438\u0442\u0435\u0442 \u043f\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e (<a href=\"https:\/\/www.postgresql.org\/about\/policies\/coc\/\">PostgreSQL Code of Conduct Committee<\/a>). \u0423 \u043d\u0435\u0451 \u0435\u0441\u0442\u044c \u0441\u0430\u0439\u0442 <a href=\"https:\/\/mydbanotebook.org\/\">My DBA Notebook<\/a>.<\/p>\n<p>  \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0435\u0451 \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u2014 <a href=\"https:\/\/psql-tips.org\/psql_tips_all.html#tip031\">#31<\/a>:<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0430\u0434\u043e \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043b\u0430\u0433 <code>-s<\/code> \u0438\u043b\u0438 <code>--single-step<\/code>. \u0421 \u043d\u0438\u043c psql \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/8q\/mv\/y8\/8qmvy8l3oxt0dei_j2fs3zh8jk8.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/8q\/mv\/y8\/8qmvy8l3oxt0dei_j2fs3zh8jk8.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0422\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0430\u0436 \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 7.1. \u041d\u043e, \u043a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0434\u0430\u0436\u0435 \u043c\u043d\u043e\u0433\u0438\u0435 \u0431\u044b\u0432\u0430\u043b\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 psql \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442 \u043e <code>-s<\/code>.<\/p>\n<p>  <b>#3: <a href=\"https:\/\/hakibenita.com\/postgresql-unknown-features\">Lesser Known PostgreSQL Features<\/a><\/b><\/p>\n<p>  <i>\u0425\u0430\u043a\u0438 \u0411\u0435\u043d\u0438\u0442\u0430<\/i> (Haki Benita) \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e 18 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0441\u0430\u043c\u044b\u0445 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 PostgreSQL. \u0421\u043a\u0430\u0436\u0435\u043c, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <code>\\crosstabview<\/code> \u0432 psql.<\/p>\n<p>  <b><a href=\"https:\/\/habr.com\/ru\/company\/selectel\/blog\/581872\/\">\u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f PostgreSQL: \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<\/a><\/b><\/p>\n<p>  \u042d\u0442\u043e <b>TOP-10<\/b> \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043f\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Selectel. \u0418\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 PostgreSQL-\u0431\u0430\u0437\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 40 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439, \u043d\u043e \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u043c\u0438 \u0432\u044b\u0431\u043e\u0440\u043e\u0447\u043d\u043e. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u0443 26% \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 DBaaS. \u0412\u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0438 \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u043a\u0430\u043a\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c \u0438\u043c \u043d\u0443\u0436\u043d\u044b \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e. \u041c\u044b \u0438\u0445 \u0442\u043e\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u043c, \u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e Postgres Professional, \u043c\u044b \u0434\u0430\u0451\u043c \u0432\u0435\u0437\u0434\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 PostgreSQL 14 (\u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0445\u0430\u043e\u0442\u0438\u0447\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u0432\u0435\u0440\u0441\u0438\u0439).<\/p>\n<p>  <a href=\"https:\/\/postgis.net\">PostGIS<\/a><br \/>  \u041d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438, \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f.<\/p>\n<p>  <a href=\"https:\/\/github.com\/timescale\/timescaledb\">TimescaleDB<\/a><br \/>  \u0410 \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 Selectel \u043e\u043d\u043e \u0438 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043e\u043d\u043e \u0442\u0430\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c \u0411\u0414. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0440\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u042b\u0445 \u0440\u044f\u0434\u043e\u0432.<\/p>\n<p>  <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/uuid-ossp\">uuid-ossp<\/a><br \/>  \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 UUID \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e ID. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0434\u0443\u0431\u043b\u0435\u0439 \u043f\u0440\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0438 \u0438 \u0434\u0440. \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u0445 \u0441 \u0431\u0430\u0437\u0430\u043c\u0438.<\/p>\n<p>  <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/pgstatstatements\">pg_stat_statements<\/a><br \/>  \u041b\u044e\u0431\u0438\u043c\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0443 \u0442\u0435\u0445, \u043a\u0442\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0431\u0430\u0437\u044b \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/pgstatstatements\">pg_stat_statements<\/a> \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432\u044b\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0442\u043e\u0440\u043c\u043e\u0437\u044f\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u041e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c Selectel \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p>  <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/postgres-fdw\">postgres_fdw<\/a><br \/>  \u0421\u0440\u0435\u0434\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u2014 \u0448\u0430\u0440\u0434\u0438\u043d\u0433: \u0438 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043d\u0430 \u0431\u0430\u0437\u0435 PostgreSQL \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \/ \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u0436\u0443.<\/p>\n<p>  <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/hstore\">hstore<\/a> \u2014 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e. \u0421\u0435\u0439\u0447\u0430\u0441 \u043e JSON\/JSONB \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043d\u0435\u0441\u0440\u0430\u0432\u043d\u0438\u043c\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043e\u0431 hstore, \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435. \u041f\u0440\u0438\u044f\u0442\u043d\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430: \u0430\u0432\u0442\u043e\u0440\u044b hstore \u2014 <a href=\"https:\/\/postgrespro.ru\/about\/team\"><i>\u041e\u043b\u0435\u0433 \u0411\u0430\u0440\u0442\u0443\u043d\u043e\u0432<\/i> \u0438 <i>\u0424\u0451\u0434\u043e\u0440 \u0421\u0438\u0433\u0430\u0435\u0432<\/i><\/a>. <\/p>\n<p>  <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/pgcrypto\">pgcrypto<\/a><br \/>  \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435.<\/p>\n<p>  <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/pgtrgm\">pg_trgm<\/a><br \/>  \u0414\u043b\u044f \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u0442\u0435\u043a\u0441\u0442\u0430\u0445 (\u0442\u0440\u0438\u0433\u0440\u0430\u043c\u043c\u044b \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0431\u0443\u043a\u0432, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0442\u0435\u043a\u0441\u0442). \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0444\u0430\u043c\u0438\u043b\u0438\u0438 \u0441 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430\u043c\u0438. \u0423\u0441\u043a\u043e\u0440\u044f\u0435\u0442 LIKE\/ILIKE-\u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u043f\u043e\u0438\u0441\u043a\u043e\u043c.<\/p>\n<p>  <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/citext\">citext<\/a><br \/>  \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0423\u0434\u043e\u0431\u043d\u043e \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u043c\u0438 \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438.<\/p>\n<p>  <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/btree-gist\">btree_gist<\/a><br \/>  \u041f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445, \u0433\u0434\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0436\u0435\u0441\u0442\u043a\u0430\u044f \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u043a\u0430 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u2014 \u00ab\u0431\u043e\u043b\u044c\u0448\u0435\u00bb, \u00ab\u043c\u0435\u043d\u044c\u0448\u0435\u00bb \u0438\u043b\u0438 \u00ab\u0440\u0430\u0432\u043d\u043e\u00bb, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u0430\u044f \u0434\u043b\u044f btree. \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445, \u0433\u0434\u0435 \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u043b\u0435\u0439 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 GiST, \u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u2014 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0440\u0435\u0439\u0442\u0438\u043d\u0433 \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u043b\u044e\u0431\u0438\u043c\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 Postgres-<a href=\"https:\/\/postgresql.life\/categories\/interviews\/\">\u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043c\u0438 \u043d\u0435\u0434\u0435\u043b\u0438<\/a> \u2014 \u0442\u0430\u043c \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 <i>\u0432\u0430\u0448\u0435 \u043b\u044e\u0431\u0438\u043c\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435<\/i>. \u041d\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u043e\u043b\u0438\u0441\u0442\u0430\u0442\u044c \u044d\u0442\u0438 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041d\u0443 \u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0430\u0437\u0430\u0440\u0442. <\/p>\n<h3>\u041d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0435 \u0441\u043e\u0432\u0435\u0442\u044b<\/h3>\n<p>  \u041d\u0435 \u0432 \u0441\u043c\u044b\u0441\u043b\u0435 \u043d\u0430 1-\u0435 \u044f\u043d\u0432\u0430\u0440\u044f \u2014 \u0430 \u043d\u0430 \u0432\u0435\u0441\u044c 2022-\u0439 \u0433\u043e\u0434. \u0421\u043e\u0432\u0435\u0442\u044b \u043e\u0442 <i>\u041a\u0440\u0435\u0439\u0433\u0430 \u041a\u0438\u0440\u0441\u0442\u0438\u043d\u0441\u0430<\/i> (Craig Kerstiens, Crunchy Data). \u0412 <b><a href=\"https:\/\/blog.crunchydata.com\/blog\/five-tips-for-a-healthier-postgres-database-in-the-new-year\">Five Tips For a Healthier Postgres Database in the New Year<\/a><\/b> \u043e\u043d \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442:<\/p>\n<ul>\n<li>\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0439\u0442\u0435 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u044b \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 (<a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/runtime-config-client\">SET statement_timeout<\/a>);<\/li>\n<li>\u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b (\u0441 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/pgstatstatements\">pg_stat_statements<\/a>);<\/li>\n<li>\u043b\u043e\u0433\u0438\u0440\u0443\u0439\u0442\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0439\u0442\u0435 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/runtime-config-logging\">log_min_duration_statement<\/a> (\u043d\u0435 \u043f\u043e\u043b\u0430\u0433\u0430\u044f\u0441\u044c \u043d\u0430 <code>pg_stat_statements<\/code>);<\/li>\n<li>\u043b\u0443\u0447\u0448\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u043c\u0438 (\u0441 PgBouncer, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043f\u0443\u043b\u0435\u0440 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0440\u0435\u0434\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\/ORM;<\/li>\n<li>\u043d\u0430\u0439\u0434\u0438\u0442\u0435 \u0437\u043e\u043b\u043e\u0442\u0443\u044e \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0443: \u0437\u0430\u0432\u043e\u0434\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u044b, \u043d\u0435 \u043f\u0435\u0440\u0435\u0443\u0441\u0435\u0440\u0434\u0441\u0442\u0432\u0443\u0439\u0442\u0435.<\/li>\n<\/ul>\n<p>  \u0423 Crunchy \u0435\u0441\u0442\u044c <a href=\"https:\/\/learn.crunchydata.com\/\">\u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043a\u0443\u0440\u0441\u044b<\/a>, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 <a href=\"https:\/\/learn.crunchydata.com\/postgresql-devel\/courses\/basics\/indextypes\">\u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f<\/a> \u041a\u0440\u0435\u0439\u0433. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0435\u043c\u044b \u0442\u0430\u043c \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u0441 <a href=\"https:\/\/postgrespro.ru\/docs\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 PostgreSQL<\/a>.<\/p>\n<h3>\u041d\u043e\u0432\u044b\u0439 The PostgreSQL transition guide<\/h3>\n<p>  \u041f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 <b>\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u043f\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0443 \u043d\u0430 PostgreSQL<\/b> (<a href=\"https:\/\/github.com\/postgresql-transition-guide\/guide\/blob\/main\/transition-guide.pdf\">\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b<\/a> \u043d\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u043e\u043c). \u041e\u043d\u0430 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432 2015-\u043c \u0442\u043e\u0436\u0435 \u043d\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u043e\u043c, \u0438 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0433\u043e\u0434\u0443 \u0431\u044b\u043b\u0430 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 <i>\u041e\u043b\u0435\u0433\u043e\u043c \u0411\u0430\u0440\u0442\u0443\u043d\u043e\u0432\u044b\u043c<\/i> \u0438 <i>\u0418\u0432\u0430\u043d\u043e\u043c \u041f\u0430\u043d\u0447\u0435\u043d\u043a\u043e<\/i>. \u0420\u0443\u0441\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0442\u043e\u0433\u0434\u0430 \u0432\u044b\u0448\u0435\u043b \u043a\u0430\u043a <b><a href=\"https:\/\/www.mim-libre.fr\/wp-content\/uploads\/2015\/09\/guide_rus_4-2.pdf\">\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0443 \u043d\u0430 PostgreSQL: \u043f\u043e\u043c\u043e\u0449\u044c \u0432 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f<\/a><\/b> \u0438 \u043f\u043e\u0434 \u0448\u0430\u043f\u043a\u043e\u0439 <i>\u041c\u0435\u0436\u043c\u0438\u043d\u0438\u0441\u0442\u0435\u0440\u0441\u043a\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0446\u0438\u044f \u043f\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c \u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c \u0441\u0432\u044f\u0437\u0438. \u041c\u0435\u0436\u043c\u0438\u043d\u0438\u0441\u0442\u0435\u0440\u0441\u043a\u0438\u0439 \u0446\u0435\u043d\u0442\u0440 \u043f\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u043c\u0443 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044e<\/i>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0443. \u0420\u0435\u0447\u044c \u043e \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0438\u0445 \u0438\u043d\u0441\u0442\u0438\u0442\u0443\u0446\u0438\u044f\u0445, \u043a\u043e\u043d\u0435\u0447\u043d\u043e.<\/p>\n<p>  \u041d\u043e\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 2019-\u043c \u0442\u043e\u0436\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u043e\u043c, \u0430 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u0432 \u044d\u0442\u043e\u043c \u2014 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0430\u0440\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443.<\/p>\n<h3>2022 vs. 2021<\/h3>\n<p>  <b><a href=\"https:\/\/www.cockroachlabs.com\/blog\/predictions-2022\/\">Tech Trends in 2022: Gaze into the Cockroach Labs Crystal Ball<\/a><\/b><\/p>\n<p>  \u0412 \u0431\u043b\u043e\u0433\u0435 Cockroach Labs \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0431\u0443\u0434\u0443\u0449\u0435\u0435. \u041d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c. \u0413\u043e\u0434 2021 \u0431\u044b\u043b \u0433\u043e\u0434\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 Kubernetes \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u0441\u044f \u0432 \u043c\u0435\u0439\u043d\u0441\u0442\u0440\u0438\u043c\u0435. \u0421\u0432\u043e\u0438 \u0438\u043d\u0442\u0443\u0438\u0446\u0438\u0438 \u0430\u0432\u0442\u043e\u0440, <i>\u041c\u0438\u0448\u0435\u043b\u044c \u0416\u0438\u043d\u0430\u0443<\/i> (Michelle Gienow) <a href=\"https:\/\/www.cockroachlabs.com\/blog\/author\/michellegienow\/\"><\/a><a href=\"https:\/\/resources.cockroachlabs.com\/guides\/kubernetes-trends\">, \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u044f\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u044b\u0435 \u0441 Rad Hat<\/a>. \u041f\u043e \u0434\u0430\u043d\u043d\u044b\u043c \u043e\u043f\u0440\u043e\u0441\u043e\u0432 94% \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 Kubernetes \u0443\u0436\u0435 \u0432 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438. \u041d\u043e \u0443\u0436\u0435 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0433\u043e\u0434\u0443 \u0442\u043e \u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441 <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\u044b\u043c\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u043c\u0438<\/a>. \u0414\u0430, \u043e\u043d\u0438 \u043d\u0435 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043b\u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0439 (overhyped) \u0432 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443, \u043d\u043e \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u044e\u0442\u0441\u044f \u043a \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0430\u0441\u0441\u0435, \u043e \u0447\u0451\u043c \u0442\u043e\u0436\u0435 \u0441\u0432\u0438\u0434\u0435\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u043f\u0440\u043e\u0441, \u0433\u0434\u0435 \u0438\u0437 \u043e\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 88% \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0443\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432 \u043f\u0440\u043e\u0434\u0435 \u0438\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>  \u041d\u043e \u041c\u0438\u0448\u0435\u043b\u044c \u0435\u0449\u0451 \u0438 \u0432\u0435\u0434\u0451\u0442 \u043f\u0440\u043e\u0441\u0432\u0435\u0442\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u0430\u0440\u043a\u0435\u0442\u043e\u043b\u043e\u0433\u0438 \u0442\u0440\u0430\u043a\u0442\u0443\u044e\u0442 \u0442\u0430\u043a, \u043a\u0430\u043a \u0438\u043c \u0432\u044b\u0433\u043e\u0434\u043d\u043e. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0441 \u043f\u043e\u043b\u0443-\u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <b><a href=\"https:\/\/www.cockroachlabs.com\/blog\/what-is-serverless\/\">WTF is Serverless, Anyway?<\/a><\/b> \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f 4 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u0438\u0442\u044c tru serverless \u043e\u0442 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u043e\u0439 \u0448\u0435\u043b\u0443\u0445\u0438.<\/p>\n<p>  \u0410 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <b><a href=\"https:\/\/www.cockroachlabs.com\/blog\/what-is-serverless-sql\/\">What is a Serverless SQL Database?<\/a><\/b> \u0435\u0441\u0442\u044c \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u0438 \u0434\u043b\u044f \u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u043e\u0442 \u043e\u043d\u0438:<\/p>\n<ul>\n<li>\u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (no server management);<\/li>\n<li>\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u044d\u043b\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (Automatic elastic scale);<\/li>\n<li>\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c (resiliency and fault tolerance);<\/li>\n<li>\u0431\u0438\u043b\u043b\u0438\u043d\u0433 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (consumption-based billing);<\/li>\n<li>\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 (instant access and always available).<\/li>\n<\/ul>\n<h3>\u0427\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0430\u0441\u044c Core Team<\/h3>\n<p>  <b><a href=\"https:\/\/www.postgresql.org\/developer\/corereports\/june2019_december2021\/\">Core Team Report: June 2019 \u2014 December 2021<\/a><\/b><\/p>\n<p>  \u042d\u0442\u043e \u043a\u043e\u0440\u043e\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u043e\u0442\u0447\u0451\u0442-\u043e\u0431\u0437\u043e\u0440 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0437\u0430 \u0434\u0432\u0430 \u0441 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u0433\u043e\u0434\u0430. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0440\u0435\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e. \u0417\u0430\u043c\u0435\u0442\u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <b>Contributors Committee<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0451\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u0430, \u043e\u043f\u0438\u0440\u0430\u044f\u0441\u044c \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u0432). \u0413\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0435 \u0432\u043e\u0448\u043b\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f. \u0412 \u0430\u0431\u0437\u0430\u0446\u0435 <b>Trademark Dispute<\/b> \u0440\u0435\u0447\u044c \u043e\u0431 <a href=\"https:\/\/www.postgresql.org\/about\/news\/trademark-actions-against-the-postgresql-community-2302\/\">\u0443\u043b\u0430\u0436\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0435<\/a> \u0441 <i>\u0410\u043b\u044c\u0432\u0430\u0440\u043e \u042d\u0440\u043d\u0430\u043d\u0434\u0435\u0441\u043e\u043c<\/i> (\u00c1lvaro Hern\u00e1ndez Tortosa) \u2014 \u043e \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0435 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/573530\/\">Postgresso 34<\/a>). \u0422\u043e\u0440\u0433\u043e\u0432\u044b\u0435 \u043c\u0430\u0440\u043a\u0438 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u043c\u0438 \u043c\u0430\u0440\u043a\u0430\u043c\u0438, \u043d\u043e \u0410\u043b\u044c\u0432\u0430\u0440\u043e \u0432\u043e\u043e\u0431\u0449\u0435-\u0442\u043e \u043a\u0440\u0438\u0442\u0438\u043a\u043e\u0432\u0430\u043b \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u043c\u0443 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0439.<\/p>\n<h3>\u041d\u043e\u0432\u043e\u0441\u0442\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b<\/h3>\n<p>  \u041d\u0430 \u0432\u0442\u043e\u0440\u043d\u0438\u043a\u0430\u0445 <a href=\"https:\/\/www.youtube.com\/RuPostgres\">ru#postgres<\/a> \u0441\u043e\u0431\u044b\u0442\u0438\u0435: <i>\u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u041a\u043e\u0440\u043e\u0442\u043a\u043e\u0432<\/i> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0430\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0431\u043e\u043b\u0435\u0435 4 \u043b\u0435\u0442: \u0431\u0430\u0437\u0443 OrioleDB.<\/p>\n<p>  \u0412 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u0434\u0435\u043a\u0430\u0431\u0440\u044f \u0432 <a href=\"https:\/\/www.youtube.com\/watch?v=1GgyEqLNXiM&amp;t=2842s\">\u0431\u0435\u0441\u0435\u0434\u0435<\/a> \u0441 <i>\u041d\u0438\u043a\u043e\u043b\u0430\u0435\u043c \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432\u044b\u043c<\/i> \u043e\u043d \u043e\u0442\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0438\u0442 \u0432 Postgres: \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u043e \u0436\u0435, \u0447\u0442\u043e \u0438 <i>\u0420\u0438\u043a \u0411\u0440\u044d\u043d\u0441\u043e\u043d<\/i> \u0432 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 2020-\u0433\u043e \u0433\u043e\u0434\u0430 <b><a href=\"https:\/\/rbranson.medium.com\/10-things-i-hate-about-postgresql-20dbab8c2791\">10 Things I Hate About PostgreSQL<\/a><\/b>. \u0418 \u0441\u0434\u0435\u043b\u0430\u043b \u0433\u0440\u0443\u0441\u0442\u043d\u044b\u0439 \u0441\u043b\u0430\u0439\u0434:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/m9\/fo\/vp\/m9fovpdmkun3nebjrnf8sdov3xu.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/m9\/fo\/vp\/m9fovpdmkun3nebjrnf8sdov3xu.jpeg\" data-blurred=\"true\"\/><\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0440\u0435\u0448\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0434\u0435\u043c\u043e\u043a\u0440\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u0438 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u043f\u043e\u044f\u0441\u043d\u044f\u0435\u0442 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u043f\u0435\u0440\u0435\u043b\u043e\u043f\u0430\u0442\u0438\u0442\u044c Postgres \u043e\u043d \u0432\u0437\u044f\u043b\u0441\u044f \u0447\u0443\u0442\u044c \u043b\u0438 \u043d\u0435 \u0432 \u043e\u0434\u0438\u043d\u043e\u0447\u043a\u0443 (\u0441\u0435\u0439\u0447\u0430\u0441 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0432 \u041c\u0438\u043d\u0441\u043a\u0435, 6 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432).<\/p>\n<p>  \u041c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0442 \u0447\u0442\u043e:<br \/>  WAL \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 => WAL \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0437\u0430\u043f\u0438\u0441\u0438<br \/>  Buffer mapping => \u043f\u0440\u044f\u043c\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b<br \/>  \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0431\u0443\u0444\u0435\u0440\u0430 => \u0434\u043e\u0441\u0442\u0443\u043f \u0431\u0435\u0437 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a<br \/>  MVCC => Undo log<br \/>  \u041d\u0435\u0443\u043a\u043b\u044e\u0436\u0430\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f WAL \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 => \u041c\u0443\u043b\u044c\u0442\u0438\u043c\u0430\u0441\u0442\u0435\u0440 \u043d\u0430 Raft \u0441 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 WAL \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a WAL \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 (\u0430 \u043d\u0435 \u0431\u043b\u043e\u043a\u0430) \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043e\u0442 \u043c\u043d\u043e\u0433\u0438\u0445 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u044f\u0434\u0435\u0440 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u0441\u0430\u0436\u0430\u044e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b WAL \u0445\u043e\u0440\u043e\u0448\u043e \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0430\u0441\u0442\u0435\u0440\u0430. \u0427\u0438\u0441\u043b\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0442\u043e\u0436\u0435 \u0441\u0442\u0430\u043b\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u0420\u0430\u0441\u0441\u043a\u0430\u0437 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u043c\u0438 \u2014 \u0442\u0435\u0441\u0442\u0430\u043c\u0438. \u0418\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u0440\u0435\u043b\u0438\u0437, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 <a href=\"https:\/\/github.com\/orgs\/orioledb\/packages\">\u0432\u044b\u043b\u043e\u0436\u0435\u043d<\/a>. \u041d\u043e \u043e\u043d \u2014 \u043d\u0430\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u2014 \u043f\u043e\u043a\u0430 \u0434\u0430\u043b\u0451\u043a \u043e\u0442 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d-\u0432\u0435\u0440\u0441\u0438\u0438. \u0414\u043b\u044f \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043e\u0431\u043c\u0435\u043d\u0430 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<p>  <b><a href=\"https:\/\/www.cnews.ru\/news\/top\/2021-12-17_rossiyane_sozdali_subdkotoraya\">\u0420\u043e\u0441\u0441\u0438\u044f\u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0421\u0423\u0411\u0414, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430 \u00ab\u042d\u043b\u044c\u0431\u0440\u0443\u0441\u0430\u0445\u00bb \u043e\u0431\u0433\u043e\u043d\u044f\u0435\u0442 PostgreSQL \u043d\u0430 Intel<\/a><\/b><\/p>\n<p>  \u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0420\u0435\u043b\u044d\u043a\u0441, \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0421\u0423\u0411\u0414 \u041b\u0418\u041d\u0422\u0415\u0420 (\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0435\u0451 \u0440\u0435\u043b\u0438\u0437 \u0431\u044b\u043b \u0432 2018-\u043c) \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043f\u0440\u0435\u0441\u0441\u0435 <a href=\"https:\/\/www.soqol.ru\">SoQoL<\/a>. \u0421\u043b\u0443\u0445\u0430\u043c\u0438 \u0434\u043e\u043b\u0433\u043e \u0437\u0435\u043c\u043b\u044f \u043f\u043e\u043b\u043d\u0438\u043b\u0430\u0441\u044c. \u042d\u0442\u043e, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043f\u0440\u0435\u0441\u0441\u0435. \u041d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430 C News \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430 \u043f\u043e\u043d\u044f\u0442\u044c. SoQoL \u2014 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 ACID-\u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u043e\u0432\u044b\u043c\u0438 \u0443\u0437\u043b\u0430\u043c\u0438. \u0412 \u0420\u044d\u043b\u0435\u043a\u0441 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442, \u0447\u0442\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0441 \u00ab\u042d\u043b\u044c\u0431\u0440\u0443\u0441\u0430\u043c\u0438\u00bb Soqol \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0432 TPC-C-\u0442\u0435\u0441\u0442\u0430\u0445 <a href=\"https:\/\/www.hammerdb.com\/\">HammerDB<\/a> \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c PostgreSQL \u043d\u0430 Intel-\u043c\u0430\u0448\u0438\u043d\u0430\u0445 \u043f\u043e\u0445\u043e\u0436\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0425\u043c. \u0416\u0434\u0451\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<h2>\u0421\u0442\u0430\u0442\u044c\u0438<\/h2>\n<p>  <b><a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/596567\/\">PostgreSQL 15: \u0427\u0430\u0441\u0442\u044c 3 \u0438\u043b\u0438 \u041a\u043e\u043c\u043c\u0438\u0442\u0444\u0435\u0441\u0442 2021-11<\/a><\/b><\/p>\n<p>  \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0437\u0438\u043c\u044b, \u0440\u0435\u043b\u0438\u0437\u043d\u044b\u0439 \u0446\u0438\u043a\u043b 15-\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u043b\u0441\u044f \u0435\u0449\u0435 \u043d\u0430 \u043e\u0434\u0438\u043d, \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u0436\u0435 \u0442\u0440\u0435\u0442\u0438\u0439, \u043a\u043e\u043c\u043c\u0438\u0442\u0444\u0435\u0441\u0442. \u041e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0434\u0432\u0443\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c:<br \/>  <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/572782\/\">2021-07<\/a>, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/583070\/\">2021-09<\/a>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e\u0442 \u0432\u044b\u043f\u0443\u0441\u043a Postgresso \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0441 \u0443\u043a\u043b\u043e\u043d\u043e\u043c \u0432 \u0438\u043d\u0434\u0435\u043a\u0441\u044b, \u0432\u043e\u0442 \u043f\u0443\u043d\u043a\u0442 \u043f\u043e \u0442\u0435\u043c\u0435:<\/p>\n<p>  <b><i><a href=\"https:\/\/commitfest.postgresql.org\/35\/3218\/\">\u0418\u043d\u0434\u0435\u043a\u0441\u044b BRIN \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442 HOT-\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f<\/a><\/i><\/b><br \/>  commit: <a href=\"https:\/\/github.com\/postgres\/postgres\/commit\/5753d4ee\">5753d4ee<\/a><\/p>\n<p>  <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/449704\/\">HOT-\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435<\/a> \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043a\u043e\u043c\u0430\u043d\u0434\u044b UPDATE \u043f\u0440\u043e\u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u043b\u044e\u0431\u044b\u043c \u0442\u0438\u043f\u043e\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u0430. <\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u044b BRIN \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438. \u0418 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c HOT \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u043c\u0438 \u0432\u043f\u043e\u043b\u043d\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 15-\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b BRIN \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 HOT update:<\/p>\n<pre><code class=\"pgsql\">15=# CREATE INDEX flights_bi ON flights USING brin(actual_departure); 15=# SELECT pg_stat_reset_single_table_counters('flights'::regclass);  15=# UPDATE flights SET actual_departure = actual_departure + '5 min'::interval      WHERE flight_id = 1;  15=# SELECT n_tup_hot_upd FROM pg_stat_all_tables WHERE relname = 'flights'; <\/code><\/pre>\n<pre><code class=\"plaintext\"> n_tup_hot_upd ---------------              1 <\/code><\/pre>\n<p>  \u041d\u0443 \u0438 \u043a\u0430\u043a \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/326096\/\">\u0441\u0435\u0440\u0438\u0430\u043b<\/a> <i>\u0415\u0433\u043e\u0440\u0430 \u0420\u043e\u0433\u043e\u0432\u0430<\/i> \u043e\u0431 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0445.<\/p>\n<p>  <b><a href=\"https:\/\/postgres.ai\/blog\/20211029-how-partial-and-covering-indexes-affect-update-performance-in-postgresql\">How partial, covering, and multicolumn indexes may slow down UPDATEs in PostgreSQL<\/a><\/b><\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f <i>\u041d\u0438\u043a\u043e\u043b\u0430\u044f \u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432\u0430<\/i>, \u043f\u043e \u043c\u043e\u0442\u0438\u0432\u0430\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 (\u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u0440).<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/9d\/91\/vo\/9d91voo6b5pwib-4hkhvbn2o_o4.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/9d\/91\/vo\/9d91voo6b5pwib-4hkhvbn2o_o4.jpeg\" data-blurred=\"true\"\/><br \/>  <i>\u0421\u0430\u043c\u043e\u0445\u0432\u0430\u043b\u043e\u0432\u0441\u043a\u0438\u0439 \u0421\u043b\u043e\u043d \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0430\u0441\u0438\u0432, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0435\u043d\u0442 \u043d\u0430 \u041c\u0438\u0441\u0441\/\u041c\u0438\u0441\u0442\u0435\u0440 \u0421\u043b\u043e\u043d.<\/i><\/p>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0441 pgbench, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u0421\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f:<\/p>\n<ul>\n<li>\u0438\u043d\u0434\u0435\u043a\u0441 \u043d\u0430 1 \u043a\u043e\u043b\u043e\u043d\u043a\u0443;<\/li>\n<li><a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/indexes-partial\">\u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b<\/a>;<\/li>\n<li><a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/indexes-index-only-scans\">\u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441<\/a>;<\/li>\n<li>\u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441<\/li>\n<\/ul>\n<p>  \u0418 \u0447\u0442\u043e \u0436\u0435? \u0427\u0438\u0442\u0430\u0439\u0442\u0435. \u041f\u0440\u043e\u0433\u043d\u043e\u0437\u044b \u0438 \u043c\u0435\u0447\u0442\u044b \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0431\u044b\u0432\u0430\u044e\u0442\u0441\u044f. \u00ab\u041d\u0435 \u043d\u0430\u0432\u0440\u0435\u0434\u0438\u00bb \u2014 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0413\u0438\u043f\u043f\u043e\u043a\u0440\u0430\u0442\u0430.<\/p>\n<p>  <b><a href=\"https:\/\/pganalyze.com\/blog\/gin-index\">Understanding Postgres GIN Indexes: The Good and the Bad<\/a><\/b><\/p>\n<p>  \u041e\u0431\u0448\u0438\u0440\u043d\u043e\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 \u2014 <i>\u041b\u0443\u043a\u0430\u0441\u0430 \u0424\u0438\u0442\u0442\u043b\u044f<\/i> (Lukas Fittl, pganalyze) \u2014 \u043c\u043d\u043e\u0433\u043e\u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0435 GIN-\u0438\u043d\u0434\u0435\u043a\u0441\u044b, \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 GIN \u0438 B-tree-\u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432. \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 GIN. \u041e\u043f\u044f\u0442\u044c \u0442\u0440\u0438\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u0443\u0440\u043e\u043a\u0438, \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435 \u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 GitLab. \u0410-\u0430, \u0432\u043e\u0442 \u044d\u0442\u043e \u0432\u0441\u0451 \u043a \u0447\u0435\u043c\u0443: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435, \u0433\u043e\u0441\u043f\u043e\u0434\u0430 <a href=\"https:\/\/pganalyze.com\/index-advisor\">pganalyze Index Advisor<\/a>. \u041d\u0443 \u0438\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435, \u0430 \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u2014 \u043d\u0435\u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f.<\/p>\n<p>  <b><a href=\"https:\/\/dev.to\/yugabyte\/text-search-example-with-the-omdb-sample-database-5e4l\">Text Search example with the OMDB sample database<\/a><\/b><\/p>\n<p>  \u0428\u0432\u0435\u0439\u0446\u0430\u0440\u0435\u0446 <i>\u0424\u0440\u0430\u043d\u043a \u041f\u0430\u0448\u043e<\/i> (Franck Pachot) \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b GIN-\u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430. \u041e FTS (<a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/textsearch-intro\">Full Text Search<\/a>) \u043e\u043d \u043e\u0442\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435, \u0447\u0435\u043c\u0443 \u0443\u0432\u0430\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e: <i>greatest feature of PostgreSQL<\/i>. \u0424\u0440\u0430\u043d\u043a \u0430\u0434\u0440\u0435\u0441\u0443\u0435\u0442\u0441\u044f \u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c Oracle, SQL Server \u0438 ElasticSearch. \u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u0424\u0440\u0430\u043d\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e PostgreSQL \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e great, \u043a\u0430\u043a \u0435\u0433\u043e \u0440\u043e\u0434\u043d\u043e\u0439 Yugobyte. \u041d\u043e \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u043d\u0430\u0436\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043d\u044e\u0430\u043d\u0441\u044b.<\/p>\n<p>  \u0412 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u2014 <b><a href=\"https:\/\/dev.to\/yugabyte\/triggers-stored-procedures-for-pure-data-integrity-logic-and-performance-1eh8\">Triggers &amp; Stored Procedures for pure data integrity logic and performance<\/a><\/b><br \/>   \u2014 \u043e\u043d \u0441\u0435\u0442\u0443\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e PostgreSQL \u043d\u0435 \u0434\u0430\u0451\u0442 \u0435\u043c\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c GIN-\u0438\u043d\u0434\u0435\u043a\u0441, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043d\u0443\u0436\u043d\u043e\u0435 \u0435\u043c\u0443 \u043f\u043e\u043b\u0435, \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430: ERROR: access method \u00abgin\u00bb does not support included columns and trying to add it in the indexed columns will raise ERROR: data type timestamp with time zone has no default operator class for access method \u00abgin\u00bb. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043d\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0445 (<a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/ddl-constraints\">constraints<\/a>). \u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f, \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 (\u043b\u0438\u0441\u0442\u0438\u043d\u0433\u043e\u0432), \u043e\u0442\u043d\u044e\u0434\u044c \u043d\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043f\u0440\u043e\u043f\u0430\u0433\u0430\u043d\u0434\u0435 Yugobyte.<\/p>\n<p>  <b><a href=\"https:\/\/blog.crunchydata.com\/blog\/tricks-for-faster-spatial-indexes\">Tricks for Faster Spatial Indexes<\/a><\/b><\/p>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 <i>\u041f\u043e\u043b \u0420\u044d\u043c\u0441\u0438<\/i> (Paul Ramsy, Crunchy Data) \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043e\u0447\u0435\u043d\u044c \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b \u043a \u0442\u043e\u043c\u0443, \u0432 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0432\u0445\u043e\u0434. \u0421\u0438\u043b\u044c\u043d\u043e \u043a\u043e\u0440\u0440\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043f\u043b\u043e\u0445\u043e \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0438\/\u0438\u043b\u0438 \u043f\u043b\u043e\u0445\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0434\u0435\u0440\u0435\u0432\u044c\u044f\u043c (\u0430 \u043c\u044b \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0434\u0435\u0440\u0435\u0432\u044c\u044f GiST, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 SP-GiST, <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/333878\/\">\u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432\u0441\u0435\u0433\u0434\u0430<\/a>). \u0420\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u0432\u043e\u0434\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u0440\u0435\u0432\u044c\u044f, \u0438 \u044d\u0442\u043e \u0434\u0430\u0451\u0442 \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u043c\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442.<\/p>\n<p>  \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 <a href=\"http:\/\/lin-ear-th-inking.blogspot.com\/2020\/12\/randomization-to-rescue.html\">in-memory K-D-\u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432<\/a>. \u0410 \u0435\u0441\u0442\u044c \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431: <a href=\"http:\/\/lin-ear-th-inking.blogspot.com\/2021\/10\/query-kd-trees-100x-faster-with-this.html\">pre-seeding<\/a>.<\/p>\n<p>  <b><a href=\"http:\/\/blog.cleverelephant.ca\/2021\/12\/knn-syntax.html\">PostGIS Nearest Neighbor Syntax<\/a><\/b><\/p>\n<p>  <i>\u0420\u0430\u043c\u0441\u0438<\/i> \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <code>&lt;-><\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u0441 ORDER BY \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439 (KNN).<\/p>\n<p>  <b><a href=\"https:\/\/www.percona.com\/blog\/should-i-create-an-index-on-foreign-keys-in-postgresql\/\">Should I Create an Index on Foreign Keys?<\/a><\/b><\/p>\n<p>  <i>\u0427\u0430\u0440\u043b\u0438 \u0411\u0430\u0442\u0438\u0441\u0442\u0430<\/i> (Charly Batista, Percona) \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0443\u043a\u043b\u043e\u043d\u0447\u0438\u0432\u043e: \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043f\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u043a\u043b\u044e\u0447\u0443 <i>\u0432\u0441\u0435\u0433\u0434\u0430<\/i> \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b. \u041d\u043e \u043d\u0435\u0440\u0435\u0434\u043a\u043e. \u0418 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u0438. \u0418 \u0441\u0430\u043c \u0432\u043e\u043f\u0440\u043e\u0441, \u0438 \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u0435\u0431\u0438\u043d\u0430\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043d \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442.<\/p>\n<p>  <b><a href=\"https:\/\/www.pgmustard.com\/blog\/indexing-best-practices-postgresql\">Some Indexing Best Practices<\/a><\/b><\/p>\n<p>  <i>\u041c\u0430\u0439\u043a\u043b \u041a\u0440\u0438\u0441\u0442\u043e\u0444\u0430\u0439\u0434\u0435\u0441<\/i> (Michael Christofides, pgmustard) \u0434\u0430\u0451\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b. \u041d\u043e \u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0443\u0442 \u0437\u0434\u0435\u0441\u044c.<\/p>\n<p>  <b><a href=\"https:\/\/www.cybertec-postgresql.com\/en\/primary-keys-vs-unique-constraints-in-postgresql\/\">Primary Keys vs. UNIQUE Constraints<\/a><\/b><\/p>\n<p>  <i>\u0425\u0430\u043d\u0441-\u042e\u0440\u0433\u0435\u043d \u0428\u0451\u043d\u0438\u0433<\/i> (Hans-J\u00fcrgen Sch\u00f6nig, Cybertec) \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442: \u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438, \u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432. \u041d\u043e \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f NULL. \u0412\u043e\u043e\u0431\u0449\u0435-\u0442\u043e, \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 2016-\u0433\u043e \u0433\u043e\u0434\u0430 <b><a href=\"https:\/\/habr.com\/ru\/post\/311586\/\">\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f (\u0441onstraints) PostgreSQL: exclude, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0439 unique, \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0438 \u0434\u0440<\/a><\/b> \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439 (\u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436 \u043e \u043d\u0430\u0448\u0438\u0445 \u043b\u044e\u0431\u0438\u043c\u044b\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u0415\u0433\u043e\u0440\u0430 \u0420\u043e\u0433\u043e\u0432\u0430).<\/p>\n<h3>JSON(B)<\/h3>\n<p>  <b><a href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/597187\/\">\u041f\u0440\u043e\u043a\u043b\u044f\u0442\u044c\u0435 TOAST \u0438 \u0441 \u043a\u0430\u043a\u0438\u043c \u043c\u0430\u0441\u043b\u043e\u043c \u0435\u0433\u043e \u0435\u0441\u0442 JSONB<\/a><\/b><\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e \u043c\u043e\u0442\u0438\u0432\u0430\u043c \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f <i>\u041e\u043b\u0435\u0433\u0430 \u0411\u0430\u0440\u0442\u0443\u043d\u043e\u0432\u0430<\/i> \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 Highload++ <i>\u041e\u043b\u0435\u0433\u0430 \u0411\u0443\u043d\u0438\u043d\u0430<\/i>.<\/p>\n<p>  \u041e\u043b\u0435\u0433 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0442\u0438\u043f\u0430 jsonb \u043f\u0435\u0440\u0435\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430 2\u041a\u0411, \u0438 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f TOAST. \u0421\u043f\u043e\u0439\u043b\u0435\u0440: \u043d\u0438\u0447\u0435\u0433\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e: \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0430 \u0434\u0432\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0445\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441\u0441\u044b\u043b\u043e\u043a, \u0434\u0430 \u0435\u0449\u0451 \u0438 \u0432 4 \u0437\u0430\u0445\u043e\u0434\u0430. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b. TOAST \u043d\u0435 \u0431\u044b\u043b \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u043d\u0430 JSON(B) \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441 \u043d\u0438\u043c \u0442\u0430\u043a\u0430\u044f \u043c\u043e\u0440\u043e\u043a\u0430. \u0412\u0438\u0434\u0435\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0434\u043e\u043a\u043b\u0430\u0434\u0430 <a href=\"https:\/\/www.youtube.com\/watch?v=CPoNZRpcHf4\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <b><a href=\"https:\/\/blog.logrocket.com\/whats-new-json-postgresql-v14\/\">What\u2019s new with JSON in PostgreSQL v14<\/a><\/b><\/p>\n<p>  <i>\u0421\u0430\u0440\u0430 \u0427\u0430\u0439\u043c\u0430 \u0410\u0442\u0443\u043e\u043d\u0443<\/i> (Sarah Chima Atuonwu) \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u0432 PostgreSQL 14 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/datatype-json?lang=en#JSONB-SUBSCRIPTING\">subscripting<\/a> \u2014 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/datatype-json#JSONB-SUBSCRIPTING\">\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c jsonb \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443<\/a>. \u041e\u043d\u0430, \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0447\u0438\u043c, \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u0438 <code>jsonb_set<\/code> (\u043a\u0430\u043a \u0434\u0435\u043b\u0430\u043b\u043e\u0441\u044c \u0434\u043e PG 14) \u0434\u0430\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<h3>\u0415\u0449\u0451 \u0441\u0442\u0430\u0442\u044c\u0438<\/h3>\n<p>  <b><a href=\"https:\/\/blog.lawrencejones.dev\/isolation-levels\/\">What developers find surprising about Postgres transactions<\/a><\/b><\/p>\n<p>  \u0421\u0442\u0430\u0442\u044c\u044f <i>\u041b\u043e\u0443\u0440\u0435\u043d\u0441\u0430 \u0414\u0436\u043e\u043d\u0441\u0430<\/i> (Lawrence Jones, GoCardless) \u043d\u0430 \u044d\u0442\u0443 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0442\u0435\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u00ab\u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u043c \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u043c\u00bb, \u0432\u0437\u0433\u043b\u044f\u0434\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f MySQL. \u0410\u0432\u0442\u043e\u0440 \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 DBA \u0441\u043e \u0441\u0442\u0430\u0436\u0435\u043c \u0432 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043f\u0430\u0441\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0445 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u0445 \u043e\u0442 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438: <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-transaction-isolation-levels.html#isolevel_repeatable-read\">\u0432 MySQL<\/a> \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <a href=\"https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/442804\/\">\u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438<\/a> Repeatable Read, \u0430 \u0432 PostgreSQL <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/sql-set-transaction\">\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e<\/a> Read Commited. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u043d\u043e \u043f\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0435, \u043f\u043e\u0434\u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0436\u0434\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u041b\u043e\u0443\u0440\u0435\u043d\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0438 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c FOR SHARE \u043a SELECT, \u0437\u0430\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0432 <a href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/14\/explicit-locking\">\u044f\u0432\u043d\u0443\u044e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443<\/a>.<\/p>\n<p>  <b><a href=\"https:\/\/blog.sesse.net\/blog\/tech\/2021-12-05-16-41_leaving_mysql.html\">Leaving MySQL<\/a><\/b><\/p>\n<p>  <i>\u0421\u0442\u0435\u0439\u043d\u0430\u0440 \u0413\u0443\u043d\u0434\u0430\u0440\u0441\u043e\u043d<\/i> (Steinar H. Gunderson) \u043f\u043e\u043a\u0438\u043d\u0443\u043b Oracle (\u043a\u043e\u043c\u0430\u043d\u0434\u0443 MySQL) \u0438 \u0437\u0430\u044f\u0432\u0438\u043b: <i>MySQL \u0441\u043b\u0430\u0431\u0435\u043d\u044c\u043a\u0430\u044f \u0431\u0430\u0437\u0430. \u041e\u0447\u0435\u043d\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 PostgreSQL.<\/i> \u042d\u0442\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u043d\u0438\u0435 \u0431\u0443\u0440\u043d\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u043e\u0441\u044c <b><a href=\"https:\/\/news.ycombinator.com\/item?id=29455852\">\u043d\u0430 ycombinator.com<\/a><\/b>.<\/p>\n<p>  <b><a href=\"https:\/\/dev.to\/yugabyte\/the-anatomy-of-a-linux-read-call-5g9j\">The anatomy of a linux read call [\u0447.I]<\/a> \u0438 <a href=\"https:\/\/dev.to\/yugabyte\/the-anatomy-of-a-linux-read-call-part-2-1aoi\">[\u0447.II]<\/a><\/b><\/p>\n<p>  <i>\u0424\u0440\u0438\u0446 \u0425\u0443\u0433\u043b\u0430\u043d\u0434<\/i> (Frits Hoogland, Yugabyte) \u0437\u0430\u043d\u044b\u0440\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442 Postgres \u0434\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u041e\u0421. \u0412 \u044d\u0442\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0434\u0432\u0443\u0445\u0447\u0430\u0441\u0442\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435\u043c\u0430\u043b\u043e \u0443\u0442\u0438\u043b\u0438\u0442, \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0434\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432.<\/p>\n<h3>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u043b\u0438\u0437\u044b<\/h3>\n<p>  <b><a href=\"https:\/\/www.postgresql.org\/about\/news\/database-lab-engine-30-ui-persistent-clones-postgresql-14-more-2376\/\">Database Lab Engine 3.0<\/a><\/b><\/p>\n<p>  \u041d\u043e\u0432\u043e\u0435 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 3.0:<\/p>\n<ul>\n<li>\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u044f\u0434\u0440\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043e\u0434\u043d\u0438\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u043c DLE;<\/li>\n<li>\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0438\u0435\u0441\u044f (persistent) \u043a\u043b\u043e\u043d\u044b: \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0443\u0442 \u0440\u0435\u0441\u0442\u0430\u0440\u0442 DLE (\u0438\u043b\u0438 VM);<\/li>\n<li>\u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (\u00ablogical\u00bb data provisioning mode) \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043a\u043b\u043e\u043d\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u043d\u044d\u043f\u0448\u043e\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0443\u043b\u043e\u0432\/\u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 (pool\/dataset);<\/li>\n<li>\u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b\u0430\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f;<\/li>\n<li>\u0443\u043b\u0443\u0447\u0448\u0438\u043b\u0430\u0441\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 DLE \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435;<\/li>\n<li>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 PostgreSQL 14.<\/li>\n<\/ul>\n<p>  \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043e\u0442\u043d\u044b\u043d\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 <a href=\"https:\/\/postgres.ai\/docs\/database-lab\/telemetry\">\u0434\u0435\u043f\u0435\u0440\u0441\u043e\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0442\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u044f<\/a>, \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u0430\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0430 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0440\u0441\u043e\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439).<\/p>\n<p>  \u0417\u0430\u043e\u0434\u043d\u043e \u0438\u0437 \u0440\u0435\u043b\u0438\u0437\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c (\u044f \u043d\u0435 \u0437\u043d\u0430\u043b) \u0441\u043b\u043e\u0432\u0435\u0447\u043a\u043e <a href=\"https:\/\/ru.abcdef.wiki\/wiki\/Shift-left_testing\">\u0421\u0434\u0432\u0438\u0433-\u0432\u043b\u0435\u0432\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/a> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Shift-left_testing\">Shift-left_testing<\/a>). \u0412\u043e\u0442 <a href=\"https:\/\/github.com\/postgres-ai\/database-lab-engine\">\u0433\u0438\u0442\u0445\u0430\u0431 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/a>.<\/p>\n<p>  <b><a href=\"http:\/\/postgis.net\/2021\/12\/04\/postgis-3.2.0beta3\/?utm_source=dlvr.it&amp;utm_medium=twitter\">PostGIS 3.2.0beta3<\/a><\/b><\/p>\n<p>  \u00ab\u041f\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u0441 PostgreSQL 14\u00bb. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 GiST, \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0435\u0435\u0441\u044f \u0432 14-\u0439. \u0410 \u0435\u0441\u043b\u0438 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u043c\u0441\u044f <a href=\"http:\/\/libgeos.org\/posts\/2021-11-02-geos-3-10-1-released\/\">GEOS 3.10.1<\/a>, \u0442\u043e <code>ST_MakeValid<\/code> \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043c\u043d\u043e\u0433\u043e \u043d\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 <code>postgis<\/code>, <code>postgis_raster<\/code> \u0438 <code>postgis_topology<\/code> \u0438 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0432\u0432\u043e\u0434\u0430\/\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 <a href=\"https:\/\/gdal.org\/drivers\/vector\/flatgeobuf.html\">FlatGeobuf<\/a>. \u041d\u043e \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f PostgreSQL \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 9.6-14 \u0438 GEOS \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 3.6, proj \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 4.9. \u0421 \u0434\u0435\u0442\u0430\u043b\u044f\u043c\u0438 \u0440\u0435\u043b\u0438\u0437\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f <a href=\"https:\/\/git.osgeo.org\/gitea\/postgis\/postgis\/src\/tag\/3.2.0beta3\/NEWS\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043e\u043d\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432 <a href=\"https:\/\/download.osgeo.org\/postgis\/source\/postgis-3.2.0beta3.tar.gz\">\u0442\u0430\u0440\u0431\u043e\u043b \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432<\/a>.<\/p>\n<p>  <b><a href=\"https:\/\/supabase.com\/blog\/2021\/12\/03\/pg-graphql\">pg_graphql<\/a><\/b><\/p>\n<p>  \u041d\u043e\u0432\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <a href=\"https:\/\/github.com\/supabase\/pg_graphql\">pg_graphql<\/a>, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0435\u0435 \u044f\u0437\u044b\u043a \u0433\u0440\u0430\u0444\u043e\u0432\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 GraphQL, \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0442\u0434\u0430\u043d \u0432 \u043e\u043f\u0435\u043d \u0441\u043e\u0440\u0441. \u042d\u0442\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u043b \u0432 \u0431\u043b\u043e\u0433\u0435 <a href=\"https:\/\/supabase.com\/blog\/\">supabase<\/a> <i>\u041e\u043b\u0438\u0432\u0435\u0440 \u0420\u0430\u0439\u0441<\/i> (Oliver Rice), \u0441\u0430\u043c\u044b\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440 \u044d\u0442\u043e\u0433\u043e <a href=\"https:\/\/github.com\/supabase\/pg_graphql\">\u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/a>. \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0443\u043c\u0435\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c \u0441\u0445\u0435\u043c\u0443 GraphQL \u0438\u0437 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u044b PostgreSQL, \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0438\u0445 \u0432 \u043d\u043e\u0432\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0435\u0437\u043e\u043b\u0432\u0435\u0440\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f]. \u0415\u0441\u0442\u044c <a href=\"https:\/\/graphql-dotnet.github.io\/docs\/getting-started\/graphiql\/\">\u0434\u0435\u043c\u043e<\/a>.<\/p>\n<p>  <b><a href=\"https:\/\/www.postgresql.org\/about\/news\/mysql-to-postgresql-v55-has-been-released-2369\/\">MySQL-to-PostgreSQL v5.5<\/a><\/b><\/p>\n<p>  \u041d\u043e\u0432\u043e\u0433\u043e \u0432 5.5:<\/p>\n<ul>\n<li>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 SSL-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0432 PostgreSQL;<\/li>\n<li>\u0432\u0435\u0440\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Azure PostgreSQL \u0438 MySQL;<\/li>\n<li>\u0432\u0435\u0440\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f PostgreSQL 14.1;<\/li>\n<li>\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0430;<\/li>\n<li>\u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0430\u0433\u043e\u0432.<\/li>\n<\/ul>\n<p>  \u0414\u0435\u043c\u043e-\u0432\u0435\u0440\u0441\u0438\u044f <a href=\"https:\/\/www.convert-in.com\/demos\/sql2pgsd.exe\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u041e\u043d\u0430 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u043d\u0435 \u0431\u043e\u043b\u0435\u0435 50 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u043d\u0435 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043a\u043b\u044e\u0447\u0438 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>  <b><a href=\"https:\/\/postgrest.org\/en\/v9.0\/releases\/v9.0.0.html\">PostgREST 9.0.0<\/a><\/b><\/p>\n<p>  \u042d\u0442\u0430 \u043c\u0430\u0436\u043e\u0440\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430 \u0441 PostgreSQL 14, \u0432 \u043d\u0435\u0439 \u043d\u043e\u0432\u044b\u0435 \u0444\u0438\u0447\u0438 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u0427\u0435\u0439\u043d\u0434\u0436\u043b\u043e\u0433 \u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 <a href=\"https:\/\/github.com\/PostgREST\/postgrest\/releases\/tag\/v9.0.0\">\u043d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0430 GitHub<\/a>.<\/p>\n<p>  <b><a href=\"https:\/\/github.com\/df7cb\/pg_dirtyread\">pg_dirtyread<\/a><\/b><\/p>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435: \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u0430, \u0430 \u0432\u0430\u043c \u043e\u043d\u0430 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 (\u0435\u0441\u043b\u0438 \u0435\u0451 \u0435\u0449\u0451 \u043d\u0435 \u0443\u0434\u0430\u043b\u0438\u043b VACUUM). pg_dirtyread 1.0 \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e <i>\u0424\u0438\u043b\u043e\u043c \u0421\u043e\u0440\u0431\u0435\u0440\u043e\u043c<\/i> (Phil Sorber) \u0432 2012-\u043c. <i>\u041a\u0440\u0438\u0441\u0442\u043e\u0444\u0435\u0440 \u0411\u0435\u0440\u0433<\/i> (Christoph Berg) \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 1.1 \u0432 2017-\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u044b \u0438 \u0432\u0437\u044f\u043b \u043d\u0430 \u0441\u0435\u0431\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443.<\/p>\n<p>  <b><a href=\"https:\/\/tapoueh.org\/blog\/2021\/11\/an-introduction-to-the-pg_auto_failover-project\/\">An Introduction to pg_auto_failover project<\/a><\/b><\/p>\n<p>  <i>\u0414\u0438\u043c\u0438\u0442\u0440\u0438 \u0424\u043e\u043d\u0442\u0435\u0439\u043d<\/i> (Dimitry Fontain) \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f pg_auto_failover \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0443\u0437\u043b\u043e\u0432 Postgres, \u043a\u0430\u043a \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0432 \u0447\u0451\u043c \u0435\u0433\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430. \u0413\u0438\u0442\u0445\u0430\u0431 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/github.com\/citusdata\/pg_auto_failover\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <b><a href=\"https:\/\/www.postgresql.org\/about\/news\/access-to-postgresql-v23-has-been-released-2374\/\">Access-to-PostgreSQL v2.3<\/a><\/b><\/p>\n<p>  \u042d\u0442\u043e <a href=\"https:\/\/www.convert-in.com\/acc2pgs.htm\">\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438<\/a> \u0441 \u0431\u0430\u0437 Microsoft Access \u043d\u0430 PostgreSQL \u0438\u043b\u0438 Heroku. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043c\u043e\u0436\u043d\u043e \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 MS Access \u0432 \u0431\u0430\u0437\u0443 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e.<\/p>\n<h3>\u041a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438<\/h3>\n<p>  <b><a href=\"https:\/\/2021.pgconf.nyc\/\">PGCONF NYC 2021<\/a><\/b><\/p>\n<p>  \u041f\u0440\u043e\u0448\u043b\u0430 2-3 \u0434\u0435\u043a\u0430\u0431\u0440\u044f \u0432 \u041d\u044c\u044e-\u0419\u043e\u0440\u043a\u0435. <a href=\"https:\/\/postgresql.us\/events\/pgconfnyc2021\/schedule\/\">\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430<\/a> \u0431\u044b\u043b\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f. <a href=\"https:\/\/postgresql.us\/events\/pgconfnyc2021\/schedule\/speaker\/27-henrietta-dombrovskaya\/\">\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440<\/a>, <i>\u0413\u0435\u043d\u0440\u0438\u044d\u0442\u0442\u0430 \u0414\u043e\u043c\u0431\u0440\u043e\u0432\u0441\u043a\u0430\u044f<\/i> \u2014 \u0441\u043e\u0430\u0432\u0442\u043e\u0440 \u043a\u043d\u0438\u0436\u043a\u0438 <a href=\"https:\/\/dmkpress.com\/catalog\/computer\/databases\/978-5-97060-963-7\/\">\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 PostgreSQL<\/a>. <i>\u041e\u043b\u0435\u0433 \u0411\u0430\u0440\u0442\u0443\u043d\u043e\u0432<\/i> \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043e <a href=\"https:\/\/postgresql.us\/events\/pgconfnyc2021\/schedule\/session\/891-understanding-of-jsonb-performance\/\">\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 JSONB<\/a> \u2014 \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e\u0442 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u043e, \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c, \u0438 \u043a\u0430\u043a\u0438\u0435 \u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/bi\/dg\/sc\/bidgsccxllcmwn2m7amk1nqdukg.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/bi\/dg\/sc\/bidgsccxllcmwn2m7amk1nqdukg.jpeg\" data-blurred=\"true\"\/><br \/>  \u041c\u0435\u0434\u0430\u043b\u044c \u0437\u0430 \u0432\u043a\u043b\u0430\u0434 \u0432 PostgreSQL 14. <i>\u0422\u0430\u043a\u0443\u044e \u0436\u0435 \u043c\u0435\u0434\u0430\u043b\u044c \u044f \u0432\u0440\u0443\u0447\u0443 \u0432\u0441\u0435\u043c \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u043c \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u0430\u043c PG14. \u0422\u044f\u0436\u0451\u043b\u044b\u0435 \u043e\u043d\u0438, \u043a\u0441\u0442\u0430\u0442\u0438,<\/i> \u2014 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u041e\u043b\u0435\u0433 \u0411\u0430\u0440\u0442\u0443\u043d\u043e\u0432.<\/p>\n<p>  <b><a href=\"https:\/\/www.highload.ru\/foundation\/2022\">Highload++ 2022<\/a><\/b><\/p>\n<p>  \u0414\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c\u0441\u044f 17-18 \u043c\u0430\u0440\u0442\u0430 2022 \u0432 \u043c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u043e\u043c <a href=\"https:\/\/www.highload.ru\/foundation\/2022\/location\">\u041a\u0440\u043e\u043a\u0443\u0441-\u042d\u043a\u0441\u043f\u043e<\/a>.<\/p>\n<h1>\u0421 \u041d\u0410\u0421\u0422\u0423\u041f\u0410\u042e\u0429\u0418\u041c \u041d\u041e\u0412\u042b\u041c \u0413\u041e\u0414\u041e\u041c, \u041a\u041e\u041b\u041b\u0415\u0413\u0418!<\/h1>\n<\/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\/594209\/\"> https:\/\/habr.com\/ru\/company\/postgrespro\/blog\/594209\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"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\/rf\/e8\/r9\/rfe8r9gf-qdgzsa9ixqwgelmsya.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/rf\/e8\/r9\/rfe8r9gf-qdgzsa9ixqwgelmsya.jpeg\" data-blurred=\"true\"\/><\/p>\n<h3>\u0422\u043e\u043f\u044b<\/h3>\n<p>  <b><a href=\"https:\/\/retool.com\/blog\/best-postgresql-guis-in-2020\/\">Best PostgreSQL GUIs in 2021 (Updated)<\/a><\/b><\/p>\n<p>  <b>TOP-11<\/b> GUI \u043e\u0442 <a href=\"http:\/\/retool.com\">Retool<\/a>. \u041f\u043e\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e Retool (GUI \u0441 web-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c) \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a \u0442\u043e\u043f\u0430, \u043d\u043e \u043d\u0435 \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0443 \u2014 \u043e\u043d \u0441\u043a\u0440\u043e\u043c\u043d\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u0435\u0442 \u0438\u0445 \u0441\u043f\u0438\u0441\u043e\u043a.<\/p>\n<p>  \u041f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 GUI \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u043d\u043a\u0442\u044b: \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430, \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438. \u041a PgAdmin \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0433\u043b\u0430\u0432\u043a\u0443 \u043f\u043e \u043d\u0430\u0431\u043e\u0440\u0443 \u0448\u043e\u0440\u0442\u043a\u0430\u0442\u043e\u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430 \u0434\u043b\u044f Navicat \u043f\u043e \u0438\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u044d\u0441\u0442\u0435\u0442\u0438\u0447\u043d\u043e\u043c\u0443 \u0434\u0438\u0437\u0430\u0439\u043d\u0443. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f:<\/p>\n<ol>\n<li>pgAdmin;<\/li>\n<li>Navicat;<\/li>\n<li>DBeaver;<\/li>\n<li>HeidiSQL;<\/li>\n<li>Datagrip;<\/li>\n<li>OmniDB;<\/li>\n<li>Beekeeper Studio;<\/li>\n<li>TablePlus;<\/li>\n<li>QueryPie;<\/li>\n<li>SQLGate;<\/li>\n<li>Retool.<\/li>\n<\/ol>\n<p>  \u041d\u043e \u044d\u0442\u043e, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0442\u043e\u043f \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u043e\u043f\u0430, \u0437\u043e\u043b\u043e\u0442\u043e \u043d\u0430 \u043f\u044c\u0435\u0434\u0435\u0441\u0442\u0430\u043b\u0435 \u0432\u043e\u0442 \u044d\u0442\u043e\u0433\u043e:<\/p>\n<p>  <b><a href=\"https:\/\/postgresweekly.com\/issues\/436\"><i>TOP-8<\/i>: \u0427\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0447\u0438\u0442\u0430\u043b\u0438 (\u043a\u043b\u0438\u043a\u0430\u043b\u0438) \u043d\u0430 Postgres Weekly \u0432 2021-\u043c<\/a><\/b>  <\/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-327100","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327100","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=327100"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327100\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=327100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=327100"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=327100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}