Гибкое/эволюционное моделирование базы данных для развивающегося приложения управления контентом

Просто для ясности: когда я говорю Agile, я не имею в виду Agile-процесс разработки. Я имею в виду развивающуюся модель данных, в которой можно добавлять новые атрибуты объектов и управлять ими.

Я пытаюсь решить проблему веб-приложения, которая позволяет пользователям создавать новые формы контента для ввода данных, которые можно развивать (возможно, с версиями) путем добавления (или изменения, возможно,) дополнительных полей. Это само по себе довольно прямолинейно. Форма контента каждого пользователя будет иметь динамически создаваемое представление и триггер для обработки чтения/записи, а базовые таблицы будут динамически создаваться при внесении изменений в структуру формы контента. Ввод данных будет просто использовать триггеры для записи, а представления будут использоваться для чтения.

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

Я внимательно изучил якорное моделирование, и хотя в нем есть аспекты двухвременного моделирования, а его 6NF позволяет гибко разработки схемы, неясно, как перейти от хорошо разработанной модели к сценарию SQL и к веб-приложению, которое может развивать данные содержимого. Возможно, я смотрю на это неправильно, но я бы не хотел изменять какие-либо триггеры или представления в модели Anchor, и я не думаю, что смогу создать с ней модель, которую можно расширять по требованию. Инструменты моделирования потребуются для безопасного внесения изменений.

Мне все еще нужно изучить некоторые из доступных баз данных NoSQL. MongoDB выглядит очень интересно благодаря своему документоориентированному хранилищу.

Любые советы или опыт работы с этими инструментами или с описанной задачей моделирования данных будут очень кстати! Спасибо за любые ответы заранее.


person dubmojo    schedule 08.08.2012    source источник
comment
Основываясь на ограниченной информации, предоставленной в вашем вопросе, база данных, ориентированная на документы, кажется потенциально более подходящей, если основное внимание было уделено гибкой схеме. Однако ... вы также упомянули представления и триггеры, которые больше связаны с реляционной базой данных. Моделирование данных — это только один аспект общих требований к приложению; Я бы предложил построить доказательство концепции, чтобы понять предостережения от использования ориентированного на документы подхода.   -  person Stennie    schedule 09.08.2012
comment
Извините, если я был недостаточно подробным. Я не хотел придумывать примеры названий моделей и вымышленных вариантов их использования и вводить кого-либо в заблуждение. Я видел, что триггер/представление необходимо в динамичной, растущей схеме, где новые и неизвестные атрибуты данных должны создаваться по запросу. Я бы выбрал все, что сработало, если бы база данных была ориентирована на документы. Спасибо за ответ.   -  person dubmojo    schedule 09.08.2012


Ответы (2)


Генерация кода XML в SQL выполняется с помощью языка шаблонов под названием sisula. На GitHub есть автономный движок sisula, который вы можете внедрить в свой рабочий процесс, чтобы чтобы не зависеть от онлайн-инструмента моделирования. По крайней мере, одна компания в Нидерландах использует этот подход для автоматического обновления схемы.

person Lars Rönnbäck    schedule 11.05.2015

Если вы ищете базу данных NoSql, поддерживающую двухвременные данные, обратите внимание на RavenDB — транзакционная база данных документов NoSQL для разработчиков .Net Framework.

Используя превосходную поддержку подключаемых модулей, я создал Temporal Versioning Bundle, который добавляет полные битемпоральные возможности.

person Matt Johnson-Pint    schedule 22.01.2013