Участвую в стартапе, в котором разрабатывается СУБД нового типа (работает поверх некоторых kv-движков, кардинально расширяя их возможности, про это немного можно прочитать здесь). Для того, чтобы сравнить то, что понемногу получается, с тем, что имеется в индустрии, пришлось на глубоком уровне проработать первоисточники по темам Isolation и Consistency (уточню, что имеется ввиду не та Consistency
, что в ACID
). Обнаружил интересные нюансы, которые и излагаю в этой статье.
Тезисно:
- Термин Phantom Read является продуктом испорченного телефона
- Смысл понятий Lost Update, Write Skew и Read Skew для разделения уровней изоляций неочевиден и относителен
- Движок, который обеспечивает уровень изоляции Serializable, в распределённом мире может вести себя весьма причудливо, например, всегда возвращать пустой результат для read-only транзакций — и ему за это по стандарту "ничего не будет"
- Strong consistency в Cosmos DB — предел мечтаний? (спойлер: нет)
Ну, и ещё кое-что по мелочи. В конце рассмотрим вот такой венец творения человеческого разума: