Π‘ΠΎΠ»ΡŒΡˆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ это ΠΎ Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².: Jaana Dogan β€” ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ΠΈΠ· Google, которая Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ занимаСтся вопросами Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΠΎΡΡ‚ΠΈ production-сСрвисов ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, написанных Π½Π° Go. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅, снискавшСй Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Ρƒ англоязычной Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΠΎΠ½Π° Π² 17 ΠΏΡƒΠ½ΠΊΡ‚Π°Ρ… собрала Π²Π°ΠΆΠ½Ρ‹Π΅ тСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ Π‘Π£Π‘Π” (Π° ΠΈΠ½ΠΎΠ³Π΄Π° β€” распрСдСлённых систСм Π² Ρ†Π΅Π»ΠΎΠΌ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ…/Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ это ΠΎ Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ своС состояниС ΠΈ, соотвСтствСнно, Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² Π½Π΅ΠΊΠΎΠΉ систСмС хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π― Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Π»Π° знания ΠΎ Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠΏΡƒΡ‚Π½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ ошибки ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ²ΡˆΠΈΠ΅ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ пСрСбоям Π² Ρ€Π°Π±ΠΎΡ‚Π΅. Π’ систСмах, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… большиС ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π»Π΅ΠΆΠ°Ρ‚ Π² сСрдцС систСмной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ элСмСнтом ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ Π‘Π” удСляСтся ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, часто ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ лишь Π²Π΅Ρ€Ρ…ΡƒΡˆΠΊΠΎΠΉ айсбСрга. Π’ этой сСрии статСй я дСлюсь Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ идСями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π² этой области.

  1. Π’Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, Ссли 99,999% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡΠ΅Ρ‚ΡŒ Π½Π΅ являСтся источником ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.
  2. ACID ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ мноТСство Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ.
  3. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±Π°Π·Ρ‹ свои ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ обСспСчСния согласованности ΠΈ изоляции.
  4. ΠžΠΏΡ‚ΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΡƒ, ΠΊΠΎΠ³Π΄Π° слоТно ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ.
  5. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ ΠΊΡ€ΠΎΠΌΠ΅ «грязных» Ρ‡Ρ‚Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….
  6. Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ всСгда приходят ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ мнСнию ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ порядка дСйствий.
  7. Π¨Π°Ρ€Π΄ΠΈΠ½Π³ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния ΠΌΠΎΠΆΠ½ΠΎ вынСсти Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ прилоТСния.
  8. АвтоинкрСмСнтированиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ опасным.
  9. Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ (stale) Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΈ Π½Π΅ Π½ΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π² Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ΅.
  10. ИскаТСния Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ для Π»ΡŽΠ±Ρ‹Ρ… источников Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
  11. Π£ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.
  12. ВрСбования ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ слСдуСт ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.
  13. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ опасны.
  14. Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ привязаны ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ прилоТСния.
  15. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ запросов ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
  16. Онлайн-миграция слоТна, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°.
  17. Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой рост нСпрСдсказуСмости.

Π₯ΠΎΡ‡Ρƒ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Emmanuel Odeke, Rein Henrichs ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π·Π° ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь ΠΏΠΎ Ρ€Π°Π½Π½Π΅ΠΉ вСрсии этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π’Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, Ссли 99,999% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡΠ΅Ρ‚ΡŒ Π½Π΅ являСтся источником ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ

ΠžΡΡ‚Π°Π΅Ρ‚ΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ вопрос ΠΎ Ρ‚ΠΎΠΌ, насколько Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ соврСмСнныС сСтСвыС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΊΠ°ΠΊ часто систСмы ΠΏΡ€ΠΎΡΡ‚Π°ΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ·-Π·Π° сбоСв Π² Ρ€Π°Π±ΠΎΡ‚Π΅ сСти. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ этому вопросу нСдостаточно, ΠΈ часто Π² исслСдованиях ΠΏΡ€Π΅ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ со спСциализированными сСтями, ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ пСрсоналом.

ИмСя ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ доступности Π² 99,999% для Spanner (глобально распрСдСлСнной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Google), Google ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 7,6% ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ связаны с ΡΠ΅Ρ‚ΡŒΡŽ. ΠŸΡ€ΠΈ этом компания Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ свою ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΡΠ΅Ρ‚ΡŒ Β«Π³Π»Π°Π²Π½ΠΎΠΉ ΠΎΠΏΠΎΡ€ΠΎΠΉΒ» высокой доступности. ИсслСдованиС Bailis ΠΈ Kingsbury, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π² 2014 Π³ΠΎΠ΄Ρƒ, бросаСт Π²Ρ‹Π·ΠΎΠ² ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Β«Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΎ распрСдСлСнных вычислСниях», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Peter Deutsch сформулировал Π² 1994 Π³ΠΎΠ΄Ρƒ. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ ΡΠ΅Ρ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Π°?

ΠŸΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Ρ… исслСдований Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ-Π³ΠΈΠ³Π°Π½Ρ‚ΠΎΠ², ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°, просто Π½Π΅ сущСствуСт. Π’Π°ΠΊΠΆΠ΅ нСдостаточно Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ основных ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ² ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² связан с ΡΠ΅Ρ‚ΡŒΡŽ. ΠœΡ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ освСдомлСны ΠΎ пСрСбоях Π² сСтСвом стСкС ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ², способных вывСсти ΠΈΠ· строя Ρ†Π΅Π»Ρ‹ΠΉ кусок Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° Π½Π° нСсколько часов просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ это самыС рСзонансныС события, Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ большоС число людСй ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. ΠŸΠ΅Ρ€Π΅Π±ΠΎΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ сСти ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ источником ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Π³ΠΎΡ€Π°Π·Π΄ΠΎ большСм числС случаСв, Π΄Π°ΠΆΠ΅ Ссли Π½Π΅ всС эти случаи ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² Ρ†Π΅Π½Ρ‚Ρ€ всСобщСго внимания. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… сСрвисов Ρ‚Π°ΠΊΠΆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°ΡŽΡ‚ ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ случаС сбоя практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π΅Π³ΠΎ с сСтСвой ошибкой Π½Π° сторонС поставщика услуг. Для Π½ΠΈΡ… сторонниС сСрвисы β€” это Ρ‡Π΅Ρ€Π½Ρ‹Π΅ ящики. НСвозмоТно ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ воздСйствиС, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‡ΠΈ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌ поставщиком услуг.

Учитывая Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΈΠ³Ρ€ΠΎΠΊΠΈ ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ ΠΎ своих систСмах, ΠΌΠΎΠΆΠ½ΠΎ с ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, Ссли слоТности с ΡΠ΅Ρ‚ΡŒΡŽ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ лишь Π·Π° нСбольшой ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, приводящих ΠΊ простоям. Π‘Π΅Ρ‚Π΅Π²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ всС Π΅Ρ‰Π΅ ΡΡ‚Ρ€Π°Π΄Π°ΡŽΡ‚ ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… заурядных Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΠ°Π·Ρ‹ оборудования, смСна Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ, измСнСния административной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ питания. НСдавно я с ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡƒΠ·Π½Π°Π»Π°, Ρ‡Ρ‚ΠΎ ΠΊ ΠΏΠ΅Ρ€Π΅Ρ‡Π½ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ добавились укусы Π°ΠΊΡƒΠ» (Π΄Π°, Π²Ρ‹ Π½Π΅ ΠΎΡΠ»Ρ‹ΡˆΠ°Π»ΠΈΡΡŒ).

ACID ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ мноТСство Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ

Акроним ACID ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΠ½ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ, ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ, Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΈ свойства Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΈΠ·Π²Π°Π½Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° случай сбоСв, ошибок, ΠΎΡ‚ΠΊΠ°Π·ΠΎΠ² оборудования ΠΈ Ρ‚.ΠΏ. Π‘Π΅Π· ACID ΠΈΠ»ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… схСм Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Ρ‹Π»ΠΎ Π±Ρ‹ слоТно провСсти Π³Ρ€Π°Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π·ΠΎΠ½ΠΎΠΉ своСй отвСтствСнности ΠΈ Ρ‚Π΅ΠΌ, Π·Π° Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ рСляционных Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Π±Ρ‹Ρ‚ΡŒ совмСстимыми с ACID, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Π²Ρ€ΠΎΠ΄Π΅ NoSQL ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠ»ΠΈ мноТСство Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· ACID-Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡ… рСализация обходится Π΄ΠΎΡ€ΠΎΠ³ΠΎ.

Когда я Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΡˆΠ»Π° Π² ΠΎΡ‚Ρ€Π°ΡΠ»ΡŒ, наш Ρ‚Π΅Ρ…Π»ΠΈΠ΄ рассуТдал ΠΎ Ρ‚ΠΎΠΌ, насколько Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π° концСпция ACID. БправСдливости Ρ€Π°Π΄ΠΈ слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ACID считаСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Ρ‹ΠΌ описаниСм, Π° Π½Π΅ строгим стандартом Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. БСгодня я Π½Π°Ρ…ΠΎΠΆΡƒ Π΅Π³ΠΎ прСимущСствСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ вопросов (ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ спСктр Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ).

НС всякая Π‘Π£Π‘Π” соотвСтствуСт трСбованиям ACID; ΠΏΡ€ΠΈ этом ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ACID Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π· ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π½Π°Π±ΠΎΡ€ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ. Одна ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ACID связана с ΠΎΠ±ΠΈΠ»ΠΈΠ΅ΠΌ компромиссов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходится ΠΈΠ΄Ρ‚ΠΈ Ρ€Π°Π΄ΠΈ внСдрСния Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ACID. Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ свои Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ ACID-совмСстимыС, ΠΏΡ€ΠΈ этом интСрпрСтация ΠΏΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… случаСв ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ «маловСроятных» событий. По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π° высоком ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² тонкостях Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ прСдставлСниС ΠΎΠ± ΠΈΡ… особых Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… ΠΈ компромиссах ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π”Π΅Π±Π°Ρ‚Ρ‹ ΠΎ Ρ‚ΠΎΠΌ, насколько MongoDB соотвСтствуСт трСбованиям ACID, Π½Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Π°ΠΆΠ΅ послС Π²Ρ‹Ρ…ΠΎΠ΄Π° 4-ΠΎΠΉ вСрсии. MongoDB Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π»Π° ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, хотя ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ фиксация Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° диск ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»Π°ΡΡŒ Π½Π΅ Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ Ρ€Π°Π· Π² 60 сСкунд. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сцСнарий: ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ Π΄Π²Π΅ записи (w1 ΠΈ w2). MongoDB ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ сохраняСт w1, Π½ΠΎ w2 тСряСтся ΠΈΠ·-Π·Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ сбоя.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ это ΠΎ Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
Π‘Ρ…Π΅ΠΌΠ°, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ сцСнарий. MongoDB ΠΏΠ°Π΄Π°Π΅Ρ‚ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ успСваСт Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° диск

Ѐиксация Π½Π° диск β€” дорогостоящий процСсс. ИзбСгая частых фиксаций, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°ΡŽΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ записи, ТСртвуя Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ. На сСгодняшний дСнь MongoDB ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ «грязныС» записи всС Π΅Ρ‰Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° цСлостности Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΆΡƒΡ€Π½Π°Π»Ρ‹ Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 100 мс. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ сцСнарий всС Π΅Ρ‰Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ для ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ² ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, прСдставлСнных Π² Π½ΠΈΡ…, хотя риск Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π½ΠΈΠΆΠ΅.

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±Π°Π·Ρ‹ свои ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ обСспСчСния согласованности ΠΈ изоляции

Из числа Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ACID ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ изоляция ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ…Π²Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ самым большим количСством Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ спСктр компромиссов ΡˆΠΈΡ€Π΅. Надо ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ изоляция β€” довольно Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Они Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΡΠΈΠ»ΠΈΠ²Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡŽ Ρ€Π°Π΄ΠΈ согласованности Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ возрастаСт ΠΏΡ€ΠΈ нСобходимости Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ ΠΏΠΎ нСскольким Π¦ΠžΠ” (особСнно Ссли ΠΎΠ½ΠΈ находятся Π² Ρ€Π°Π·Π½Ρ‹Ρ… гСографичСских Ρ€Π΅Π³ΠΈΠΎΠ½Π°Ρ…). Π”ΠΎΠ±ΠΈΡ‚ΡŒΡΡ высокого уровня согласованности ΠΎΡ‡Π΅Π½ΡŒ слоТно, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠΏΡƒΡ‚Π½ΠΎ сниТаСтся Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΈ увСличиваСтся сСгмСнтация сСти. Для Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ объяснСния этого Ρ„Π΅Π½ΠΎΠΌΠ΅Π½Π° ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠ΅ БАР. Π‘Ρ‚ΠΎΠΈΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ прилоТСния способны ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с нСбольшой Π½Π΅ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ, Π° программисты ΠΌΠΎΠ³ΡƒΡ‚ достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½ΡŽΠ°Π½ΡΡ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ с Π½Π΅ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ, Π½Π΅ сильно полагаясь Π½Π° Π‘Π” Π² этом вопросС.

Π‘Π£Π‘Π” часто ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ изоляции. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивный ΠΈΠ· Π½ΠΈΡ…, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° своих прСдпочтСниях. Низкая изоляция позволяСт ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠΏΡƒΡ‚Π½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ риск возникновСния Π³ΠΎΠ½ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (data race). Высокая изоляция сниТаСт эту Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Π½ΠΎ замСдляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠΈ, которая ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚Π°ΠΊΠΈΠΌ Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π°ΠΌ Π² Π±Π°Π·Π΅, Ρ‡Ρ‚ΠΎ начнутся сбои.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ это ΠΎ Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
ΠžΠ±Π·ΠΎΡ€ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ взаимосвязСй ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ SQL опрСдСляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ уровня изоляции, хотя Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΈ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈΡ… число Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС. Jepson.io ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°. НапримСр, Google Spanner Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ внСшнюю ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ с синхронизациСй часов, ΠΈ хотя это Π±ΠΎΠ»Π΅Π΅ строгий слой изоляции, ΠΎΠ½ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² стандартных слоях изоляции.

Π’ стандартС SQL ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ изоляции:

  • Serializable (самый ТСсткий ΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹ΠΉ): сСриализуСмоС исполнСниС ΠΈΠΌΠ΅Π΅Ρ‚ эффСкт, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ каТдая ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ транзакция начинаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Serializable часто рСализуСтся Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ snapshot-изоляции (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Oracle) ΠΈΠ·-Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, хотя сама snapshot-изоляция Π½Π΅ прСдставлСна Π² стандартС SQL.
  • Repeatable reads: нСзафиксированныС записи Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ доступны для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π½ΠΎ измСнСния, сдСланныС Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ транзакциями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠ²Ρ‹Π΅ строки), Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹.
  • Read committed: нСзафиксированныС Π΄Π°Π½Π½Ρ‹Π΅ нСдоступны для Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Π’ этом случаС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ зафиксированныС Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΈ этом ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ„Π°Π½Ρ‚ΠΎΠΌΠ½Ρ‹Π΅ чтСния. Если нСкая транзакция вставит ΠΈ зафиксируСт Π½ΠΎΠ²Ρ‹Π΅ строки, тСкущая транзакция смоТСт ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈ запросС.
  • Read uncommitted (Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ строгий ΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ): «грязноС» Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ допустимо, Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ нСзафиксированныС измСнСния, внСсСнныС Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ транзакциями. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ этот ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ для ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ†Π΅Π½ΠΎΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для запросов COUNT(*) Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ Serializable ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ риск возникновСния Π³ΠΎΠ½ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈ этом Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Π΅Π½ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ самой высокой ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½Π° систСму. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΡƒΡ€ΠΎΠ²Π½ΠΈ изоляции Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»Π΅Π³Ρ‡Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ возрастаСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π³ΠΎΠ½ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…. НСкоторыС Π‘Π£Π‘Π” ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изолированности, Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅ прСдпочтСния ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π΅ всС ΡƒΡ€ΠΎΠ²Π½ΠΈ.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ изолированности часто рСкламируСтся Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Π‘Π£Π‘Π”, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΅Π΅ повСдСния позволяСт ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ происходит.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ это ΠΎ Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
ΠžΠ±Π·ΠΎΡ€ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… уровнях изоляции для Ρ€Π°Π·Π½Ρ‹Ρ… Π‘Π£Π‘Π”

Martin Kleppmann Π² своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ hermitage ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ сравнСниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ изоляции, рассказываСт ΠΎΠ± аномалиях ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ ΠΎ Ρ‚ΠΎΠΌ, способна Π»ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ уровня изоляции. ИсслСдования Kleppmann’а ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, насколько ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ сСбС ΡƒΡ€ΠΎΠ²Π½ΠΈ изоляции.

ΠžΠΏΡ‚ΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΡƒ, ΠΊΠΎΠ³Π΄Π° слоТно ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½ΠΎΠΉ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ уТСсточаСт ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡŽ Π² Π±Π°Π·Π΅, Π½ΠΎ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ постоянного ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚ сСрвСров прилоТСния ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. БСгмСнтация сСти способна ΡƒΡΡƒΠ³ΡƒΠ±ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ с ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΈ привСсти ΠΊ возникновСнию Ρ‚ΡƒΠΏΠΈΠΊΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ. Π’ случаях, ΠΊΠΎΠ³Π΄Π° монопольная Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ оптимистичСская.

ΠžΠΏΡ‚ΠΈΠΌΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈ считывании строки учитываСтся Π΅Π΅ вСрсия, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма ΠΈΠ»ΠΈ врСмя послСднСго измСнСния. Благодаря этому ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ запись, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² отсутствии Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΠ³ΠΎ измСнСния вСрсии:

UPDATE products
SET name = 'Telegraph receiver', version = 2
WHERE id = 1 AND version = 1

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ products Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ, Ссли Ρ€Π°Π½Π΅Π΅ другая опСрация внСсла измСнСния Π² эту строку. Если ΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π΄Π°Π½Π½ΠΎΠΉ строкой Π½Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ для ΠΎΠ΄Π½ΠΎΠΉ строки ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΈ ΠΌΡ‹ смоТСм ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ ΠΊΡ€ΠΎΠΌΠ΅ «грязных» Ρ‡Ρ‚Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

Когда Ρ€Π΅Ρ‡ΡŒ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎ согласованности Π΄Π°Π½Π½Ρ‹Ρ…, основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌΡƒ возникновСнию условий Π³ΠΎΠ½ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ «грязным» чтСниям ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Однако Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ этим Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ.

Одним ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ‚Π°ΠΊΠΈΡ… Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ ΡΠ²Π»ΡΡŽΡ‚ΡΡ искаТСния записи (write skews). ИскаТСния слоТно ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡ… Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π½Π΅ ΠΈΡ‰ΡƒΡ‚. Они связаны Π½Π΅ с «грязными» чтСниями ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Π° с Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡΠΌΠΈ логичСских ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π½Π°Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… Π½Π° Π΄Π°Π½Π½Ρ‹Π΅.

НапримСр, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим прилоТСния для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ постоянно Π±Ρ‹Π» on-call:

BEGIN tx1;                      BEGIN tx2;
SELECT COUNT(*)
FROM operators
WHERE oncall = true;
0                               SELECT COUNT(*)
                                FROM operators
                                WHERE oncall = TRUE;
                                0
UPDATE operators                UPDATE operators
SET oncall = TRUE               SET oncall = TRUE
WHERE userId = 4;               WHERE userId = 2;
COMMIT tx1;                     COMMIT tx2;

Π’ ситуации Π²Ρ‹ΡˆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ искаТСниС записи, Ссли ΠΎΠ±Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ зафиксированы. Π₯отя «грязных» Ρ‡Ρ‚Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… оказалась Π½Π°Ρ€ΡƒΡˆΠ΅Π½Π°: Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π²Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ on-call.

БСриализуСмая изоляция, строСниС схСмы ΠΈΠ»ΠΈ ограничСния Π‘Π” ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² устранСнии искаТСний записи. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΌΠ΅Ρ‚ΡŒ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π²ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΈΡ… Π² production. ΠŸΡ€ΠΈ этом искаТСния записи ΠΊΡ€Π°ΠΉΠ½Π΅ тяТСло ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅. ОсобСнно Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… систСмах, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° основС ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой особСнности доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.

Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ всСгда приходят ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ мнСнию ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ порядка дСйствий

Одна ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… особСнностСй Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… β€” это Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ порядка выполнСния, ΠΎΠ΄Π½Π°ΠΊΠΎ сам этот порядок ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π΅Π½ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ПО. Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² порядкС получСния, Π° Π½Π΅ Π² Ρ‚ΠΎΠΌ порядкС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ программисты. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ выполнСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ слоТно ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, особСнно Π² высоконагруТСнных ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… систСмах.

Π’ΠΎ врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, особСнно ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΡΡ‚ΠΈΠ»ΡŒ ΠΈ низкая Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, хотя Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² Π±Π°Π·Ρƒ Π² любом порядкС.

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π’1 ΠΈ Π’2 Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Ссли эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈ сразу Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²ΠΈΠ΄Π΅ promise, Ρ‚ΠΎ порядок Π²Ρ‹Π·ΠΎΠ²Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ поступили Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…:

result1 = T1() // Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ β€” это promises
result2 = T2()

Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π»ΠΈΠ±ΠΎ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹, Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅Ρ€Π²Π°Π½Ρ‹) ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π’1 ΠΈ Π’2 Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΅Π΄ΠΈΠ½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Π¨Π°Ρ€Π΄ΠΈΠ½Π³ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния ΠΌΠΎΠΆΠ½ΠΎ вынСсти Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ прилоТСния

Π¨Π°Ρ€Π΄ΠΈΠ½Π³ β€” это способ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ раздСлСния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. НСкоторыС Π±Π°Π·Ρ‹ ΡƒΠΌΠ΅ΡŽΡ‚ автоматичСски Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ этого Π½Π΅ ΡƒΠΌΠ΅ΡŽΡ‚, ΠΈΠ»ΠΈ ΠΈΠΌ это удаСтся Π½Π΅ слишком Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Когда Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…/Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ пространствС вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ€Π°Π±ΠΎΡ‚Ρƒ Π‘Π”. Π­Ρ‚ΠΎΡ‚ процСсс называСтся Β«ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния» (application-level sharding).

Π£Π²Ρ‹, Ρ‚Π°ΠΊΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ часто создаСт Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ прСдставлСниС, Ρ‡Ρ‚ΠΎ ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³ ΠΎΠ±ΠΈΡ‚Π°Π΅Ρ‚ Π² сСрвисах прилоТСния. На самом Π΄Π΅Π»Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ слоя ΠΏΠ΅Ρ€Π΅Π΄ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ зависимости ΠΎΡ‚ роста Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ схСмы, трСбования ΠΊ ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³Ρƒ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ вСсьма слоТными. ΠŸΡ€ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стратСгиях ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π±Π΅Π· нСобходимости ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ сСрвСры прилоТСния.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ это ΠΎ Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сСрвСры прилоТСния ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΡ‚ сСрвиса ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³Π°

Вынос ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСрвис Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ возмоТности ΠΏΠΎ использованию Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… стратСгий ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³Π° Π±Π΅Π· нСобходимости Π·Π°Π½ΠΎΠ²ΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΈΡ‚ΡŒ прилоТСния. Vitess β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠΉ систСмы ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³Π° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния. Vitess обСспСчиваСт Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³ для MySQL ΠΈ позволяСт ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² Π½Π΅ΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» MySQL. БистСма сСгмСнтируСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΡƒΠ·Π»Π°ΠΌ MySQL, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π·Π½Π°ΡŽΡ‰ΠΈΠΌ Π΄Ρ€ΡƒΠ³ ΠΎ Π΄Ρ€ΡƒΠ³Π΅.

АвтоинкрСмСнтированиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ опасным

AUTOINCREMENT β€” распространСнный способ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. НСрСдко Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ случаи, ΠΊΠΎΠ³Π΄Π° Π‘Π” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ID, Π° Π² Π±Π°Π·Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ². БущСствуСт нСсколько ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ гСнСрация ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ auto-incrementing’Π° Π΄Π°Π»Π΅ΠΊΠ° ΠΎΡ‚ ΠΈΠ΄Π΅Π°Π»Π°:

  • Π’ распрСдСлСнной Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… auto-incrementing прСдставляСт собой ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ID Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° глобальная Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°. ВмСсто этого ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ UUID: для этого Π½Π΅ потрСбуСтся взаимодСйствиС Ρ€Π°Π·Π½Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ² Π±Π°Π·Ρ‹. Auto-incrementing с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠΈ ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ вставках Π² распрСдСлСнных ситуациях. НСкоторым Π‘Π£Π‘Π” (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, MySQL) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ особая настройка ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ мастСр-мастСр. А ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π»Π΅Π³ΠΊΠΎ ΠΎΡˆΠΈΠ±ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ сбоям записи.
  • Π£ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Π°Π· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ партицирования основаны Π½Π° ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π°Ρ…. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ID ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ нСпрСдсказуСмому возникновСнию «горячих Ρ‚ΠΎΡ‡Π΅ΠΊΒ» ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΡΡ‚Π°ΠΈΠ²Π°Ρ‚ΡŒ.
  • ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ β€” это самый быстрый способ доступа ΠΊ строкС Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π»ΡƒΡ‡ΡˆΠΈΡ… способов ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ записСй, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ID ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ самый Π²Π°ΠΆΠ½Ρ‹ΠΉ столбСц Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… Π² бСсполСзный, Π½Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ бСссмыслСнными значСниями. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ возмоТности, поТалуйста, Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ глобально ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ СстСствСнный ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ).

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ, рассмотритС влияниС auto-increment’ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ID ΠΈ UUID Π½Π° индСксированиС, ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³.

Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ (stale) Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌ доступом с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ многовСрсионности (MVCC) Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ трСбования ΠΊ согласованности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΈΡΡŒ Π²Ρ‹ΡˆΠ΅. НСкоторыС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Postgres, Spanner) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ MVCC Β«ΡΠΊΠ°Ρ€ΠΌΠ»ΠΈΠ²Π°ΡŽΡ‚Β» транзакциям снимки (snapshot’Ρ‹) β€” Π±ΠΎΠ»Π΅Π΅ старыС вСрсии Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ со snapshot’Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ для обСспСчСния согласованности. ΠŸΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΈΠ· старого snapshot’a ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π§Ρ‚Π΅Π½ΠΈΠ΅ слСгка ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° основС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ вычислСнии ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Ρ‹Ρ… Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ прСимущСство Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ β€” низкая Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° (особСнно Ссли Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… распрСдСлСна ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ гСографичСским Ρ€Π΅Π³ΠΈΠΎΠ½Π°ΠΌ). Π’Ρ‚ΠΎΡ€ΠΎΠ΅ β€” Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Β«Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния» свободны ΠΎΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π­Ρ‚ΠΎ сущСствСнноС прСимущСство для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚, Ссли, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, допустима Ρ€Π°Π±ΠΎΡ‚Π° с ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ это ΠΎ Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
Π‘Π΅Ρ€Π²Π΅Ρ€ прилоТСния считываСт с локальной Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π΄Π°Π½Π½Ρ‹Π΅, ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Π½Π° 5 сСкунд, Π΄Π°ΠΆΠ΅ Ссли ΠΈΡ… свСТайшая вСрсия доступна ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΡƒΡŽ сторону Π’ΠΈΡ…ΠΎΠ³ΠΎ ΠΎΠΊΠ΅Π°Π½Π°

Π‘Π£Π‘Π” автоматичСски Π·Π°Ρ‡ΠΈΡ‰Π°ΡŽΡ‚ старыС вСрсии ΠΈ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΠΎ запросу. НапримСр, Postgres позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ VACUUM ΠΏΠΎ запросу, Π° Ρ‚Π°ΠΊΠΆΠ΅ пСриодичСски ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π² автоматичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅. Spanner запускаСт сборщик мусора, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ снимков ΡΡ‚Π°Ρ€ΡˆΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ часа.

ИскаТСнию ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ Π»ΡŽΠ±Ρ‹Π΅ источники Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

Π‘Π°ΠΌΡ‹ΠΉ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ охраняСмый сСкрСт Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ всС врСмСнны́С API Π»Π³ΡƒΡ‚. На самом Π΄Π΅Π»Π΅ наши ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π½Π΅ Π·Π½Π°ΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ содСрТат ΠΊΠ²Π°Ρ€Ρ†Π΅Π²Ρ‹Π΅ кристаллы, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ колСбания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для отсчСта Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Однако ΠΎΠ½ΠΈ нСдостаточно Ρ‚ΠΎΡ‡Π½Ρ‹ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°Ρ‚ΡŒ/ΠΎΡ‚ΡΡ‚Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π‘Π΄Π²ΠΈΠ³ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Ρ‚ΡŒ 20 сСкунд Π² сутки. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ врСмя Π½Π° Π½Π°ΡˆΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ пСриодичСски ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с сСтСвым.

Для синхронизации ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ сСрвСры NTP, ΠΎΠ΄Π½Π°ΠΊΠΎ сам процСсс синхронизации ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌ ΠΈΠ·-Π·Π° сСти. Π”Π°ΠΆΠ΅ синхронизация с NTP-сСрвСром Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ NTP-сСрвСром ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π΅Ρ‰Π΅ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ искаТСнию.

АтомныС часы ΠΈ ΠΈΡ… GPS-Π°Π½Π°Π»ΠΎΠ³ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ подходят для опрСдСлСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΡ€ΠΎΠ³ΠΈ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ слоТной настройки, поэтому Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ установлСны Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ машинС. Из-Π·Π° этого Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. АтомныС ΠΈ/ΠΈΠ»ΠΈ GPS-часы ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ врСмя, послС Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΎ транслируСтся ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ машинам Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹Π΅ сСрвСры. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ машинС Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ сдвиг ΠΎΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Битуация усугубляСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ прилоТСния ΠΈ Π‘Π” часто находятся Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… (Ссли Π½Π΅ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π¦ΠžΠ”). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, врСмя Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΠ·Π»Π°Ρ… Π”Π‘, распрСдСлСнных ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ машинам. Оно Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈ Π½Π° сСрвСрС прилоТСния.

Π’ Google TrueTime Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ совсСм ΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ прогрСсс Google Π² этом Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π±Π°Π½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ Π½Π° Π°Ρ‚ΠΎΠΌΠ½Ρ‹Π΅ ΠΈ GPS-часы, Π½ΠΎ это лишь Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρ‹. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ устроСн TrueTime:

  • TrueTime ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… источника: GPS ΠΈ Π°Ρ‚ΠΎΠΌΠ½Ρ‹Π΅ часы. Π£ этих часов Π½Π΅ΠΊΠΎΡ€Ρ€Π΅Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΡ‚ΠΊΠ°Π·Π° (failure modes) [подробности см. Π½Π° 5 страницС здСсь β€” ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π².), поэтому ΠΈΡ… совмСстноС использованиС ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ.
  • Π£ TrueTime Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ API. Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ врСмя Π² Π²ΠΈΠ΄Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° с Π·Π°Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒΡŽ измСрСния ΠΈ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ. Π Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ находится Π³Π΄Π΅-Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°. Spanner, распрСдСлСнная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Google, просто доТидаСтся ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ с ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя Π²Ρ‹ΡˆΠ»ΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ привносит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ Π² систСму, особСнно Ссли Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π½Π° мастСрах высока, Π½ΠΎ обСспСчиваСт ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Π² глобально распрСдСлСнной ситуации.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ это ΠΎ Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Spanner ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ TrueTime, Π³Π΄Π΅ TT.now() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Spanner просто спит Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ навСрняка ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя ΠΏΠ΅Ρ€Π΅Π²Π°Π»ΠΈΠ»ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΡƒ

Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ точности опрСдСлСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ рост Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Spanner ΠΈ сниТСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ максимально Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ часы.

Π£ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Бпросив дСсяток спСциалистов ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°, Π²Ρ‹ навСрняка ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹. Π’ Π‘Π£Π‘Π” latency часто называСтся Β«Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…Β», ΠΈ ΠΎΠ½Π° отличаСтся ΠΎ Ρ‚ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ воспринимаСт ΠΊΠ»ΠΈΠ΅Π½Ρ‚. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ сумму сСтСвой Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π‘Π”. Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ критичСски Π²Π°ΠΆΠ½Π° ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Π½Π°Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. ΠŸΡ€ΠΈ сборС ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ всСгда ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΎΠ±ΠΎΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ.

ВрСбования ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ слСдуСт ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

Иногда характСристики ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π‘Π£Π‘Π” ΠΈ Π΅Π΅ ограничСния ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ пропускной способности write/read ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ. Π­Ρ‚ΠΎ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… систСмы, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½ΠΎΠ²ΠΎΠΉ Π‘Π£Π‘Π” Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²ΡΠ΅ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠ΅ критичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса ΠΈ/ΠΈΠ»ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ). ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

  • ΠŸΡ€ΠΎΠΏΡƒΡΠΊΠ½Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ записи ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΈ вставкС Π½ΠΎΠ²ΠΎΠΉ строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π₯ (с 50 ΠΌΠ»Π½. строк) с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ограничСниями ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ строк Π² связанных Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ….
  • Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π΄Ρ€ΡƒΠ·Π΅ΠΉ Π΄Ρ€ΡƒΠ·Π΅ΠΉ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΠ³Π΄Π° срСднСС число Π΄Ρ€ΡƒΠ·Π΅ΠΉ Ρ€Π°Π²Π½ΠΎ 500.
  • Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ Ρ‚ΠΎΠΏ-100 записСй ΠΈΠ· истории ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ подписан Π½Π° 500 Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с Π₯ записСй Π² час.

ΠžΡ†Π΅Π½ΠΊΠ° ΠΈ экспСримСнтированиС ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ критичСскиС случаи Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π‘Π” удовлСтворяСт трСбованиям ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. АналогичноС эмпиричСскоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ эту Ρ€Π°Π·Π±ΠΈΠ²ΠΊΡƒ ΠΏΡ€ΠΈ сборС latency-ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ SLO.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ высокой мощности (cardinality) ΠΏΡ€ΠΈ сборС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π»ΠΎΠ³ΠΈ, сбор событий ΠΈΠ»ΠΈ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ трассировку для получСния ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… с высокой ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Β«Want to Debug Latency?Β» Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с мСтодологиями ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ.

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ опасны

НС каТдая Π‘Π£Π‘Π” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° это происходит, Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ ошибкам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ всСгда Π»Π΅Π³ΠΊΠΎ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ имССтся какая-Ρ‚ΠΎ аномалия).

Π˜Π·Π±Π΅ΠΆΠ°Ρ‚ΡŒ использования Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клиСнтских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΌΠ΅ΡŽΡ‚ ΠΈΡ… ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ. Если ΠΎΡ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π½Π΅ получаСтся ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, ΠΎΡ‚Π½Π΅ΡΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с особым Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Ρ… ситуаций, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ²Π΅Ρ€ΡˆΡ‘Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ случайно ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈΠ·-Π·Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ….

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² Ρ€Π°Π·Π½Ρ‹Π΅ слои ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΌΡƒ возникновСнию Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Π° с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния читаСмости ΠΊΠΎΠ΄Π° способна ΠΎΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Π°Π²Ρ‚ΠΎΡ€Π°. ВзглянитС Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

with newTransaction():
   Accounts.create("609-543-222")
   with newTransaction():
       Accounts.create("775-988-322")
       throw Rollback();

Каков Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π°? ΠžΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ Π»ΠΈ ΠΎΠ½ ΠΎΠ±Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ? Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ созданиС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΎΡ‚ нас? Π‘ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ‹ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ случаи?

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ слой Π΄Π°Π½Π½Ρ‹Ρ… с нСсколькими опСрациями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, newAccount) ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² собствСнных транзакциях. Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… Π² Ρ€Π°ΠΌΠΊΠ°Ρ… бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ высокого уровня, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… собствСнной Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ? Какими Π² этом случаС Π±ΡƒΠ΄ΡƒΡ‚ изоляция ΠΈ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ?

function newAccount(id string) {
  with newTransaction():
      Accounts.create(id)
}

ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ бСсконСчныС вопросы, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Π’Π΅Π΄ΡŒ ваш слой Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ высокого уровня Π±Π΅Π· создания собствСнных Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° сама способна ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ нСю, Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ.

function newAccount(id string) {
   Accounts.create(id)
}
// In main application:
with newTransaction():
   // Read some data from database for configuration.
   // Generate an ID from the ID service.
   Accounts.create(id)
   Uploads.create(id) // create upload queue for the user.

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ привязаны ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ прилоТСния

Иногда Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ соблазн ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ состояниС прилоТСния Π² транзакциях, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ значСния ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса. ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ нюанс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, β€” это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ часто ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… Π² сСти. Если ΠΏΡ€ΠΈ этом транзакция зависит ΠΎΡ‚ состояния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ мСняСтся ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссом, Ρ‚ΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² зависимости ΠΎΡ‚ возмоТности возникновСния Π³ΠΎΠ½ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ риск возникновСния условий Π³ΠΎΠ½ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

var seq int64
with newTransaction():
    newSeq := atomic.Increment(&seq)
    Entries.query(newSeq)
    // Other operations...

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π²Ρ‹ΡˆΠ΅ транзакция Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ нСзависимо ΠΎΡ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Если ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π΅ удастся ΠΈΠ·-Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΡΠ΅Ρ‚ΡŒΡŽ, ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ запрос Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ запросов ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Π‘Π”

ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ запросов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊ запрос Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Они Ρ‚Π°ΠΊΠΆΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ запросы ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ. ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΎΡ†Π΅Π½ΠΊΠΈ, основанныС Π½Π° сигналах Π² ΠΈΡ… распоряТСнии. НапримСр, ΠΊΠ°ΠΊΠΎΠΉ способ поиска для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ запроса самый ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ?

SELECT * FROM articles where author = "rakyll" order by title;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ двумя способами:

  • ПолноС сканированиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ запись Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΠΈ с ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π°Π²Ρ‚ΠΎΡ€Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΈΡ….
  • ИндСксноС сканированиС: ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСкс, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ эти строки, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΈΡ….

Π—Π°Π΄Π°Ρ‡Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° запросов состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, какая стратСгия являСтся Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅ΠΉ. Π‘Ρ‚ΠΎΠΈΡ‚ ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² запросов лишь ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ возмоТности прогнозирования. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌ. Администраторы Π‘Π” ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для диагностики ΠΈ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ настройки нСэффСктивных запросов. НовыС вСрсии Π‘Π£Π‘Π” ΡƒΠΌΠ΅ΡŽΡ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² запросов, Π° самодиагностика способна ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π‘Π”, Ссли новая вСрсия ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. Π›ΠΎΠ³ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… запросов, сообщСния ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΈΠ»ΠΈ статистика Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния способны ΠΏΠΎΠΌΠΎΡ‡ΡŒ с выявлСниСм запросов, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

НСкоторыС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, прСдставляСмыС ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ запросов, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Ρ‹ ΡˆΡƒΠΌΡƒ (особСнно ΠΏΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ»ΠΈ процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ). Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ°ΠΌ ΡΠ²Π»ΡΡŽΡ‚ΡΡ инструмСнты для трассировки ΠΈ отслСТивания ΠΏΡƒΡ‚ΠΈ выполнСния. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ (ΡƒΠ²Ρ‹, Π½Π΅ всС Π‘Π£Π‘Π” ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ инструмСнты).

Онлайн-миграция слоТна, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°

Онлайн-миграция, «Тивая» миграция ΠΈΠ»ΠΈ миграция Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±Π΅Π· простоСв ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΉ коррСктности Π΄Π°Π½Π½Ρ‹Ρ…. Π–ΠΈΠ²ΡƒΡŽ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π»Π΅Π³Ρ‡Π΅ провСсти, Ссли ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ происходит Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π‘Π£Π‘Π”/Π΄Π²ΠΈΠΆΠΊΠ°. Битуация ослоТняСтся, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄ Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π‘Π£Π‘Π” с ΠΈΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ трСбованиями ΠΊ схСмС.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ. Π’ΠΎΡ‚ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ…:

  • Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π΄Π²ΠΎΠΉΠ½ΡƒΡŽ запись Π² ΠΎΠ±Π΅ Π±Π°Π·Ρ‹. Новая Π±Π°Π·Π° Π½Π° этом этапС Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ всСх Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ свСТиС Π΄Π°Π½Π½Ρ‹Π΅. УбСдившись Π² этом, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡˆΠ°Π³Ρƒ.
  • Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ с ΠΎΠ±Π΅ΠΈΡ… Π‘Π”.
  • НастройтС систСму Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ с Π½ΠΎΠ²ΠΎΠΉ Π±Π°Π·ΠΎΠΉ.
  • ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ запись Π² ΡΡ‚Π°Ρ€ΡƒΡŽ Π±Π°Π·Ρƒ, ΠΏΡ€ΠΈ этом продолТая ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ· Π½Π΅Π΅ Π΄Π°Π½Π½Ρ‹Π΅. На этом этапС новая Π‘Π” ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ лишСна части Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Ρ… слСдуСт ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· старой Π±Π°Π·Ρ‹.
  • Бтарая Π±Π°Π·Π° доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· старой Π‘Π” Π² Π½ΠΎΠ²ΡƒΡŽ. ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΠΈ Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ, Π° ΡΡ‚Π°Ρ€ΡƒΡŽ остановитС ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ ΠΈΠ· систСмы.

Π—Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΡΡ‚Π°Ρ‚ΡŒΠ΅, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Stripe Π½Π° основС этой ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой рост нСпрСдсказуСмости

Рост Π‘Π” ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСпрСдсказуСмым ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ, связанным с Π΅Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΎΠΌ. Π§Π΅ΠΌ большС ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ устройствС Π‘Π”, Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. ΠŸΡ€ΠΈ этом Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ всС ΠΆΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Ρ‚ΡŒ.
Π‘ ростом Π±Π°Π·Ρ‹ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠ΅ прСдполоТСния ΠΈ оТидания ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ объСма Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ пропускной способности сСти ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡΡ‚Π°Ρ€Π΅Ρ‚ΡŒ. ИмСнно Ρ‚ΠΎΠ³Π΄Π° встаСт вопрос ΠΎ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΌ пСрСсмотрС схСмы, ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΡ… Π² эксплуатации, пСрСосмыслСнии Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π‘Π£Π‘Π”, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Но Π½Π΅ Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ устройства ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉΡΡ Π‘Π” β€” это СдинствСнноС, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. НовыС ΠΌΠ°ΡΡˆΡ‚Π°Π±Ρ‹ принСсут с собой Π½ΠΎΠ²Ρ‹Π΅ нСизвСстныС. НСпрСдсказуСмыС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅ распрСдСлСниС Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с пропускной ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, постоянно растущий Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΈ Π½ΠΎΠ²Ρ‹Π΅ сСгмСнты Π² сСти заставят вас ΠΏΠ΅Ρ€Π΅ΠΎΡΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Π‘Π”, модСль Π΄Π°Π½Π½Ρ‹Ρ…, модСль развСртывания, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€.

На ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° я Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π΄ΡƒΠΌΠ°Π»Π°ΡΡŒ ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π² ΠΌΠΎΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ спискС ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ Π½Π° ΠΏΡΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² большС. Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ΄Π΅ΠΉ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ максимального внимания. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΌΠ° исчСрпана ΠΈ я большС Π½Π΅ Π²Π΅Ρ€Π½ΡƒΡΡŒ ΠΊ Π½Π΅ΠΉ Π² своих Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°Ρ… ΠΈ Π½Π΅ Π±ΡƒΠ΄Ρƒ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² Π½Ρ‹Π½Π΅ΡˆΠ½ΡŽΡŽ.

P.S.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π² нашСм Π±Π»ΠΎΠ³Π΅:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com