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

前言

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

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


思维导图

在这里插入图片描述


数据仓库

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

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

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

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

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

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


数据库 VS 数据仓库

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

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

OLTP vs OLAP

对比项目OLTPOLAP
用户操作人员、底层管理人员决策人员、高级管理人员
功能日常操作处理分析决策
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查询按需处理和分析分布式数据查询和共享结合原始数据探索和历史数据分析
数据组织表、索引、键、视图、数据类型表、索引、键、视图、数据类型表、索引、键、视图、数据类型灵活的数据组织分布式数据组织和架构灵活的数据组织
数据共享有限的共享能力针对特定用户和部门的共享针对特定业务部门的共享强调跨组织和跨团队的共享强调数据自治和共享结合数据湖和数据仓库的共享能力
数据分析实时事务数据分析历史数据分析和商业智能特定业务部门的数据分析和决策支持灵活的数据分析和探索跨组织和跨团队的数据分析和协作结合原始数据探索和历史数据分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2703.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析能力

专题一、空间数据获取与制图 1.1 软件安装与应用讲解 1.2 空间数据介绍 1.3海量空间数据下载 1.4 ArcGIS软件快速入门 1.5 Geodatabase地理数据库 专题二、ArcGIS专题地图制作 2.1专题地图制作规范 2.2 空间数据的准备与处理 2.3 空间数据可视化:地图符号与…

酷开科技以内容为核心打造OTT大屏营销投放新体系

如何打造“因地制宜”的营销策略,围绕内容场景,搭建更具效能的OTT大屏营销投放体系?是一个值得思考的问题。 酷开科技OTT大屏营销, 以营销内容为核心、通过更加立体化的沟通模式,创新性整合和打通多元资源&#xff0c…

数据结构--图的存储邻接表法

数据结构–图的存储邻接表法 邻接矩阵: 数组实现的顺序存储,空间复杂度高,不适合存储稀疏图 邻接表: 顺序链式存储 邻接表法(顺序链式存储) //边/弧 typedef struct ArcNode {int adjvex; //边/弧指向哪个…

echarts 单数据,平滑曲线柱状图显示

var myChart echarts.init(document.getElementById(main)); let namelist [23/01, 23/02, 23/03, 23/04, 23/05, 23/06, YTD] let planList [10.9, 22.6, 15.6, 14.4, 12.0, 12.3, 14.6] let target 14 // 指定图表的配置项和数据 var option { tooltip: { },//提示语 xA…

wampserver的mysql8.0版本在my.ini文件中加入skip_grant_tables无效等一系列问题。

背景:安装了新的wampserver之后,php版本mysql8.0.31,想打开phpadmin可视化管理页面,后来忘记密码了,报错:ERROR 1045 (28000): Access denied for user rootlocalhost (using password: No),只能…

Linux搭建SVN环境(最新版)

最新版本号(svn-1.14) https://opensource.wandisco.com/centos/7 更新版本库 sudo tee /etc/yum.repos.d/wandisco-svn.repo <<-EOF [WandiscoSVN] nameWandisco SVN Repo baseurlhttp://opensource.wandisco.com/centos/$releasever/svn-1.14/RPMS/$basearch/ enabled…

Django中使用反向关系名称(related_name)解决由“多对多”关系引起的字段名字冲突问题引起的迁移命令报错。

当在模型中为关系字段添加了related_name参数后&#xff0c;您可以使用该参数指定的名称来引用反向关系。下面是一个简单的例子来说明如何引用反向关系。 假设您有以下两个模型&#xff1a; from django.db import modelsclass Author(models.Model):name models.CharField(…

Redis 从入门到精通【进阶篇】之高可用哨兵机制(Redis Sentinel)详解

文章目录 0.前言1. 原理详解1.1. 哨兵机制的组建1.1. 哨兵是如何知道从库的信息 1.2. 主库下线的判定1.3. 哨兵集群选举1.4. 故障的转移 2. 总结3. Redis从入门到精通系列文章4. Redis哨兵模式面试题4. 1. 什么是Redis的哨兵模式&#xff1f;4. 2. 哨兵模式的优点是什么&#x…

CCF真题练习:202209-1如此编码

题目背景 某次测验后&#xff0c;顿顿老师在黑板上留下了一串数字 23333 便飘然而去。凝望着这个神秘数字&#xff0c;小 P 同学不禁陷入了沉思…… 题目描述 已知某次测验包含 n 道单项选择题&#xff0c;其中第 i 题&#xff08;1≤i≤n&#xff09;有 个选项&#xff0c;…

了解交换机接口的链路类型(access、trunk、hybrid)

上一个章节中讲到了vlan的作用及使用&#xff0c;这篇了解一下交换机接口的链路类型和什么情况下使用 vlan在数据包中是如何体现的&#xff0c;在上一篇的时候提到测试了一下&#xff0c;从PC1去访问PC4的时候&#xff0c;只从E0/0/2发送给了E0/0/3这是&#xff0c;因为两个接…

gogs的自定义配置

在 GOGS 下载并安装后&#xff0c;在程序目录下建立一个custom/conf/app.ini的配置文件&#xff0c;内容如下&#xff1a; APP_NAME Gogs # APP名字 RUN_USER git # 启动用户&#xff0c;设置后只能以此账号启动gogs RUN_MODE prod[database] DB_TYPE mysql HOST 1…

PHP特性之CTF中常见的PHP绕过

目录 一、关于md5()和sha1()的常见绕过 1、使用数组绕过 2、 使用特殊字符串绕过 二、strcmp绕过 三、switch绕过 四、intval绕过 一、关于md5()和sha1()的常见绕过 知识介绍&#xff1a; 1、对于php强比较和弱比较&#xff1a;md5()&#xff0c;sha1()函数无法处理数组…

使用3DS Max 创建未来派螺栓枪模型

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 步骤 1 创建一个框并将其转换为可编辑多边形&#xff08;右键单击>转换为&#xff1a;>转换为可编辑多边形&#xff09;&#xff0c;然后使用连接添加一系列边循环&#xff0c;如下图所示。 步骤 2 …

基于JavaSpringBoot+Vue+uniapp微信小程序实现鲜花商城购物系统

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

⚡【C语言趣味教程】(3) 浮点类型:单精度浮点数 | 双精度浮点型 | IEEE754 标准 | 介绍雷神之锤 III 源码中的平方根倒数速算法 | 浮点数类型的表达方式

&#x1f517; 《C语言趣味教程》&#x1f448; 猛戳订阅&#xff01;&#xff01;&#xff01; ​—— 热门专栏《维生素C语言》的重制版 —— &#x1f4ad; 写在前面&#xff1a;这是一套 C 语言趣味教学专栏&#xff0c;目前正在火热连载中&#xff0c;欢迎猛戳订阅&#…

文件IO_文件截断_ftruncate,truncate(附Linux-5.15.10内核源码分析)

目录 1.为什么需要文件截断&#xff1f; 2.truncate函数介绍 2.1 truncate函数 2.2 truncate函数内核源码分析 2.3 truncate函数使用示例 3.ftruncate函数介绍 3.1 ftruncate函数 3.2 ftruncate函数内核源码分析 3.3 ftruncate函数使用示例 3.4 ftruncate和文件偏移量…

进程间通信之共享内存

共享内存 1.共享内存的概念2.共享内存函数2.1 shmget函数2.2 shmat函数2.3 shmdt函数2.4 shmctl函数 3. 共享内存的使用 1.进程间通信的分类&#xff1a; &#xff08;1&#xff09;管道&#xff1a;1、匿名管道pipe;2、命名管道mkfifo &#xff08;2&#xff09;System V IPC&…

【算法基础:数据结构】2.2 字典树/前缀树 Trie

文章目录 知识点cpp结构体模板 模板例题835. Trie字符串统计❤️❤️❤️❤️❤️&#xff08;重要&#xff01;模板&#xff01;&#xff09;143. 最大异或对&#x1f62d;&#x1f62d;&#x1f62d;&#x1f62d;&#x1f62d;&#xff08;Trie树的应用&#xff09; 相关题目…

C# MVC 多图片上传预览

一.效果图&#xff1a; 开发框架&#xff1a;MVC&#xff0c;Layui 列表主界面这里就不展示了&#xff0c;可以去看看这篇文章&#xff1a;Layui项目实战&#xff0c;这里讲的是“上传Banner”界面功能&#xff1a; 其中包括&#xff0c;多文件上传&#xff0c;预览&#xff0c…

vue进阶-消息的订阅与发布

&#x1f4d6;vue基础学习-组件 介绍了嵌套组件间父子组件通过 props 属性进行传参。子组件传递数据给父组件通过 $emit() 返回自定义事件&#xff0c;父组件调用自定义事件接收子组件返回参数。 &#x1f4d6;vue进阶-vue-route 介绍了路由组件传参&#xff0c;两种方式&…