Comparison of document based databases against graph based databases for model repositories
Software models are usually represented as an object graph, which are highly dynamic and subject to change in their structure over time. In a collaborative environment classic storage in structured files (e.g. XMI) or relational databases (e.g. CDO) does not scale enough and other forms of storage might be suited better.
Two different NoSQL database types, document based and graph based, are promising for their use as the storage service for model repositories, but have completely different approaches. It has to be examined which database type meets the requirements to store and retrieve software models.
The comparison has to address the following issues:
Software models, i.e. from the automotive industry, can be large. The storage system must be able to load large models in reasonable time with appropriate memory consumption.
It must be possible to edit models concurrently without the need of extensive locking. Systems like Google Docs and Apple Keynote already demonstrate this for textual, spreadsheet and presentation documents.
The storage backend must be able to run in a distributed environment. Depending on the required capacity new nodes must be able to be ramped up without the need to stop services. Changes to one node must be eventually persistent.
When editing concurrently on a model, changes might be conflicting. The system must be able to solve issues automatically whenever possible and be graceful in the cases where it can’t solve them.
The comparison should be evaluated with at least one representant of each technology (e.g. DynamoDB, CouchDB, MongoDB and Neo4j).