本文我们来探讨下实时数据仓库,从以下几个方面出发:

  1.    什么是实时数据仓库
  2.   实时数据仓库的产生背景
  3.   实时数据仓库的发展现状
  4.   实时数据仓库的数据特点是什么
  5.   实时数据仓库的架构
  6.   实时数据仓库的分层架构设计
  7.   实时数据仓库的数据建模方法
  8.   实时数据仓库的技术选型以及对比
  9.   实时数据仓库的前景

 1. 什么是实时数据仓库

                 互联网的迅猛发展使得数据不再昂贵,而如何从数据中更快速获取价值变得日益重要,因此,数据实时化成为了一个大趋势。越来越多的业务场景需要实时分析,以极低的延迟来分析实时数据并给出分析结果,从而提高业务效率,带来更高价值。流式处理作为实时处理的一种重要手段     实时数据仓库由离线数仓融合发展而来,对比离线数仓,实时数仓既有与其相同之处,也有其独特之处,一般来说,离线数仓只能支持T+1天时效延迟的数据处理,数据处理过程以ETL为主,最终产出以报表为主。而实时数仓 建立在离线数仓基础之上,同时增加了更多样化数据源的导入存储,更多样化数据处理方式和时效(支持T+0天时效),更多样化数据使用方式和更多样化数据终端服务。

 2. 实时数据仓库的产品背景

                 1.越来越多的实时数据需求(数据报表、仪表板、分析、挖掘、数据应用等)。

                 2. 随着业务的增长,客户对数据实时性的需求不断增加,实时报表,实时数据大盘,实时指标计算等业务都需要实时             数据。数据从生产到应用(数据报表、仪表板、分析、挖掘、数据应用 等)需要做到秒级延迟。

 3.实时数据仓库的发展现状

               目前实时数据仓库的建设还没有形成一套完善的方法论,基本上都是借鉴离线数据仓库的建设方式,并在此基础先加以改进,并根据公司自己的数据,业务特点,提出自己的实时数据仓库的建设方法。所以出现了各种各样的实时数据仓库的架构,但是基本的建设方式还是大同小异;尤其随着flink的广泛应用,这种批流统一的特性,更加崔进了实时数据仓库的发展。

 4. 实时数据仓库的数据特点是什么

                1.数据实时化,是指数据从产生(更新至业务数据库或日志)到最终消费(数据报表、仪表板、分析、挖掘、数据应用   等),支持毫秒级/秒级/分钟级延迟(严格来说,秒级/分钟级属于准实时,这里统一称为实时)。这里涉及到如何将数据实时的从数据源中抽取出来;如何实时流转;为了提高时效性,降低端到端延迟,还需要有能力支持在流转过程中进行计算处理;如何实时落库;如何实时提供后续消费使用。实时同步是指多源到多目标的端到端同步,流式处理指在流上进行逻辑转换处理。

                2.面向主题的数据组织方式,实时数据仓库同离线数据仓里一样,面向主题组织数据

 5.实时数据仓库的架构

             

数据仓库无法处理准实时 数据仓库实时更新_数据

 

 6.实时数据仓库的分层架构设计(Kappa架构)

                 

数据仓库无法处理准实时 数据仓库实时更新_数据_02

      实时数据仓库分层设计参考离线数据仓库的设计方式,不同点在于,实时数据仓库的数据,除去APP层的数据需要落到查询,分析类的存储中,比如:mysql,tidb,hbase,ElasticSearch,solr 等,其他的数据需要落地到消息队列中(Kafka,阿里云的datahub等)。

  •     源数据层

              主要是企业内部的业务数据,通过爬虫爬出来的行业数据,以及一些埋点数据。是整个公司的业务的数据的集合。

  •     ODS层

              接入Kafka的原始数据(json),经过实时程序处理,一般情况下,在这层的数据和源数据的数据保持一致,不对数据进行任何的改变,贴源设计

  •     DIM层

            维表层,主要存储一些维度数据,这层的数据需要落地到具体的存储中,一般会存在redis,或者关系型数据库中,实时数据仓库的维度数据包括两部分:业务维度数据和离线维度数据

            业务维度数据:主要通过业务数据库直接同步过来,可以考虑实时同步(根据具体的业务选择)

            离线数据维度:离线数据仓库的维度数据同步至实时数据仓库,对于一些从事实表中抽取出来的维度,实时数据仓库需要从离线数据仓库同步这些维度表至实时数据仓库,一种比较优秀的做法是,所有的维表数据都从离线数据仓库同步至实时数据仓库,这样能保证离线和实时的数据维度一致,当然肯定会损失部分数据的实时性

  •     DWD层

              实时明细层,这层的数据是经过清洗后的明细数据层,一般情况这层的数据,是一个大宽表,直接可以进行查询,或者         提供业务,当然,这层的数据是需要落地到存储系统中的作为备份,防止数据丢失。

  •     DWS层

             轻度汇总层数据,通过一定的时间窗口,对数据进行汇总,这层的数据主要是一些通用指标的汇总,一般情况下这层的          数据通过同步链路直接写入APP层提供服务

  •     DM层

            数据集市层,这层的数据主要是为部门或者某个业务线提供个性化的数据,这部分数据一般会根据业务需要,落地到部门自己的存储中

  •     APP层

          应用层,这层的数据一般都会落地到数据存储中(tidb,hbase),提供数据服务

 7.实时数据仓库的数据建模方法

  维度建模:一般维度建模的步骤如下:

 1. 选择业务过程

        业务过程是一系列操作活动,转换为事实表中的事实,例如每个月的每个账单快照

 2. 声明粒度

        粒度是指事实表中的一行代表什么,同一个事实表不能混用粒度,最好从最小的粒度开始设计维度,因其可能承受用户无法预计的查询需求

 3.确认维度

       维度是根据粒度将表分开成多个维度表,即从不同的维度(角度)去看

      维度是数据仓库的灵魂,是BI的入口和驱动

4.确认事实

      事实是指一种在某个粒度下的度量,例如在销售维度中,销量和总额是良好的事实,而商店经理的工资则不允许出现在该维度中。

优点:

     方便使用

    适合大数据下的数据处理场景(与大数据的处理方式有关,适合处理大文件,不适合处理小文件,避免多表关联)

    适合进行OLAP操作

  主要是采用维度建模中的星型模型

 8.  实时数据仓库的技术选型以及对比

     实时数据处理技术目前支持的技术有spark Streaming,storm ,flink 等,对比如下图:

           

数据仓库无法处理准实时 数据仓库实时更新_数据仓库_03

  

                 目前来看,storm基本已经很少被使用,spark streaming 是目前用的比较多的实时数据处理框架,flink具有天然的

实时属性(以流模拟批),发展势头很猛,未来会有很大可能替代spark streaming

9.  实时数据仓库的前景

          平台化是实时数据仓库发展的一个必经阶段,平台化可以降低实时数据的开发门槛,提高开发效率。降低业务维护成本高,以及资源的合理利用,使得实时数据任务不但具有实时性,更具有普遍性,如下图:

 

数据仓库无法处理准实时 数据仓库实时更新_数据_04