Комментарии 10
Хорошая статья
в присутствии сетевых разделений система вынуждена жертвовать либо согласованностью, либо доступностью
Что значит "разделений"? В присутствии любой сети между БД, даже если сеть сейчас работает. То есть этот момент закладывается уже при проектировании.
Ничего не понял. Зачем так много слов? Хоть бы алгоритмы кворума расписали.
Если несколько баз, разделенных сетью то варианты:
Ждём ответа всех
Ждём ответа кворума
Ждём ответа хоть кого-то одного
Полная согласованность acid только в первом случае. 3й похож на base. 2й пытается играть с вероятностями, подходя к почти 100% оценке согласованности
ACID хоронят половину того времени которые я занимаю программированием. Ни куда ты не денишься от транзакций, если тебе нужно гарантировать констстентность сложных структур данных, над которыми могут производится комплексные манипуляции. А при разпрелеленнвх системах вопрос только в том какой алгоритм кворума ты выберешь.
столько боролись - "лишь бы не ACID", а в результате всё равно пришли к ACID
Юзаем в проде FoundationDB в котором распределённый ACID, и он прекрасно держит большие нагрузки со вполне вменяемым latency. Но там важно, чтобы конфликтов в транзпкциях было поменьше и кластер с базой был рядом с подами, а то все преимущества скушают сетевые задержки.
Использую в проде base на максимаклках
А конкретно - гипер базу aka crusDb
https://habr.com/ru/articles/956154/
Без кворума
Без транзакций
Но быстро надёжно, доступно
статья хороша, но вот самая суть вопроса осталась не оч понятной::
"можно существенно сузить область, в которой приходится делать жёсткий выбор между согласованностью и доступностью."
что блин это значит

Eventually-consistent СУБД — всё?