Agile/evolutionary database modelling for an evolving content management application

438 views Asked by At

Just to be clear, when I say Agile I don't mean as in the Agile development process. I mean an evolving data model where new object attributes can be added and managed.

I'm trying to tackle a web application challenge which allows users to create new content forms for data entry, which can be evolved (versioned maybe) by adding (or modifying possibly) additional fields. This itself is kind of straight forward. Each user's content form would have a dynamically created view and trigger to handle read/write, and the underlying tables would be dynamically created when changes are made to the content form structure. Data entry would just used the triggers to write and views would be used to read.

What I'm looking for advice on is whether there's an existing database modeling technique or database type that would help with this kind of a challenge. The application will have more requirements around change tracking, historic viewing, migration between radically different content forms, etc. Likely some complex authorization-based web application viewing will be added on top as well.

I've looked closely at Anchor Modeling, and though it has bi-temporal modeling aspects and its 6NF allows for agile schema development, it's not clear how to take it from a nicely developed model to SQL script to a Web application which can evolve content data. Maybe I'm looking at it wrong, but I wouldn't want to modify any of the triggers or views in an Anchor model, and I don't think I can create a model with it that can be expanded on-demand. The modeling tools will be needed to safely make changes.

I still need to research some of the available NoSQL databases more. MongoDB looks very interesting with its document-oriented storage.

Any advice or experience with these tools or with the data modeling challenge described would be very welcome! Thanks for any answers in advance.

2

There are 2 answers

0
Matt Johnson-Pint On

If you're looking for a NoSql database that supports bi-temporal data, you should take a look at RavenDB - a transactional NoSQL Document Database for .Net Framework developers.

Using it's excellent support for plugins, I have created a Temporal Versioning Bundle which adds full bitemporal capabilities.

0
Lars Rönnbäck On

The XML to SQL code generation is done through a templating language called sisula. There is a stand-alone sisula engine on GitHub which you could adopt into your workflow in order to not depend on the online modeling tool. At least one company in the Netherlands use this approach to automatically do schema updates.