This is a very interesting architecture question..While building a content management system this is the most important decision to determine about the content repository.
There are lots of pros and cons on this…
DB Based Content repository:
Key advantage for DB based content repository is
Dependency management: If content set is mapped inside the database then any change in one content item, will manage other content items quite effectively. This is one of the key pain point, I see with the file system based content management systems. Any organization would like to have content integrity on its website and to ensure that dependency management of the content is absolutely important.
For eg if we are updating a news article, then news item will be updated on your home page, news home page and actual article page itself..
If we need to perform this in FS based content repository and site is static then it is bit hard game to manage.
But still file system based content repositories has lots of advantages
1) Content versioning: You can manage content versions very easily like any other svn system..You have lot better auditing in place.
2) Point in time snapshots: You can manage point in time snapshots very easily. Using IWOV, you can take content editions and you can roll back to older edition to any point of time. You can keep site history 3,6,9,12…anything very easily. This is a great feature from content audit stand point
3) Release Management: You can manage multiple releases at the same time in very effective way using file based content repository. For example if you have a large website and you have multiple teams working at the same time on different releases. As part of release cycle, if you need to add some content to your production system then you can add delta content on development systems and you can move the content as delta content to your production system..Content merge across various application releases is fairly challenging for DB based systems.
4) Hardwired DB tables: Database tables are very hardwired and any change to those tables is not straight forward once the system is set up. Further if your system architecture is completely DB dependent then if later on you need to alter your content structures then it fairly complex operation in Vignette. So your content type definitions are one done are not very open for modifications
5) High DB Connections: To get simple information, you need to connect to the database and so many DB calls are always cost you in various ways. For example in Vignette, complete content is stored in database,
To fetch the content they have a huge SDK but so many DB calls were hitting performance massively and because of this they have released new API set which is getting the values from DPM cache. This leads to DPM cache settings and again there are good number of performance glitches and now next solution is HPD…(High performance Delivery) I hope, I am clear where I am heading here!
Further if multiple people need to work on different areas of content and preview there own web sites then it is fairly easy using FS based CMS systems like IWOV/Alfresco where people have there own workareas or sandboxes but this is level of granularity is not easy to achieve in Vignette
So there are lots of areas where we can see challenges on this and will be great to know what do other developers think about it…