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