ΠΡΡΠΏΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° 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;
- Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Ρ.Π½Π°Ρ. ΠΏΠΎΠΊΡΠΈΠ²Π°ΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ (covering indexes, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ INCLUDE) Π·Π° GiST ΠΈΠ½Π΄Π΅ΠΊΡΠΈ;
- Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ Π·Π° "Π½Π°ΠΉ-Π±Π»ΠΈΠ·ΠΊΠΈ ΡΡΡΠ΅Π΄ΠΈ" (k-NN search) Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π·Π° ΡΠ°Π·ΡΡΠΎΡΠ½ΠΈΠ΅ () ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ SP-GiST;
- ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° Π½Π°ΠΉ-ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (most-common value, MCV) Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° CREATE STATISTICS, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠΌΠ°Π³Π° Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΈ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈ, ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΊΠΎΠΈΡΠΎ ΡΠ° Π½Π΅ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ.
JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° LLVM, ΠΏΠΎΡΠ²ΠΈΠ»Π° ΡΠ΅ Π² PostgreSQL 11, ΡΠ΅Π³Π° Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΈΠ·ΡΠ°Π·ΠΈ Π² WHERE ΠΊΠ»Π°ΡΠ·Π°, ΡΠ΅Π»Π΅Π²ΠΈ ΡΠΏΠΈΡΡΡΠΈ, Π°Π³ΡΠ΅Π³Π°ΡΠΈ ΠΈ Π½ΡΠΊΠΎΠΈ Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π’Ρ Π΅ Π½Π°Π»ΠΈΡΠ½Π°, Π°ΠΊΠΎ ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π»ΠΈ PostgreSQL Ρ LLVM ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ PostgreSQL, ΠΊΠΎΠΉΡΠΎ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ LLVM.
ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° SQL Π΅Π·ΠΈΠΊΠ° ΠΈ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ°
Π PostgreSQL 12 ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ JSON Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° JSON ΠΏΡΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ° SQL/JSON. Π’Π΅Π·ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½Π΅ Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ, ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½ΠΈ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ JSONB, Π·Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ.
ΠΠ±ΡΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ Ρ ΠΈΠ·ΡΠ°Π·ΠΈ, ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ ΡΡΡΠΎ ΠΊΠ°ΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ Ρ WITH, Π² PostgreSQL 12 Π²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Ρ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΌΡΠ½Π°, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ. Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΡΠ°ΡΡ ΠΎΡ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ WITH ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Ρ ΠΏΠΎΠ΄ΠΌΡΠ½Π°, ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ Π½Π΅ Π΅ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ, Π½ΡΠΌΠ° ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ ΠΈ ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π° ΡΠ°ΠΌΠΎ Π²Π΅Π΄Π½ΡΠΆ Π² ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΠ°ΡΡ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ.
Π 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. Π’ΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π΄Π° ΠΈΠ·Π±ΡΠ³Π²Π°Ρ ΠΏΡΠ΅ΡΡΠΎΠΉ Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π‘Π£ΠΠ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π΄ΡΠ»Π³ΠΈ ΠΏΡΠ΅Π½Π°ΡΠ΅ΠΆΠ΄Π°Π½ΠΈΡ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π² PostgreSQL 12 ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΡΠΌΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΠΊΠΎΠΉΡΠΎ Π΅ Π² ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° pg_checksums. ΠΠΎ-ΡΠ°Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΡΠΌΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈ β ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠΌΠ°Π³Π° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅, ΡΡ Ρ ΡΠ°Π½ΡΡ Π½Π° Π΄ΠΈΡΠΊΠ° β ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΡΠ°ΠΌΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° PostgreSQL Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° initdb.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
