2009-07-19 1 views
1

Добрый день,Лучшая практика для версий объектов?

В настоящее время я нахожусь на ранней стадии нового проекта, написанного на .Net, и используя Entity Framework для сохранения/хранения данных. Одной из необходимых функций является возможность «версии» определенных типов моделей. Например. одна модель - это «Требование», которое будет иметь n «Версии требований», в основном имея способ вернуться в историю/жизненный цикл этого конкретного экземпляра «Требование». Единственное, что должно быть статичным во всех версиях, это «ID», все остальное абсолютно изменчиво в течение всего срока действия требования.

Теперь Q, должен ли я «просто» создать соотношение 1: n между Требованием >> ТребованиеVersion? Другие функции - это возможность полностью восстановить старые состояния, чтобы быть текущими/последними, должна быть возможность иметь незначительную и значимую версию (изменения) и т. Д., И, наконец, не последнюю роль в создании базовой линии набор требований с последней версией, чтобы вернуться к этой конкретной базовой линии в более поздний момент времени и отобразить все включенные требования.

Это должно масштабироваться до нескольких миллионов ТРЕБОВАНИЕ Records, каждый из которых имеет пару тысяч пересмотров .. это особенно поэтому я прошу .. масштабирования аспект простой 1: п отношения и т.д.

Кто-нибудь сделал что-то похожее и, возможно, какие-то предложения/лучшие практики и т. Д., Касающиеся управления версиями/baselining и т. Д.?

Приветствия & спасибо, -Jörg

ответ

0

Это зависит от того, сколько данных каждого требования есть.

Если требование имеет большие поля (например, описание требований).

  1. Возможно, вы хотели бы использовать поля версии, а не сами требования. К сожалению, кажется, что нет простого способа справиться с Entity Framework.
  2. Другое решение (мы сделали это для CMS) - это отдельные таблицы для Требований и для описания требований. Таким образом, вы будете иметь RequirementVersions и RequirmentDescriptionVersions.

Если требование достаточно мало, вы можете использовать Требование >> ТребованиеVersion. В большинстве случаев у вас не будет значительных данных, особенно вы можете использовать сжатие SQL2008.