暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据仓库学习路线图

悦享骑诚 2021-06-02
3453

"用我有限的理解去探索无限的 #数据仓库 世界"


近期当我尝试总结我在数据仓库领域学习的一些经验的时候,有很多想法,产品及工具不断涌现在我的脑海,我认为有必要将数据仓库领域涉及到的知识点按一定的主题和分支进行总结,以便于在未来继续深入研究和实践,因此创建了这个思维导图。所有的知识点都用英文描述,方便各位进行检索。


  1. Modeling Concept 数据仓库建模方法论


    对于初次接触数据仓库的IT从业人员,我建议应该从数据仓库的建模方法论(Modeling Concept)入手;数据仓库理论体系简约而不简单,目前市面上流行的数据建模方法有:


    1. ER - 范式模型

    2. Object Role

    3. Anchor

    4. Multiple Dimension - 维度模型

    5. Data Vault

    6. Focal

    7. Fact-Oriented 面向事实模型


      下图是目前市面上流行的四种建模方式的逻辑关系图


    1.1 Data Modeling Comparison


  2. Architecture 数据仓库架构设计


  3. 对于数据仓库架构设计的思考,能够让你从一个更广阔的视角去思考你的数据仓库项目,以及每一个分层的设计目标和原理,目前业界通用的是分层架构设计原则 - Layered Architecture,以Data Vault建模思想主要包含以下几个部分:


    1. PSA - Persistent Staging Area - 数据接入层

      1. Staging - 落地层

      2. CDC - 变化计算层

      3. Historical - 历史数据存储层

    2. EDW Core - 数据仓库核心层

      1. Raw DV - 原始DV模型层

      2. Business DV - 含业务逻辑DV模型层

    3. Information Mart - 数据集市层

      1. Point-in-Time - 时点数据表

      2. Reference - 参考表

      3. Cube - 数据立方体

    4. Error Mart - 错误信息集市

    5. Log Mart - 日志集市


    2.1 Data Vault Architecture


  4. SQL - 结构化查询语言


  5. SQL 几乎是数据仓库从业人员必须掌握的一门数据库查询语言,也是数据建模和实施的有利武器。下面仅列举项目上必须了解及掌握的一些进阶应用:


    1. Windows Function - 窗口函数

    2. Set - 集合

    3. View - 视图

    4. Stored Procedure - 存储过程

    5. Common Table Expression - 通用表表达式

    6. Function - 函数

    7. Temporal Table - 临时表

    8. Table - Constraints/Index - Partitions - 表索引及分区


  6. Cloud, BI, Integration, Orchestration And Modeling Tools


    这部分仅列举一些我在项目上接触到的一些,我认为比较符合业界潮流和趋势的数据仓库产品及工具:


    1. Cloud Data Warehouse - Snowflakes


      建议对Snowflake感兴趣的同学可以深入研究一下下面的论文,其架构设计将存储和计算进行了拆分,更加灵活和具有弹性,必将是未来云数据仓库的大方向;

      The Snowflake Elastic Data Warehouse - Snowflake

      https://www.snowflake.com/wp-content/uploads/2019/06/Snowflake_SIGMOD.pdf


    2. Business Intelligence - Tableau, Power BI

    3. Integration - Talend

    4. Orchestration - Apache Airflow, Microsoft Azure Data Factory


      Apache Airflow是一个由Python编写的开源的调度平台,支持单节点,集群模式部署,通过引入Fail-over组件能够支持Scheduler进程的容错处理,并且也支持Docker容器化管理,加上K8S的加持,让你的调度平台实现弹性化伸缩。简而言之,一个神级的调度工具,请参考下面链接;

      https://airflow.apache.org/

      4.1 Apache Airflow Architecture


    5. Modeling Tools - 数据仓库建模工具


      建议可以尝试一下国内的Navicat工具,不仅支持数据库检索,更有多种功能可以使用,其中的建模功能支持反向工程,更加便利对于数据模型的创建。


  7. Automation - 数据仓库自动化


    数据仓库自动化,是一个非常值得探讨的话题,业界也有大量的工具对这一需求进行了支持,比如:

    1. WhereScape Red/3D - 一家来自于德国的软件公司,目前已经全面支持Data Vault数据建模方法;

    2. DIRECT - 数据自动化框架,由Roelant Vos开源,可以从Github上搜索到,其思想值得学习;

    3. SONRA Flexter - 一家来自于爱尔兰的专注于基于XML/JSON等半结构化数据自动化的软件公司,CEO Uli Bethke对于数据仓库,大数据等概念和解决方案的观点常常引起我的深入思考。


    为什么自动化对于数据仓库如此重要,我认为主要由以下两点原因:

    1. 通过自动化工具,能够将一个成熟且标准的数据仓库建模方案进行快速部署,广泛推广后,你的数据仓库项目必将非常稳定,便于扩展和后期维护。

    2. 节省时间和人力成本,项目开发,交付的效率和质量将大大提升。


  8. Programming Language - 编程语言


    1. Python - 胶水语言,很多场景都可以使用到,如在Airflow上就有大量的应用,结合目前Big Data的环境,将非常有助于数仓整体建设。

    2. Java Scala - 把这两个重量级变成语言列在这里,主要的原因是考虑到大部分场景里面需要数据仓库人员编写UDF - 用户自定义函数,来解决一些SQL无法解决的问题。所以对类,对象,函数,继承等基本编程思想要有所了解。

    3. Go - 考虑到Golang目前的火热程度,我不得不把它列进来,虽然现阶段看不到其在数据仓库领域的一些建树,但未来就不一定了。


  9. Governance - 数据治理


数据治理,是一个非常复杂的话题,包含的内容比较多,通常任何一个企业想实现数据治理,也是面临着重重的困难。

我认为数据治理本质上是一个企业对于数据资产所有权的划分,是CEO,CDO从企业组织架构需要首先意识到并进行有效支持的一个方向。

其次,制定企业数据治理规则,对于数据所有权进行明确划分,从业务流程出发,确认数据所属的主要环节从而能够确定数据对象的生命周期,产生数据的系统是什么?被哪些业务环节所使用到了,与其他数据对象的关系都有哪些。

最后数据质量,元数据管理,主数据管理,又是数据仓库大环境中不可避免,也老生常谈的话题。要有方法论,也要有产品和工具的支持。后期我们再详细讨论。


7.1 Data Modeling Comparison


本文仅涵盖了部分数据仓库的知识点,还有很多内容后续还会不断完善。今年我也会用大部分时间,对其中的很多细节进行逐一解读,敬请期待。




文章转载自悦享骑诚,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论