Canonical Data Model
The section aims to describe a way in which loosly coupled system can use transformation to ensure the the messages passed between systems are not dependent on the other system(s) message formats.
In the picture below we have system A, which delivers data to System B, System C, and System D:
Now, lets take a look what happens if we need to replace or change System A or its message format:
All of the transformations must be updated to reflect the changes to System A. This leaves a brittle system where Systems are tightly coupled.
Enter the canonical data format:
In this model every message must first be transformaed from System A's message format (M1) to the canonical data format(M2). This is also the case for System B, System C, and System D.
Lets take a look at what happens if one need to replace or change System A or its message format:
In this case only the transformations to and from System A's message format need to be updated to reflect the changes to System A.
The down side of having a Canonical data format is the number of transformation that can effect performance.