我们将每期线上沙龙中,老师们关注的问题做了摘录,供大家交流探讨。本期是关于2020年4月23日“数据治理的基础之数据识别及知识库的建设”一期的精彩问答回顾。
q1
如果表里面有主键的话,我们可以做增量采集,如果它没有主键的话,我们就得做全量了,我想象不出来是哪些表没有主键?
其实我们在做数据治理项目中,遇到很多业务系统不知道是设计上的遗漏或是其他原因,会发生没有主键的情况。包括一些基本类的信息都会缺少主键,即在我们数据库的结构上,找不到主键约束这一条。所以我们采集数据的时候,只能人工将主键添加在数据湖中,通过多个字段区分唯一性,来生成主键。在业务系统里面,其实它的数据库是没有设计主键的。
这也涉及到此前讲过的管理制度,业务厂商在设计时,学校可以对其有一定约束和要求,要求其设计能够符合数据库的数据规范。
q2
在进行原字段识别的时候,有主键的表和无主键的表采集方式不一样,具体有什么区别?
我们通常去做数据采集,比如我们用etl工具去做数据采集的时候,需要做像增量采集,或者像odi里面cdc,采集对象是一定要有主键的。我们在数据识别的时候会发现,有些业务系统数据库的数据,没有设置一个主键,我们在采集的时候,就没有办法找到唯一的记录,所以就没有办法做增量采集,只能退而求其次,要把这部分数据采集过来,每次采集都需要全量采集,进入我们的数仓。
q3
这里所说的中间库也是一个数据库环境吧?比如oracle的环境?
中间库是这样的,例如学校现在有一个教务系统,其他的厂商要做数据采集,学校不想把业务系统暴露给他。一般会在业务系统数据库前再创建一个数据库,这个数据库有可能是oracle,也可能是sql server,需要跟业务系统属于同一类型。将需要的一部分表,或者允许看到的一部分表做封装,放到中间库中。这样实现只有权限看中间库,而看不到生产库。
因此,在做业务识别的时候,因为只能看到中间库,而中间库的数据做了一部分修改,像经过了装饰一样,采集的数据可能就会有遗漏,包括数据的遗漏或者属性上的遗漏,对实际识别工作会造成比较大的影响。
q4
按理说从生产部往中间部同步的话,应该是全校同步,你们是否遇见过修改后同步的情况?
从生产库往中间库同步一般是全量同步,数据可能不会修改,但它会少一部分的字段。举个例子,像学生基本信息可能有30个字段,业务方只想给你看其中的8个、10个,那么给到中间库的数据就只有这几个字段,完整的内容不会提供。
q5
在做这个数据转换的时候,比如二进制,是在数据库sql语句里面转换的吗?还有0011这种,怎么转换成3-20周?
数据库自带的函数只能做到十进制和二进制之间的转换。要想实现业务上的功能只能通过存储过程或者函数的方式实现,一般是函数的方式把这个具体的几到几周转换出来。
a