抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

网易严选质量数仓建设(一)—— 数据仓库基本概念

2020 年 9 月 27 日

网易严选质量数仓建设(一)—— 数据仓库基本概念

对所有组织来说,数据都是重要的财富,数据的存在有两个目的:操作型记录的保存以及分析决策的制定。


对于质量保障团队来说,质量数据能够客观反映开发、测试团队的工作量、工作效率以及工作质量。通过数据指标,查找质量保障工作中的薄弱环节,予以加强;通过数据指标在时间上的纵向对比,反映各项工作开展的效果;通过数据指标在各个团队之间的横向对比,找出优秀团队,借鉴工作经验。


鉴于以上诸多好处,严选质量保障组开展质量数仓建设工作。在建设数据仓库之前,先了解一些数据仓库的基本概念。


1. 数据库 &数据仓库

从广泛的定义来讲,数据库和数据仓库的本质其实是一致的或极其相似的,都是通过某个数据库软件,基于某种数据模型来组织、管理数据。


而在常见的语义中,数据库是指传统的业务数据库,大部分为关系型数据如,如 Mysql、Oracle 等。而数据仓库是用于多元化数据分析的一种体系结构,在数据仓库的体系中,也存在用来存储数据的软件系统,只不过其中数据的组织方式与传统数据库不同,不遵循数据库的设计范式,因此在数据模型的设计上有很大的自由度。


面向业务的数据库,主要做操作型处理,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。


数据仓库是一个面向数据分析的集成化数据环境,它可以通过对大量数据进行分析从而得出分析报告并提供决策支持。需要注意的是,数据仓库本身并不生产数据,同时也不消费数据,它的数据来源于外部,且通常不是一个单一的数据源。



2. 数据仓库的特点

  • 面向主题


业务数据库中的数据都是面向事务处理进行组织的,但数据仓库是面向主题存放,其目的是为了更好的组织数据,方面数据查询分析。


  • 集成的


数据仓库中的数据来源广泛,通常会从不同的数据源抽取过来,需要在数据仓库中对数据进行清洗转换(编码统一、属性度量统一、描述统一、关键字统一,也就是 ETL),重新编排,得到原始表与数据仓库表的映射结果。比如,不同系统中,订单号可能表示为 task_id,也可能表示为 order_id,当需要订单主题进行集成时,就需要将订单号标准化。


  • 相对稳定


数据仓库的数据通常是批量的方式更新、访问,所涉及的数据操作主要是数据的查询,一般情况下并不会进行修改操作。当数据抽取到操作环境中后,只要没有误操作,数据不会轻易丢失掩盖。


  • 反应历史变化


有的业务数据仅仅保留当前状态,数据进入数据仓库后,都会加上时间关键字以标记,存储历史状态,以此在时间维度上反映数据变化情况,帮助用户进行决策分析。


3. 相关概念

  • 数据域


指面向业务分析,将业务过程或者维度进行抽象的集合。数据域是需要抽象提炼,并且长期维护和更新的,但不轻易变动,在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务进入时,无影响地被包含进已有的数据域中和扩展新的数据域。


  • 业务过程


指企业的业务活动事件,如下单、支付、退款等,都是业务过程(质量数仓中如提交 bug 就是业务过程)。业务过程是一个不可拆分的行为事件。


  • 时间周期


用来明确数据统计的时间范围或者时间点,如近 30 天,自然周,截至当日等。


  • 修饰词


指除了统计维度、时间周期以外,指标的业务场景限定抽象。修饰词隶属于一种修饰类型,如在流量域访问终端类型下,有修饰词 PC 端、无线端等。


  • 修饰类型


是对修饰词的一种抽象划分,例如流量域的访问终端类型。


  • 主题


主题就是指我们所要分析的具体方面。主题有两个元素:各个分析角度(维度),二是要分析的具体度量,一般通过数值体现。



维是用于从不同角度描述事物特征的,一般维都会有多层,每个 level 都会包含一些共有的或特有的属性。


  • 度量/原子指标


度量就是要分析的具体的技术指标,一般为数值型数据,是业务定义中不可再拆分的指标,具有明确业务含义的名词,如支付金额。


  • 维度


维度是度量的环境,用来反映业务的一类属性,这类属性的集合构成一个维度,也可以称为实体对象。维度属于一个数据域,如地理纬度、时间维度等。


  • 维度属性


维度属性隶属于一个维度,如地理纬度里面的国家名称、省份名称等都属于维度属性。


  • 派生指标


派生指标=一个原子指标+多个修饰词(可选)+时间周期。可以理解为,对原子指标业务统计范围的圈定。


  • 粒度


数据的细分程度。


  • 事实表


事实表是用来记录分析的内容的全量信息的,包含了每个事件的具体要素,以及具体发生的事情。事实表中的每行对应一个度量事件,每行的数据是一个特定级别的细节数据,称为粒度。


  • 维表


维度表包含与业务过程度量事件有关的文本环境,用于描述与“谁、什么、哪里、何时”有关的事件。


4. Hadoop System


HDFS

Hadoop 分布式文件处理系统,是 Hadoop 体系中,数据存储管理的基础。源自于 Google 的 GFS 论文,也既 GFS 的克隆版。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS 简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。


Mapreduce

分布式计算框架,Hadoop MapReduce 是 Google Mapreduce 克隆版,是一种计算模型,用以进行大数据量的计算。其中 Map 对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果;Reduce 则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。Mapreduce 这样的功能划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。


HBase

Hbase 是 Google Bigtable 的克隆版,是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。和传统关系数据库不同,HBase 采用了 BigTable 的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。HBase 提供了对大规模数据的随机、实时读写访问,同时,HBase 中保存的数据可以使用 MapReduce 来处理,它将数据存储和并行计算完美地结合在一起。


Zookeeper

Zookeeper 是 Google Chubby 克隆版。解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。


Sqoop

Sqoop 是 SQL-to-Hadoop 的缩写,主要用于传统数据库和 Hadoop 之间传输数据。数据的导入和导出本质上是 Mapreduce 程序,充分利用了 MR 的并行化和容错性。


Pig

基于 Hadoop 的数据流系统,由 yahoo!开源,设计动机是提供一种基于 MapReduce 的 ad-hoc(计算在 query 时发生)数据分析工具,定义了一种数据流语言—Pig Latin,将脚本转换为 MapReduce 任务在 Hadoop 上执行。通常用于进行离线分析。


Mahout

数据挖掘算法库,Mahout 的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout 现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法,Mahout 还包含数据的输入/输出工具、与其他存储系统(如数据库、MongoDB 或 Cassandra)集成等数据挖掘支持架构。


Flume

日志收集工具,Cloudera 开源的日志收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在 Flume 中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume 数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume 还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume 是一个可扩展、适合复杂环境的海量日志收集系统。


Hive

由 Facebook 开源,最初用于解决海量结构化的日志数据统计问题。Hive 定义了一种类似 SQL 的查询语言(HQL),将 SQL 转换为 MapReduce 任务在 Hadoop 上执行,通常用于离线分析,Hive 让不熟悉 MapReduce 开发人员也能编写数据查询语句,然后这些语句被翻译为 Hadoop 上面的 MapReduce 任务。


Yarn

Yarn 是下一代 Hadoop 计算平台,主要是为了解决原始 Hadoop 扩展性差,不支持多计算框架而提出的。Yarn 是一个通用的运行时框架,用户可以编写自己的计算框架,在该运行环境中运行,用于自己编写的框架作为客户端的一个 lib,在提交作业时打包即可。该框架提供了资源管理、资源调度组件。


Tez

Tez 是 Apache 最新开源的支持 DAG 作业的计算框架,它直接源于 MapReduce 框架,核心思想是将 Map 和 Reduce 两个操作进一步拆分,即 Map 被拆分成 Input、Processor、Sort、Merge 和 Output,Reduce 被拆分成 Input、Shuffle、Sort、Merge、Processor 和 Output 等,这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的 DAG 作业。


Spark

Spark 是一个通用的并行计算框架,它提供了一个更快、更通用的数据处理平台,与 Hadoop 相比,Spark 能够让程序在内存中运行时速度提升百倍。


Kafka

Kafka 是 Linkedin 开源的分布式消息队列,主要用于处理活跃的流式数据。活跃的流式数据在 web 网站应用中非常常见,这些数据包括网站的 pv、用户访问了什么内容,搜索了什么内容等。这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。


Ambari

Apache Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,是为了让 Hadoop 以及相关的大数据软件更容易使用的一个 web 工具。


作者简介


婧雯,网易严选资深测试工程师,2014 年毕业于北京理工大学,2017 年加入网易。参与数据产品技术部多个重点产品质量保障工作,建设并完善数据产品部质量保障体系,致力于质量保障工作效能得提升。


2020 年 9 月 27 日 19:571882

评论

发布
暂无评论
发现更多内容

架构师训练营第二周总结

好名字

极客大学架构师训练营 作业

第二周总结

ruettiger

Wireshark的使用与数据分析(三)--显示过滤器

姬翔

Wireshark

第二周学习笔记

方堃

学习

架构师训练营第二周作业

15359861984

<<架构师训练营>> 第二周作业

R20114

第二周 - 学习总结

molly

极客大学架构师训练营

week2-依赖倒置原则&接口隔离原则

暖丶冬

第2周 架构师实现自己架构目标的主要手段

陆不得

ARTS 02 - 解决 Jenkins 中使用代理来执行 npm install 的问题

jerry.mei

算法 前端 练习 ARTS 打卡计划 ARTS活动

第二次作业

蒜泥精英

架构师第二周作业

跨域刀

极客大学架构师训练营

极客大学第二周作业

方堃

极客大学

第二周作业

Geek_2b3614

架构师训练营 -week2- 学习总结

暖丶冬

依赖倒置原则&接口隔离原则优化Cache类

高程

架构师 作业 week2

第二周作业

倪惠华

架构师训练营第二周学习总结

fenix

设计模式中的依赖倒置原则和接口隔离原则

dongge

设计原则之依赖倒置与接口隔离

L001

架构是训练营

架构学习第二周总结

乐天

架构师训练营第二周【作业】

atlasman

Week2作业

王志祥

极客大学架构师训练营

学习总结 - 架构师训练营 - 第二周

走过路过飞过

架构师训练营第二周总结

草原上的奔跑

第三课 容我三思

Geek_bobo

架构师训练营-第二周-总结

狂奔嘀兔纸

极客大学架构师训练营

2020-06-13-第二周作业

路易斯李李李

依赖倒置

wei

Homework-依赖倒置原则的理解

River Tree

Homework 依赖倒置原则

架构师Week2作业

熊威

Study Go: From Zero to Hero

Study Go: From Zero to Hero

网易严选质量数仓建设(一)—— 数据仓库基本概念-InfoQ