Real-time Data Warehouse

当设计一款产品或者平台的时候,可以划分为两层,即底层实现和上层抽象。

实时数仓和传统数仓的对比主要可以从四个方面考虑:

  • 第一个是分层方式,离线数仓为了考虑到效率问题,一般会采取空间换时间的方式,层级划分会比较多;则实时数仓考虑到实时性问题,一般分层会比较少,另外也减少了中间流程出错的可能性。
  • 第二个是事实数据存储方面,离线数仓会基于 HDFS,实时数仓则会基于消息队列(如 Kafka)。
  • 第三个是维度数据存储,实时数仓会将数据放在 KV 存储上面。
  • 第四个是数据加工过程,离线数仓一般以 Hive、Spark 等批处理为主,而实时数仓则是基于实时计算引擎如 Storm、Flink 等,以流处理为主。

实时数仓主要有两个要点。首先是分层设计上,一般也是参考离线数仓的设计,通常会分为

ODS操作数据层

DWD明细层

DWS汇总层(轻度汇总/高度汇总)

ADS应用层

可能还会分出一层DIM维度数据层。另外分层设计上也有不同的思路,比如可以将DWS和ADS归为DM数据集市层

  • ODS(Operational Data Store): 贴源层

    这一层又叫做贴源层,最为接近数据源的一层,需要存储的数据量是最大的,存储的数据也是最原始。对众多数据源而言,他们的数据格式基本不一致,经过统一规格化后可以得到规整的数据,将数据源中的数据经过抽取、清洗、传输后装入ODS层。

  • DWD(Data Warehouse Detail):数据明细层

    业务层与数据仓库的隔离层,主要对ODS层做一些数据清洗和规范化的操作,并且可以按照不同的行为维度对数据进行划分,例如本文对数据源就进行了划分,主要分为浏览、曝光、点击、交易等不同的维度,这些不同的维度能够对上层调用方提供更细粒度的数据服务。

  • DWS(Data WareHouse Servce):数据服务层

    对各个域进行了适度汇总,主要以数据域+业务域的理念建设公共汇总层,与离线数仓不同的是,实时数仓的汇总层分为轻度汇总层和高度汇总层,例如将轻度汇总层数据写入 ADS,用于前端产品复杂的OLAP查询场景,满足自助分析和产出报表的需求。

  • ADS(Application Data Store):应用数据服务层

    主要是为了具体需求而构建的应用层,通过 RPC 框架对外提供服务,例如本文中提到的数据报表分析与展示、监控告警、流量调控、开放平台等应用。

  • DIM(Dimension):维表

    在实时计算中非常重要,也是重点维护的部分,维表需要实时更新,且下游基于最新的维表进行计算


reference:

实时数仓 | 你想要的数仓分层设计与技术选型 - 云+社区 - 腾讯云

  • 实时数仓是指在数据仓库的基础上,增加了实时数据处理和分析功能,可以在数据生成后立即进行处理和分析,并及时反馈给业务用户。实时数仓的建设需要关注以下几个问题:
  1. 数据源接入:实时数仓需要及时地处理和分析数据,因此数据源的接入必须实时或近实时,需要考虑数据源的多样性和高并发性。
  2. 数据质量:数据的准确性和完整性对于实时数仓的建设尤为重要,需要对数据进行清洗、过滤、校验等操作,保证数据的质量。
  3. 数据集成:实时数仓需要整合多个数据源的数据,因此需要进行数据集成和融合,确保数据的一致性和准确性。
  4. 数据模型设计:数据模型是实时数仓建设的核心,需要设计合理的数据模型,确保数据的可扩展性和灵活性。
  5. 实时计算和分析:实时数仓需要具备实时计算和分析能力,需要使用实时计算引擎和分析工具,对数据进行实时处理和分析。
  6. 数据安全:实时数仓中的数据可能涉及敏感信息,需要采取一定的安全措施,保证数据的安全性和隐私性。
  7. 系统运维:实时数仓需要进行系统运维和监控,包括数据备份和恢复、系统调优、故障处理等方面,确保系统的稳定性和可靠性。

综上所述,实时数仓的建设需要关注数据源接入、数据质量、数据集成、数据模型设计、实时计算和分析、数据安全以及系统运维等多个方面,需要根据实际需求和场景进行综合考虑和规划。

数据湖

数据湖,目前关注度比较高的有 Databricks 推出的 Delta Lake、Uber 的 Hudi 以及 Netflix 的 Iceberg

reference https://mp.weixin.qq.com/s/m8-iFg-ekykWGrG3gXlLew