Some times for performance, availability or scalability reasons, we may need to rewrite an application that was previously working with an SQL database to fit a NoSQL usage or even hybrid one: a part of data will remain relational and the other part not relational
I went through this problem few times for applications such as
- a Cloud based IVR application
- a Rain Information display application on Maps where data are coming from Telecommunication antennas
All started relational because…. they should (i mean an important part of the data model is relationship driven and that makes sens) and also i have to admit: because it was simpler (at least at the time).
When dealing with serious amount of data to process (call records, audio files, weather measures netcdf files…), when dealing with new requirements of availability and scalability (mostly horizontally) : i needed somehow to transform at least a part of the model to fit NoSQL. Doing this you can easily go wrong because (at least in my case) i was still thinking about the links between the objects that the actual queries that need to be done by the application to deliver its value.
The following video helps me a lot to « transform » the Entities-Relationships model to NoSQL document usage.
In the picture i draw :
- on the left: the SQL relationships types
- on the right : the NoSQL mapping strategy (E = Embedded, Ref = Reference W=Write, R=Read)
Fee free to comment or get in touch with me.