Обновить

Комментарии 10

Хорошая статья

в присутствии сетевых разделений система вынуждена жертвовать либо согласованностью, либо доступностью

Что значит "разделений"? В присутствии любой сети между БД, даже если сеть сейчас работает. То есть этот момент закладывается уже при проектировании.

Brain split имелся ввиду. Нейронка же пейсала текстушку

Ничего не понял. Зачем так много слов? Хоть бы алгоритмы кворума расписали.

Если несколько баз, разделенных сетью то варианты:

  • Ждём ответа всех

  • Ждём ответа кворума

  • Ждём ответа хоть кого-то одного

Полная согласованность acid только в первом случае. 3й похож на base. 2й пытается играть с вероятностями, подходя к почти 100% оценке согласованности

Ничего не понял. Зачем так много слов? 

Потому что LLM.

ACID хоронят половину того времени которые я занимаю программированием. Ни куда ты не денишься от транзакций, если тебе нужно гарантировать констстентность сложных структур данных, над которыми могут производится комплексные манипуляции. А при разпрелеленнвх системах вопрос только в том какой алгоритм кворума ты выберешь.

столько боролись - "лишь бы не ACID", а в результате всё равно пришли к ACID

Юзаем в проде FoundationDB в котором распределённый ACID, и он прекрасно держит большие нагрузки со вполне вменяемым latency. Но там важно, чтобы конфликтов в транзпкциях было поменьше и кластер с базой был рядом с подами, а то все преимущества скушают сетевые задержки.

статья хороша, но вот самая суть вопроса осталась не оч понятной::
"можно существенно сузить область, в которой приходится делать жёсткий выбор между согласованностью и доступностью."

что блин это значит

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации