专栏名称: 逸言
文学与软件,诗意地想念。
目录
相关文章推荐
程序员的那些事  ·  国产 DeepSeek V3 ... ·  2 天前  
程序员的那些事  ·  趣图:“微软穷疯了?上架的 ... ·  19 小时前  
程序员的那些事  ·  突发!o3-mini ... ·  昨天  
OSC开源社区  ·  继V3之后,沐曦GPU再完成DeepSeek ... ·  昨天  
码农翻身  ·  为何 Linus ... ·  2 天前  
51好读  ›  专栏  ›  逸言

主题数据区的设计

逸言  · 公众号  · 程序员  · 2018-06-13 09:27

正文

标签 | 数据分析




关于主题数据区的设计,首先需要明确的是按照什么对数据进行归类。大的原则,当然还是按照业务来分类,但是分类的出发点不同,划分的类别也不相同。例如针对机场数据,可以从业务特征分类,那么可以分为运行保障、旅客服务、航班资源等;如果按照功能区分类,则可以分为空侧、陆侧、航站楼侧等。

不管采用什么原则对数据进行分类,我认为都需要遵循以下两个原则:

  • 保证数据的分类是正交的:正交的数据分类可以避免数据的重复。例如航班与旅客存在关联关系,但只允许这二者之间存在一个交点,旅客的信息不允许出现在航班中,航班的信息也不允许出现在旅客中。如果需要,通过主外键关联。

  • 保证数据类别的抽象层次处于同一个层次:这是SLAP(单一抽象层次原则)的体现,如果数据类别的层次不一致,就会失去数据的平衡。例如航班主题与货运主题就不在一个抽象层次上,货运主题与行李主题为同一抽象层,两者的共同抽象为物流,物流主题与航班主题才是同一个抽象层次。


当然,对于主题数据区的数据,从分类的依据看,在满足以上两个原则的基础上,我认为还是应贴近 数据特征 的角度进行类别划分,并尽量保障数据的类别是正交的,同时在保证数据存取性能的前提下,力求更细的数据粒度。而在数据集市区,才会根据不同的业务流程、业务目标去建立集市。建立集市的基础是主题数据,一个正交的主题数据(甚至可能遵循三范式)才能更好地满足集市的业务需求,对其进行重用。

所谓“数据特征”,就是该数据的本质属性,是体现了最基础特征信息的数据。这就要求对数据进行抽象,撇开数据源对业务的影响,也要撇开业务场景对分类的影响。可能符合某个数据特征的数据同时来自多个系统,也可能它同时为多个业务场景提供服务。在机场数据领域,最根本的具有本质属性的数据就是:

  • 航班

  • 旅客

  • 物流

  • 资源

  • 气象

  • ……


在确定了第一级主题(也可以认为是主题域,即subject area)后,在讨论下一级数据分类时,我们出现了分歧。最初提出的类别草案中,将“航班旅客信息”放到了旅客主题中,该信息包括:

  • 值机截载旅客统计信息

  • 登机截载旅客统计信息

  • 起飞截载旅客统计信息

  • 实时旅客数据:如实时值机人数、实时登机人数、实时安检人数

  • 累计旅客数据:如累计值机人数、累计登机人数、累计安检人数


我认为这种划分是不合理的,虽然这里的信息都与旅客相关,但这些信息并非旅客的明细数据,同时它又与具体某个航班是粘连在一起的。到底该怎么归属呢?类似这样的场景,旅客的一些数据在特性上无法清晰地界定到底属于哪一个主题,因为在关系上,可能这些数据属性与两个乃至多个主题都存在一定关系,分类时就容易混淆。







请到「今天看啥」查看全文