Гибкое / эволюционное моделирование базы данных для развивающегося приложения управления контентом
Просто чтобы прояснить, когда я говорю Agile, я не имею в виду, как в процессе разработки Agile. Я имею в виду развивающуюся модель данных, в которой можно добавлять новые атрибуты объектов и управлять ими.
Я пытаюсь решить проблему с веб-приложением, которая позволяет пользователям создавать новые формы контента для ввода данных, которые можно развить (возможно, с помощью версий), добавив (или изменив, возможно) дополнительные поля. Это само по себе прямолинейно. Форма контента каждого пользователя будет иметь динамически создаваемое представление и триггер для обработки чтения / записи, а базовые таблицы будут создаваться динамически при внесении изменений в структуру формы контента. Ввод данных будет использовать триггеры для записи, а представления будут использоваться для чтения.
То, что я ищу совет относительно того, есть ли существующая техника моделирования базы данных или тип базы данных, который помог бы с этим видом проблемы. Приложение будет предъявлять больше требований к отслеживанию изменений, историческому просмотру, миграции между радикально различными формами контента и т. Д. Скорее всего, некоторые сложные просмотры веб-приложений на основе авторизации также будут добавлены сверху.
Я внимательно посмотрел на Anchor Modeling, и хотя он имеет аспекты двухвременного моделирования и его 6NF позволяет разрабатывать гибкие схемы, неясно, как перенести его из хорошо разработанной модели в сценарий SQL в веб-приложение, которое может развить контент данные. Может быть, я смотрю на это неправильно, но я не хотел бы изменять какие-либо триггеры или представления в модели привязки, и я не думаю, что смогу создать модель, которая может быть расширена по требованию. Инструменты моделирования будут необходимы для безопасного внесения изменений.
Мне все еще нужно исследовать некоторые из доступных баз данных NoSQL. MongoDB выглядит очень интересно с документно-ориентированным хранилищем.
Любой совет или опыт с этими инструментами или с проблемой моделирования данных будет приветствоваться! Спасибо за любые ответы заранее.
2 ответа
Генерация кода XML в SQL осуществляется через язык шаблонов, называемый sisula. На GitHub есть автономный движок sisula, который вы можете использовать в своем рабочем процессе, чтобы не зависеть от инструмента онлайн-моделирования. По крайней мере, одна компания в Нидерландах использует этот подход для автоматического обновления схемы.
Если вы ищете базу данных NoSql, которая поддерживает двухвременные данные, вам следует взглянуть на RavenDB - транзакционную базу данных документов NoSQL для разработчиков.Net Framework.
Используя отличную поддержку плагинов, я создал пакет Temporal Versioning Bundle, который добавляет полные битемпоральные возможности.