大数据基础学习

一.什么是大数据

大数据(Big Data)是指无法在合理时间内用传统数据库管理工具进行捕捉、管理和处理的庞大、复杂的数据集合。(3V特点)

  1. 体积(Volume):数据量巨大,从TB(太字节)到PB(拍字节)乃至更高。
  2. 速度(Velocity):数据以高速率产生和收集,包括实时数据流。
  3. 多样性(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的优势:

  1. 灵活性:由于原始数据被保留在目标系统中,可以在之后根据需要进行多次不同的转换。

  2. 性能:特别是在云计算环境中,ELT可以充分利用云服务的可扩展性和强大的处理能力,对大规模数据集进行高效处理。

  3. 实时性:ELT流程可以更快地将数据移入目标系统,从而支持接近实时的数据分析需求。

  4. 成本效益:ELT减少了对专门ETL工具的依赖,以及相关的硬件和维护成本,尤其是当使用云基础设施时。

八.流计算

流计算(Stream Processing)是一种计算模型,旨在处理和分析实时数据流。与传统的批处理不同,流计算不需要等待数据收集完整的数据集后再进行处理,而是随着数据的生成和传入立即对其进行处理。流计算架构被设计为高吞吐量和低延迟,可以连续不断地处理数据。

流计算的关键特征:

  1. 实时性:流计算系统通常需要在毫秒到秒级的时间内处理数据,并提供即时的处理结果。

  2. 持续性:流计算是一个持续的过程,数据源源不断地流入系统。

  3. 可扩展性:流计算平台通常支持水平扩展,可以通过增加更多的计算资源来处理更大的数据流。

  4. 容错性:流计算系统能够处理节点故障或数据丢失,能够保证数据处理的正确性。

流计算的组件:

  • 数据源:实时数据流的起点,如传感器数据、用户活动日志、在线交易信息等。
  • 流处理引擎:核心组件,负责数据流的处理,包括过滤、聚合、连接、转换等操作。
  • 数据存储:处理后的数据可以被存储在数据库、数据湖、或其他存储系统中供后续分析。
  • 查询和可视化:实时查询和数据可视化工具帮助用户理解流数据。

流计算的应用场景:

  • 实时监控:例如,监控金融市场的交易活动或监测IT基础设施的健康状况。
  • 实时分析:对社交媒体流量进行情感分析或品牌监测。
  • 物联网:处理从各种设备传入的大量实时数据,如温度、湿度和位置数据。
  • 实时推荐:基于用户的实时行为给出个性化推荐。

相关推荐

  1. 数据学习之 scala基础(补充)

    2024-04-12 22:12:01       29 阅读
  2. 学习数据,所需要的SQL基础(3)

    2024-04-12 22:12:01       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 22:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 22:12:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 22:12:01       82 阅读
  4. Python语言-面向对象

    2024-04-12 22:12:01       91 阅读

热门阅读

  1. 代码随想录算法训练营day36

    2024-04-12 22:12:01       38 阅读
  2. 机器人的基本概念

    2024-04-12 22:12:01       44 阅读
  3. MybatisPlus快速入门

    2024-04-12 22:12:01       36 阅读
  4. python django mvc

    2024-04-12 22:12:01       41 阅读
  5. 从零开始精通RTSP之请求与响应详解2

    2024-04-12 22:12:01       44 阅读
  6. 2024-W15

    2024-W15

    2024-04-12 22:12:01      51 阅读
  7. 神经网络训练中batch的作用

    2024-04-12 22:12:01       31 阅读