大数据存储架构详解:数据仓库、数据集市、数据湖、数据网格、湖仓一体_数据仓库 数据集市 数据湖-程序员宅基地

技术标签: 架构  数据仓库  大数据理论体系  大数据  

前言

本文隶属于专栏《大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见大数据理论体系


姊妹篇

《分布式数据模型详解:OldSQL => NoSQL => NewSQL》

《分布式计算模型详解:MapReduce、数据流、P2P、RPC、Agent》

《大数据存储架构详解:数据仓库、数据集市、数据湖、数据网格、湖仓一体》

《大数据处理架构详解:Lambda架构、Kappa架构、流批一体、Dataflow模型、实时数仓》

《实时数仓详解》


思维导图

在这里插入图片描述


数据仓库

数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、
相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合。

数据仓库的主要目标是提供一致、可靠、易于访问的数据,
以支持企业的决策制定和分析。

它可以帮助企业了解自己的业务、市场以及客户,
并提供决策支持和预测分析的能力。

数据仓库在商业智能和数据分析领域有着广泛的应用。

关于数据仓库的详情请参考我的博客——数据仓库是什么?

关于商业智能请参考我的博客——什么是商业智能(BI)?


数据库 VS 数据仓库

区别 数据库 数据仓库
设计目标 支持企业的日常业务操作 支持企业的决策制定和分析
数据结构 面向应用的设计 面向主题的设计
数据处理方式 在线事务处理(OLTP)方式 在线分析处理(OLAP)方式
数据范围 当前状态数据 存储历史的、完整的、反应历史变化的数据
数据变化 支持频繁的增删改查操作 可添加、无删除、无变更、反应历史变化的
设计理论 遵循三范式、避免冗余 违范式、适当冗余
处理量 频繁、小批次、高并发、低延迟 非频繁、大批量、高吞吐、有延迟

关于数据库和数据仓库的对比详情请参考我的博客——数据仓库与数据库的区别?

OLTP vs OLAP

对比项目 OLTP OLAP
用户 操作人员、底层管理人员 决策人员、高级管理人员
功能 日常操作处理 分析决策
DB设计 基于ER模型,面向应用 星型/雪花/星座模型,面向主题
DB规模 GB至TB ≥TB
数据 最新的、细节的、二维的、分立的 历史的、聚集的、多维的、集成的
存储规模 读/写数条(甚至数百条)记录 读上百万条(甚至上亿条)记录
操作频度 非常频繁(以秒计) 比较稀松(以小时甚至以周计)
工作单元 严格的事务 复杂的查询
用户数 数百个至数千万个 数个至数百个
度量 事务春吐量 査询吞吐量、响应时间

关于 OLTP 和 OLAP 的对比详情请参考我的博客——OLTP和OLAP的区别?

数据仓库分层

在这里插入图片描述

数据仓库分层的详情请参考我的博客——数据仓库是如何分层的?

数据仓库建模

在这里插入图片描述

关于建模方法论的详情请参考我的下面 2 篇博客:

  1. 典型的数据仓库建模方法论
  2. 数据仓库是如何建模的?

数据集市

数据集市是一个专门针对特定业务部门或主题领域的数据仓库子集。
它集中于存储公司在更大的存储系统中选定的一小部分数据,
并且从比数据仓库更少的数据来源中获取数据。

关于数据集市的详情请参考我的博客——数据集市是什么?数据集市和数据仓库有什么区别

如果把数据仓库看作是全公司的数据集合的话,数据集市可以看作是其中一个部门的,这个部门只负责处理特定业务的数据。

数据集市 VS 数据仓库

数据仓库(Data Warehouse)是一个用于整个企业的存储库,包含来自不同业务、系统和部门的集成数据。它基于整个企业的数据模型建立,面向企业范围内的主题。

数据仓库的特点包括:

  • 覆盖全企业:数据仓库为整个企业的各个部门和运作提供决策支持。
  • 集成数据:数据仓库汇集来自多个业务、系统和部门的数据,通过数据清洗、整合和转换,以满足企业的分析和报告需求。
  • 企业级架构:数据仓库是一个企业级的解决方案,通常由专业团队负责设计、构建和维护。
  • 面向企业主题:数据仓库的主题是与整个企业运营相关的,如销售、客户、供应链等。

数据集市(Data Mart)是一个面向特定业务领域或功能单元的主题化数据存储库。它通常是部门级的,为某个局部范围内的管理人员提供决策支持。
数据集市的特点包括:

  • 部门级应用:数据集市主要为某个特定部门或功能单元的业务需求服务,提供针对该部门的数据分析和报告。
  • 面向部门主题:数据集市的主题是与特定业务或功能单元相关的,如销售业绩、市场营销、财务等。
  • 数据来源:数据集市的数据来源可以是从数据仓库获取的(从属数据集市),也可以来自各个生产系统(独立数据集市)。
  • 相对较小规模:数据集市的规模通常是几十GB的数量级,相对于数据仓库来说较小。

下面是描述数据仓库和数据集市区别的表格:

数据仓库 数据集市
适用范围 整个企业 特定部门或功能单元
数据来源 来自不同业务、系统和部门的集成数据 可从数据仓库获取,或来自各生产系统
规模 较大(企业级) 相对较小(部门级)
架构 企业级架构 部门级架构
主题 面向企业主题 面向部门主题
目标 为整个企业各部门提供决策支持 为特定部门提供决策支持
功能 提供企业范围内的数据分析和报告 提供部门级的数据分析和报告

数据湖

数据湖是一个存储大规模、多样化数据的组织方法,可以存储结构化非结构化半结构化的数据,是一个大型、灵活的数据存储仓库,可以将企业的所有数据源整合起来。

关于数据湖的详情请参考我的博客——什么是数据湖?为什么需要数据湖?

结构化、半结构化和非结构化数据

结构化、半结构化和非结构化数据是不同类型的数据分类。

  1. 结构化数据:结构化数据是指可以使用关系型数据库表示和存储的数据,通常以二维表的形式呈现。结构化数据具有以下特点:

    • 数据以行为单位,每行数据表示一个实体的信息,且每行的属性是相同的。
    • 数据可以用统一的结构表示,如数字、符号等。
    • 数据可以用二维表结构逻辑表达实现,包含属性和元组。例如,成绩单可以作为属性,而90分可以作为对应的元组。
    • 存储和排列有一定的规律,便于查询和修改等操作。
  2. 半结构化数据:半结构化数据是结构化数据的一种形式,它不完全符合关系型数据的规范。半结构化数据具有以下特点:

    • 半结构化数据既有数据又有结构,但结构不是严格固定的。
    • 半结构化数据可以使用各种数据表示格式,例如XMLJSON等。
    • 数据的结构可能在不同的记录中有所变化,但仍具有一定的可解析性和组织性。
    • 半结构化数据常见于Web数据、日志文件、配置文件等场景。
  3. 非结构化数据:非结构化数据是指没有固定结构和格式的数据,通常无法以关系型数据库的形式进行存储和表示。非结构化数据具有以下特点:

    • 数据没有明确的组织结构,可能是自由文本图像音频视频等形式的数据。
    • 非结构化数据不适合使用传统的关系型数据库进行存储和管理。
    • 非结构化数据的分析和处理需要采用特定的技术和工具,如自然语言处理、图像处理、音频处理等。
    • 非结构化数据常见于社交媒体内容、电子邮件、文档、多媒体文件等。

综上所述,结构化数据是具有固定结构和规律排列的数据,半结构化数据是介于结构化数据和非结构化数据之间的数据形式,而非结构化数据则是没有明确结构和格式的数据。这些不同类型的数据在分析和处理时需要采用不同的方法和工具来处理和管理。

数据仓库 vs 数据湖

参数 数据仓库 数据湖
数据存储 结构化数据 结构化、半结构化和非结构化数据
数据准备 经过清洗和处理的数据 原始数据,不需要预处理
数据结构 预定义的模式,具有严格的架构 没有固定模式,数据以原始形式存储
数据目的 支持商业智能和分析 支持探索性分析和机器学习
用户 商业分析师和业务用户 数据科学家和工程师
数据访问 SQL查询 多种工具和技术,如Apache Spark和Hadoop
数据规模 相对较小(相对于数据湖) 可以存储大规模数据,包括PB级数据
数据处理方式 提取、转换和加载(ETL) 提取、加载和转换(ELT)
数据处理速度 高性能,适合历史数据分析 高度灵活,适合实时和流式数据分析
数据架构 星型或雪花型 没有特定的数据架构
成本 相对较高,需要预定义模式和规划 相对较低,可以存储各种类型的数据

数据网格

数据网格(DataMesh)是一个新兴的概念,旨在帮助组织更好地管理和利用分散在不同系统和应用程序中的数据资产。它强调将数据资产转化为可重用、可组合、可交互的数据元素,以支持组织内部和跨组织的业务创新和数字化转型。

DataMesh的核心理念是基于事件驱动的架构,通过将业务事件和数据元素相结合,将数据资产转化为可编程的、可组装的服务和功能。这种方法可以帮助组织更好地理解和利用其数据资产,并支持更高效、更灵活的业务流程和数据处理。

DataMesh还强调数据治理和数据安全,以确保数据的准确性、可靠性和安全性。它提供了一组数据管理和治理工具,以帮助组织更好地管理其数据资产,并确保符合法规和标准的要求。

关于数据网格的详情请参考我的博客——数据网格(Data Mesh)是什么?

数据仓库 VS 数据网格

特征 Data Warehouse(数据仓库) DataMesh(数据网格)
来源 传统上,数据仓库是将各种异构数据源集成到一个集中的位置(通常是一个数据库)中。 数据网格将数据分散在不同的领域团队中,每个团队负责自己的数据产品。
数据拥有权 数据仓库通常由中央团队负责管理和维护。 数据网格将数据拥有权下放给领域团队,每个团队可以自主管理和拥有自己的数据。
架构 数据仓库通常采用集中式架构,将数据集成到一个中心存储中。 数据网格采用分布式架构,数据存储在不同的领域团队中,通过标准化的规则和语法进行连接和交互。
数据冗余性和业务对齐 数据仓库通常会合并和整合数据,以消除冗余并满足业务需求。 数据网格允许数据在不同的领域团队之间存在冗余,以满足各自的业务需求。
数据观测性的重要性 数据仓库需要观测数据质量,以确保数据的高质量和可靠性。 数据网格同样需要观测数据质量,确保数据的可靠性和可发现性。
目标 数据仓库旨在提供一个一致、可信赖的数据源,用于企业的决策支持和分析。 数据网格旨在通过领域团队拥有的数据产品,实现更快速的洞察和分析,并推动数据驱动的决策制定。

湖仓一体

湖仓一体是一个全新的开放式数据架构,它将数据湖和数据仓库的优势组合在一起,
提供了数据湖的灵活性和可扩展性以及数据仓库的数据管理功能
这个架构是在数据湖较低成本的数据存储基础设施上构建的,
它不仅保留了数据湖的特点,如存储非结构化数据和半结构化数据
还可以支持事务、数据治理和数据模型化等功能,这些特点是数据仓库所具备的。

关于湖仓一体的详情请参考我的博客——湖仓一体(Lakehouse)是什么?

数据仓库 VS 湖仓一体

特征 数据仓库 湖仓一体
数据存储方式 结构化数据 结构化、半结构化和非结构化数据
数据处理方式 批量处理 批量处理和实时处理
数据集成 集成的 非集成的
数据模型 事实和维度模型 没有明确的数据模型
数据更新频率 周期性更新 实时或近实时更新
数据访问方式 预定义的查询 自助查询
数据可伸缩性 受限制 高度可伸缩
数据安全性 严格的访问控制 灵活的访问控制
数据处理工具和技术 ETL工具和SQL 大数据处理工具和技术
目标用户 决策者和分析师 决策者、分析师和数据科学家

总结

数据库、数据仓库、数据集市、数据湖、数据网格和湖仓一体是数据管理和存储的不同解决方案,它们在以下方面有所区别:

  1. 数据库(Database)是一个存储相关数据的地方,用于捕获特定情况的数据。它可以是结构化、关系型、非结构化或NoSQL数据库。数据库主要用于在线事务处理(OLTP),处理实时的事务数据,并具有特定的目的和应用。
  2. 数据仓库(Data Warehouse)是组织的核心分析系统,用于存储历史数据和支持数据分析。数据仓库与操作数据存储(Operational Data Store,ODS)一起工作,将各种数据库中的数据捕获并统一存储在一个位置。数据仓库采用提取-转换-加载(Extract-Transform-Load,ETL)或类似的ELT过程,将数据从数据库中提取出来,经过转换和清洗后加载到数据仓库中。数据仓库通常使用SQL查询数据,并使用表、索引、键、视图和数据类型进行数据组织和完整性。数据仓库主要用于在线分析处理(OLAP),支持企业内部的数据分析和商业智能。
  3. 数据集市(Data Mart)是数据仓库的子集,为特定的业务部门或业务单元提供数据支持。数据集市通常是针对特定需求进行建立的,以满足某个部门的数据分析和决策需求。数据集市包含在数据仓库中,其中的数据集是为了实时分析和行动结果而使用。
  4. 数据湖(Data Lake)是一个用于存储原始数据的大型存储库,可以存储结构化、半结构化和非结构化数据。数据湖接收来自不同来源的数据,而不对其进行特定格式的转换和处理。数据湖存储的数据可以在需要时进行处理和分析。数据湖适用于需要存储大量原始数据,并进行灵活的数据分析和探索的场景。
  5. 数据网格(DataMesh)是一种数据组织和架构的概念,旨在实现数据的自治和共享。DataMesh鼓励将数据所有权和管理责任下放给数据所有者,以便更好地支持跨组织和跨团队的数据共享和协作。
  6. 湖仓一体(LakeHouse)是将数据湖和数据仓库集成在一起的解决方案。它结合了数据湖的灵活性和数据仓库的结构化分析能力,使得用户可以同时进行原始数据探索和历史数据分析。

综上所述,数据库主要用于在线事务处理,数据仓库用于存储历史数据和支持数据分析,数据集市是数据仓库的子集,满足特定业务部门的需求,数据湖存储原始数据并支持灵活的数据分析,数据网格鼓励数据自治和共享,湖仓一体则是将数据湖和数据仓库集成在一起的解决方案。

下面是一个表格,描述了数据库、数据仓库、数据集市、数据湖、数据网格和湖仓一体之间的主要区别:

数据库(Database) 数据仓库(Data Warehouse) 数据集市(Data Mart) 数据湖(Data Lake) 数据网格(DataMesh) 湖仓一体(LakeHouse)
定义 存储相关数据的地方 存储历史数据和支持数据分析 针对特定业务部门的数据子集 存储原始数据的大型存储库 数据的自治和共享 将数据湖和数据仓库集成的解决方案
用途 在线事务处理(OLTP) 在线分析处理(OLAP) 特定业务部门的数据分析和决策支持 灵活的数据分析和探索 跨组织和跨团队的数据共享和协作 原始数据探索和历史数据分析
数据类型 结构化、关系型、非结构化、NoSQL 结构化 结构化 结构化、半结构化、非结构化 结构化、半结构化、非结构化 结构化、半结构化、非结构化
数据处理 实时事务数据处理 提取-转换-加载(ETL)或类似ELT过程 针对特定需求的数据提取和整合 原始数据存储,按需处理和分析 数据所有者自治,分布式数据共享 结合原始数据探索和历史数据分析
查询 SQL查询 SQL查询 SQL查询 按需处理和分析 分布式数据查询和共享 结合原始数据探索和历史数据分析
数据组织 表、索引、键、视图、数据类型 表、索引、键、视图、数据类型 表、索引、键、视图、数据类型 灵活的数据组织 分布式数据组织和架构 灵活的数据组织
数据共享 有限的共享能力 针对特定用户和部门的共享 针对特定业务部门的共享 强调跨组织和跨团队的共享 强调数据自治和共享 结合数据湖和数据仓库的共享能力
数据分析 实时事务数据分析 历史数据分析和商业智能 特定业务部门的数据分析和决策支持 灵活的数据分析和探索 跨组织和跨团队的数据分析和协作 结合原始数据探索和历史数据分析
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Shockang/article/details/131512410

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签