揭秘数据库、数据仓库、数据湖和数据湖之家

您是否想知道数据仓库与数据库有何不同?什么是数据湖和数据湖屋 ?让我们用一个假设的例子来理解这些。 

Bookster.biz 是全球图书销售领域的新热点。业务蓬勃发展,他们需要跟踪大量数据:数百万本书的庞大目录,全球数百万客户下了数十亿的书籍购买订单。他们如何跟踪所有这些数据?他们如何确保他们的网站和应用程序不会因为所有这些负载而陷入瘫痪?

数据库来救援

数据库是网站和移动应用程序的主力,处理所有数据和数百万笔交易。这些数据库有多种类型(我们将在单独的帖子中介绍所有不同类型的数据库)。尽管如此,最流行的还是关系数据库(又名 RDBMS),如 MySQL、Postgres、Oracle 等。 

Bookster 可能有以下表格和模式(为简洁起见,并未详尽无遗):

  • 图书目录:图书 ID、  ISBN、标题、作者、描述、出版商……
  • BookInventory:图书 ID、 可供销售的图书数量、...
  • 用户:用户 ID、 用户名、电子邮件……
  • 订单:订单 ID、图书 ID、用户 ID、 付款信息、订单状态……

当用户订购一本书时,Bookster 将同时更新两条记录:减少图书库存并在 Orders 表中插入新的订单条目。RDBMS 支持启用此类原子操作的事务,其中所有此类操作都成功或全部失败。想象一下,如果两个或更多用户可以订购一本流行书籍的最后一本。如果没有交易支持,所有客户都会下订单,而 Bookster 将会有很多愤怒的客户,除了一名。同样,如果数据库主机在处理过程中崩溃,则在没有事务的情况下数据可能会不一致。

这种数据库交互类型称为联机事务处理(又名 OLTP),其中读写操作在少量数据(即上例中恰好是两行)上发生得非常快。 

这很棒。顾客现在很高兴,他们可以快速订购书籍。但管理层想知道业务进展情况。哪些书在不同类别中最畅销?哪些作者很受欢迎,哪些作者销量不高?有多少订单来自哪些地区或人口统计?仅通过数据库无法获得此类答案。

数据仓库在分析查询方面表现出色

数据仓库(DW)可以处理大量数据,例如数十亿个订单、数百万个图书条目等。Bookster可以将数据从数据库加载到DW来回答管理问题。分析查询读取大量数据并以某种形式对其进行汇总,例如列出按地理和人口统计数据细分的特定书籍的订单总数。流行的 DW 示例有 AWS Redshift、GCP BigQuery 等。 

这种数据库交互类型称为在线分析处理(又名 OLAP),其中大多数读取发生在大量数据上。数据可以批量上传到DW,也可以流式传输。加载过程也称为 ETL(提取、转换和加载),定期执行以保持 DW 与数据库更新同步。DW 通常不允许更新数据,而只允许添加更新的版本。 

与 RDBMS 一样,DW 也有模式的概念,其中表和模式都被明确定义,ETL 过程将数据转换为适当的模式以供加载。 

有些数据不太适合该架构,但可以由机器学习 (ML) 流程使用。例如,客户以文本或视频评论的形式评论不同的书籍,一些明星机器学习工程师希望通过培训所有书籍的法学硕士来生成流行书籍。因此,数据不能再被结构化为严格的模式。数据湖可以通过存储更多不同格式的数据并实现高效处理来帮助解决这一问题。

数据湖和数据湖之家是相对较新的事物

数据湖(DL) 克服了将数据转换为特定格式的麻烦,无论是否以及何时使用数据。不同原生格式(如 JSON、文本、二进制、图像、视频等)的大量数据可以存储在 DL 中,并仅在需要处理数据时在读取时转换为特定模式。由于 DL 可以支持 Apache Spark 等大数据处理框架,因此处理灵活且可扩展。另一方面,如果由于缺乏数据质量检查或治理而摄入的大部分数据质量较低,这种灵活性可能会成为一个缺点,从而使深度学习成为“数据沼泽”。 

这就是 Databricks 的聪明人将 DW 与 DL 的优点结合起来创建数据湖之家 (DLH)。DLH 比 DW 更灵活,可以根据需要在写入或读取时使用架构,但具有更严格的数据质量检查和元数据管理机制(也称为数据治理)。此外,DLH 还可以像 DL 一样灵活地进行大数据处理。

下表总结了这些技术之间的差异:

主要特点

适合于 

缺点

例子

数据库

快速、小查询、事务支持

在线用例 (OLTP)

不适合大型分析查询

关系型数据库管理系统:MySQL

数据仓库

查询速度慢,查询量大,写入后无更新

分析(OLAP)

由于严格的模式而缺乏灵活性,并且缺乏对大数据处理框架的支持

AWS Redshift、Google BigQuery、*Snowflake

数据湖

非结构化数据、读取模式、灵活的大数据处理

分析(OLAP)

缺乏数据治理导致数据质量问题

*Snowflake
**AWS Lake Formation,**Databricks Delta Lake

数据湖之家

结构化或非结构化数据,灵活,具有更好的数据治理并支持大数据处理

分析(OLAP) 

与 DW 相比更复杂、性能更低且更昂贵

*Snowflake
**AWS Lake Formation,**Databricks Delta Lake

*Snowflake 可以配置为数据仓库、数据湖或数据湖屋。

**AWS Lake Formation 和 Databricks Delta Lake 可以配置为 Data Lake 或 Data Lake House。  


更多技术干货请关注公号【云原生数据库

squids.cn,云数据库RDS,迁移工具DBMotion,云备份DBTwin等数据库生态工具。

irds.cn,多数据库管理平台(私有云)。

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

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

相关文章

还记得当初自己为什么选择计算机?一个程序猿的自述与分享

还记得当初自己为什么选择计算机?一个程序猿的自述与分享 大家好,我是微赚淘客系统的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在我年轻的时候,我选择了计算机专业,这条路虽然曲折艰难&…

Matlab 加权均值质心计算(WMN)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 思路很简单,即将之前的均值中心,引入相关的权重函数(通常与距离有关),以此为每个点进行赋权,最后即可得到一个加权均值中心: 二、实现代码 %% ********<

07 手写 BA 优化

07 手写 BA 优化 原理见笔记 《后端 1》 世界坐标系 --> 相机坐标系&#xff08;外参&#xff09;–> 归一化坐标 --> 去畸变 --> 像素坐标系&#xff08;内参&#xff09; 由此得到的估计值与实际观测到的像素坐标作差&#xff0c;得到二维误差项。 7.1 误差及…

【五分钟】学会利用cv2.resize()函数实现图像缩放

引言 在numpy知识库&#xff1a;深入理解numpy.resize函数和数组的resize方法中&#xff0c;小编较为详细地探讨了numpy的resize函数背后的机理。从结果来看&#xff0c;numpy.resize函数并不适合对图像进行缩放操作。而opencv中的resize函数虽然和numpy的resize函数同名&…

vue.config.js文件重写打包工具配置信息

重写 Webpack 的配置信息 // cnpm install compression-webpack-plugin6.1.1 -D gzip压缩插件&#xff0c;需要引入 // cnpm i image-webpack-loader8.1.0 --save-dev 图片压缩&#xff0c;不需要引入 // npm i webpack-bundle-analyzer4.7.0 --save-dev …

深入理解pytest测试框架

在软件开发过程中&#xff0c;测试是确保软件质量的关键环节。为了提高测试效率和准确性&#xff0c;Python社区提供了许多优秀的测试框架&#xff0c;其中之一就是pytest。本文将详细介绍pytest的基本概念、特性、使用方法以及在实际项目中的应用。 一、pytest简介 pytest是…

【MATLAB源码-第95期】基于matlab的协作通信中(AF模式)中继选择算法对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 最大最小中继选择 (Max-Min Relay Selection)&#xff1a;这种算法选择能够提供最大最小信号强度的中继。它首先计算所有可用中继的信号强度&#xff0c;然后选择那些在最差信道条件下仍能保持最高信号强度的中继。其目的…

Java File类详解(上)

Java File类详解 基础知识 File类是什么&#xff1f; File对象代表路径&#xff0c;路径分为相对路径和绝对路径。 ●File对象就表示一个路径&#xff0c;可以是文件的路径、也可以是文件夹的路径。 ●这个路径可以是存在的&#xff0c;也允许是不存在的。 如路径1:"…

BACnet I/O模块在水利环境监测全自动控制系统中的应用:稳定、高效、实时

前言 “绿水青山就是金山银山”&#xff0c;水利环境一直是国际生态部门关注的重点。随着经济的发展、针对水利环境的监管也日趋严格&#xff0c;尤其是重点河、湖水系、水源地、城市内河等成为重点监管对象&#xff0c;监管力度也愈来愈严格&#xff0c;监测布点密度不断加大。…

IntelliJ IDEA 智能(AI)编码工具插件

文章目录 通义灵码-阿里CodeGeeX-清华大学智谱AIBitoAmazon CodeWhisperer-亚马逊GitHub Copilot - 买不起CodeiumAIXcoder 仅仅自动生成单元测试功能 TestMe插件&#xff08;免费&#xff09;仅仅是模板填充&#xff0c;不智能。 Squaretest插件&#xff08;收费&#xff09;…

LightDB - datediff 函数增强[mysql兼容]

LightDB在 23.4 版本对原先支持的mysql的datediff函数进行了增强&#xff0c;由原先只支持如下函数匹配&#xff1a; DATEDIFF(expr1 timestamp,expr2 timestamp) RETURN integer DATEDIFF(expr1 text,expr2 text) RETURN integer扩展到支持如下函数匹配: DATEDIFF(expr1 tim…

JeecgBoot 框架升级 Spring Boot 3.1.5

Spring Boot 从 2.7.10升级到3.1.5有以下几个点需要注意。 JDK版本支持从JDK 17-19版本javax.servlet切换到jakarta.servletspring.redis配置切换为spring.data.redisSpring Cloud 2022.0.4Spring Cloud Alibaba 2022.0.0.0 除以上三点外&#xff0c;其它都是平滑升级&#…

微信小程序之猜数字和猜拳小游戏

目录 效果图 app.json 一、首页&#xff08;index3&#xff09;的代码 wxml代码 wxss代码 二、猜数字页面&#xff08;index&#xff09;代码 wxml代码 wxss代码 js代码 三.游戏规则页面&#xff08;logs&#xff09;代码 wxml代码 wxss代码 四.猜拳页面&#xff…

ElasticSearch篇---第三篇

系列文章目录 文章目录 系列文章目录前言一、了解ElasticSearch 深翻页的问题及解决吗?二、熟悉ElasticSearch 性能优化三、ElasticSearch 查询优化手段有哪些?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这…

编程过程中出现bug如何应对?

编程过程中出现bug如何应对&#xff1f; 1.找错误原因 如果完全不知道出错的原因&#xff0c;或者说存在着很多错误的有原因&#xff0c;----》控制变量法 例如&#xff0c;昨天我在使用torchrun 多卡并行一个程序的时候&#xff0c;出现了大量的bug, 于是我将报错信息放在网…

visual Studio MFC 平台实现拉普拉斯和拉普拉斯与直方图均衡化与中值滤波相结合实现比较

拉普拉斯变换的原理与应用 本文使用visual Studio MFC 平台实现图像增强中的拉普拉斯变换&#xff0c;同时拉普拉斯一般不会单独使用&#xff0c;与其他平滑操作相结合&#xff0c;本文使用了拉普拉斯与直方图均衡化以及与中值滤波相结合&#xff0c;也对三种方式进行了对比 关…

如何提高Pycharm的使用体验?

汉化 文件---设置---插件---chinese---安装---重启ide 代码补全 tabnine 文件---设置---插件---tabnine---安装---重启ide 重启ide后生效&#xff0c;补全效果如下 自定义背景 文件---设置---外观---背景图像---选择图片---调整透明度保存即可 设置头部声明 英文版…

基于Java SSM框架实现社区疫情防控管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现社区疫情防控管理系统演示 摘要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;社区疫情防控管理信息系统当然也不能排除在外。社区疫情防控管理信息系…

记录 | CUDA编程中使用#ifdef指令控制生成CPU和GPU代码

CUDA编程中使用#ifdef指令控制生成CPU和GPU代码 比如&#xff1a; #include <cstdio> #include <cuda_runtime.h>__host__ __device__ void say_hello(){ #ifdef __CUDA_ARCH__printf("Hello, world from GPU!\n"); #elseprintf("Hello, world fr…

Unity3D对CSV文件操作(创建、读取、写入、修改)

系列文章目录 Unity工具 文章目录 系列文章目录前言一、Csv是什么&#xff1f;二、创建csv文件2-1、构建表数据2-2、创建表方法2-3、完整的脚本&#xff08;第一种方式&#xff09;2-4、运行结果2-5、完整的脚本&#xff08;第二种方式&#xff09;2-6、运行结果2-7、想用哪种…