Изменения

Перейти к навигации Перейти к поиску
3609 байт добавлено ,  1 год назад
нет описания правки
Строка 12: Строка 12:     
Распределенные базы данных [[NoSQL]] [[Redis]], [[Riak]] и [[Cosmos DB]] напрямую поддерживают типы данных CRDT.
 
Распределенные базы данных [[NoSQL]] [[Redis]], [[Riak]] и [[Cosmos DB]] напрямую поддерживают типы данных CRDT.
 +
 +
== Бэкграунд ==
 +
Одновременные обновления нескольких [[Реплика данных|реплик]] одних и тех же данных без координации между узлами<ref>Компьютерами, виртуальными машинами и т.д.</ref>, на которых размещены реплики, могут привести к несогласованности между репликами, которые в общем случае могут оказаться неразрешимыми. В
 +
 +
осстановление согласованности и целостности данных при возникновении конфликтов между обновлениями может потребовать полного или частичного удаления некоторых или всех обновлений.
 +
 +
Соответственно, большая часть распределенных вычислений сосредоточена на проблеме предотвращения одновременных обновлений реплицируемых данных. Но другой возможный подход — это [[оптимистическая репликация]], при которой все одновременные обновления могут выполняться с возможным возникновением несоответствий, а результаты объединяются или «разрешаются» позже. В этом подходе согласованность между репликами [[Согласованность в конечном счёте|в конечном итоге]] восстанавливается посредством «слияния» разных реплик. Хотя оптимистичная репликация может не работать в общем случае, существует важный и практически полезный класс структур данных, CRDT, где она работает. Для таких структур всегда можно без конфликтов объединить или разрешить одновременные обновления в разных репликах структуры данных. 
 +
 +
Это делает CRDT идеальными для оптимистического репликации. Например, односторонний логический флаг события представляет собой тривиальный CRDT: один бит со значением true или false. True означает, что какое-то конкретное событие произошло хотя бы один раз. False означает, что событие не произошло. Если флаг установлен в значение true, его нельзя вернуть обратно в значение false (произошедшее событие не может повториться). Метод разрешения — «истинный выигрыш»: при слиянии реплики, где флаг имеет значение true (эта реплика наблюдала событие), и другой реплики, где флаг имеет значение false (эта реплика не наблюдала событие), решенный результат true — событие наблюдалось.
    
== Примечания ==
 
== Примечания ==

Реклама:

Навигация