Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π±Π΅ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ Π½ΠΎΠ²ΠΎ ΡΡΠ°Π±ΠΈΠ»Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π‘Π£ΠΠ PostgreSQL 18. ΠΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π·Π° Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΡΠ΅ ΠΈΠ·Π»ΠΈΠ·Π°Ρ Π² ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅Ρ Π³ΠΎΠ΄ΠΈΠ½ΠΈ Π΄ΠΎ Π½ΠΎΠ΅ΠΌΠ²ΡΠΈ 2030 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° PostgreSQL 13.x, Π½Π°ΠΉ-ΡΡΠ°ΡΠ°ΡΠ° ΠΎΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ, ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° Π½Π° 13 Π½ΠΎΠ΅ΠΌΠ²ΡΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΠ΅Π»Π½Π°ΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ ΠΈ ΠΈΠ·Π±Π°Π²ΡΠ½Π΅ ΠΎΡ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡ. ΠΡΠ²Π΅Π½ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° AIO (io_method=worker), Π½Π°Π»ΠΈΡΠ½Π° Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΠ°-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ (ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ 3), Π² Linux ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ Π·Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄ io_uring (io_method=io_uring), ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 5.1. ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡΡ Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅ Π°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ°ΠΌΠΎ Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠ°ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΎΠ±Ρ ΠΎΠΆΠ΄Π°Π½Π΅, ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΈΡΠΎΠ²Π°ΡΠ° ΠΊΠ°ΡΡΠ° Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ (vacuum). Π Π½ΡΠΊΠΎΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° AIO Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΎΡ 2 Π΄ΠΎ 3 ΠΏΡΡΠΈ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° Π·Π°ΠΏΠΈΡ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π² ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ, Π·Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π½Π° ACID.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Β«skip scanΒ» Π² ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ»ΠΎΠ½ΠΎΡΠ½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΡΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΡΠ²Π°ΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π° ΠΈ ΠΏΡΠ»Π½ΠΎΡΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅, Π½ΠΎ ΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΠΎΡΠ΄Π΅Π»Π½ΠΎ Π½Π° ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° B-tree ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π°Π΄ ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅ Β«(status, date)Β» ΠΈΠ½Π΄Π΅ΠΊΡΡΡ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°ΡΠ΅ ΡΠ°ΠΌΠΎ Π·Π° Π·Π°ΡΠ²ΠΊΠΈ, ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠΈ ΠΏΠΎΠ»Π΅ΡΠΎ Β«statusΒ» ΠΈΠ»ΠΈ ΠΈ Π΄Π²Π΅ΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠ° Β«statusΒ» ΠΈ Β«dateΒ», Π° ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π² Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΡΠ°ΠΌΠΎ Π½Π° ΠΏΠΎΠ»Π΅ΡΠΎ Β«dateΒ» ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°. Π Π΅ΠΆΠΈΠΌΡΡ Β«skip scanΒ» ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π΄Π° ΡΠ΅ ΡΠΊΠ°Π½ΠΈΡΠ° ΠΈΠ½Π΄Π΅ΠΊΡΡΡ ΠΏΡΠΈ Π·Π°ΡΠ²ΠΊΠ° ΡΠ°ΠΌΠΎ Π·Π° ΠΏΠΎΠ»Π΅ΡΠΎ Β«dateΒ». Π Π΅ΠΆΠΈΠΌΡΡ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΡΠ°ΠΌΠΎ Π·Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Β«B-treeΒ» ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² Π·Π°ΡΠ²ΠΊΠ°ΡΠ° Π½Π° ΡΡΠ»ΠΎΠ²Π΅Π½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Β«=Β» Π²ΡΡΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΠΎΠ»Π΅, Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΎΠΏΡΡΠ½Π°ΡΠΎΡΠΎ ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ° ΠΌΠ°Π»ΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡΠ° ΡΠ΅ ΡΡΠ°Π±ΠΎΡΠΈ, Π°ΠΊΠΎ ΠΏΠΎΠ»Π΅ΡΠΎ ΡΡΠ°ΡΡΡ Β«statusΒ» ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠΈΠΊΡΠΈΡΠ°Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ).
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ Π·Π° Π·Π°ΡΠ²ΠΊΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Β«ORΒ» ΠΈ Β«IN (β¦)Β» Π² Π±Π»ΠΎΠΊΠ° Β«WHEREΒ», Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΊΠΎΡΠ΅Π½ Π΅ ΠΊΠΎΠ΄ΡΡ Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° Ρ Π΅ΡΠΎΠ²Π΅ ΠΈ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ ΡΠΎΡΡΠΈΡΠ°Π½Π΅ ΠΏΡΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ GIN (ΠΠ±ΠΎΠ±ΡΠ΅Π½ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠ°Π½ ΠΈΠ½Π΄Π΅ΠΊΡ), ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΡΠΎ ΠΌΠ°ΡΠΈΠ²ΠΈ, ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΡΠ΅Π½Π΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ Ρ ΠΏΡΠ»Π΅Π½ ΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ JSON.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈΡ ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ Ρ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° B-tree.
- ΠΠΎΠ²ΠΈΡΠ΅Π½Π° Π΅ ΠΎΠ±ΡΠ°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈΡΠ΅ ΠΏΡΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ±ΡΠΎΠΉΠ½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ° Π²Π½Π΅ΡΠ΅Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΠΊΠΎΡΡΠ²Π°Ρ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΡΠ΅ΠΊΡΠΈΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ (JOIN).
- Π£ΡΠΊΠΎΡΠ΅Π½ΠΈ ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Ρ ΡΠ΅ΠΊΡΡ, ΠΊΠ°ΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π² Π³ΠΎΡΠ΅Π½/Π΄ΠΎΠ»Π΅Π½ ΡΠ΅Π³ΠΈΡΡΡΡ. ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠ΅ΠΆΠΈΠΌ PG_UNICODE_FAST Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Unicode ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π½Π° ΠΏΠ»Π°Π½ΠΈΡΠ°ΡΠΈΡ ΠΌΠΎΠ΄ΡΠ» ΡΠ»Π΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° PostgreSQL. Π’ΠΎΠ²Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Β«ANALYZEΒ» ΡΠ»Π΅Π΄ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ, Π΄ΠΎ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π²Π° ΡΠΏΠ°Π΄ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π‘Π£ΠΠ.
- ΠΠΎΠ²ΠΈΡΠ΅Π½Π° Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ° pg_upgrade, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠ΅Ρ ΠΎΠ΄Π° ΠΊΡΠΌ Π½ΠΎΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° PostgreSQL. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ ΡΠ° ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΈ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΠ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠ°ΡΠΎ ΡΠ°Π±Π»ΠΈΡΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ. ΠΠ° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° pg_upgrade Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΡΠ»Π°Π³ Β«βjobs NΒ» Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ Π² N ΠΏΠΎΡΠΎΠΊΠ° ΠΈ ΡΠ»Π°Π³ Β«βswapΒ» Π·Π° Π·Π°ΠΌΡΠ½Π° Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Ρ Π΄Π°Π½Π½ΠΈ, Π±Π΅Π· Π΄Π° ΡΠ΅ ΠΏΡΠ°Π²ΡΡ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ, ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ, ΡΠΈΠΈΡΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Ρ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅, Π±Π΅Π· Π΄Π° ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π°Ρ Π½Π° Π΄ΠΈΡΠΊ. ΠΠΊΠΎ Π² ΠΈΠ·ΡΠ²Π»Π΅Π½ΠΈΠ΅ΡΠΎ βCREATE TABLEβ¦β Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ ΡΠ°ΠΌΠΎ ΠΊΠ»ΡΡΠΎΠ²ΠΎΡΠΎ ΡΠ»ΠΎΠ²ΠΎ βGENERATEDβ Π±Π΅Π· ΡΡΠΎΡΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠΏΠ° (STORED ΠΈΠ»ΠΈ VIRTUAL), ΡΠΎ Π½ΠΎΠ²ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°ΡΠ°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. Π ΡΡΠ°ΡΠ°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ βINSERTβ ΠΈΠ»ΠΈ βUPDATEβ ΠΈ ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π°Ρ Π° Π½Π° Π΄ΠΈΡΠΊ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠ° ΡΠΏΠΎΡΡΠ΅Π±Π°. ΠΠ΅Π΄ΠΎΡΡΠ°ΡΡΠΊ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, Π° ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ (Π°ΠΊΡΡΠ°Π»Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Π΄Π°Π½Π½ΠΈ JSON). Π©ΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π΄ΠΎ ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ, Π² Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ.
- Π ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ INSERT, UPDATE, DELETE ΠΈ MERGE Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ (OLD) ΠΈ ΡΠ΅ΠΊΡΡΠΈ (CURRENT) ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π² ΠΈΠ·ΡΠ°Π·Π° RETURNING. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, βUPDATEβ¦ RETURNING WITH (OLD AS o, NEW AS n) o.*, n.*.β.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΡΠ½ΠΊΡΠΈΡ uuidv7() Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ UUIDv7. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ°ΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° UUID (gen_random_uuid), ΠΊΠΎΡΡΠΎ ΡΠ΅Π³Π° Π΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π½Π°Π»ΠΈΡΠ½Π° ΠΏΠΎΠ΄ ΠΈΠΌΠ΅ΡΠΎ uuidv4(), Π² UUIDv7 ΠΎΡΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉΠ½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π° ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅. ΠΠ°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΡΠ°ΡΡΠΈ Π² ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° UUID (ΠΏΡΡΠ²ΠΈΡΠ΅ 12 ΡΠΈΠΌΠ²ΠΎΠ»Π° β Π΅ΠΏΠΎΡ Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅, Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ 18 β ΡΠ»ΡΡΠ°ΠΉΠ½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ) ΠΏΠΎΠ²ΠΈΡΠ°Π²Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΠΎΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π°ΠΊΡΡΠ°Π»Π½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ UUID ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΏΡΡΠ²ΠΈΡΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π² Π±Π»ΠΈΠ·ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅, ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΡ Π΅Π΄ΠΈΠ½ Π΄ΠΎ Π΄ΡΡΠ³ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°).
- Π ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° βLIKEβ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ Ρ ΡΠ΅ΠΊΡΡ, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½Π΅Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° βcollationβ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ Ρ ΠΎΠ³Π»Π΅Π΄ Π½Π° ΡΠΌΠΈΡΡΠ»Π° Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ ΡΠ΅ Π²Π·Π΅ΠΌΠ° ΠΏΠΎΠ΄ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ΡΠΎ). ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΡΠ½ΠΊΡΠΈΡ CASEFOLD Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ Ρ ΠΎΠ³Π»Π΅Π΄ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ° Π½Π° Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° βcollationβ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΡΠΊΠΎΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΈΠΌΠ°Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° Π½Π° ΠΌΠ°Π»ΠΊΠΈ Π±ΡΠΊΠ²ΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π² Π³Π»Π°Π²Π½ΠΈ Π±ΡΠΊΠ²ΠΈ, Π° Π½Π΅ Π² ΠΌΠ°Π»ΠΊΠΈ).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ (temporal constraint). Π ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Β«PRIMARY KEYΒ» ΠΈ Β«UNIQUEΒ» Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ»Π΅Π΄Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ·ΡΠ°Π·ΡΡ Β«WITHOUT OVERLAPSΒ», Π° Π² ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Β«FOREIGN KEYΒ» β ΠΈΠ·ΡΠ°Π·ΡΡ PERIOD. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ Ρ ΠΏΡΠΈΠΏΠΎΠΊΡΠΈΠ²Π°ΡΠΈ ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«CREATE FOREIGN TABLE β¦ LIKE commandΒ», Π·Π° Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΡΡ Π΅ΠΌΠ° Π½Π° Π²ΡΠ½ΡΠ½Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ°.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ Π‘Π£ΠΠ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° OAUTH 2.0 Ρ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅Π½ Π·Π° Π΄ΠΎΡΡΡΠΏ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ°ΡΠΎΠ»Π°. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° OAUTH ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π½Π΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΠΏΠ°ΡΠΎΠ»ΠΈ Π² ΠΠ, Π° Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΡΡΠ΅Π· Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΠΎ Π΄Π²ΡΡΠ°ΠΊΡΠΎΡΠ½ΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΠΈ Π΅Π΄ΠΈΠ½Π½Π° ΡΠΎΡΠΊΠ° Π½Π° Π΄ΠΎΡΡΡΠΏ (SSO).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΡΠ½ΠΊΡΠΈΡ ssl_tls13_ciphers(), ΡΡΠ΅Π· ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΈΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ ΠΏΡΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» TLSv1.3.
- ΠΠΎΠ΄ΠΊΡΠ΅ΠΏΠ°ΡΠ° Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ md5 Π·Π° Ρ Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΡΠΎΠ»ΠΈ Π΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΠΊΠ°ΡΠΎ ΠΎΡΡΠ°ΡΡΠ»Π° ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½Π° Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅. ΠΠΌΠ΅ΡΡΠΎ md5 ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ SCRAM (SCRAM-SHA-256), Π²ΡΠ²Π΅Π΄Π΅Π½ Π² PostgreSQL 10. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»ΡΠ·Π²Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° SCRAM ΠΏΡΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΡΡΠ΅Π· postgres_fdw ΠΈ dblink ΠΊΡΠΌ Π²ΡΠ½ΡΠ½ΠΈ PostgreSQL ΡΡΡΠ²ΡΡΠΈ.
- ΠΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Β«EXPLAIN ANALYZEΒ» ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π±ΡΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΡΡΡΡΠ΅Π½Π΅ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ ΠΏΡΠΈ ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈ Π±ΡΠΎΡ Π½Π° Π΄ΠΎΡΡΡΠΏΠΈΡΠ΅ Π΄ΠΎ Π±ΡΡΠ΅ΡΠΈΡΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ. Π ΠΈΠ·Ρ ΠΎΠ΄Π° Β«EXPLAIN ANALYZE VERBOSEΒ» Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° CPU, WAL-ΠΆΡΡΠ½Π°Π»Π° ΠΈ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅. Π ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° pg_stat_all_tables ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ Π·Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π°Π½ΠΎ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° VACUUM ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° Π΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° Π²Ρ ΠΎΠ΄Π½ΠΎ-ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° WAL-ΠΆΡΡΠ½Π°Π»Π° ΠΏΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ. Π pg_stat_subscription_stats ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈΡΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π·Π°ΠΏΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ.
- Π Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΡΠΌΠΈ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ. ΠΠ° Π΄Π° ΡΠ΅ ΠΎΡΠΌΠ΅Π½ΠΈ ΡΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° initdb Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ ΠΎΠΏΡΠΈΡ Β«βno-data-checksumsΒ».
- Π ΠΏΠΎΠ»Π΅Π·Π½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° pg_createsubscriber Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΡΠ»Π°Π³ Β«βallΒ» Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ Ρ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° Π²ΡΠΈΡΠΊΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ (3.2) Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΡ Π‘Π£ΠΠ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libpq. ΠΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ Π² PostgreSQL 7.4 (2003 Π³ΠΎΠ΄ΠΈΠ½Π°). Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libpq ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²Π΅ΡΡΠΈΡ 3.0.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
