Лучшая практика для версий?
-
18-09-2019 - |
Вопрос
Добрый день,
В настоящее время я нахожусь на самой ранней фазе нового проекта, написанного в .NET, и использую структуру объекта для стойки/хранения данных. Одной из необходимых функций является возможность «версии» определенных типов моделей. Например, одна модель - это одно «требование», которое будет иметь n «версии требований», в основном имея способ вернуться в историю/жизненный цикл этого конкретного требования. Единственное, что должно быть статичным во всех пересмотрах, - это «ID», все остальное абсолютно изменяемо на протяжении всей жизни.
Теперь Q таково, что я просто должен создать отношения 1: n между требованием >> требования оверсии? Другие функции требуют возможности полностью возродить старые государства, чтобы стать текущими/последними, должна быть возможность иметь незначительную и основную версию (изменения) и тому подобное, и, наконец, не в последнюю очередь способность создавать «базовый уровень» по всему Коллекция требований с последней версией, чтобы вернуться к этой конкретной базовой линии в более позднюю точку времени и отображая все включенные доверенности?
Это должно масштабироваться до пары миллионов записей о требовании, каждый из которых имеет пару тысяч изменений. Именно поэтому я спрашиваю ... аспект масштабирования простых отношений 1: n и т. Д.
Кто -нибудь сделал что -то похожие, возможно, некоторые предложения/лучшие практики и т. Д. В отношении управления версиями/базовым размером и т. Д.?
Ура и спасибо, -Jörg
Решение
Это зависит от того, сколько данных имеет каждое требование.
Если требование имеет большие поля (например, описание требования).
- Вы, вероятно, хотели бы вместо этого версировать поля, а не сами требования. К сожалению, кажется, что нет простого способа справиться с структурой сущности.
- Другое решение (мы сделали это для CMS) состоит в том, чтобы иметь отдельные таблицы для требований и для описания требований. Таким образом, в результате у вас будут требования доверений и требований.
Если требование достаточно малочно, вы можете использовать требование >> требование. В большинстве случаев у вас не будет значительного роста данных, особенно вы можете использовать сжатие SQL2008.