Π’ΠΈΠΌΠΎΡ Π½Π° PostgreSQL Π³ΠΎ ΠΎΠ±ΡΠ°Π²ΠΈ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° PostgreSQL 12, Π½Π°ΡΠ½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄.
PostgreSQL 12 Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° Π±Π°ΡΠ°ΡΠ΅ΡΠΎ - ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΊΠΎΠ³Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ ΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡΠΈΠ½ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, Π° ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° Π³ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΡΠΎΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΠΎΡ Π²ΠΎΠΎΠΏΡΡΠΎ.
ΠΠΎΠ²ΠΈΡΠ΅ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π°Π°Ρ:
- ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Π·Π° Π±Π°ΡΠ°ΡΠ΅ JSON Path (Π½Π°ΡΠ²Π°ΠΆΠ½ΠΈΠΎΡ Π΄Π΅Π» ΠΎΠ΄ ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΎΡ SQL/JSON);
- ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΈ ΡΠ°Π±Π΅Π»ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ (WITH);
- ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ
ΠΠ°Π΅Π΄Π½ΠΈΡΠ°ΡΠ°, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΡΠ²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΠΏΡΠΎΡΠΈΡΡΠ²Π°ΡΠ΅ ΠΈ Π΄ΠΎΠ²Π΅ΡΠ»ΠΈΠ²ΠΎΡΡ Π½Π° PostgreSQL, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡΠ°, ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΡΠΈ ΠΏΠΎΠ»Π΅ΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ Π·Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ.
ΠΠ²Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ Π·Π° ΠΏΡΠΈΠΊΠ»ΡΡΠ»ΠΈΠ²ΠΈ ΠΌΠΎΡΠΎΡΠΈ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅, ΡΡΠΎ ΡΠ΅Π³Π° ΠΈΠΌ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°Π°Ρ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
ΠΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅
PostgreSQL 12 Π²ΠΊΠ»ΡΡΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ° Π²ΠΎ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ ΠΈ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ΡΠΎ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°ΡΠ΅ ΠΈ ΠΏΠ°ΡΡΠΈΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠ΅.
ΠΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ Π½Π° Π-Π΄ΡΠ²ΠΎΡΠΎ, ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΠΎΡ ΡΠΈΠΏ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°ΡΠ΅ Π²ΠΎ 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, ΡΡΠΎ ΠΏΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°Ρ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈ Π±Π°ΡΠ°ΡΠ°. ΠΠΎ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ°, Π·Π°ΠΌΠ΅Π½ΡΠΊΠΈΠΎΡ Π΄Π΅Π» ΠΎΠ΄ Π±Π°ΡΠ°ΡΠ΅ΡΠΎ Π‘Π ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠΈ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ Π½Π΅ Π΅ ΡΠ΅ΠΊΡΡΠ·ΠΈΠ²Π΅Π½, Π½Π΅ΠΌΠ° Π½Π΅ΡΠ°ΠΊΠ°Π½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ ΠΈ Π΅ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°Π½ ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π°Ρ Π²ΠΎ ΡΠ»Π΅Π΄Π΅Π½ Π΄Π΅Π» ΠΎΠ΄ Π±Π°ΡΠ°ΡΠ΅ΡΠΎ.
PostgreSQL 12 Π²ΠΎΠ²Π΅Π΄ΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° βΠ³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈβ. ΠΠΏΠΈΡΠ°Π½ Π²ΠΎ ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΎΡ SQL, ΠΎΠ²ΠΎΡ ΡΠΈΠΏ Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π° ΠΏΡΠ΅ΡΠΌΠ΅ΡΡΠ²Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π²ΠΎ ΠΈΡΡΠ°ΡΠ° ΡΠ°Π±Π΅Π»Π°. ΠΠΎ ΠΎΠ²Π°Π° Π²Π΅ΡΠ·ΠΈΡΠ°, PostgreSQL ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° βΠ·Π°ΡΡΠ²Π°Π½ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈβ, ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΠΏΡΠ΅ΡΠΌΠ΅ΡΠ°Π½Π°ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΡΠ΅ Π·Π°ΡΡΠ²ΡΠ²Π° Π½Π° Π΄ΠΈΡΠΊΠΎΡ.
ΠΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡΠ°
PostgreSQL 12 ΡΠ° ΠΏΡΠΎΡΠΈΡΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π·Π° ICU ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ°ΡΠ° Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΡΠΈ ΠΈΠΌ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π°Ρ βΠ½Π΅Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΡΠΈΡΠΊΠΈ ΡΠΏΠΎΡΠ΅Π΄Π±ΠΈβ ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ°Ρ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° Π΄ΠΎΠ·Π²ΠΎΠ»Π°Ρ ΡΠΏΠΎΡΠ΅Π΄Π±ΠΈ ΠΊΠΎΠΈ Π½Π΅ ΡΠ΅ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±ΡΠΊΠ²ΠΈ ΠΈΠ»ΠΈ Π°ΠΊΡΠ΅Π½ΡΠΈ.
ΠΠ²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ°
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