CDM-Canonical Data Model
What is CDM?
What is CDM?
CDM is the abbreviated form of "Common Data Model" or "Canonical Data Model".
CDM is intended to be a common vocabulary for data at the enterprise level. (How is this different from EDD?)
When do we use CDM?
CDM should be used in the following scenarios:
- Integrate more than two systems
- Integrate with in two Systems if more frequent changes in those Systems
- Entities which are in CDM will reuse in many place in Enterprise level
Where is CDM used?
- CDM mainly used in Integration Layer
Values & Principles
- CDM Should be built rather than COTS
- Try to create only one CDM in EAI level instead of maintaining too many CDM
- Easily understood by all the users not only technical folks
- Review and update more frequently
- Re-usability
- Extensible
Drafting Notes
- CDM a Common Vocabulary for Data in the Enterprise level
- Try to create only one CDM in EAI level instead of maintaining too many CDM.
- CDM Should be built rather than COTS
- Easily understand by all the users not only technical folks
- Review and update more frequently
- Reusability ,Extensionality
- Align with Physical Data model
- Version and naming strategy in place (will update)
- Read by all and updated By One (Central channel to manage).
- Plan for Tool to supports rather than XLS
- Reduced the Integration Resources
- Should not contain any Business Logic /rules
- Mainly achieve the loosely coupling with High Cohesion
- Should be derived from logical data model rather than applications.
- Should be application Independent
- Describe the Business information in Conceptual level
- Align with Data Agreement on Data definition in Enterprise level
- Independent with Technology
- Mainly used to define the Business Entities ,Attributes, association and etc to align with Physical Data
- CDM must be in the followings scenarios
- Integrate more than two systems
- Integrate with in two Systems if more frequent changes in those Systems
- Entities which are in CDM will reuse in many place in Enterprise level
- CDM mainly used in Integration Layer.
- Should be in source control
- Entities are specific to the one system then it should in their XSD itself instead of CDM
- No of Attributes in Entity to be finalize.
- Entities are in CDM not specific to the application/system/project , if those entities are specific to application /System/Project please try to avoid to define those entities into CDM. Entities are in the CDM mainly Used in Enterprise level ie those Entities are reused more than one application
- Collaborate with domain experts, they know the business best and can help you ensure that the model reflects the business.
- Define a limited set of design principles to be used. This will lead to a more consistent and easier to understand model. Clear naming conventions for entities, attributes and relations also helps in this area.
- CDM is intended to be used for integration and therefore should only cover entities that are used on the integration layer
- SOA does not solve complexity automatically, a CDM is one the items that can reduce complexity.
Examples
- CDM should contain only Business Entities and not all the cross cutting entites
Entities | Good to Use | Try to Avoid |
---|---|---|
Customer | x | |
AuditLog | x |
Those Cross Cutting Entities may be in Integration Component
- All Cross Cutting Attributes in one Entity or in one central place rather than capturing too many places in Integration /Service Layer.
Naming Convention :
- Entities names should be in noun align with Physical Entities (as much as possible) .
- Should be meaningful name
- Try to avoid the verb in name
Example | Good To Use | Try To Avoid |
---|---|---|
Customer
Product
| x | |
CustomerInfo
CustInfo
CustomerDetails
Cust-Info
CustomerReference
Cust-Ref-Details
| x |
- Attributes in the entities should be meaningful and easy to understand
- Please try to avoid the Action in Attribute Name
Example | Good To Use |
Try to avoid
|
---|---|---|
Id,Name,TaxAmount,Discount | x | |
TAmount
TAPAmount
RefNo
DisAmount
Command
ShowLastNameFlag
PayType
DCCAmount
| x |
- Avoid the Redundant in Entity level and try to minimize in Attribute level
- If more than one attributes occur in more than one Entities then move those Attributes in common entities. It’s easy to manage/extend attributes in one place if requires
Ex:
We define the following Attributes in few Entities
LanguageCode and LanguageDescription
Instead of above , we can move those attributes in Language (new Entity) ..
Language --Entity
Code
Description
Wherever we need those attributes please refer the language entity instead of duplicating those attributes in many places.
Customer and Product requires LanguageCode and LanguageDescription
Advantages:
We can do the changes(Add/Amend) in one place rather than multiple place if any change requires
- Should avoid the numerical values in Attribute and entities names ..
Example |
Try To Avoid
|
---|---|
Reference1
Id1
CustomerDate1
| x |
- Entities and Attributes should be used for today , please try to avoid to define any entities and Attributes for future usage.
- Relationship should be define between the entities (if requires)
- Attributes name starts with I* only for Boolean Type data not for any other data format.
Example
|
Good To Use
|
Try to avoid
|
---|---|---|
IsSupplimentartCardRequired-Boolean
|
x
| |
IsSupplimentartCardRequired-String
IsDateRequired-Date
|
x
| |
- LOV be captured in the separate XLS
- Attributes are all same except few in both entities then use Generalization in Entity level
Ex:
RecurringCustomer and OneTimeCustomer are the different Entities with same attributes except few attributes specific to the respective entities .
In this case , we are not recommending to create two entities with duplicate detail instead do as follows
Create the following Entities
Customer – Have all the common attributes
RecurringCustomer and OneTimeCustomer which extends those CustomerEntity with specific attributes
- No of Attributes in Entity should be reasonable , try to decompose those entity if it has more attributes
Ex:
Customer which contains attributes related to Personal,Address,Contact,Purhcase and etc. In this case We can move those attributes in separate entity instead of all in same entity
Customer –streetname,postalcode,blkname,purchasedate,totalnoOfUnitsPurchased,purchaseDate,PhoneNo,Mobileno and etc
We can move as follows
When to Use CDM
Integration Details | CDM Required | Example |
---|---|---|
Entities are Common not specific to any Application/System | Y | PricePlan/Dispatch |
Domain Specific Entitities |
Y
| Ex Customer /Product/Sales/Price |
Entities/Attributes are specific to application | N | Ex: ServiceRelationId , deliveryName, |
To Perform data Enrichment during the Integration | Y |
1) Tranferring file between two Systems (System A and System B) , System A send 4 fields and System B requires 6 Fields in this scenrio we will create those Fields in Middleware
2) Tranferring file between two Systems (System A and System B) , System A send 4 fields and System B requires 4 Fields with Some data Transformation. In this scenario Middleware to do the Data Transformation
|
File Transfer Between two System through Middleware | N | |
To Perform filtering during Integration | N | System A Sending file with 5 Fields and System B requires only 4 Fields , In this scenrio we will remove those Fields and send to target System |
Cross Cutting Entities | N | Should be managed by Middleware |
Performance is Key | N | |
Adhoc Tasks/Reports | N | |
Computational Data/Entity | N | |
Entities traversed between only two System | N | Billing , Its only used between two Systems, |
Comments
Post a Comment