第六章 主数据管理
主数据指的是要在整个企业范围内各个应用间共享的数据。主数据需要在整个企业范围内保持一致,完整及可控。
一、主数据管理系统的建设策略
对于批处理来说,主数据可以同步自主数据管理体统的数据库,在数仓体系下,几乎所有的主数据都是维度数据,需要建立相应的维度表以支撑业务查询和分析;对于实时处理,在各种流失数据计算过程中也需要获取主数据进行关联处理,而实时窗户里要求主数据的获取也必须是实时的。如果大数据平台通过主数据管理系统的API获取主数据,无论从并发压力还是从响应的及时性上都可能无法满足要求,还有可能给主数据管理体统带来过大的负载,导致其响应缓慢甚至宕机。
为满足实时计算对主数据的要求,有两种可选技术方案:
- 如主数据体量不大,变更也不频繁,可考虑将这些数据通过API读取到大数据工作节点的内存中,在数据处理过程中直接使用,然后周期性地从主数据管理体统同步最新状态的主数据。该方案优点是架构简单、易于实现,但对主数据有预设条件,不能成为一种广泛使用的方案。
- 改造主数据管理系统,引入内存数据库,如Redis,针对所有主数据,除常规持久化的业务数据库外,再配备一个内存数据库的副本,将这个内存数据库开放给大数据平台使用。该方案是一套很完备的技术方案,可满足各种主数据获取需求,代价是架构比较复杂。
二、围绕主数据进行领域建模
软件工程领域在业务逻辑建模方面有两种主流的额方法论:一种是面向数据库的实体关系模型,另一种是面向对象思想为基础的领域模型。前者是关系型数据库的建模理论,一个实体或业务概念对应一张数据表,实体间的关联关系通过外键实现,不存在继承、多态等更加丰富的关联关系。后者是基于面向对象对业务领域进行建模的方法论,领域模型能更加准确的描述业务系统,合理承载业务逻辑,业务系统越复杂,其优势就越大。
领域建模在应对复杂业务场景时非常有效,因为它是对业务逻辑的一种自然的梳理和划分,最能够反映领域的本来目的,越是复杂的业务场景越能体现它的优越性。而现实领域建模最好的方法论是“领域驱动设计(Domain Driven Design,简称DDD)”