ΠΡΠ΅Π²ΠΎΠ΄ΡΡ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° Π΅ ΠΈΠ·Π³ΠΎΡΠ²Π΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π·Π° ΡΡΡΠ΄Π΅Π½ΡΠΈΡΠ΅ ΠΎΡ ΠΊΡΡΡΠ°
PostgreSQL ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡ
Π Compose ΡΠ°Π±ΠΎΡΠΈΠΌ Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π½ΠΈ Π΄Π°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Ρ ΡΡΡ
Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ. ΠΠΎΠΊΠ°ΡΠΎ ΡΠ΅ Π½Π°ΡΡΠ°Π²Π°ΠΌΠ΅ Π΄Π° ΠΎΠ±ΠΈΡΠ°ΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠΈ ΠΌΠΈΡΠ»ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎ Ρ
ΡΠ±Π°Π²ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π° ΠΏΡΠΈΡΡΡΡΠ²Π°Ρ Π² ΠΏΠΎ-Π·ΡΠ΅Π»ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, Ρ ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΎΡ Π΄ΡΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠ΄Π½Π° ΠΎΡ Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°Ρ
Π΄Π° Π²ΠΈΠ΄Ρ Π² PostgreSQL, Π±Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡ Π½Π° Π²ΡΡΠ·ΠΊΠ° Π² ΡΠ΅Π»ΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ. Π ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ ΠΎΠΊΠ°Π·Π°, Π½ΠΈΠ΅ Π²Π΅ΡΠ΅ Π³ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΈ Π΄Π½Π΅Ρ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈΠΌ Ρ Π²Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅.
ΠΠ°ΡΠΎ ΠΌΠΈ ΡΡΡΠ±Π²Π°?
ΠΠ°ΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π΄ΡΡΠΆΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΡΡ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ·Π΅ΠΌΠ΅ΡΠ΅ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΠ»Π°ΡΠ°Π½Π΅ Π½Π° ΡΠΌΠ΅ΡΠΊΠΈ. Π©Π΅ Π²ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° XNUMX% ΡΡΠ³Π»Π°ΡΡΠ²Π°Π½ΠΎΡΡ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π²Π°ΡΠ°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π΄Π° ΡΠ°ΠΊΠ° Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π°ΠΊΠΎ Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ Π±ΡΡΠ·ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ° ΡΠ΅ ΡΠΎΡΠΈΠ°Π»Π½Π° ΠΌΡΠ΅ΠΆΠ°, ΡΠΎΠ³Π°Π²Π° Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π±ΡΡΠ· ΠΎΡΠ³ΠΎΠ²ΠΎΡ ΠΏΡΠ΅Π΄ XNUMX% ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ. ΠΠ° Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΡΠ΅ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ Π²ΡΠ² Π²Π°ΡΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ.
Π‘ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡ
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. PostgreSQL ΡΠ΅ ΠΎΡΠ΄Π°Π»Π΅ΡΠ°Π²Π° ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠ³Π°Π²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΠΈΠΌΠ° ΠΈ Π±Π΅Π· Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈ ΠΈΠ·Π½Π΅Π½Π°Π΄ΠΈ. Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠΈΡΠ΅.
ΠΠΎΠΌΠΏΡΠΎΠΌΠΈΡ 1: ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ
ΠΠΊΠΎ PostgreSQL ΠΊΠ»ΡΡΡΠ΅ΡΡΡ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ, ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ. ΠΠ°ΠΏΠΈΡΡΡ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΊΡΠΌ Π»ΠΈΠ΄Π΅ΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ Π΄ΠΎ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ. ΠΠΎΠ³Π°ΡΠΎ PostgreSQL ΠΊΠ»ΡΡΡΠ΅Ρ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ, ΡΠΎΠΉ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ. ΠΠ°ΠΏΠΈΡΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ Π΄ΠΎ Π»ΠΈΠ΄Π΅ΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅ ΠΈ ΡΠ΅ ΠΈΠ·ΡΠ°ΠΊΠ° ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ Π΅ Π½Π°ΠΏΠΈΡΠ°Π», ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°Π» Π·Π°ΠΏΠΈΡΠ°, ΡΠ΅ Π΅ Π±ΠΈΠ» ΡΡΠΏΠ΅ΡΠ΅Π½. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ Π΅, ΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π΄Π²Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΠΊΠΎΠΊΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠ΅ΡΠΈΡΠΈ.
ΠΠΎΠΌΠΏΡΠΎΠΌΠΈΡ 2: ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ
Π Π΅Π·ΡΠ»ΡΠ°ΡΡΡ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΏΡΠΎΠ²Π°Π» Π½Π° Π»ΠΈΠ΄Π΅ΡΠ° ΠΏΡΠΈ ΡΠ΅Π·ΠΈ Π΄Π²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΡΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ°Π·Π»ΠΈΡΠ΅Π½. ΠΠΊΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ, ΡΠΎΠ³Π°Π²Π° Π°ΠΊΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ½Π΅ ΡΠ°ΠΊΠ°Π²Π° Π³ΡΠ΅ΡΠΊΠ°, Π½Π΅ Π²ΡΠΈΡΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π°Π½Π³Π°ΠΆΠΈΡΠ°Π½ΠΈ ΠΎΡ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅. ΠΠΎΠ»ΠΊΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π·Π°Π³ΡΠ±Π΅Π½ΠΈ? ΠΠ°Π²ΠΈΡΠΈ ΠΎΡ ΡΠ°ΠΌΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡΠ°. Π‘ΡΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ ΠΏΠΎΠΏΡΠ΅ΡΠΈ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° Π΄Π° ΡΡΠ°Π½Π΅ Π²ΠΎΠ΄Π΅ΡΠ°, Π°ΠΊΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² Π½Π΅Ρ Π΅ Ρ 1 MB ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π²ΡΠ² Π²ΠΎΠ΄Π΅ΡΠ°ΡΠ°, ΡΠΎΠ΅ΡΡ Π΄ΠΎ 1 MB Π·Π°ΠΏΠΈΡΠΈ ΠΌΠΎΠ³Π°Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π³ΡΠ±Π΅Π½ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π° ΡΠ°Π±ΠΎΡΠ°.
Π’ΠΎΠ²Π° Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ. ΠΠΊΠΎ Π»ΠΈΠ΄Π΅ΡΡΡ ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ, Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΠ΅ΠΊΠΈ Π·Π°ΠΏΠΈΡ, ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ Π½Π° Π»ΠΈΠ΄Π΅ΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ.
Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ° ΡΠΌΠΈΡΡΠ» Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠ°ΠΊΡΡΠ²Π°Π½Π΅, ΠΊΡΠ΄Π΅ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈΠΌΠ° ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ Π² ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. ΠΠ°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ Π½Π΅ΡΠΎ Π·Π° ΡΠ°ΠΊΠΎΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ° Π²Π°Π»ΠΈΠ΄Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ. Π‘Π΅Π³Π° ΠΏΠΎΠΌΠΈΡΠ»Π΅ΡΠ΅ Π·Π° ΡΠΎΡΠΈΠ°Π»Π½Π° ΠΌΡΠ΅ΠΆΠ°, Π² ΠΊΠΎΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° Π΅ Π΄Π° Π·Π°Π΄ΡΡΠΆΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, ΠΊΠ°ΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-Π±ΡΡΠ·ΠΎ. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Ρ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΠΊΠΎΠΊΠΎΠ²Π΅ ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠ°ΠΊΠ°Π½Π΅ Π·Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ Π½Π΅ Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΡ, Π·Π° ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΈΡΠ»ΠΈΡΠ΅.
ΠΠΎΠΌΠΏΡΠΎΠΌΠΈΡ 3: Π‘ΡΠΈΠ²ΠΎΠ²Π΅
ΠΠ½ΠΎΠ³ΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ Π΄ΡΡΠΆΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΠΎΠ²ΡΠ΅Π΄Π°. ΠΠΎΠΌΠΈΡΠ»Π΅ΡΠ΅ Π·Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΡΠΎ Π΅Π΄Π½Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΡΡ. ΠΠΎΠ³Π°ΡΠΎ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ, Π»ΠΈΠ΄Π΅ΡΡΡ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°, ΡΠΎΠ΅ΡΡ ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π·Π°ΠΏΠΈΡΠΈ, Π±Π΅Π· Π΄Π° ΡΠ°ΠΊΠ° Π»ΠΈΠΏΡΠ²Π°ΡΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅ ΡΠ΅ Π²ΡΡΠ½Π°Ρ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°, ΡΠ΅ Π½Π°ΡΡΠΈΠ³Π°Ρ Π»ΠΈΠ΄Π΅ΡΠ°. ΠΡΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, Π°ΠΊΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅ Π½Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΡΡ, ΡΠΎΠ³Π°Π²Π° Π»ΠΈΠ΄Π΅ΡΡΡ Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ° ΠΈΠ·Π±ΠΎΡ ΠΈ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΡΠ°ΠΊΠ° ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° Π°Π½Π³Π°ΠΆΠΈΡΠ°Π½Π΅, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ° ΡΠ΅ Π²ΡΡΠ½Π΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ΅ ΠΈ Π°Π½Π³Π°ΠΆΠΈΡΠ° Π·Π°ΠΏΠΈΡΠ°.
ΠΠ΄Π½Π° Π²ΡΡΠ·ΠΊΠ° Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ?
ΠΡΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΡΠΈΠΏ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ. ΠΡΠ²Π΅Π½ Π°ΠΊΠΎ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π½Π΅ Π΅ Π½Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΠ»Π°ΡΠ°Π½Π΅ Π½Π° ΡΠΌΠ΅ΡΠΊΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌΠ΅, ΡΠ΅ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΈΠ»ΠΈ Π½Π°ΡΠ΅ΡΠΎ ΠΏΠΎΡΡΠΈ Π΅ΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠΎΡΠΈΠ°Π»Π½ΠΈ ΠΌΡΠ΅ΠΆΠΈ. ΠΡΠ² Π²ΡΠΈΡΠΊΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈ ΡΠ»ΡΡΠ°ΠΈ ΡΠ΅ ΠΈΠΌΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π½ΡΠΊΠΎΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ, Π° Π΄ΡΡΠ³ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΈ. ΠΠΎΠΆΠ΅ Π΄Π° Π½Π΅ ΠΈΡΠΊΠ°ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΄Π° ΡΠ°ΠΊΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΎ Π΄ΠΎ ΡΠ°ΡΠ°, Π±ΡΠ΄Π΅ Π°Π½Π³Π°ΠΆΠΈΡΠ°Π½ΠΎ, Π½ΠΎ Π°ΠΊΠΎ ΠΏΠ»Π°ΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° Π² ΡΡΡΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ°ΠΊΠ°ΡΠ΅.
ΠΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠ·Π΅ΠΌΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΡΠΎΠ²Π° ΠΊΠΎΠ³Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ° ΠΎΡ Π²Π°ΡΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ. ΠΠ°ΠΆΠ½ΠΎ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡ Π½Π° Π½ΠΈΠ²ΠΎ SQL Π·Π° Π²ΡΡΠ·ΠΊΠΈ ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
ΠΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ PostgreSQL ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ. Π’ΠΎΠ²Π° ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ° synchronous_commit
. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π² ΠΏΠΎΠ·ΠΈΡΠΈΡ on
, Π½ΠΎ ΠΈΠΌΠ° ΡΡΠΈ Π΄ΡΡΠ³ΠΈ ΠΎΠΏΡΠΈΠΈ: local
, remote_write
ΠΈΠ»ΠΈ off
.
ΠΠΎΠ³Π°ΡΠΎ Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Π½Π° off
Π²ΡΠΈΡΠΊΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ ΡΠ° ΡΠΏΡΠ΅Π½ΠΈ, Π΄ΠΎΡΠΈ Π² Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠΎΠΊΠ°Π»Π½ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΊΠ°Π·Π²Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π·Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, Π½ΠΎ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ. 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
Π² ΡΠ΄Π΅Π»ΠΊΠ°.
Π‘ ΡΠ°Π·ΠΈ ΠΌΠ°Π»ΠΊΠ° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ» Π²ΡΡΡ Ρ ΡΡΡ Π½Π°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com