ืืืืจ ืฉื ื ืฉื ืคืืชืื, ืคืืจืกื ืกื ืืฃ ืืฆืื ืืืฉ ืฉื DBMS PostgreSQL 14. ืขืืืื ืื ืืกื ืืฃ ืืืืฉ ืืฉืืืจืจื ืืืฉื ืืืฉ ืฉื ืื ืขื ืื ืืืืืจ 2026.
ืืืืืฉืื ืขืืงืจืืื:
- ื ืืกืคื ืชืืืื ืืืืฉื ืื ืชืื ื JSON ืืืืฆืขืืช ืืืืืืื ืืืืื ืืขืจื: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE details['attributes']['size'] = '"ืืื ืื ื"';
ืชืืืืจ ืืืื ืืืืฉื ืขืืืจ ื ืชืื ื ืืืคืชื/ืขืจื ืืืกืืคืงืื ืขื ืืื ืกืื hstore. ืชืืืืจ ืื ืืืฉื ืืชืืืื ืืืืฆืขืืช ืืกืืจืช ืืื ืืืจืกืืืช, ืฉืืขืชืื ืขืฉืืื ืืฉืืฉ ืขืืืจ ืกืืืื ืืืจืื. ืืืืื ืืกืื hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); SELECT h['a'] FROM mytable; ืขืืืื mytable SET h['c'] = 'ืืืฉ';
- ืืฉืคืืช ืืืืคืืกืื ืืืืืจืช ืืืืืื ืืืจืืื ืืืืคืืกืื ืืืฉืื ืฉื "ืจื-ืืืืืื", ืืืืคืฉืจืื ืืฆืืื ืจืฉืืืืช ืืกืืืจืืช ืฉื ืืืืื ืขืจืืื ืฉืืื ื ืืืคืคืื. ืื ืืกืฃ ืืื ืกืื ืืืื ืงืืื, ืืืฆืข ืกืื ืจืืืื ืืืืืื ืืฉืื, ืืืืืื, ืืกืื "int4range" ืืชืืื ื"int4multirange", ืืืกืื "daterange" ืืชืืื ื"datemultirange". ืืฉืืืืฉ ืืกืืืื ืืืฉืื ืืคืฉื ืืช ืืขืืฆืื ืฉื ืฉืืืืชืืช ืืืืฆืขืืช ืื ืืคืืืฆืืืช ืืจืฆืคืื ืืืจืืืื ืฉื ืืืืืื. ืืืจ '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
- ืืืฆืขื ืืืคืืืืืืฆืืืช ืืฉืืคืืจ ืืืืฆืืขืื ืฉื ืืขืจืืืช ืขืืืก ืืืื ืืืขืืืืช ืืกืคืจ ืจื ืฉื ืืืืืจืื. ืืืืง ืืืืืื ืื, ื ืฆืคืืช ืขืืื ืฉื ืคื ืฉื ืืื ืืืืฆืืขืื.
- ืืืขืืืืช ืฉื ืืืื B-tree ืฉืืคืจื ืืืืขืื ืืฆืืืืช ืืืื ืืงืก ืืืฉืจ ืืืืืืช ืืชืขืืื ืืช ืืขืชืื ืงืจืืืืช ื ืคืชืจื.
- ื ืืกืคื ืชืืืื ืืืฆื ืฆื ืืืงืื (ืืืืฉื ืืจืืช libpq) ืฉื ืฉืืืืจ ืืงืฉืืช ืืฆืื ืืจ, ืืืืคืฉืจ ืื ืืืืืฅ ืืฉืืขืืชืืช ืืช ืชืจืืืฉื ืืกื ืื ืชืื ืื ืืงืฉืืจืื ืืืืฆืืข ืืกืคืจ ืจื ืฉื ืคืขืืืืช ืืชืืื ืงืื ืืช (INSERT/UPDATE/DELETE) ืขื ืืื ืฉืืืืช ืืืงืฉื ืืืื ืืืื ืืืืชืื ืืชืืฆืื ืฉื ืืืงืฉื ืืงืืืืช. ืืืฆื ืื ืขืืืจ ืืืืืฅ ืืช ืืขืืืื ืขื ืืืืืจืื ืขื ืขืืืืืื ืืจืืืื ืฉื ืืฉืืื ืื ืืช.
- ืืืืืืช ืืฉืืคืจืืช ืขืืืจ ืชืฆืืจืืช ืืืืืจืืช ืืืืืืืช ืฉืจืชื PostgreSQL ืืจืืืื. ืืืืืขืช ืฉืืคืื ืืืื, ื ืืชื ืืขืช ืืฉืืื ืขืกืงืืืช ืืขืืฆืืื ืืืฆื ืกืืจืืืื ื, ืื ืฉืืืื ืืฉืคืจ ืืฉืืขืืชืืช ืืช ืืืฆืืขื ืืฉืืคืื ืฉื ืขืกืงืืืช ืืืืืืช. ืื ืืกืฃ, ืืคืขื ืื ืืืืื ืฉื ื ืชืื ืื ืฉืืชืงืืื ืืืืื ืฉืืคืื ืืืื ืขืืจ ืืืคืืืืืืฆืื.
- ืืื ืื ืื ืืืืืืจ ืืืืืืช ืืืฆืื ืืืช Foreign Data Wrapper (postgres_fdw) ืืืกืืฃ ืชืืืื ืืขืืืื ืฉืืืืชืืช ืืงืืื, ืืฉืจ ืืฉืื ืืจืืข ืจืง ืืขืช ืืืืืจ ืืฉืจืชื PostgreSQL ืืืจืื. postgres_fdw ืื ืืืกืืฃ ืชืืืื ืืืืกืคืช ื ืชืื ืื ืืืืืืืช ืืืฆืื ืืืช ืืืฆื ืืฆืืื ืืืืืืช ืืืืื ืืืืืืช ืืืืืงืืช ืขื ืืื ืฆืืื ืืื ืืื "IMPORT FOREIGN SCHEMA".
- ืืืฆืขื ืืืคืืืืืืฆืืืช ืืืืฉืื ืคืขืืืช ื-VACUUM (ืืืกืืฃ ืืฉืคื ืืืจืืืช ืืืกืื ืืืกืง). ื ืืกืฃ ืืฆื ื ืืงืื ืืืจืื ืฉืืืื ืขื ืคืขืืืืช ื ืืงืื ืื ืืืื ืืืช ืื ื ืืฆืจื ืชื ืื ืขืืงืฃ ืฉื ืืืื ืขืกืงื. ืชืงืืจื ืืืคืืชืช ืืขืช ืขืืืื ืืื ืืงืกืื ืืคืืจืื B-Tree. ืืืฆืืข ืคืขืืืช "ANALYZE", ืืืืกืคืช ืกืืืืกืืืงืืช ืขื ืคืขืืืช ืืกืืก ืื ืชืื ืื, ืืืืฅ ืืฉืืขืืชืืช.
- ื ืืกืคื ืืคืฉืจืืช ืืืืืืจ ืืช ืฉืืืช ืืืืืกื ืืืฉืืฉืช ืืืขืจืืช TOAST, ืืืืจืืืช ืขื ืืืกืื ื ืชืื ืื ืืืืืื, ืืื ืืืืงืื ืฉื ืืงืกื ืื ืืืืข ืืืืืืืจื. ืื ืืกืฃ ืืฉืืืช ืืืืืกื pglz, TOAST ืืืื ืืขืช ืืืฉืชืืฉ ืืืืืืจืืชื LZ4.
- ืืืจืืื ืืืืื ืื ืืืืจ ืคืขืืืช ื-DBMS. ื ืืกืคื ืชืฆืืืืช ืืืขืงื ืืืจ ืืืชืงืืืืช ืฉื ืคืงืืืืช COPY (pg_stat_progress_copy), ืกืืืืกืืืงืืช ืืืื ืืฉืืฆืืช ืฉืืคืื (pg_stat_replication_slots) ืืคืขืืืืช ืืงืฉืืจื ืืืืื ืืขืกืงืืืช ืฉื WAL (pg_stat_wal). ื ืืกืคื ืืคืื ืงืฆืื compute_query_id, ืืืืคืฉืจืช ืืชืช-ืืขืจืืืช ืฉืื ืืช, ืืืื pg_stat_activity ื-EXPLAIN VERBOSE, ืืขืงืื ืืืจ ืืงืฉืืช ืขื ืืื ืืงืฆืืช ืืืื ืืืืืื ืืื ืืงืฉื.
- ืืืคืืืืืืฆืืืช ื ืืกืคื ืืืชืื ื ืืฉืืืืชืืช ืืื ืืฉืคืจ ืืช ืืขืืืื ืืืงืืื ืฉื ืฉืืืืชืืช ืืืฉืคืจ ืืช ืืืืฆืืขืื ืฉื ืืืฆืืข ืกืืืืืื ื ืฉื ืคืขืืืืช ืกืจืืงืช ืจืฉืืืืช ืขืืงืืืช, ืืืฆืืข ืืงืืื ืฉื ืฉืืืืชืืช ื-PL/pgSQL ืืืืฆืขืืช ืืคืงืืื "RETURN QUERY" ืืืืฆืืข ืืงืืื ืฉื ืฉืืืืชืืช ื-" ืจืขื ื ืชืฆืืื ืืืืจืืช". ืืื ืืฉืคืจ ืืช ืืืืฆืืขืื ืฉื ืืืืืืื ืืงืื ื ืื ืืืืืจืืื (ืืฆืืจืคืืช), ืืืืืขื ืชืืืื ืืฉืืืจืช ืืืืื ื ืืกืคืช.
- ืืขืช ื ืืชื ืืืฉืชืืฉ ืืกืืืืกืืืงื ืืชืงืืืช ืืื ืืืืขื ืืืืืืื, ืื ืืชื ืืืฉืชืืฉ ืืขืช ืืืืื ืืฆืืืจ ืืื ืืืืขื ืืช ืคืื ืงืฆืืืช ืืืืื ืืช.
- ืคืจืืฆืืืจืืช ืืืืืกื ืืช ืืืืคืฉืจืืช ืื ืื ืื ืขืกืงืืืช ืืงืืืืืช ืงืื ืชืืืืืช ืืขืช ืืืืืจืช ื ืชืื ื ืืืืจื ืืืืฆืขืืช ืคืจืืืจืื ืฉื "OUT".
- ื ืืกืคื ืคืื ืงืฆืืืช date_bin ืืขืื ืขืจืื ืืืชืืช ืืื ืืืชืื ืืืจืืื ืฉืฆืืื. SELECT date_bin('15 ืืงืืช', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
- ื ืืกืคื ืืืืืื SEARCH ื- CYCLE ืืืืืืจืื ืืชืงื SQL ืืื ืืืงื ืขื ืกืืจ ืืืืืื ืืืืืจืื ืืืืืืื ืืืื ืจืงืืจืกืืืืื (CTE). WITH RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WHERE t. id = st.link ) SEARCH DEPTH FIRST BY ID SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
- ืืืื ืืฉืืจืืช psql ืฉืืคืจื ืืืฉืืื ืืืืืืืืืช ืฉื ืคืงืืืืช ืขื ืืจืืืกืืืช, ืืืืืืช ืืืฆืื ืืจืืืื ืืื ืฉื ืคืื ืงืฆืื ื ืืกืคื ืืคืงืืืช "\df" ืืืกืืืืกืืืงื ืืืืฆืืช ืืืจืืื ืืคืงืืื "\dX".
- ืืคืฉืจ ืืืงืฆืืช ืืจืฉืืืช ืงืจืืื ืืืื ืื ืืชืืื ืืืื ืืืฉืชืืฉืื. ื ืืชื ืืืืืืจ ืืจืฉืืืช ืืืืืืืช, ืชืฆืืืืช ืืกืืืืช ืืืืืืช ืืืืฆืขืืช ืืชืคืงืืืื ืืืืืืจืื ืืจืืฉ ืฉื pg_read_all_data ื-pg_write_all_data. GRANT pg_read_all_data ืืืฉืชืืฉ1;
- ืืชืงื ืืช ืืืฉืืช ืืืจืืจืช ืืืื ืืืืืืช ืกืืกืื ืืืืฆืขืืช SCRAM-SHA-256 ืืืงืื md5 (ืคืจืืืจ "password_encryption" ืืขืช ืืฆืืจืช postgresql.conf ืืืืืจ ืืขืช ื'scram-sha-256').
ืืงืืจ: OpenNet.ru