本期重点:在需要集成多个系统数据的时候,使用通用数据模型可以简化大部分数据集成的工作,帮助开发人员专注在业务逻辑上,而不是把时间都花在数据和数据之间的映射,转换等繁琐工作。
什么是通用数据模型?
在讲通用数据模型之前,我们先看这样一个问题。
随着企业的不断发展,公司内部会有很多的应用系统,类似 OA , ERP , CRM , 财务等等,甚至考勤系统也有单独的应用,这些系统通常来自不同的供应商,一些现代化的应用可能有数据库,但还有些甚至是用 Excel 存储的数据。这就会导致每个企业都会拥有很多存放数据的地方,也就是我们通常讲的数据孤岛。
大家可以想一下,同样一份客户数据,会存储在多少个应用中?有些 ERP 系统可能会存,有些网站的数据库里也会存,甚至可能在财务相关的系统中都会有一份客户信息表。这些分散在不同系统中的数据要如何集成?
ERP 想要访问网站的数据。财务系统需要从 ERP 中导入一些详细信息。如果要做报表还需要获取来自所有系统的数据。这时候如果我们想要在数十个数据库之间进行数据集成,最终可能会像下面这样:
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424213-591197-73b62a59f3a8b0715c94bc0e924ce5b6.png)
这么多应用和数据库之间的集成会变得非常复杂。企业如果真的想要做这样的集成会花费很高的成本,并且当企业有了下一个新系统之后,整个集成操作还要再来一次。这时候如果有一种方法可以将所有数据都集成到一个“共享的数据模型”中,整个效率就会提升很多。共享数据模型就会是整个数据的唯一来源,所有系统都去按照共享数据模型的方式进行读写操作。
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424229-119909-f797202d370905ab5ed560bdd6015f31.png)
而微软推出的通用数据模型实际上就是一种共享数据模型,它保证了所有应用系统的完整和一致性,每个应用只需要知道如何对通用数据模型 CDM 进行操作就可以。通用数据模型中包含有很多数据结构模板,这些数据结构都是第三方和微软以及开源社区一起进行维护,并且不断更新的,截止到 2021年6月4日,通用数据模型中已经提供了数千个表结构,并且提供了适用于多个垂直行业的行业加速器,在行业加速器中提供了不同行业的专用数据结构,下图展示的是一些示例。
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424244-856823-ba17c4f1a43f6758494f15f653a792db.png)
更多的通用数据模型,可以访问 https://github.com/Microsoft/CDM.
通用数据模型提供了哪些能力?
通用数据模型既然是一种共享数据模型,那它的核心实际上就是提供了很多通用的表结构,比如上图中看到的账户、联系人、产品等等,每个表中都预置好了很多常用的字段,类似在账户表中,大家都会经常存放姓名,而在联系人中都会存放公司,部门等信息。这些预置的表和表之间的关系微软也都帮忙建立好了,并且支持通过 JSON 的方式为表和字段配置语义描述,可以说最大限度的帮助用户可以开箱即用这些数据模型。
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424262-622529-b32ebb7f9b9af6dff191468521b317f4.png)
什么时候使用通用数据模型?
在需要集成多个系统数据的时候,使用通用数据模型可以简化大部分数据集成的工作,帮助开发人员专注在业务逻辑上,而不是把时间都花在数据和数据之间的映射,转换等繁琐事情上。
另外上期提到的 Dataverse 就基于通用数据模型,并且微软的 Dynamics 365 , Power Platform 和 Azure 中都集成了通用数据模型,从而帮助用户在所有应用中都可以访问到统一的数据结构。甚至由于通用数据模型已经在 Github 开源,所以其他任何系统如果想要使用通用数据模型实际上都是可以的。
![](https://forum.power-platform.cn/assets/files/2022-03-16/1647424277-777177-a9f2caf3f31a564212fcd5319296211c.png)