Еще одна статья о согласованности в конечном счете - в блоге Гая Харрисона (кто это - мне неведомо).
Здесь интересно то, что сausal consistency, read your own writes, monotonic consistency рассматриваются как дополнительные опции, которые может предложить согласованность в конечном счете.
Много сказано об обозначении NRW (N копий данных, при чтении читаем с R реплик, при записи необходимо чтоб записалось как минимум на W реплик).
Соотношение N=W означает, что пишем сразу на все реплики - это подход традиционных СУБД. Если делаем W=1 - получаем высокую производительность при записи. В этом случае стоит поставить R=N - тогда при чтении мы сможем понять, какая из копий данных верная (наиболее свежая).
В NoSQL обычно делают N>W>1. Т.е. должна произойти запись более чем на одну реплику, но не обязательно сразу писать на все. Поышение уровня согласованности в три этапа:
1. при R=1 получим, что БД считаем верной первую считанную копию данных;
2. при R>1 происходит чтение более одной копии, их можно сравнить и взять самую свежую;
3. при R+W>N у нас есть гарантия, что мы считаем хотя бы одну самую свежую копию данных (quorum assembly).
Комментариев нет:
Отправить комментарий