ΠΡΠ΅Π²ΠΎΠ΄ΡΡ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π·Π° ΡΡΡΠ΄Π΅Π½ΡΠΈΡΠ΅ ΠΎΡ ΠΊΡΡΡΠ° . ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π»ΠΈ Π΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ΅ Π² ΡΠ°Π·ΠΈ Π½Π°ΡΠΎΠΊΠ°? ΠΠ°Π½ΠΈΠΌ Π²ΠΈ Π½Π° , ΠΊΡΠ΄Π΅ΡΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°, ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠΎΡΠΌΠ°ΡΠ°, ΠΊΠΎΠΌΠΏΠ΅ΡΠ΅Π½ΡΠΈΠΈΡΠ΅ ΠΈ ΠΊΠ°ΡΠΈΠΉΠ½ΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠ°ΠΊΠ²Π°Ρ Π·Π°Π²ΡΡΡΠΈΠ»ΠΈΡΠ΅ ΡΠ»Π΅Π΄ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ.

PostgreSQL ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π·Π° ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½ΠΎΡΡ Π½Π° Π·Π°ΠΏΠΈΡΠ° Π·Π° Π²ΡΡΠΊΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅
Π Compose ΡΠ°Π±ΠΎΡΠΈΠΌ Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Ρ ΡΡΡ
Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ. Π‘ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π΄Π° ΠΎΠ±ΠΈΡΠ°ΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΠΈ ΠΌΠΈΡΠ»ΠΈΠΌ ΠΊΠ°ΠΊ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π΄ΠΎΠ±ΡΠ΅, Π°ΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΡΡΡΡΠ²Π°Ρ
Π° ΠΈ Π² ΠΏΠΎ-Π·ΡΠ΅Π»ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, Ρ ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΎΡΠ΄Π°Π²Π½Π°. ΠΠ΄Π½Π° ΠΎΡ Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΡΠΎ ΠΈΡΠΊΠ°Ρ
ΠΌΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π² PostgreSQL, Π±Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ Π½Π° Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΠΎ Π²ΡΡΠ·ΠΊΠ° Π² ΡΠ΅Π»ΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ. Π ΡΠ΅ ΠΎΠΊΠ°Π·Π°, ΡΠ΅ Π²Π΅ΡΠ΅ Ρ ΠΈΠΌΠ°ΠΌΠ΅, ΠΈ Π΄Π½Π΅Ρ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈΠΌ Ρ Π²Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅.
ΠΠ°ΡΠΎ ΠΌΠΈ Π΅ ΡΠΎΠ²Π°?
ΠΠ°ΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π΄ΡΡΠΆΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΡΡ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ° Π²Π·Π΅ΠΌΠ΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΠ»Π°ΡΠ°Π½Π΅ Π½Π° ΡΠΌΠ΅ΡΠΊΠΈ. Π©Π΅ Π²ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΡΡΠΎΡΠΈΠ½ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°, Π·Π°ΡΠΎΠ²Π° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ, Π·Π° Π΄Π° ΠΈΠ·ΡΠ°ΠΊΠ°ΡΠ΅, Π΄ΠΎΠΊΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π±ΡΠ΄Π°Ρ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π°ΠΊΠΎ Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ Π±ΡΡΠ·ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ° ΡΠ΅ ΡΠΎΡΠΈΠ°Π»Π½Π° ΠΌΡΠ΅ΠΆΠ°, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π±ΡΡΠ· ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π°Π΄ ΡΡΠΎΡΠΈΠ½ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ. ΠΠ° Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΡΠ΅ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΡΠΈ.
ΠΠ°ΠΏΠΎΠ·Π½Π°ΠΉΡΠ΅ ΡΠ΅ Ρ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠ°
Π©Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. PostgreSQL ΠΈΠ·ΠΎΡΡΠ°Π²Π° ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΡΠ°Π²Π° ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ° ΠΈ Π±Π΅Π· Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈ ΠΈΠ·Π½Π΅Π½Π°Π΄ΠΈ. Π‘Π΅Π³Π° ΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ Ρ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠΈΡΠ΅.
ΠΠΎΠΌΠΏΡΠΎΠΌΠΈΡ 1: ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ
ΠΠΊΠΎ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° PostgreSQL Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠ³Π»Π°ΡΠΈΠ΅, ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ°Π²ΡΡ Π½Π° Π»ΠΈΠ΄Π΅ΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°, Π° Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΎΠ³Π°ΡΠΎ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° PostgreSQL Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠ³Π»Π°ΡΠΈΠ΅, ΡΠΎΠΉ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ. ΠΠ°ΠΏΠΈΡΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ Π² Π»ΠΈΠ΄Π΅ΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅ ΠΈ ΡΠ΅ ΠΈΠ·ΡΠ°ΠΊΠ° ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΡΠ΅ Π²ΡΡΠΊΠ° ΠΎΡ ΡΡΡ Π΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π°ΠΏΠΈΡ, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°Π» Π·Π°ΠΏΠΈΡΠ°, ΡΠ΅ ΡΠΎΠΉ Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π» ΡΡΠΏΠ΅ΡΠ½ΠΎ. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ ΡΠ΅ ΡΡΡΡΠΎΠΈ Π² ΡΠΎΠ²Π°, ΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π΄Π²Π΅ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΠΊΠΎΠΊΠΎΠ²Π΅, Π° ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡΡ β ΡΠ΅ΡΠΈΡΠΈ.
ΠΠΎΠΌΠΏΡΠΎΠΌΠΈΡ 2: Π‘ΡΠ³Π»Π°ΡΠΈΠ΅
Π Π΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΏΡΠΈ Π½Π΅ΠΈΠ·ΠΏΡΠ°Π²Π½ΠΎΡΡ Π½Π° Π»ΠΈΠ΄Π΅ΡΠ° Π² ΡΠ΅Π·ΠΈ Π΄Π²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΡΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ°Π·Π»ΠΈΡΠ΅Π½. ΠΠΊΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ, ΠΏΡΠΈ Π½Π°ΡΡΡΠΏΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΠΊΠ°Π²Π° Π³ΡΠ΅ΡΠΊΠ° Π½Π΅ Π²ΡΠΈΡΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π·Π°ΡΠ΅ΡΠ΅Π½ΠΈ ΠΎΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅. ΠΠΎΠ»ΠΊΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ Π·Π°Π³ΡΠ±Π΅Π½ΠΎ? ΠΠ°Π²ΠΈΡΠΈ ΠΎΡ ΡΠ°ΠΌΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡΠ°. Π Π΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡΠ° Π² Compose ΠΏΡΠ΅ΡΠΈ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ° Π΄Π° ΡΡΠ°Π½Π΅ Π»ΠΈΠ΄Π΅Ρ, Π² ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² Π½Π΅Ρ Π΅ Ρ 1 ΠΠ± ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ ΡΠΎΠ²Π° Π² Π»ΠΈΠ΄Π΅ΡΠ°, ΡΠΎΠ΅ΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π³ΡΠ±Π΅Π½ΠΈ Π΄ΠΎ 1 ΠΠ± Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π° ΡΠ°Π±ΠΎΡΠ°.
Π ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ ΡΠΎΠ²Π° Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΠ²Π°. ΠΠΊΠΎ Π»ΠΈΠ΄Π΅ΡΡΡ ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ, Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°Ρ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΡΠΊΠ° Π·Π°ΠΏΠΈΡΠ°Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½Π° Π½Π° Π»ΠΈΠ΄Π΅ΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½Π° ΠΈ Π² ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅. ΠΡΠΎ Ρ β ΡΡΠ³Π»Π°ΡΠ½ΠΎΡΡΡΠ°.
Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ° ΡΠΌΠΈΡΡΠ» Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΠ»Π°ΡΠ°Π½Π΅ Π½Π° ΡΠΌΠ΅ΡΠΊΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΡΠ³Π»Π°ΡΠ½ΠΎΡΡΡΠ° ΠΈΠΌΠ° ΡΠ²Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ Π² ΡΡΡΡΠ΅Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ³Π»Π°ΡΠ½ΠΎΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. ΠΠ°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ Π·Π° ΡΠ°ΠΊΠΎΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ° Π²Π°Π»ΠΈΠ΄Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ. Π ΡΠ΅Π³Π° ΡΠΈ ΡΠΏΠΎΠΌΠ½Π΅ΡΠ΅ Π·Π° ΡΠΎΡΠΈΠ°Π»Π½Π° ΠΌΡΠ΅ΠΆΠ°, Π² ΠΊΠΎΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° Π΅ Π΄Π° ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, ΠΎΡΠ³ΠΎΠ²Π°ΡΡΠΉΠΊΠΈ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-Π±ΡΡΠ·ΠΎ. Π ΡΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Ρ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΠΊΠΎΠΊΠΎΠ²Π΅ ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠ°ΠΊΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ ΡΡΠ³Π»Π°ΡΠ½ΠΎΡΡΡΠ° Π½Π΅ Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ, Π·Π° ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΌΠΈΡΠ»ΠΈ.
ΠΠΎΠΌΠΏΡΠΎΠΌΠΈΡ 3: ΠΠ΅ΡΡΠΏΠ΅Ρ ΠΈ
ΠΠ½ΠΎΠ³ΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ΅ Π΄ΡΡΠΆΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠΈΠ². ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π΅Π΄Π½Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΠΎΡΠΊΠ°Π·Π²Π°Ρ. ΠΠΎΠ³Π°ΡΠΎ ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ, Π»ΠΈΠ΄Π΅ΡΡΡ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°, ΡΠΎΠ΅ΡΡ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π·Π°ΠΏΠΈΡΠΈ, Π±Π΅Π· Π΄Π° ΡΠ°ΠΊΠ° Π»ΠΈΠΏΡΠ²Π°ΡΠΈΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅ ΡΠ΅ Π²ΡΡΠ½Π°Ρ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΡΠ΅ ΡΠ΅ Π½Π°Π²Π°ΠΊΡΠ°Ρ Π½Π° Π»ΠΈΠ΄Π΅ΡΠ°. ΠΡΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, Π°ΠΊΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅ Π½Π΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ, Π»ΠΈΠ΄Π΅ΡΡΡ Π½ΡΠΌΠ° ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ ΠΈ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΡΠ°ΠΊΠ° ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΈΡΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ° Π½Π΅ ΡΠ΅ Π²ΡΡΠ½Π΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ΅ ΠΈ ΠΏΠΎΡΠ²ΡΡΠ΄ΠΈ Π·Π°ΠΏΠΈΡΠ°.
ΠΠΎ Π΅Π΄Π½ΠΎ Π²ΡΡΠ·ΠΊΠ° Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ?
ΠΠ° Π²ΡΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡ Π΅ Π½ΡΠΆΠ΅Π½ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ ΡΠΈΠΏ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. ΠΡΠ²Π΅Π½ Π°ΠΊΠΎ Π½Π΅ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π·Π° Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΠ»Π°ΡΠ°Π½Π΅ Π½Π° ΡΠΌΠ΅ΡΠΊΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌΠ΅ ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΈΠ»ΠΈ Π·Π° Π½Π°ΡΠ΅ΡΠΎ ΠΏΠΎΡΡΠΈ Π΅ΡΠ΅ΡΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠΎΡΠΈΠ°Π»Π½Π° ΠΌΡΠ΅ΠΆΠ°. Π ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ»ΡΡΠ°ΠΈ ΡΠ΅ ΠΈΠΌΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π½ΡΠΊΠΎΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ, Π° Π΄ΡΡΠ³ΠΈ β Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π΅ ΠΈΡΠΊΠ°ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΄Π° ΡΠ°ΠΊΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΎ Π² ΡΠ°ΡΠ°, Π±ΡΠ΄Π΅ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ, Π½ΠΎ Π°ΠΊΠΎ Π² ΡΡΡΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠ»Π°ΡΠ°Π½Π΅, ΡΠΎ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠ°ΠΊΠ°.
ΠΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠ΅ Π²Π·ΠΈΠΌΠ°Ρ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΡΠ°Π²ΠΈΠ»Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΡΠΎΠ²Π° ΠΊΠΎΠ³Π° Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΡΠΎΠ·ΠΈ ΠΈΠ»ΠΈ ΠΎΠ½Π·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·Π²Π»Π΅ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ° ΠΎΡ ΠΊΠ»ΡΡΡΠ΅ΡΠ°. ΠΠ°ΠΆΠ½ΠΎ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡ Π½Π° Π½ΠΈΠ²ΠΎ SQL Π·Π° Π²ΡΡΠ·ΠΊΠΈ ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
ΠΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ PostgreSQL ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ. Π’ΠΎΠ²Π° ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ° synchronous_commit. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ on, Π½ΠΎ ΠΈΠΌΠ° ΡΡΠΈ Π΄ΡΡΠ³ΠΈ ΠΎΠΏΡΠΈΠΈ: local, remote_write ΠΈΠ»ΠΈ off.
ΠΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Π½Π° off ΡΠΏΠΈΡΠ°Ρ Π²ΡΠΈΡΠΊΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ, Π΄ΠΎΡΠΈ Π² Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ local ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π·Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, Π½ΠΎ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ. Remote_write ΠΈΠ΄Π²Π° ΠΎΡΠ΅ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ: Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ, Π½ΠΎ ΡΠ΅ Π²ΡΡΡΠ°Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ° ΠΏΡΠΈΠ΅ΠΌΠ΅ Π·Π°ΠΏΠΈΡΠ°, Π½ΠΎ Π½Π΅ Π³ΠΎ Π·Π°ΠΏΠΈΡΠ΅ Π½Π° Π΄ΠΈΡΠΊ.
Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΉΠΊΠΈ Π½Π°Π»ΠΈΡΠ½ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ ΠΎΠΏΡΠΈΠΈ, Π½ΠΈΠ΅ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ ΠΈ, ΠΈΠΌΠ°ΠΉΠΊΠΈ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ on β ΡΠΎΠ²Π° ΡΠ° ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΈ Π·Π°ΠΏΠΈΡΠΈ, ΡΠ΅ ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ local Π·Π° Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ ΠΏΠΎ ΠΌΡΠ΅ΠΆΠ°ΡΠ°, ΠΊΠ°ΡΠΎ ΠΎΡΡΠ°Π²ΠΈΠΌ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΈΡΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΈ.
Π‘Π΅Π³Π° ΡΠ΅ Π²ΠΈ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΡΠΎΠ²Π° Π·Π° ΠΌΠΈΠ³, Π½ΠΎ ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅ΡΠ΅, ΡΠ΅ ΡΠΌΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ synchronous_commit Π² local Π·Π° ΡΡΡΠ²ΡΡΠ°. ΠΠ°Π΄Π°Π΄ΠΎΡ
ΠΌΠ΅ ΡΠΈ Π²ΡΠΏΡΠΎΡΠ° Π΄Π°Π»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° synchronous_commit Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΈ ΡΠ΅ ΠΎΠΊΠ°Π·Π°, ΡΠ΅ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ, Π½ΠΎ Π΄ΠΎΡΠΈ ΠΈΠΌΠ° Π΄Π²Π° Π½Π°ΡΠΈΠ½Π°. ΠΡΡΠ²ΠΈΡΡ Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ΅ΡΠΈΡΡΠ° Π½Π° Π²Π°ΡΠ΅ΡΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
SET SESSION synchronous_commit TO ON;
// ΠΠ°ΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ΄Π²Π°Ρ ΡΡΠΊΠΡΠΈΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ΅ΡΠΈΡΡΠ° ΡΠ΅ ΠΏΠΎΡΠ²ΡΡΠ΄ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π·Π°ΠΏΠΈΡ Π·Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π²ΡΡΠ½Π°Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π΅Π½ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠ²ΡΡΠ·Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ. ΠΠΊΠΎ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π½Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° synchronous_commit ΠΎΡΠ½ΠΎΠ²ΠΎ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠΏΡΡΠ½Π΅ΡΠ΅ ΡΠ°ΡΡΡΠ° SESSION Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅.
ΠΡΠΎΡΠΈΡΡ Π½Π°ΡΠΈΠ½ Π΅ Π΄ΠΎΠ±ΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΡΠ΅, ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π·Π° Π΅Π΄Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ. Π ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ΡΠΎ βNoSQLβ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, Π½ΠΎ Π² PostgreSQL ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π·Π°Π΄Π°Π²Π°ΡΠ΅ synchronous_commit Π² on ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠ° Π·Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°. COMMIT ΡΠ΅ Π·Π°ΡΠΈΠΊΡΡΠΈΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π²ΡΡΠΊΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° synchronous_commit, ΠΊΠΎΡΡΠΎ Π΅ Π±ΠΈΠ»Π° Π·Π°Π΄Π°Π΄Π΅Π½Π° ΠΏΠΎ ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Π΅ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ, Π·Π° Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΡΠ΅, ΡΠ΅ Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Ρ, ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π½Π΅ ΡΠ° Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΈ.
BEGIN;
SET LOCAL synchronous_commit TO ON;
// ΠΠ°ΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ΄Π²Π°Ρ ΡΡΠΊ
COMMIT; ΠΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΈΡΠΈ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠ΅Π³Π° ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ΠΈ, ΠΊΠ°ΡΠΎ Π·Π°ΠΏΠΈΡΠ°Π½ΠΈ Π² ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅ Π΄ΠΎΡΠΈ ΠΏΡΠ΅Π΄ΠΈ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π΄Π° Π²ΡΡΠ½Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π΅Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° ΡΠ²ΡΡΠ·Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° PostgreSQL
ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡ
ΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ° PostgreSQL Ρ synchronous_commit, Π·Π°Π΄Π°Π΄Π΅Π½Π° Π½Π° local. ΠΠ° Π΄Π° Π±ΡΠ΄Π΅ ΡΠΎΠ²Π° ΡΠ΅Π°Π»Π½ΠΎ Π½Π° ΡΡΡΠ°Π½Π° Π½Π° ΡΡΡΠ²ΡΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°. ΠΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ synchronous_standby_names ΡΠ΅ Π²Π»Π΅Π·Π΅ Π² ΡΠΈΠ»Π°, ΠΊΠΎΠ³Π°ΡΠΎ synchronous_commit Π΅ Π½Π° on. Π’ΠΎΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΊΠΎΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈΠΌΠ°Ρ ΠΏΡΠ°Π²ΠΎ Π½Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ, ΠΈ ΡΠ΅ Π³ΠΎ Π·Π°Π΄Π°Π΄Π΅ΠΌ Π½Π° *, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π²Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ. Π’Π΅Π·ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ Π² ΡΡΠ΅Π· Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π°:
synchronous_commit = local
synchronous_standby_names='*'ΠΠ°ΡΡΡΠΎΠΉΠ²Π°ΠΉΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° synchronous_commit Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ local, ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°, Π² ΠΊΠΎΡΡΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ²Π΅ ΠΎΡΡΠ°Π²Π°Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΈ, Π½ΠΎ ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ° Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΈ. ΠΠΊΠΎ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π½Π΅ ΡΠ΅ΡΠΈΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΈ, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅.
ΠΠΊΠΎ ΡΠ»Π΅Π΄ΠΈΡΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° , Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΡΠ΅ Π·Π°Π±Π΅Π»ΡΠ·Π°Π»ΠΈ Π½ΡΠΊΠΎΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ (, ), ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Governor Π΄Π° ΡΠ΅ΡΡΠ²Π°Ρ ΡΠ΅Π·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΈ Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Ρ ΡΡΡ Π½Π°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ.
ΠΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄ΡΠΌΠΈβ¦
ΠΡΠΊΠ²Π°Π»Π½ΠΎ ΡΠ΅Π΄ΠΌΠΈΡΠ° ΠΏΡΠ΅Π΄ΠΈ, Π±ΠΈΡ Π²ΠΈ ΠΊΠ°Π·Π°Π», ΡΠ΅ Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ PostgreSQL ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΡΠ΅ΡΠΈΠ·Π½ΠΎ. Π’ΠΎΠ³Π°Π²Π° ΠΡΡΡ, ΡΠ»Π΅Π½ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½ Π΅ΠΊΠΈΠΏ Π½Π° Compose, Π½Π°ΡΡΠΎΡΠ²Π°ΡΠ΅, ΡΠ΅ ΡΠ°ΠΊΠ°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°. Π’ΠΎΠΉ ΡΡΠΏΠΎΠΊΠΎΠΈ ΠΌΠΎΠΈΡΠ΅ Π²ΡΠ·ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π½Π°ΠΌΠ΅ΡΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° PostgreSQL :

Π’Π°Π·ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½Π° ΠΏΠΎ Π²ΡΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π·Π° Π²ΡΡΠΊΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°, ΠΊΠΎΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΡΠ²Π° ΠΏΡΠΈ ΠΊΠΎΠΌΠΈΡΠ°. ΠΠ°ΡΠΎΠ²Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π·Π° Π½ΡΠΊΠΎΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ, Π° Π·Π° Π΄ΡΡΠ³ΠΈ β Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° Π½Π°ΠΊΠ°ΡΠ°ΡΠ΅ Π΅Π΄Π½Π° ΠΌΡΠ»ΡΠΈ-ΠΊΠΎΠΌΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π΄Π° ΠΏΡΠ°Π²ΠΈ ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Π°, Π·Π°Π΄Π°ΠΉΡΠ΅ SET LOCAL synchronous_commit TO OFF Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°.
Π‘ ΡΠ°Π·ΠΈ ΠΌΠ°Π»ΠΊΠ° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ ΠΌΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Ρ ΡΡΡ Π½Π°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
