PostgreSQL á¡ááœá²á·ááẠopen source áááºá
ááºáá±áá¬áá±á·á
áºá
á®áá¶ááá·áºááœá²ááŸá¯á
áá
áºááá±á¬ááºáá¯á¶ážááœááºáá¬ážááŸááºáž PostgreSQL 12 ááá¯áá¯ááºááŒááºááŒá±áá¬áá²á·áááºá
PostgreSQL 12 ááẠá
á¯á¶á
ááºážáá±ážááŒááºážááŸá¯ á
áœááºážáá±á¬ááºáááºááᯠáááá¬á
áœá¬ ááŒáŸáá·áºáááºáá±ážááẠ- á¡áá°ážáááŒáá·áº áá±áá¬ááá¬ááá»á¬ážá
áœá¬ááŒáá·áº áá¯ááºáá±á¬ááºááá·áºá¡áá«ááœááºá áá±áá¯áá»á¡á¬ážááŒáá·áº disk space á¡áá¯á¶ážááŒá¯ááŸá¯ááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá
áºá¡á±á¬áẠáá¯ááºáá±á¬ááºáá±ážáá«áááºá
áááºáá±á¬ááºááŸá¯á¡áá áºáá»á¬áž áá«áááºáááº-
- JSON Path query language ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºáž (SQL/JSON á á¶ááŸá¯ááºážá á¡áá±ážááŒá®ážáá¯á¶ážá¡á áááºá¡ááá¯ááºáž)á
- áá¯á¶ááá¬ážá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºáž (WITH);
- áá¯ááºáá±ážáá¬ážáá±á¬ áá±á¬áºáá¶áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯
á¡ááá¯ááºá¡áááºážááẠPostgreSQL á áá»á²á·ááœááºááá¯ááºááŸá¯ááŸáá·áº áá¯á¶ááŒááºá áááºáá»áááŸá¯á¡áá±á«áº áááºáááºáá¯ááºáá±á¬ááºáá±ááŒá®ážá ááá¯ááºáá¶ááá¬ááá¯á· ááŒá±á¬ááºážáá²ááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯á á á áºááŸááºááŒá±á¬ááºážáááºáá±ááŒááá¯ááºááŸá¯ááŸáá·áº á áá áºá¡á¬áž á á®áá¶ááá·áºááœá²ááẠááœááºáá°áá±á¬áááºážáááºážáá»á¬áž áá¶á·ááá¯ážáá±ážááŒááºážááá¯á·ááá¯áááºáž áááºáááºáá¯ááºáá±á¬ááºáá±áá«áááºá
á€áá¯ááºáá±ááŸá¯ááœáẠáá±á¬á·ááºáá²á¡ááºáá»ááºáá®áá¬áá»á¬ážááẠáááºážááá¯á·áááá¯ááºááá¯ááºáá±áá¬ááááºážáááºážááŸá¯áááºážáááºážáá»á¬ážááᯠáááºáá®ážááœáá·áºááŒá¯ááá·áº pluggable storage engines á¡ááœáẠá¡ááºáá¬áá±á·á áºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá«áááºáá«áááºá
á áœááºážáá±á¬ááºáááºááá¯ážáááºááŸá¯áá»á¬áž
PostgreSQL 12 ááœáẠá¡ááœáŸááºážááŒá¯áá¯ááºááŒááºážááŸáá·áº ááá¯ááºážááŒá¬ážááŒááºážá áá áºáá»á¬ážá¡ááœáẠáááá¬áááºááŸá¬ážáá±á¬ á áœááºážáá±á¬ááºáááºááŸáá·áº ááŒá¯ááŒááºááááºážááááºážááŸá¯ ááá¯ážáááºááŸá¯áá»á¬áž áá«áááºáááºá
PostgreSQL ááŸá á á¶ááœáŸááºážááááºážá¡áá»áá¯ážá¡á á¬ážááŒá áºááá·áº B-tree á¡ááœáŸááºážááááºážáá»á¬ážááᯠáááŒá¬áá á¡ááœáŸááºážááœááºážáá¶ááŸá¯áá»á¬ážáá«áááºááá·áº á¡áá¯ááºáá»á¬ážáá»á¬ážá¡ááœáẠáá¬ážááŸááºáž 12 ááœáẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºáá¬ážáááºá PostgreSQL 12 á¡ááœáẠTPC-C á á¶ááŸá¯ááºážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠá¡á¬áá¬áá¡áá¯á¶ážááŒá¯ááŸá¯ áá»ááºážáá»áŸ 40% áá»á±á¬á·áá»ááŸá¯ááŸáá·áº query á áœááºážáá±á¬ááºááẠá¡áá¯á¶ážá á¯á¶ ááá¯ážáá¬ááŸá¯ááᯠááá¯ááºááŒáá²á·áááºá
ááá¯ááºážááŒá¬ážáá¬ážáá±á¬ ááá¬ážáá»á¬ážááᯠááá·áºáá»ááºááá·áº á á¯á¶á ááºážáá±ážááŒááºážááŸá¯áá»á¬ážááẠá¡áá°ážáááŒáá·áº áá±áá¬á¡áááºážá¡áá»ááºážá ááá·áºáááºáá¬ážáá±á¬ á¡á áááºá¡ááá¯ááºážáá»á¬ážááŸáá·áºáᬠá¡áá¯ááºáá¯ááºááẠááá¯á¡ááºáá±á¬ áá±á¬ááºáá±á«ááºážáá»á¬ážá áœá¬áá±á¬ á¡áááºážááá·áºáá»á¬ážáá«ááŸááá±á¬ ááá¬ážáá»á¬ážá¡ááœáẠáááá¬áááºááŸá¬ážáá±á¬ ááá¯ážáááºááŸá¯áá»á¬ážááᯠáááŸááá²á·áá«áááºá INSERT ááŸáá·áº áá±á¬áºáá®ááᯠá¡áá¯á¶ážááŒá¯á á¡ááá¯ááºážááá¯ááºážááœá²áá¬ážáá±á¬ ááá¬ážáá»á¬ážááá¯á· áá±áá¬ááá·áºááŒááºážá á áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºáá¬ážááŒá®ážá áá±ážááŒááºážááŸá¯áá»á¬ážááᯠááááºááá¯á·ááŒááºážáááŸááá² á¡ááá¯ááºážá¡áá áºáá áºáá¯ááᯠáá°ážááœá²áá¯ááºáá±á¬ááºááá¯ááºááŸá¯á áœááºážáááºááᯠááŒáŸáá·áºáááºáá¬ážáá«áááºá
PostgreSQL 12 ááẠá¡áá¯á¶ážá á¯á¶á áœááºážáá±á¬ááºááŸá¯á¡áá±á«áº áááºáá±á¬ááºááŸá¯ááŸááá±á¬ á¡ááœáŸááºážáá±ážááŒááºážá¡ááœáẠáá±á¬ááºáááºááá¯ážáááºááŸá¯áá»á¬áž ááŒá¯áá¯ááºáá¬ážáááºá
- GiSTá GIN ááŸáá·áº SP-GiST á¡ááœáŸááºážááááºážá¡áá»áá¯ážá¡á á¬ážáá»á¬ážá¡ááœáẠWAL ááá¯áá¯ááºáá±ážáá±á¬á¡áá«ááœáẠáá¯ááºáá»á ááááºáá»á±á¬á·ááœá¬ážáááº
- GiST á¡ááœáŸááºážááááºážáá»á¬ážááœáẠá¡áá»á¯á¶ážáááºáá±á¬ á¡ááœáŸááºážáá»á¬áž (INCLUDE clause) áá¯áá±á«áºáá±á¬ áááºáá®ážááá¯ááºá áœááºážá
- á¡ááœá¬á¡áá±ážá¡á±á¬áºááá±áᬠ(<->) ááŸáá·áº SP-GiST á¡ááœáŸááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á âá¡áá®ážáá¯á¶ážá¡áááºáá®ážáá»ááºážâ áá±ážááŒááºážáá»áẠ(k-NN ááŸá¬ááœá±ááŸá¯) áá¯ááºáá±á¬ááºááá¯ááºá áœááºážá
- CREATE STATISTICS ááᯠá¡áá¯á¶ážááŒá¯á á¡áá¯á¶ážá¡áá»á¬ážáá¯á¶ážáááºááá¯áž (MCV) á á¬áááºážááá¬ážáá»á¬ážááᯠá á¯áá±á¬ááºážááŒááºážá¡ááœáẠáá¶á·ááá¯ážáá°áá®ááŸá¯ááŒáá·áº áááºááá¯ážáá»á¬áž ááá®ááá¬ááŒá áºáá±áá±á¬ áá±á¬áºáá¶áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá·áºá¡áá« ááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ á á¯á¶á ááºážáá±ážááŒááºážááŸá¯ á¡á á®á¡á ááºáá»á¬ážááᯠááá°ááá¯ááºáá«áááºá
PostgreSQL 11 ááœáẠááááºáááºáá¬ážáá±á¬ LLVM ááᯠá¡áá¯á¶ážááŒá¯á JIT á á¯á ááºážááŒááºážááᯠááá¯á¡áá« áá°áááºážá¡ááá¯ááºáž ááœáá·áºáá¬ážáááºá JIT compilation ááẠWHERE á¡ááá¯ááºáá»á¬ážá áá áºááŸááºá á¬áááºážáá»á¬ážá á á¯á ááºážááŸá¯áá»á¬ážááŸáá·áº á¡áá»áá¯á·áá±á¬ á¡ááœááºážááá¯ááºážáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááœáẠá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááŒáá·áº áá¯ááºáá±á¬ááºáá±á¬á¡áá« á áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºáá±ážáá«áááºá áááºááẠPostgreSQL ááᯠLLVM ááŒáá·áº ááŒá¯á á¯áá¬ážááŒááºáž ááá¯á·ááá¯áẠLLVM ááœáá·áºáá¬ážááŒááºážááŒáá·áº áááºáá±á¬ááºáá¬ážááá·áº PostgreSQL áááºáá±á·áá»áºááᯠá¡áá¯á¶ážááŒá¯áá±áá«á áááºážááᯠáááŸáááá¯ááºáá«áááºá
SQL áá¬áá¬á áá¬ážá áœááºážáááºááŸáá·áº á á¶ááá¯ááºáá®ááŸá¯ááŸáá á±ááẠááŒáŸáá·áºáááºááŸá¯áá»á¬áž
PostgreSQL 12 ááẠSQL/JSON á á¶ááŸá¯ááºážááœáẠáááºááŸááºáá¬ážáá±á¬ JSON áááºážááŒá±á¬ááºážá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á JSON á á¬ááœááºá á¬áááºážáá»á¬ážááᯠáá±ážááŒááºážááá¯ááºááŸá¯ááᯠááááºáááºáá±ážáá²á·áááºá ááá¯ááá¯á·áá±á¬áá±ážááœááºážáá»á¬ážááẠáá±áá¬ááᯠáááá±á¬ááºá áœá¬ááŒááºáááºááá°áááºá¡ááœáẠJSONB áá±á¬áºáááºááœáẠááááºážáááºážáá¬ážááá·áº á á¬ááœááºá á¬áááºážáá»á¬ážá¡ááœáẠááŸáááŒá®ážáá¬áž á¡ááœáŸááºážááááºážááá¹ááá¬ážáá»á¬ážááᯠá¡áá¯á¶ážáá»ááá¯ááºáááºá
WITH queries áá¯áááºážááááŒááá·áº áá¬áá¬ááºááá¬ážá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááᯠááᯠPostgreSQL 12 ááœáẠá¡á á¬ážááá¯ážá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááá¯ááºááŒá®ááŒá áºááŒá®áž áááºážááŸá¬ ááŸáááŒá®ážáá¬ážáá±ážááœááºážáá»á¬ážá áœá¬áá áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºáá±ážááá¯ááºáá«áááºá áá¬ážááŸááºážá¡áá áºááœááºá WITH query áá áºáá¯á á¡á á¬ážááá¯ážá¡ááá¯ááºážááᯠáááºážááẠrecursive ááá¯ááºáá«áá áá±ážááœááºááá¯ážáá»áá¯ážáááŸáá ááŸáá·áº query á áá±á¬ááºáááºááœá²á¡ááá¯ááºážááœáẠáá áºááŒáááºáᬠáááºááœáŸááºážáá«áááºá
PostgreSQL 12 ááẠ"áá¯ááºáá±ážáá¬ážáá±á¬ áá±á¬áºáá¶áá»á¬áž" á¡ááœáẠá¡áá±á¬ááºá¡áá¶á·ááᯠááááºáááºáá±ážáááºá SQL á á¶ááŸá¯ááºážááœááºáá±á¬áºááŒáá¬ážáá±á¬ á€áá±á¬áºáá¶á¡áá»áá¯ážá¡á á¬ážááẠáá°áá®áá±á¬ááá¬ážááŸá á¡ááŒá¬ážáá±á¬áºáá¶áá»á¬ážá á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á áááºááá¯ážáá áºáá¯ááᯠááœááºáá»ááºáááºá á€áá¬ážááŸááºážááœááºá PostgreSQL ááẠááœááºáá»ááºáá¬ážáá±á¬áááºááá¯ážááᯠdisk ááœááºááááºážáááºážáá¬ážááá·áº "ááááºážáááºážáá¬ážáá±á¬ áá±á¬áºáá¶áá»á¬áž" ááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
ááá¯ááºáá¶ááá¬
PostgreSQL 12 ááẠá¡áá¯á¶ážááŒá¯áá°áá»á¬ážá¡á¬áž ááŒá áºáááºááŸáẠááá¯á·ááá¯áẠáá±áá°áá±ááááºáž-á¡á¬áá¯á¶ááá¶ááá¯ááºáá±á¬ ááŸáá¯ááºážááŸááºááŸá¯áá»á¬ážááᯠááœáá·áºááŒá¯áá±ážááá¯ááºááá·áº "áááºááŸááºááá¯ááºáá±á¬ áá±á«ááºážá ááºááŸá¯áá»á¬áž" ááᯠáááºááŸááºááœáá·áºááŒá¯ááŒááºážááŒáá·áº PostgreSQL XNUMX ááẠá¡áá¯á¶ážááŒá¯áá°áá»á¬ážá¡á¬áž ICU áá±á«ááºážá ááºááŸá¯áá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒáááŒááºáž
PostgreSQL ááẠáá±á¬ááºáááºáá¯á¶ááŒá¯á¶áá±ážááŸáá·áº áá¯ááºáá±á¬ááºááá¯ááºá áœááºážáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážááá·áº á¡á¬ážáá±á¬ááºážááá·áº á¡áá±á¬ááºá¡áá¬ážá áá á áºááŒááºážáááºážáááºážáá»á¬ážá¡ááœáẠáááºážááá¶á·ááá¯ážááŸá¯ááᯠááá¯ážáá»á²á·áá«áááºá á€áá¯ááºáá±ááŸá¯ááœáẠGSSAPI á¡ááºáá¬áá±á·á áºáá»á¬ážáá±á«áºááœáẠá á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒáááºá¡ááœáẠáááá¯ááºážááá·áºáááºááŸáá·áº áá¬áá¬áááºááŒááºážáá¯ááºááŸááºááŒááºážááá¯á·ááᯠááááºáááºáá±ážááŒá®áž PostgreSQL ááẠPostgreSQL ááŸáá·áº OpenLDAP ááŒáá·áº á á¯á ááºážáá±á¬á¡áá«ááœáẠLDAP áá¬áá¬áá»á¬ážááᯠááŸá¬ááœá±ááœá±á·ááŸáááá¯ááºááá·áºá áœááºážáááºááᯠááááºáááºáá±ážáá«áááºá
ááá¯á·á¡ááŒááºá ááᯠPostgreSQL 12 ááẠmulti-factor authentication option ááᯠáá¶á·ááá¯ážáá±ážáá«áááºá ááá¯á¡áá« PostgreSQL áá¬áá¬ááẠclientcert=verify-full ááá¯á¡áá¯á¶ážááŒá¯á áááºááá¯ááºáá¬á¡áá¯á¶ážááŒá¯áá°á¡áááºááŒáá·áº ááá¬ážááẠSSL áááºááŸááºááᯠáá¶á·ááá¯ážáá±ážááẠáááá¯ááºážááá·áºá¡á¬áž áá±á¬ááºážááá¯ááá¯ááºááŒá®áž áááºážááᯠáá®ážááŒá¬ážá¡áá±á¬ááºá¡áá¬ážá áá á áºááŒááºážáááºážáááºážááá¯á¡ááºáá»áẠ(á¥ááᬠscram-sha-256) ááŒáá·áº áá±á«ááºážá ááºááá¯ááºáááºá
á¡á¯ááºáá»á¯ááºáá±áž
PostgreSQL 12 ááẠREINDEX CONCURRENTLY á¡áááá·áºááᯠá¡áá¯á¶ážááŒá¯á ááááºááá¯á·ááŒááºážááá¯ááºáá±á¬ á¡ááœáŸááºážááááºážáá»á¬ážááᯠááŒááºáááºáááºáá±á¬ááºááá¯ááºá áœááºážááᯠááááºáááºáá±ážáá²á·áááºá áááºážááẠá¡áá¯á¶ážááŒá¯áá°áá»á¬ážá¡á¬áž ááŸááºáá»á¬ážáá±á¬á¡ááœáŸááºážááᯠááŒááºáááºáááºáá±á¬ááºá ááºá¡ááœááºáž DBMS á ááºáááºáá»áááºááᯠááŸá±á¬ááºááŸá¬ážááá¯ááºá á±áá«áááºá
ááá¯á·á¡ááŒááºá PostgreSQL 12 ááœááºá áááºááẠpg_checksums ááœáŸááºááŒá¬ážáá»ááºááᯠá¡áá¯á¶ážááŒá¯á ááááºáá¬ážáá±á¬ á¡á á¯á¡áá±ážáá áºáá¯ááœáẠá á¬áá»ááºááŸá¬ checksums ááᯠááœáá·áº ááá¯á·ááá¯áẠááááºááá¯ááºáááºá ááááºáá áá áºááºáá±á«áºááœáẠááááºážáááºážáá¬ážááá·áº áá±áá¬áá»á¬ážá ááŸááºáááºááŸá¯ááᯠá¡áááºááŒá¯ááẠáá°áá®áá±ážááá·áº á á¬áá»ááºááŸá¬ checksums áá¯ááºáá±á¬ááºáá»ááºááẠPostgreSQL á¡á á¯á¡áá±ážááᯠinitdb ááᯠá¡áá¯á¶ážááŒá¯á á áááºáá±á¬á¡áá«ááŸáᬠááœáá·áºááá¯ááºáááºááŒá áºáááºá
source: linux.org.ru