ืฉื—ืจื•ืจ PostgreSQL 12

ืฆื•ื•ืช PostgreSQL ื”ื›ืจื™ื– ืขืœ ืฉื—ืจื•ืจื• ืฉืœ PostgreSQL 12, ื”ื’ืจืกื” ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ ืฉืœ ืžืขืจื›ืช ื ื™ื”ื•ืœ ืžืกื“ื™ ื ืชื•ื ื™ื ื™ื—ืกื™ื™ื ื‘ืงื•ื“ ืคืชื•ื—.
PostgreSQL 12 ืฉื™ืคืจ ืžืฉืžืขื•ืชื™ืช ืืช ื‘ื™ืฆื•ืขื™ ื”ืฉืื™ืœืชื•ืช - ื‘ืžื™ื•ื—ื“ ื‘ืขื‘ื•ื“ื” ืขื ื›ืžื•ื™ื•ืช ื’ื“ื•ืœื•ืช ืฉืœ ื ืชื•ื ื™ื, ื•ื’ื ื™ื™ืขืœ ืืช ื”ืฉื™ืžื•ืฉ ื‘ืฉื˜ื— ื“ื™ืกืง ื‘ืื•ืคืŸ ื›ืœืœื™.

ืชื›ื•ื ื•ืช ื—ื“ืฉื•ืช ื›ื•ืœืœื•ืช:

  • ื”ื˜ืžืขืช ืฉืคืช ื”ืฉืื™ืœืชื” JSON Path (ื”ื—ืœืง ื”ื—ืฉื•ื‘ ื‘ื™ื•ืชืจ ื‘ืชืงืŸ SQL/JSON);
  • ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ื‘ื™ืฆื•ืข ื‘ื™ื˜ื•ื™ื™ ื˜ื‘ืœื” ื ืคื•ืฆื™ื (WITH);
  • ืชืžื™ื›ื” ื‘ืขืžื•ื“ื•ืช ืฉื ื•ืฆืจื•

ื”ืงื”ื™ืœื” ื’ื ืžืžืฉื™ื›ื” ืœืขื‘ื•ื“ ืขืœ ื”ื”ืจื—ื‘ื” ื•ื”ืืžื™ื ื•ืช ืฉืœ PostgreSQL, ืžืคืชื—ืช ืชืžื™ื›ื” ื‘ื‘ื™ื ืœืื•ืžื™ื–ืฆื™ื”, ื™ื›ื•ืœื•ืช ืื™ืžื•ืช ื•ืžืชืŸ ื“ืจื›ื™ื ืงืœื•ืช ื™ื•ืชืจ ืœื ื™ื”ื•ืœ ื”ืžืขืจื›ืช.

ืžื”ื“ื•ืจื” ื–ื• ื›ื•ืœืœืช ื™ื™ืฉื•ื ืฉืœ ืžืžืฉืง ืœืžื ื•ืขื™ ืื—ืกื•ืŸ ื”ื ื™ืชื ื™ื ืœื—ื™ื‘ื•ืจ, ืืฉืจ ืžืืคืฉืจ ื›ืขืช ืœืžืคืชื—ื™ื ืœื™ืฆื•ืจ ืฉื™ื˜ื•ืช ืื—ืกื•ืŸ ื ืชื•ื ื™ื ืžืฉืœื”ื.

ืฉื™ืคื•ืจื™ ื‘ื™ืฆื•ืขื™ื

PostgreSQL 12 ื›ื•ืœืœ ืฉื™ืคื•ืจื™ื ืžืฉืžืขื•ืชื™ื™ื ื‘ื‘ื™ืฆื•ืขื™ื ื•ื‘ืชื—ื–ื•ืงื” ืขื‘ื•ืจ ืžืขืจื›ื•ืช ืื™ื ื“ืงืก ื•ืžื—ื™ืฆื•ืช.

ืื™ื ื“ืงืกื™ B-tree, ืกื•ื’ ื”ืื™ื ื“ืงืก ื”ืกื˜ื ื“ืจื˜ื™ ื‘-PostgreSQL, ืขื‘ืจื• ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื‘ื’ืจืกื” 12 ืœืขื•ืžืกื™ ืขื‘ื•ื“ื” ื”ื›ื•ืœืœื™ื ืฉื™ื ื•ื™ื™ื ืชื›ื•ืคื™ื ื‘ืื™ื ื“ืงืก. ื”ืฉื™ืžื•ืฉ ื‘ืžื‘ื—ืŸ TPC-C ืขื‘ื•ืจ PostgreSQL 12 ื”ืจืื” ื”ืคื—ืชื” ืžืžื•ืฆืขืช ืฉืœ 40% ื‘ืฉื™ืžื•ืฉ ื‘ืžืงื•ื ื•ืขืœื™ื™ื” ื›ื•ืœืœืช ื‘ื‘ื™ืฆื•ืขื™ ื”ืฉืื™ืœืชื•ืช.

ืฉืื™ืœืชื•ืช ื›ื ื’ื“ ื˜ื‘ืœืื•ืช ืžื—ื•ืœืงื•ืช ื–ื›ื• ืœืฉื™ืคื•ืจื™ื ื ื™ื›ืจื™ื, ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ ื˜ื‘ืœืื•ืช ื”ืžื•ืจื›ื‘ื•ืช ืžืืœืคื™ ืžื—ื™ืฆื•ืช ื”ื“ื•ืจืฉื•ืช ืขื‘ื•ื“ื” ืขื ื—ืœืงื™ื ืžื•ื’ื‘ืœื™ื ื‘ืœื‘ื“ ืฉืœ ืžืขืจื›ื™ ื”ื ืชื•ื ื™ื. ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ื”ื•ืกืคืช ื ืชื•ื ื™ื ืœื˜ื‘ืœืื•ืช ืžื—ื•ืœืงื•ืช ื‘ืืžืฆืขื•ืช INSERT ื•-COPY ืฉื•ืคืจื•, ื›ืžื• ื’ื ื”ื™ื›ื•ืœืช ืœืฆืจืฃ ืžื—ื™ืฆื” ื—ื“ืฉื” ืžื‘ืœื™ ืœื—ืกื•ื ืฉืื™ืœืชื•ืช.

PostgreSQL 12 ื‘ื™ืฆืข ืฉื™ืคื•ืจื™ื ื ื•ืกืคื™ื ื‘ืื™ื ื“ืงืก ื”ืžืฉืคื™ืขื™ื ืขืœ ื”ื‘ื™ืฆื•ืขื™ื ื”ื›ื•ืœืœื™ื, ื›ื•ืœืœ:

  • ืชืงื•ืจื” ืžื•ืคื—ืชืช ื‘ืขืช ื™ืฆื™ืจืช WAL ืขื‘ื•ืจ ืกื•ื’ื™ ืื™ื ื“ืงืก GiST, GIN ื•-SP-GiST;
  • ื”ื™ื›ื•ืœืช ืœื™ืฆื•ืจ ืžื” ืฉื ืงืจื ืื™ื ื“ืงืกื™ื ื›ื™ืกื•ื™ื™ื (ืกืขื™ืฃ INCLUDE) ืขืœ ืื™ื ื“ืงืกื™ GiST;
  • ื”ื™ื›ื•ืœืช ืœื‘ืฆืข ืฉืื™ืœืชื•ืช "ื”ืฉื›ืŸ ื”ืงืจื•ื‘" (ื—ื™ืคื•ืฉ k-NN) ื‘ืืžืฆืขื•ืช ืื•ืคืจื˜ื•ืจ ื”ืžืจื—ืง (<->) ื•ืฉื™ืžื•ืฉ ื‘ืื™ื ื“ืงืกื™ื SP-GiST;
  • ืชืžื™ื›ื” ื‘ืื™ืกื•ืฃ ื ืชื•ื ื™ื ืกื˜ื˜ื™ืกื˜ื™ื™ื ืฉืœ ื”ืขืจืš ื”ื ืคื•ืฅ ื‘ื™ื•ืชืจ (MCV) ื‘ืืžืฆืขื•ืช CREATE STATISTICS, ืฉืขื•ื–ืจ ืœื”ืฉื™ื’ ืชื•ื›ื ื™ื•ืช ืฉืื™ืœืชื•ืช ื˜ื•ื‘ื•ืช ื™ื•ืชืจ ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืขืžื•ื“ื•ืช ืฉื”ืขืจื›ื™ื ืฉืœื”ืŸ ืžื—ื•ืœืงื™ื ื‘ืฆื•ืจื” ืœื ืื—ื™ื“ื”.

ื”ื™ื“ื•ืจ JIT ื‘ืืžืฆืขื•ืช LLVM, ืฉื”ื•ืฆื’ ื‘-PostgreSQL 11, ืžื•ืคืขืœ ื›ืขืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ. ืงื•ืžืคื™ืœืฆื™ื” ืฉืœ JIT ืžืฉืคืจืช ืืช ื”ื‘ื™ืฆื•ืขื™ื ื›ืืฉืจ ืขื•ื‘ื“ื™ื ืขื ื‘ื™ื˜ื•ื™ื™ื ื‘ืกืขื™ืคื™ื ืฉืœ WHERE, ืจืฉื™ืžื•ืช ื™ืขื“ื™ื, ืื’ืจื’ื˜ื™ื ื•ื›ืžื” ืคืขื•ืœื•ืช ืคื ื™ืžื™ื•ืช. ื–ื” ื–ืžื™ืŸ ืื ื”ื™ื“ื•ืจ ืฉืœ PostgreSQL ืขื LLVM ืื• ืฉืืชื” ืžืฉืชืžืฉ ื‘ื—ื‘ื™ืœืช PostgreSQL ืฉื ื‘ื ืชื” ื›ืืฉืจ LLVM ืžื•ืคืขืœ.

ืฉื™ืคื•ืจื™ื ืœื™ื›ื•ืœื•ืช ืฉืคืช SQL ื•ืชืื™ืžื•ืช ืกื˜ื ื“ืจื˜ื™ืช

PostgreSQL 12 ื”ืฆื™ื’ ืืช ื”ื™ื›ื•ืœืช ืœื‘ืฆืข ืฉืื™ืœืชื•ืช ื‘ืžืกืžื›ื™ JSON ื‘ืืžืฆืขื•ืช ื‘ื™ื˜ื•ื™ื™ ื ืชื™ื‘ JSON ื”ืžื•ื’ื“ืจื™ื ื‘ืชืงืŸ SQL/JSON. ืฉืื™ืœืชื•ืช ื›ืืœื” ื™ื›ื•ืœื•ืช ืœืžื ืฃ ืžื ื’ื ื•ื ื™ ืื™ื ื“ืงืก ืงื™ื™ืžื™ื ืขื‘ื•ืจ ืžืกืžื›ื™ื ื”ืžืื•ื—ืกื ื™ื ื‘ืคื•ืจืžื˜ JSONB ื›ื“ื™ ืœืื—ื–ืจ ื ืชื•ื ื™ื ื‘ื™ืขื™ืœื•ืช.

ื‘ื™ื˜ื•ื™ื™ ื˜ื‘ืœื” ื ืคื•ืฆื™ื, ื”ื™ื“ื•ืขื™ื ื’ื ื›-WITH queries, ื ื™ืชื ื™ื ื›ืขืช ืœื‘ื™ืฆื•ืข ืื•ื˜ื•ืžื˜ื™ืช ื‘ืืžืฆืขื•ืช ื”ื—ืœืคื” ื‘-PostgreSQL 12, ืืฉืจ ื‘ืชื•ืจื• ื™ื›ื•ืœื” ืœืขื–ื•ืจ ืœืฉืคืจ ืืช ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ืฉืื™ืœืชื•ืช ืงื™ื™ืžื•ืช ืจื‘ื•ืช. ื‘ื’ืจืกื” ื”ื—ื“ืฉื”, ื—ืœืง ื”ื—ืœืคื” ืฉืœ ืฉืื™ืœืชืช WITH ื™ื›ื•ืœ ืœื”ืชื‘ืฆืข ืจืง ืื ื”ื•ื ืื™ื ื• ืจืงื•ืจืกื™ื‘ื™, ืื™ืŸ ืœื• ืชื•ืคืขื•ืช ืœื•ื•ืื™, ื•ื”ื•ื ืžื•ืคื ื” ืจืง ืคืขื ืื—ืช ื‘ื—ืœืง ืขื•ืงื‘ ืฉืœ ื”ืฉืื™ืœืชื”.

PostgreSQL 12 ืžืฆื™ื’ ืชืžื™ื›ื” ื‘"ืขืžื•ื“ื•ืช ืฉื ื•ืฆืจื•". ื”ืžืชื•ืืจ ื‘ืชืงืŸ SQL, ืกื•ื’ ืขืžื•ื“ื” ื–ื” ืžื—ืฉื‘ ืขืจืš ื”ืžื‘ื•ืกืก ืขืœ ื”ืชื•ื›ืŸ ืฉืœ ืขืžื•ื“ื•ืช ืื—ืจื•ืช ื‘ืื•ืชื” ื˜ื‘ืœื”. ื‘ื’ืจืกื” ื–ื•, PostgreSQL ืชื•ืžืš ื‘"ืขืžื•ื“ื•ืช ืฉื ื•ืฆืจื• ืžืื•ื—ืกื ื•ืช", ื›ืืฉืจ ื”ืขืจืš ื”ืžื—ื•ืฉื‘ ืžืื•ื—ืกืŸ ื‘ื“ื™ืกืง.

ื‘ึผึดื ืื•ึผื

PostgreSQL 12 ืžืจื—ื™ื‘ ืืช ื”ืชืžื™ื›ื” ื‘ืื™ืกื•ืฃ ื˜ื™ืคื•ืœ ื ืžืจืฅ ืขืœ ื™ื“ื™ ื›ืš ืฉื”ื•ื ืžืืคืฉืจ ืœืžืฉืชืžืฉื™ื ืœื”ื’ื“ื™ืจ "ืื™ืกื•ืฃ ืœื ื“ื˜ืจืžื™ื ื™ืกื˜ื™" ืฉื™ื›ื•ืœ, ืœืžืฉืœ, ืœืืคืฉืจ ื”ืฉื•ื•ืื•ืช ื—ืกืจื•ืช ืจื’ื™ืฉื•ืช ืœืื•ืชื™ื•ืช ืจื™ืฉื™ื•ืช ืื• ืœื ืจื’ื™ืฉื•ืช ืœื”ื“ื’ืฉื”.

ืื™ืžื•ืช

PostgreSQL ืžืจื—ื™ื‘ื” ืืช ื”ืชืžื™ื›ื” ื‘ืฉื™ื˜ื•ืช ืื™ืžื•ืช ื—ื–ืงื•ืช ืขื ืžืกืคืจ ืฉื™ืคื•ืจื™ื ื”ืžืกืคืงื™ื ืื‘ื˜ื—ื” ื•ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื ื•ืกืคื™ื. ืžื”ื“ื•ืจื” ื–ื• ืžืฆื™ื’ื” ื”ืฆืคื ื” ื‘ืฆื“ ื”ืœืงื•ื— ื•ื‘ืฆื“ ื”ืฉืจืช ืขื‘ื•ืจ ืื™ืžื•ืช ืขืœ ืคื ื™ ืžืžืฉืงื™ GSSAPI, ื›ืžื• ื’ื ืืช ื”ื™ื›ื•ืœืช ืฉืœ PostgreSQL ืœื’ืœื•ืช ืฉืจืชื™ LDAP ื›ืืฉืจ PostgreSQL ืžื•ืจื›ื‘ ืขื OpenLDAP.

ื‘ื ื•ืกืฃ, PostgreSQL 12 ืชื•ืžืš ื›ืขืช ื‘ืืคืฉืจื•ืช ืื™ืžื•ืช ืจื‘-ื’ื•ืจืžื™. ืฉืจืช PostgreSQL ื™ื›ื•ืœ ื›ืขืช ืœื“ืจื•ืฉ ืžื”ืœืงื•ื— ืœืกืคืง ืื™ืฉื•ืจ SSL ืชืงืฃ ืขื ืฉื ื”ืžืฉืชืžืฉ ื”ืžืชืื™ื ื‘ืืžืฆืขื•ืช clientcert=verify-full, ื•ืœืฉืœื‘ ื–ืืช ืขื ื“ืจื™ืฉืช ืฉื™ื˜ืช ืื™ืžื•ืช ื ืคืจื“ืช (ืœืžืฉืœ scram-sha-256).

ืžื™ื ื”ืœ

PostgreSQL 12 ื”ืฆื™ื’ ืืช ื”ื™ื›ื•ืœืช ืœื‘ืฆืข ื‘ื ื™ื™ื” ืžื—ื“ืฉ ืฉืœ ืื™ื ื“ืงืก ืœืœื ื—ืกื™ืžื” ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” REINDEX CONCURRENTLY. ื–ื” ืžืืคืฉืจ ืœืžืฉืชืžืฉื™ื ืœื”ื™ืžื ืข ืžื”ืฉื‘ืชืช DBMS ื‘ืžื”ืœืš ื‘ื ื™ื™ื” ืžืžื•ืฉื›ืช ืฉืœ ืื™ื ื“ืงืก.

ื‘ื ื•ืกืฃ, ื‘-PostgreSQL 12, ืืชื” ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืื• ืœื”ืฉื‘ื™ืช ืกื›ื•ืžื™ ื‘ื“ื™ืงืช ืขืžื•ื“ื™ื ื‘ืืฉื›ื•ืœ ื›ื™ื‘ื•ื™ ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” pg_checksums. ื‘ืขื‘ืจ, ื ื™ืชืŸ ื”ื™ื” ืœื”ืคืขื™ืœ ืกื™ื›ื•ืžื™ ืขืžื•ื“ื™ื, ืชื›ื•ื ื” ื”ืžืกื™ื™ืขืช ืœืืžืช ืืช ืชืงื™ื ื•ืช ื”ื ืชื•ื ื™ื ื”ืžืื•ื—ืกื ื™ื ื‘ื“ื™ืกืง, ืจืง ื›ืืฉืจ ื”ืืฉื›ื•ืœ PostgreSQL ืื•ืชื—ืœ ื‘ืืžืฆืขื•ืช initdb.

ืžืงื•ืจ: linux.org.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”