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