目录
- 一.什么是大数据
- 二.数据处理技术分类(OLAP vs OLTP)
- OLAP(Online Analytical Processing)
- OLTP(Online Transaction Processing)
- 区别
- 联系
- 三.储存的方式(列式 vs 行式)
- 行式存储
- 列式存储
- 总结
- 四.数仓
- 集成数据
- 主题导向
- 非易失性
- 时间变化
- 数据仓库架构
- 五.数仓分层
- 六.ETL过程
- 提取(Extract)
- 转换(Transform)
- 加载(Load)
- 七.ELT
- ELT的优势:
- 八.流计算
- 流计算的关键特征:
- 流计算的组件:
- 流计算的应用场景:
一.什么是大数据
大数据(Big Data)是指无法在合理时间内用传统数据库管理工具进行捕捉、管理和处理的庞大、复杂的数据集合。(3V特点)
- 体积(Volume):数据量巨大,从TB(太字节)到PB(拍字节)乃至更高。
- 速度(Velocity):数据以高速率产生和收集,包括实时数据流。
- 多样性(Variety):数据来自多种来源,包括结构化数据、非结构化数据和半结构化数据,如文本、图片、视频等。
二.数据处理技术分类(OLAP vs OLTP)
OLAP(Online Analytical Processing)
-
定义:OLAP是一种用于快速分析多维信息的技术。它主要用于复杂查询、分析和报告,而不是简单的事务处理。OLAP数据库设计为优化数据仓库中的数据读取,支持复杂的分析操作和计算,如趋势分析、数据挖掘和预测模型。
-
特点:
- 处理大量数据。
- 优化用于查询和报告的复杂运算。
- 数据结构通常是多维的(例如,数据立方体)。
- 用于业务智能(BI)、数据分析和决策支持系统(DSS)。
OLTP(Online Transaction Processing)
-
定义:OLTP是一种用于管理日常事务处理的技术。这类数据库设计用于快速、高效地处理大量简单的查询和事务,如插入、更新和删除数据。OLTP系统通常用于管理关键的业务数据,在零售、银行和其他需要处理大量事务的领域尤为重要。
-
特点:
- 面向事务,处理大量简短的读写操作。
- 数据模型通常是标准的关系模型,便于实时数据访问和修改。
- 系统设计注重数据的一致性和完整性。
- 响应时间短,支持多用户并发访问。
区别
- 用途:OLAP用于分析和决策支持,而OLTP用于日常事务处理。
- 查询类型:OLAP执行复杂的查询和分析,涉及大量数据;OLTP处理快速的、小规模的事务。
- 数据更新:OLAP数据更新不频繁,主要用于读取;OLTP数据频繁更新。
- 数据结构:OLAP倾向于使用多维数据结构;OLTP使用传统的关系数据模型。
- 性能考量:OLAP优化了数据读取性能;OLTP优化了事务处理的速度和效率。
联系
- 数据流动:数据通常从OLTP系统流向OLAP系统。即,OLTP系统收集和管理业务日常操作数据,然后这些数据被转移和转换(通过ETL过程:提取、转换、加载)到数据仓库中,供OLAP系统使用。
- 互补关系:OLAP和OLTP通常在企业中共存,互相补充。OLTP系统支持日常业务操作,而OLAP系统支持基于这些操作数据的决策分析。
虽然它们服务于不同的需求,但在实际应用中,OLAP和OLTP是相互关联和依赖的。随着技术的发展,一些现代数据库系统和平台开始提供所谓的HTAP(Hybrid Transaction/Analytical Processing)能力,旨在同时处理OLTP和OLAP工作负载,以满足更复杂和动态的企业需求。
三.储存的方式(列式 vs 行式)
选择哪一种取决于应用场景、性能要求和数据处理的特性
行式存储
在行式存储数据库中,表中的一行数据被存储为一个连续的单元。这意味着构成记录的所有字段都是连续存放的。当数据库处理事务时,如插入、更新或删除操作,它通常需要访问表中的完整记录。行式存储优化了这类操作,因为它能够快速读写表中的单个记录。
优点:
- 优化了事务处理(如OLTP系统):因为处理事务时通常需要访问完整的记录。
- 适合写密集型应用:由于数据是按行顺序存储的,插入和更新操作通常更高效。
缺点:
- 对于需要访问大量数据的复杂查询和分析操作不够高效,尤其是当查询只涉及表中少数几列时。
列式存储
列式存储数据库将表中的数据按列而非行来存储。这意味着同一列中的数据是连续存储的,而不是将整行数据存储在一起。这种存储方式特别适合于分析和报告应用,因为它允许数据库快速读取表中的特定列,而不是加载整个行。
优点:
- 优化了分析查询(如OLAP系统):因为分析查询通常只涉及表中的几列,列式存储可以显著提高这类查询的效率。
- 压缩率高:由于同一列的数据类型相同,列式存储可以采用更有效的压缩技术,减少存储空间需求。
- 高效的聚合操作:计算聚合函数(如SUM、AVG)时,只需读取相关列,不需要加载整行数据。
缺点:
- 写操作可能比行式存储更慢:每次更新数据时,可能需要重写整个列,这在某些情况下会导致性能下降。
- 不适合事务密集型应用:如果应用需要频繁更新小规模的数据,列式存储可能不如行式存储高效。
总结
- 行式存储更适合事务处理和需要频繁读写完整记录的应用场景(如OLTP系统)。
- 列式存储更适合分析和报告,尤其是当操作主要涉及读取表的特定几列而非整行数据时(如OLAP系统)。
四.数仓
数据仓库(Data Warehouse)是用于存储、管理和分析大量数据的集中式系统。它从各种异构数据源收集数据,进行清洗、转换和集成,然后将其存储在一个统一的平台上,以支持复杂的查询、分析、报告和决策制定。数据仓库的设计旨在优化查询和分析操作的效率,而不是处理日常的事务性工作负载。
集成数据
数据仓库集成了来自企业内外的多个数据源,包括关系数据库、文件系统、在线事务处理(OLTP)系统、CRM系统等。数据集成过程包括数据清洗、去重、转换和标准化,确保存储在数据仓库中的数据质量和一致性。
主题导向
数据仓库的设计通常是主题导向的,意味着数据是围绕企业的关键主题(如客户、产品、销售)组织的。这种方式有助于用户根据业务需求更容易地理解和查询数据。
非易失性
数据仓库中的数据是非易失的,一旦数据被加载到数据仓库中,就不会频繁地改变。数据仓库保留历史数据,使得用户可以进行时间序列分析和趋势预测。
时间变化
数据仓库中的数据通常包括时间维度,使得用户可以执行时间序列分析和查看数据随时间的变化。时间维度是进行历史分析和趋势预测的关键。
数据仓库架构
数据仓库架构一般包括以下几个核心组成部分:
- 数据源:企业内外的多种数据源。
- ETL过程(提取、转换、加载):用于从数据源提取数据,进行必要的清洗和转换,然后加载到数据仓库中。
- 数据仓库数据库:集中存储经过转换和集成的数据。
- 数据访问工具:包括查询工具、报告工具和分析工具,用于访问、展示和分析数据仓库中的数据。
五.数仓分层
(见博客)
六.ETL过程
提取(Extract)、转换(Transform)、加载(Load)
ETL过程是数据仓库和大数据处理中的一个核心概念,它代表提取(Extract)、转换(Transform)、加载(Load)三个步骤。ETL过程是将数据从源系统转移到目标系统(如数据仓库、数据湖或其他数据存储系统)的过程,在此过程中对数据进行清洗、标准化和聚合等处理,以便于后续的查询和分析。下面详细解释ETL的每个步骤:
提取(Extract)
- 定义:提取是ETL过程的第一步,涉及从各种数据源收集数据。这些数据源可以是关系数据库、文件、日志、API、在线服务等。
- 目的:目的是高效且准确地获取数据,为后续的转换和加载步骤做准备。
- 挑战:挑战包括处理不同数据源的连接问题、数据格式不一致性,以及大数据量导致的性能问题。
转换(Transform)
- 定义:转换是对提取出的数据进行处理的步骤,包括清洗、标准化、去重、验证和聚合等操作。
- 目的:目的是改善数据质量,确保数据在目标系统中的一致性和准确性。
- 操作示例:
- 清洗:移除不完整、不正确或无关紧要的数据。
- 标准化:确保所有数据遵循相同的格式和度量单位。
- 去重:消除重复记录。
- 数据类型转换:将文本、日期等格式统一转换为目标系统所需的格式。
- 聚合:对数据进行汇总或计算摘要统计信息。
加载(Load)
- 定义:加载是ETL过程的最后一步,指的是将转换后的数据导入目标系统(如数据仓库)。
- 模式:
- 全量加载:每次ETL执行时,都将整个数据集导入目标系统。
- 增量加载:只将自上次ETL执行以来发生变化的数据导入目标系统。
- 挑战:挑战包括维持目标系统的性能和稳定性,尤其是在处理大规模数据时。
七.ELT
ELT(Extract, Load, Transform)是与ETL(Extract, Transform, Load)相对的数据处理流程。在ELT流程中,数据首先被提取(Extract)出来,然后直接加载(Load)到目标数据存储系统(通常是数据湖或者现代化的数据仓库),之后在目标系统内部进行转换(Transform)处理。
ELT的优势:
-
灵活性:由于原始数据被保留在目标系统中,可以在之后根据需要进行多次不同的转换。
-
性能:特别是在云计算环境中,ELT可以充分利用云服务的可扩展性和强大的处理能力,对大规模数据集进行高效处理。
-
实时性:ELT流程可以更快地将数据移入目标系统,从而支持接近实时的数据分析需求。
-
成本效益:ELT减少了对专门ETL工具的依赖,以及相关的硬件和维护成本,尤其是当使用云基础设施时。
八.流计算
流计算(Stream Processing)是一种计算模型,旨在处理和分析实时数据流。与传统的批处理不同,流计算不需要等待数据收集完整的数据集后再进行处理,而是随着数据的生成和传入立即对其进行处理。流计算架构被设计为高吞吐量和低延迟,可以连续不断地处理数据。
流计算的关键特征:
-
实时性:流计算系统通常需要在毫秒到秒级的时间内处理数据,并提供即时的处理结果。
-
持续性:流计算是一个持续的过程,数据源源不断地流入系统。
-
可扩展性:流计算平台通常支持水平扩展,可以通过增加更多的计算资源来处理更大的数据流。
-
容错性:流计算系统能够处理节点故障或数据丢失,能够保证数据处理的正确性。
流计算的组件:
- 数据源:实时数据流的起点,如传感器数据、用户活动日志、在线交易信息等。
- 流处理引擎:核心组件,负责数据流的处理,包括过滤、聚合、连接、转换等操作。
- 数据存储:处理后的数据可以被存储在数据库、数据湖、或其他存储系统中供后续分析。
- 查询和可视化:实时查询和数据可视化工具帮助用户理解流数据。
流计算的应用场景:
- 实时监控:例如,监控金融市场的交易活动或监测IT基础设施的健康状况。
- 实时分析:对社交媒体流量进行情感分析或品牌监测。
- 物联网:处理从各种设备传入的大量实时数据,如温度、湿度和位置数据。
- 实时推荐:基于用户的实时行为给出个性化推荐。