CDM or not?

Again I am participating in a project that must decide to use a Canonical Data Model or not. In theory this is generally a good idea as already described by Wolf's Enterprise Integration Patterns. Does this also hold for a SOA? Yes when we must believe Thomas Erl, in fact it is one of his SOA pattern (Canonical Schema)

We all know the advantages

* Less transformation needed (this only holds when you have NxM relations)
* Data reuse between Services within the same Service Inventory

What do others say?

Steve Jones describes three ways in his blog to setup a CDM. In Common demoninator (1) the minimum set of data that can be used to effectively communicate between areas on a consistent basis. The goal here isn't that this should be used on 100% of occasions but that it represents 70-80% of the interactions. In a Superset (2) the goal is to capture a canonical form that represents 100% of the possible interactions between services. Thus if a service might need 25 fields of product information then the canonical form has those 25 fields. The last one is the Enterprise beast (3) and this one creates a single data model that represents not only the superset of interactions, but the superset of interals as well.

And what do I think?

  1. I do not see it happen to get one big enterprise model.
  2. Try to make a CDM per business domain. And use the data attributes that really are necessary. This makes you think good about the model and will cut out the bad fruit
  3. Make use of XML Schema to define the data entities and do not CSV,TXT or other non-standard formats
  4. Make a document that will describe and defines the data entities so that everybody has a good understanding of the entities.
  5. Make the data available to others

No comments:

Post a Comment