数据仓库系列文章(持续更新)

  1. ​数仓架构发展史​
  2. ​数仓建模方法论​
  3. ​数仓建模分层理论​
  4. ​数仓建模—宽表的设计​
  5. ​数仓建模—指标体系​
  6. ​数据仓库之拉链表​
  7. ​数仓—数据集成​
  8. ​数仓—数据集市​
  9. 数仓—商业智能系统
  10. ​数仓—埋点设计与管理​
  11. 数仓—ID Mapping
  12. ​数仓—OneID​
  13. 数仓—AARRR海盗模型
  14. 数仓—总线矩阵
  15. 数仓—数据安全
  16. 数仓—数据质量
  17. 数仓—数仓建模和业务建模

工欲善其事,必先利其器,所以开始数仓建模之前我们还是要选择一个合适的建模工具,江湖上混怎么能没有一个响亮的名号和趁手的武器呢,PDMan就是我们要介绍的工具。后面我们还会介绍其他建模工具,你选择一个合适的就行。

PDMan是一款开源免费的数据库模型建模工具,支持Windows,Mac,Linux等操作系统,是PowerDesigner之外,更好的免费的替代方案。他具有颜值高,使用简单的特点。包含数据库建模,灵活自动的自动生成代码模板,自动生成文档等多种开发人员实用的功能。

PDMan已全面升级至CHINER

开始之前我们开始先介绍一下这个工具本身,后面再看怎么使用它以及它的特性,其实CHINER就是PDMan的升级版本,我们可以先看一下界面

这是PDMan 的项目管理界面,我们看到也是分项目管理的,可以选择打开已有的项目

数仓建模—建模工具PdMan_python

项目打开后的界面,其实功能还是比较简单的,主要就是模型的设计,包含两块

  1. 表设计
  2. 关系设计

数仓建模—建模工具PdMan_python_02

名称由来

  1. 第一个(公开发行名称):PDMan: Physical Data Model Manager(物理模型管理)
  2. 第二个(内部使用名称):SINOPER: SINO Popular Entity Relation(中国最流行的实体关系图工具),目前该软件发行版,底层很多代码为该词前缀。
  3. 第三个(公开发行名称):CHINER: CHINESE Entity Relation(国产实体关系图工具),为方便国内普及,中文名称为:元数建模,也作:"CHINER[元数建模]"公开使用。

CHINER 的特点

  1. 体系结构重新设计,结构颠覆,但是对原PDMan做到高度兼容。
  2. 精细的界面布局及操作优化,更好看,更简单,更好用。
  3. 增加实用新功能(如导入PowerDesigner等),功能更强大,生态兼容性更好。

功能介绍

因为CHINER 是PDMan 的升级版本,所以我们这里直接介绍CHINER

自带入门参考案例

首页自带两个典型参考案例,方便用户快速了解软件支持的功能以及特性。

数仓建模—建模工具PdMan_python_03

管理对象

数据表及字段

提供简洁直观的数据表以及字段管理及操作,左侧列表支持拖动排序,数据表更多设置支持增加表备注,扩展属性列表,例如提供对Hive的支持,如下图:

数仓建模—建模工具PdMan_人工智能_04

多表关联的视图

视图由多个表结合而成,支持多表以及字段的选择,如下图:

数仓建模—建模工具PdMan_数据库_05

视图及来源数据表,如下图:

数仓建模—建模工具PdMan_大数据_06

可定制的数据类型及数据域

可扩展的数据类型,并且支持多种数据库方言的适配,如下图:

这个主要是解决拓展性的,也就是我们可以根据扩展不同的数据库进来

数仓建模—建模工具PdMan_java_07

数据域,用于设置同一类具有特定业务含义的数据类型,其实这个是很重要的,我们在做数仓建模的过程中是需要统一字段命名和字段类型,如下图:

数仓建模—建模工具PdMan_java_08数仓建模—建模工具PdMan_大数据_09

数据标准(字段库)

标准字段库用于解决常用字段记录,方便用户建立数据表时,能够从常用字段库里直接拖入数据表中。标准字段库可以用户自行添加,也可以从现有数据表中移到标准字段库中,其实这个是很重要的,我们在做数仓建模的过程中是需要统一字段命名和字段类型

如下图所示:

数仓建模—建模工具PdMan_人工智能_10数仓建模—建模工具PdMan_python_11

标准字段库支持导出JSON文件,也支持从JSON文件中导入,以解决共享交流问题。

数据字典(代码映射表)

增加了数据字典支持,用于解决对字段元数据更清晰的解析阐述,如下图:

数仓建模—建模工具PdMan_人工智能_12

数据表字段可以直接关联数据字典,如下图所示:

数仓建模—建模工具PdMan_java_13

项目组织形式(多模块模式以及不分模块模式)

简单项目,不需要分模块,直接分为数据表,视图,关系图,数据字典即可,复杂项目需要折分为一个一个独立的模块,系统对这两种形式均给予支持。简单模式,如下图:

数仓建模—建模工具PdMan_java_14

分模块形式,如下图:

数仓建模—建模工具PdMan_java_15

关系图

其实当前版本的关系图的可视化相比PDMan 就好看很多了,而且还支持了折线

ER关联关系图

数据实体关联关系图,该关联关系图需要人工手动维护,如下图所示:

数仓建模—建模工具PdMan_人工智能_16

简单的概念模型图

支持简单的概念模型图,概念模型图实体只保存在关系图上,不保持实体对象,如下图所示:

数仓建模—建模工具PdMan_人工智能_17

概念模型图,主要用于快速勾勒系统的关键业务对象关系图,用于快速整体理解数据模型

同一模块多张关系图

同一个模块,可以支持多张多种形式的关系图:

数仓建模—建模工具PdMan_人工智能_18

画布设计界面

分组框及以备注框

分组框,用于对数据表或者实体进行分类,能够更清晰的了解数据表的层次结构,如下图:

数仓建模—建模工具PdMan_java_19

文字以及背景颜色设置

备注框,为普通矩形框,用于对数据表或者业务场景进行解释说明,如下图:

数仓建模—建模工具PdMan_数据库_20

代码模板

不同数据库方言的DDL

通过代码模板引擎,实现可扩展的数据库方言支持,如下图:

MySQL

数仓建模—建模工具PdMan_python_21

ORACLE

数仓建模—建模工具PdMan_数据库_22

SQLServer

数仓建模—建模工具PdMan_java_23

扩展属性支持类似Hive

数仓建模—建模工具PdMan_数据库_24

JavaBean代码生成

数仓建模—建模工具PdMan_python_25

可定制化可编辑的代码模板引擎

代码模板引擎基于doT.js构建,如下图:

数仓建模—建模工具PdMan_人工智能_26

提供代码预览编辑,以便能够及时预览代码模板的效果,如下图:

数仓建模—建模工具PdMan_大数据_27

生态对接-导入

数据库逆向

连接数据库,逆向解析数据库,支持数据库中文注释的解析。连接数据库,如下图:

数仓建模—建模工具PdMan_java_28

解析数据列表清单,如下图:

数仓建模—建模工具PdMan_数据库_29

解析数据表结果,如下图:

数仓建模—建模工具PdMan_大数据_30

导入PDMan文件

支持PDMan的导入,支持数据表,关系图,数据域的高度还原。导入列表选择,如下图:

数仓建模—建模工具PdMan_java_31

导入后结果,如下图:

数仓建模—建模工具PdMan_人工智能_32

PDMan原始情况,如下图:

数仓建模—建模工具PdMan_python_33

导入PowerDesigner文件

导入PowerDesigner,支持数据表,数据域的高度还原(不支持关系图还原),如下图:

数仓建模—建模工具PdMan_人工智能_34

数据表选择,如下图:

数仓建模—建模工具PdMan_python_35

最终导入后结果,如下图:

数仓建模—建模工具PdMan_数据库_36

生态对接-导出

导出DDL

导出DDL,用于解决一次性导出指定数据表,针对指定数据库方言的导出,如下图:

数仓建模—建模工具PdMan_人工智能_37

导出WORD文档及模板可定制

将当前数据表,关系图,数据字典导出至WORD文档,如下图:

数仓建模—建模工具PdMan_大数据_38

导出结果,如下图:

数仓建模—建模工具PdMan_人工智能_39数仓建模—建模工具PdMan_数据库_40

关系图导出图片

实现将当前画布的关系图,导出为PNG图片。

全局搜索及定位

字段及关键字,数据字典等的全局搜索,如下图:

数仓建模—建模工具PdMan_人工智能_41

更多特性

多语言

中文,如下图:

数仓建模—建模工具PdMan_数据库_42

英文,如下图:

数仓建模—建模工具PdMan_人工智能_43

语言设置,如下图:

数仓建模—建模工具PdMan_数据库_44

新建表默认初始化字段

数仓建模—建模工具PdMan_大数据_45

表编辑一次性设置多个数据域

数仓建模—建模工具PdMan_数据库_46

总结

  1. PDMan(CHINER) 是一款优秀的国产开源软件,能满足我们在建模过程中80%的需求;
  2. PDMan 本身上手简单,学习成本低;
  3. 下一节我们从头开始使用PDMan设计一个模型;