2012-04-11 5 views
2

Я пытаюсь довести здравомыслие до существующей системы, добавив контроль над версиями. Проблема заключается в том, что система не хорошо переводится в файловую систему, такую ​​как макет. После нескольких мысленных экспериментов у меня есть рудиментарный способ справиться с этим, но прежде чем я начну использовать использование этого беспорядка, я хотел бы запустить его коллективом.Создание системы контроля версий для объектов и ссылок

Система состоит из типизированных объектов и ссылок. Объекты связаны вместе со ссылкой для создания значимых отношений. Ссылки также являются типизированными объектами и могут иметь свои собственные атрибуты.

Пользователи могут приходить к просмотру объектов на любом уровне и ходить вверх и вниз по ссылкам, чтобы увидеть отношения.

Большинство объектов имеют сотни ссылок на другие объекты. Не все объекты или ссылки будут находиться под контролем версий, так как некоторые могут считаться статическими. Разрешено иметь ссылку, управляемую версией, на объект, не контролируемый версией.

Изменения в объектах поступают в виде пакета, содержащего весь макет раздела иерархии, без каких-либо или незначительных комментариев пользователей или информации о версии. Изменения, таким образом, обнаруживаются путем сравнения нового объекта с предыдущим. Аналогичным образом обнаруживаются изменения ссылок. Объекты могут быть добавлены в одну версию, удалены в следующем и добавлены снова в следующем. У большинства объектов достаточно уникальной информации, чтобы обнаружить, что это действительно тот же самый объект, который был flip-flopping in и out of existance.

Объекты и ссылки, которые не изменяются, не должны иметь новую версию, созданную для отдельных объектов, но общий контент, полученный в результате пакетного обновления, должен быть идентифицирован как группа.

95% пользователей будут интересоваться только последней версией объектов/отношений, но мне нужно иметь возможность показывать ранее зафиксированные объекты/отношения для оставшихся 5%.

Мои первоначальные мысли состоят в том, чтобы реализовать общую версию uid для серии изменений и связать ее со всеми текущими объектами/ссылками для этой итерации. Остальное - для захватов. Если вы сделали это так далеко, спасибо. Мысли?

ответ

2

Похоже, вы описываете (реляционную) базу данных. Ваша любимая поисковая система предоставит вам ряд ссылок на идеи о том, как сделать управление версиями баз данных.

Два examples для SQL.

+0

Довольно много гвоздей. Я не собирал 2 + 2 вместе. Я упростил это, используя дату фиксации в качестве идентификатора версии за пределами UID, который уже был у объекта. –

Смежные вопросы