Коммутативные (операционное преобразование) различия для баз данных

Какая программа Unix генерирует «различия» между текстовыми файлами (или INSERT / UPDATE / DELETE для баз данных) таким образом, что порядок, в котором применяются «diff», не имеет значения, а результат одинаков независимо от порядка.

Etherpad раньше делал что-то подобное.

Пример (для данного документа или базы данных):

% Адам вносит изменение X, затем Боб вносит изменение Y, затем Адам вносит еще одно изменение Z.

% Однако из-за задержки в сети Адам видит изменения в следующем порядке: XZY, а Боб видит их в следующем порядке: YXZ.

% Однако код / ​​изменения написаны так, что XYZ и YXZ дают одинаковый результат.

Примечание: в идеале это можно сделать без необходимости выполнять инверсию X / Y / Z в любой точке.

Я прочитал Оперативную библиотеку преобразования?, но не уверен, что это действительно то, что я хочу.


person Community    schedule 31.05.2010    source источник
comment
OT - это, безусловно, то, что вам нужно, особенно чтобы получить XYZ == YXZ, который вам нужен. Я просто добавил ответ на вопрос, который вы связали, который может помочь, хотя Ceda в настоящее время не имеет порта * nix.   -  person Daniel Paull    schedule 28.07.2010


Ответы (1)


Git (или любая интеллектуальная система контроля версий) предоставит эту функцию.

person Yann Ramin    schedule 31.05.2010
comment
Я не думал об этом, но думаю, ты прав. За исключением того, что в этом случае мы делаем это посимвольно, а не построчно (и используем оптимизированную версию diff для отправки дельт?). Хорошо, как бы мы могли это сделать с базой данных SQL, если не хранить ее в виде текстовых файлов? - person ; 31.05.2010