digital-garden/_inbox/Happens before.md

2.1 KiB
Raw Blame History

aliases tags date zero-link parents linked
зрелость/🌱
2024-06-09
../garden/ru/meta/zero/00 Разработка

[!WARNING] Нихуя не понятно, но очень интересно

Две операции конкуренты тогда и только тогда, когда они независимы.

Заметки от лектора:

  • Операции выполняются независимо. Выполняются все операции.

Механика:

  • Сервер хранит номера версий для всех ключей, увеличивая номер версии всякий раз при выполнении записи значения для этого ключа, и сохраняет номер версии вместе с записанным значением.
  • При чтении ключа клиентом сервер возвращает все не перезаписанные значения, а также последний номер версии. Клиент должен прочитать ключ перед операцией записи.
  • Записывая значение для ключа, надо включить номер версии из предыдущей операции чтения, а также объединить все полученные при предыдущей операции чтения значения. Полученный ответ может быть таким же, как и для чтения.
  • Сервер, получив информацию об операции записи с конкретным номером версии, может перезаписать все значения с этим или более низким номером версии, так как знает, что все они слиты воедино в новом значении, но должен сохранить все значения с более высоким номером версии, поскольку эти значения конкурентны.