1 数仓分层

1.1 基本分层模型

  • 分层原因:

    • 把复杂问题简单化:将复杂的任务分解成多层来完成,每一层只处理简单任务,方便定位问题。
    • 减少重复开发:规范数据分层,通过中间层数据,能够减少大量的重复计算,增加一次计算结果的复用性。
    • 隔离原始数据:不论是数据的异常还是数据的敏感性,使真实数据与统计数据隔离开。

1.2 数据集市和数据仓库

  • 数据集市:==部门级==。一种微型的数据仓库,通常具有更少的数据,更少的主题区域,以及更少的历史数据。
  • 数据仓库:==企业级==。能为整个企业各个部门运转提供决策支持手段。

2 数仓理论

2.1 范式理论

详见过往文章对范式理论的解释:Java Web 02 — MySQL_02(数据库的设计、数据库的备份和还原、多表查询、事务、DCL)

  • 第一范式1NF:属性不可切割
  • 第二范式2NF:不能存在==部分函数依赖==
  • 第三范式3NF:不能存在==传递函数依赖==

2.2 关系建模和维度建模

  • 当今的数据处理大致可以分为2类:联机事务处理OLTP ( on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。二者的主要区别对比如下表所示。
对比属性OLTPOLAP
读特性每次查询只返回少量数据对大量数据进行汇总
写特性随机、低延时写入用户的输入批量导入
使用场景用户,JavaEE项目内部分析师,为决策提供支持
数据表征最新数据状态随时间变化的历史状态
数据规模GBTB、PB

2.2.1 关系建模

  • 关系模型如图所示,严格遵循第三范式(3NF),从图中可以看出,较为松散、零碎,物理表数量多,而数据冗余程度低。由于数据分布于众多的表中,这些数据可以更为灵活地被应用,功能性较强。关系模型主要应用与OLTP 系统中,为了保证数据的一致性以及避免冗余,所以大部分业务系统的表都是遵循第三范式的。

2.2.2 维度建模

  • 维度模型如图所示,主要应用于OLAP 系统中,通常以某一个事实表为中心进行表的组织,主要面向业务,特征是可能存在数据的冗余,但是能方便的得到数据。
  • ==关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率==。所以通常我们采用维度模型建模,把相关各种表整理成两种:事实表维度表两种。

2.2.2.1 维度建模的三种模型

  1. 星型模型:事实表周围只有一层维度表

  1. 雪花模型:维度表有多个层级

  1. 星座模型:多张事实表

2.3 维度表和事实表

2.3.1 维度表

  • 维度表:一般是对事实的描述信息。每一张维表对应显示世界中的一个对象或者概念。
  • 维度表特征:

    • 维度的范围很宽(具有多个属性,多个列)
    • 和事实表相比,行数相对少
    • 内容相对固定:编码表
  • 如商品信息表,每一行表示一种商品的具体特征和概念(小米手机,128G,白色,4999元)

2.3.2 事实表

  • 每一个事实表的行包括:具有可加性的数值型的度量值、与维表相连接的外键、通常具有两个和两个以上的外键、外键之间表示维表之间多对多的关系。==可统计的==
  • 特征:

    • 非常大
    • 内容相对窄(列数少)
    • 经常发生变化,每天会新增很多
  • 如订单表(小明,小米手机,4999元,优惠券200元,下单时间20200521 09:00)
Last modification:May 21st, 2020 at 09:34 am