ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² ΠΊΡΡΡΠ°
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;
// Your writes go here
ΠΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ΅ΡΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ. ΠΡΠ»ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Ρ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΡ synchronous_commit
ΡΠ½ΠΎΠ²Π°. ΠΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΡΠΈΡΡ ΡΠ°ΡΡΡ SESSION
Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΡΠΎΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Ρ
ΠΎΡΠΎΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΠΎΡΡΠΎ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
Π±Π°Π·Π°Ρ
Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ «NoSQL» ΠΏΠΎΠ½ΡΡΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π½ΠΎ ΠΎΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² PostgreSQL. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ synchronous_commit
Π² on
ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. COMMIT
Π·Π°ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π»ΡΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° synchronous_commit
, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π² ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, Ρ
ΠΎΡΡ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°ΡΠ°Π½Π΅Π΅, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π·Π°ΠΏΠΈΡΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌΠΈ.
BEGIN;
SET LOCAL synchronous_commit TO ON;
// Your writes go here
COMMIT;
ΠΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΡΠ΅ΠΏΠ΅ΡΡ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡΡΡ, ΠΊΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ Π΅ΡΠ΅ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π²Π΅ΡΠ½Π΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° PostgreSQL
ΠΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ»ΠΈ ΡΠ΅Π±Π΅ ΡΠΈΡΡΠ΅ΠΌΡ PostgreSQL Ρ synchronous_commit
, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π² local
. Π§ΡΠΎΠ±Ρ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ synchronous_standby_names
Π±ΡΠ΄Π΅Ρ Π²ΡΡΡΠΏΠ°ΡΡ Π² ΡΠ²ΠΎΠΈ ΠΏΡΠ°Π²Π°, ΠΊΠΎΠ³Π΄Π° synchronous_commit
Π±ΡΠ΄Π΅Ρ Π² on
. ΠΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²ΠΎ Π½Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ, ΠΈ ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π΅Π³ΠΎ Π² *
, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ·Π½Π°ΡΠ°ΡΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΡΠ΅ΠΏΠ»ΠΈΠΊ. ΠΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Π²
synchronous_commit = local
synchronous_standby_names='*'
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ synchronous_commit
Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ local
, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ Π΄ΠΈΡΠΊΠΈ ΠΎΡΡΠ°ΡΡΡΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌΠΈ, Π½ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΠ΅ΡΠ΅Π²ΡΡ
ΡΠ΅ΠΏΠ»ΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌΠΈ. ΠΡΠ»ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΡ Π½Π΅ ΡΠ΅ΡΠΈΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΌΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅.
ΠΡΠ»ΠΈ Π²Ρ ΡΠ»Π΅Π΄ΠΈΠ»ΠΈ Π·Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ
ΠΡΠ΅ ΠΏΠ°ΡΠ° ΡΠ»ΠΎΠ²β¦
ΠΡΠΊΠ²Π°Π»ΡΠ½ΠΎ Π½Π΅Π΄Π΅Π»Ρ Π½Π°Π·Π°Π΄, Ρ Π±Ρ Π²Π°ΠΌ ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ½ΠΊΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ PostgreSQL. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ³Π΄Π° ΠΡΡΡ, ΡΠ»Π΅Π½ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Compose, Π½Π°ΡΡΠ°ΠΈΠ²Π°Π» Π½Π° ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΅ΡΡΡ. ΠΠ½ ΡΡΠΈΡ
ΠΎΠΌΠΈΡΠΈΠ» ΠΌΠΎΠΈ Π²ΠΎΠ·ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π½Π°ΡΠ΅Π» Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ PostgreSQL
ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ, Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΡΡΠΎΠ±Ρ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡΡ ΡΠΎΠ²Π΅ΡΡΠ°Π»ΠΈΡΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ, Π° Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ
β Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΎΠ΄Π½Ρ multistatement
ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΡ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎ, Π·Π°Π΄Π°ΠΉΡΠ΅ SET LOCAL synchronous_commit TO OFF
Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊΠΎΠΉ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΡ Π΄Π°Π»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com