数仓记录

60 阅读3分钟

一、数仓是什么?

根据维基百科的定义,数仓是用于报告和数据分析的系统,是来自一个或多个不同源的集成数据的中央存储库,它将当前和历史数据存储在一起。

数仓具备以下几大特性:

  1. 主题导向:通常需要按业务含义归类至相同的主题区;
  2. 集成性:数据来自企业各OLTP系统,在数仓中是集成且一致的;
  3. 时间差异性:数据的变动,在数仓中是可以被记录及追踪变化的;
  4. 不变性:数据一旦确认写入后是不会被取代或删除的,即使数据是错误的也如此。

以上对数仓的定义和描述较偏学术,在工业界实际业务场景下,各个特性可能会有取舍或折中。可以理解为现实中的数仓就是一个存放数据的大而全的仓库,数据的组织方式较强依赖于业务特点,不同业务领域的数仓结构、组织方式和技术选型存在千差万别。

二、数仓的作用是什么?

“数据仓库”与“数据库”

在谈到“数据仓库”的作用时,往往需要和“数据库”做比较。两者名称上只有一字之差,但通常来说两者在业务系统中的定位、作用、要求和实现方式都不一样,其中最主要的区别有:

  1. 数据库用于事务处理,满足线上服务的需求;而数仓用于数据分析,满足线下分析决策的需求;
  2. 数据库服务于线上系统,考虑到性能和稳定性,其查询逻辑相对比较简单;数仓面向业务领域复杂的分析需求,查询逻辑更为复杂。

引入数仓的作用

业务系统通常是先有数据库,再有数仓的。数据库在建设初期承接线上事务的处理,以及少量简单的分析型任务。随着系统的演进,单纯的数据库已经无法支撑越来越复杂的分析需求,这时就需要数仓出场了。引入数仓带来的好处主要有以下几点:

  1. 能够包含多种来源的数据,数据内容丰富,包括:历史的和当前的所有数据、原始的和经过复杂逻辑加工的各类数据等;
  2. 可以统一数据访问入口,无需逐个连接数十个甚至更多的业务系统或微服务,进而可以简化数据分析方式;
  3. 可以隔离线上业务系统和线下分析系统,保障系统稳定和数据安全;
  4. 可以屏蔽系统/服务间的差异,提供数据的标准语义集,为数据质量提供统一的校验机制。

顺带介绍一下,一个完整的“数据库+数据仓库”体系有两种技术选型模式:

  1. 组合型:数据库和数仓选用不同的组件,如MySQL/Oracle数据库+Hive/Redshift数仓,各个组件专注于单一职责;
  2. 单一型:选用兼容数据库和数仓功能的组件,例如TiDB/Spanner,一个引擎解决两方面问题。