Может ли кто-нибудь объяснить мне просто основные различия между операционным преобразованием и CRDT?
Насколько я понимаю, оба алгоритма позволяют разрешать данные без конфликтов на разных узлах распределенной системы.
В каком порядке вы используете какой алгоритм? Насколько я понимаю, OT в основном используется для текста, а CRDT является более общим и может обрабатывать более сложные структуры правильно?
Является ли CRDT более мощным, чем OT?
Я задаю этот вопрос, потому что я пытаюсь понять, как реализовать совлокальный редактор для HTML-документов, и не уверен, в каком направлении смотреть первым. Я видел проект ShareJS и их попытки поддерживать сотрудничество с богатым текстом в браузере на элементах contenteditables
. Нигде в ShareJS я не вижу попытки использовать CRDT для этого.
Мы также знаем, что Google Docs использует OT, и он отлично работает для выпуска документов в режиме реального времени. Является ли Google выбором использования OT, потому что CRDT был не очень известен в то время? Или это был бы хороший выбор сегодня?
Мне также интересно узнать о других случаях использования, например, об использовании этих алгоритмов в базах данных. Кажется, что Riak использует CRDT. Может ли OT использоваться для синхронизации узлов базы данных и быть альтернативой Paxos/Zab/Raft?