现代数据架构-湖仓一体

当前的数据架构已经从数据库、数据仓库,发展到了数据湖、湖仓一体架构,本篇文章从头梳理了一下数据行业发展的脉络。

上世纪,最早出现了关系型数据库,也就是DBMS,有商业的Oracle、 IBM的DB2、Sybase、Informix、 微软的SQL Server等等,这些都是OLTP类型,transactional processing, 特点是保障ACID事务,低延时,CRUD操作,作用于少量数据(非大量/全量数据)。

随着关系型数据库里的数据增长,数据分析的需求越来越多,数据仓库 data warehouse随即诞生,DW是面向集成的数据,通过ETL、ELT加载不同数据源的数据入仓,面向分析OLAP, 针对大量或者全量数据做分析,存储历史数据,支持time travel,时间旅行,可回溯到数据的早前版本,代表的有teradata,snowflake, greenplum , clickhouse,数据仓库多为MPP架构,share nothing,云时代的数据仓库如 AWS Redshift、GCP Bigquery 、 Snowflake,几乎都支持存算分离。

数据仓库中的数据通常需要经过数仓建模形成 ODS DWD DWS ADS DM等不同数据层,每层都需要进行相应的清洗加工整合等数据开发,数据工程师大量工作就聚焦在数据仓库中的数据开发方向。

随着数据量的增长,商业的数据库,数据仓库也无法应对海量数据的存储和计算,Google发表了三篇论文,业内称之为三驾马车  GFS, BigTable, Map/Reduce , 基于理论慢慢形成了Hadoop ecosystem, hdfs,hbase,hive, spark,flink...越来越多的组件构成了Hadoop生态。

Apache Hadoop开源, 但安装运维成本高,各组件间版本兼容复杂,商业发行版,Cloudera/Hortonworks 有CDH, HDP 发行版,曾经有免费的社区版,目前两家公司合并,社区版停止更新和支持,如想使用整合好的Hadoop版本,则需要付费按年订购。

再后来,随着数据的增长,非结构化数据的比重越来越大,数据湖概念被提出。

AWS对数据湖的定义:数据湖是一个集中式存储库,允许您以任意规模存储所有结构化和非结构化数据。您可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析 – 从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。

WIKIPEDIA:数据湖是一类存储数据自然/原始格式的系统或存储,通常是对象块或者文件。数据湖通常是企业中全量数据的单一存储。全量数据包括原始系统所产生的原始数据拷贝以及为了各类任务而产生的转换数据,各类任务包括报表、可视化、高级分析和机器学习。数据湖中包括来自于关系型数据库中的结构化数据(行和列)、半结构化数据(如CSV、日志、XML、JSON)、非结构化数据(如email、文档、PDF等)和二进制数据(如图像、音频、视频)。

数据仓库和数据湖各有擅长的点,也互相有借鉴和融合,目前数仓产品大多对数据湖里的数据可以实现联邦查询,数据湖的分析引擎,通过连接器也可以查询数据仓库里的数据。

数据湖治理起来比较难,需要有完善的管理工具、管理流程和制度保障,一旦缺乏治理,容易形成数据沼泽,数据沼泽是一种退化的、缺乏管理的数据湖,数据沼泽对于用户来说要么是不可访问的要么就是无法提供足够的价值。

主流的开源数据湖平台有Delta Lake、Iceberg和Hudi,主要提供对数据湖中数据的Table定义,实现upsert/delete 、ACID 、管理 Schema Evolution等等。 

数据湖有两种处理并发的两种机制。

COW(copy on write)  写时复制,读性能好,写性能差,针对多读少写场景

MOR(merge on read) 读时合并 ,写性能好,读性能略差,针对高频更新场景 

Databricks的白皮书:「Lakehouse: A New Generation of Open Platforms that Unify Data Warehousing and Advanced Analytics」中最早提出了湖仓一体这个概念。Lakehouse 是一种全新的开放式架构,结合了数据湖和数据仓库的最佳元素。Lakehouses 由一个新的系统设计实现:在开放格式的低成本云存储之上直接实现与数据仓库中类似的数据结构和数据管理功能。从下图可以看到,实际目前的发展阶段如中间的架构图所示,湖仓并存,各自负责一部分自己优势的工作负载。但是从第三个架构图可以看出Databricks的雄心,它希望用低廉的存储和上面的治理层,统一实现数据湖和数据仓库的所有功能需求,简而言之,不再需要Teradata、Redshift、Snowflake这些云上云下数仓产品,任重道远。

图片

下面我们看看经常提到的术语,数据平台和数据中台。

数据平台:提供的是数据加工处理的能力,从计算和存储等技术角度看

数据中台:是一套可持续“让企业的数据用起来”的机制,一种战略选择和组织形式,是依据企业特有的业务模式和组织架构,通过有形的产品和实施方法论支撑,构建一套持续不断把数据变成资产并服务于业务的机制。

数据中台从技术角度当然包括数据平台的构建,但数据中台的外延还包括企业内部组织和流程上的支撑,目的是数据资产化,资产服务化,数据的生产和应用形成闭环,数据价值得到变现。

接下来我们来看看AWS对现代数据架构的定义:智能湖仓架构,不是简单地将数据湖和数据仓库糅合在一起,而是将数据湖、数据仓库和专用数据存储集成,从而支持统一的监管和轻松的数据移动。借助 AWS 上的现代数据架构,客户可以快速构建可扩展的数据湖,使用丰富且专业的专用数据服务,通过统一的数据访问、安全性和治理确保合规,在不降低性能的前提下以低成本扩展系统,并轻松跨越组织边界共享数据,从而快速、敏捷、大规模地作出决策。

图片

随着这些数据湖和专用存储中的数据量持续增长,由于数据具有重力,移动所有这些数据将变得越来越困难。而确保可以方便地将数据移动到需要的任何位置,具备恰当的控制,以支持分析和获取洞察也同样重要。这种数据的移动方向可能是“由内向外”、“由外向内”、“沿周界”或者“跨界共享”。

图片

除了AWS对现代数据架构的定义,通用的现代数据架构是这样定义的。

现代数据架构是一种基于云计算、大数据和人工智能技术的数据管理和分析架构,旨在帮助企业更好地处理和分析大数据,并从中获得更多商业价值。现代数据架构通常由以下组件组成:

数据采集层:数据采集层用于从各种数据源中收集数据,并将其传输到数据存储层。数据采集层可以使用多种数据采集工具和技术,包括ETL、ELT、流数据处理等。

数据存储层:数据存储层用于存储和管理各种类型和格式的数据,包括结构化、半结构化和非结构化数据。数据存储层可以使用多种存储服务和技术,包括数据湖、数据仓库、NoSQL数据库等。

数据处理层:数据处理层用于处理和分析存储在数据存储层中的数据,以提取有价值的信息和洞察力。数据处理层可以使用多种处理和分析工具和技术,包括ApacheSpark、Hadoop、SQL Server等。

数据可视化和报表层:数据可视化和报告层用于呈现处理和分析后的数据,以便用户可以更好地理解和使用数据。数据可视化和报告层可以使用多种可视化工具和技术,包括Tableau、Power BI、Excel等。

机器学习和人工智能层:机器学习和人工智能层用于应用机器学习和人工智能技术,以提高数据处理和分析的效率和准确性。机器学习和人工智能层可以使用多种机器学习框架和技术,包括TensorFlow、PyTorch、Scikit-learn等。

现代数据架构可以帮助企业更好地管理和分析大数据,并从中获得更多商业价值。企业可以根据自身业务需求和数据特点,选择适当的组件和技术,构建适合自己的现代数据架构。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【CTFHUB】SSRF绕过方法之靶场实践(二)

SSRF POST请求 提示信息: 这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.加油吧骚年 首先测试了http的服务请求,出现对话框 输入数值后提示:只能接受来自127.0.0.1的请求 右键查看源码发现key值 通过file协…

destoon根据查询标题小于5个字符的数据进行删除

最近客户有个需求&#xff0c;就是他采集的时候&#xff0c;标题有些小于5字符的短标题的垃圾数据&#xff0c;进行清空处理&#xff0c;让我进行批量删除。废话不多说&#xff0c;接着干。 首先在dt根目录新建delmysql.php文件&#xff0c;代码如下&#xff1a; <?php r…

Armv9读取cache内容:Direct access to internal memory

10 访问cache Cortex-A720核心提供一种机制,通过IMPLEMENTATION DEFINED系统寄存器可以读取L1缓存、L2缓存和Translation Lookaside Buffer(TLB)。当缓存数据与系统内存数据之间的一致性异常时,您可以使用此机制来调查任何问题。 只有在EL3中才可以访问内部内存(cache)。…

Mysql——三、SQL语句(上篇)

Mysql 一、SQL语句基础1、SQL简介2、SQL语句分类3、SQL语句的书写规范 二、数据库操作三、MySQL 字符集1、变量2、utf8和utf8mb4的区别 四、数据库对象五、SELECT语句1、简单的SELECT语句2、SQL函数2.1 聚合函数2.2 数值型函数2.3 字符串函数2.4 日期和时间函数2.5 流程控制函数…

uniapp iOS离线打包——如何创建App并提交版本审核?

uniapp 如何创建App&#xff0c;并提交版本审核&#xff1f; 文章目录 uniapp 如何创建App&#xff0c;并提交版本审核&#xff1f;登录 appstoreconnect创建AppiOS 预览和截屏应用功能描述技术支持App 审核信息 App 信息内容版权年龄分级 价格与销售范围App 隐私提交审核 登录…

【Aurora 8B/10B IP(1)--初步了解】

Aurora 8B/10B IP(1)–初步了解 1 Aurora 8b/10b IP的基本状态: •通用数据通道吞吐量范围从480 Mb/s到84.48 Gb/s •支持多达16个连续粘合7GTX/GTH系列、UltraScale™ GTH或UltraScale+™ GTH收发器和4绑定GTP收发器 •Aurora 8B/10B协议规范v2.3顺从的 •资源成本低(请参…

搭建达梦8国产数据库一主一从双机热备案例达梦DMHS插件实战

搭建达梦8国产数据库一主一从双击热备案例达梦DMHS插件实战 一、测试环境介绍 测试服务器操作系统&#xff1a;centos7 select *&#xff0c;id_code from v$version; #查询达梦8当前版本服务器IP角色172.18.21.144达梦8主数据库172.18.21.145达梦8备份数据库 提前把防火…

SAP替代物料的解决方案详解

说明&#xff1a; SAP中的替代有三种&#xff1a; A物料和B物料可以互相替代&#xff0c;但是由物料计划部门自由控制使用A还是使用B;在某个产品中&#xff0c;当物料A不够时&#xff0c;才用B&#xff1b;当物料A用完后&#xff0c;将永远不再用&#xff0c;而是用物料B取代A…

【C/C++】C/C++面试八股

C/C面试八股 C和C语言的区别简单介绍一下三大特性多态的实现原理虚函数的构成原理虚函数的调用原理虚表指针在什么地方进行初始化的&#xff1f;构造函数为什么不能是虚函数虚函数和纯虚函数的区别抽象类类对象的对象模型内存对齐是什么&#xff1f;为什么要内存对齐static关键…

Matlab绘图函数subplot、tiledlayout、plot和scatter

一、绘图函数subplot subplot(m,n,p)将当前图窗划分为 mn 网格&#xff0c;并在 p 指定的位置创建坐标区。MATLAB按行号对子图位置进行编号。第一个子图是第一行的第一列&#xff0c;第二个子图是第一行的第二列&#xff0c;依此类推。如果指定的位置已存在坐标区&#xff0c;…

传统遗产与技术相遇,古彝文的数字化与保护

古彝文是中国彝族的传统文字&#xff0c;具有悠久的历史和文化价值。然而&#xff0c;由于古彝文的形状复杂且没有标准化的字符集&#xff0c;对其进行文字识别一直是一项具有挑战性的任务。本文介绍了古彝文合合信息的文字识别技术&#xff0c;旨在提高古彝文的自动识别准确性…

如何使用python编译器来编写代码,不使用anaconda和pycharm

winR 输入cmd 直接输入pip list即可查看已经安装的包有哪些 惊奇地发现我已经安装过这些包 absl-py 1.3.0 astunparse 1.6.3 cachetools 4.2.4 certifi 2022.9.24 charset-normalizer 2.1.1 gast 0.3.3 google-auth 1.35.0 google-auth-oauthlib 0.4.6 google-pasta 0.2.0 grp…

freertos中函数调用和启动第一个任务(栈相关!!!!!!)

本内容仅就一些较难理解的点讲解&#xff0c;请结合其它文章实用 在函数调用时&#xff0c;m3的处理器使用r0-r3共四个寄存器传参&#xff0c;其余的使用栈传参。 但是&#xff0c;如果传入的参数是全局变量&#xff0c;则不需传参&#xff0c;因为全局变量在函数内部是可见的…

Springboot+vue的企业人事管理系统(有报告),Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的企业人事管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的企业人事管理系统&#xff0c;采用M&#xff08;model&am…

多线程总结(线程池 线程安全 常见锁)

本篇文章主要是对线程池进行详解。同时引出了单例模式的线程池&#xff0c;也对线程安全问题进行了解释。其中包含了智能指针、STL容器、饿汉模式的线程安全。也对常见的锁&#xff1a;悲观锁&#xff08;Pessimistic Locking&#xff09;、乐观锁&#xff08;Optimistic Locki…

【Java 进阶篇】MySQL数据库范式详解

范式是数据库设计中的一种理论方法&#xff0c;旨在通过减少数据冗余来提高数据存储的有效性和完整性。在MySQL数据库中&#xff0c;范式设计是一个重要的概念&#xff0c;它有助于组织和管理数据&#xff0c;确保数据的一致性和可靠性。本文将深入探讨数据库范式&#xff0c;包…

sop流程图怎么做?sop流程图可以用什么做好?

标准作业程序sop对于现代生产企业来说是重关重要的一项经营改革&#xff0c;这种新型的管理运作方式既能够为企业节省资源、避免浪费、提高效率&#xff0c;也能够起到指导新员工有序无障碍的投入到工作当中的作用&#xff0c;可以最大程度上避免损耗。 所以一直以来&#xff0…

Django模板加载与响应

前言 Django 的模板系统将 Python 代码与 HTML 代码解耦&#xff0c;动态地生成 HTML 页面。Django 项目可以配置一个或多个模板引擎&#xff0c;但是通常使用 Django 的模板系统时&#xff0c;应该首先考虑其内置的后端 DTL&#xff08;Django Template Language&#xff0c;D…

Docker下如何构建包含延迟插件的RabbitMQ镜像

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

马尔萨斯《人口原理》读后

200 多年前的书&#xff0c;很多人都说旧的东西过时了&#xff0c;但我觉得它只是被修正了&#xff0c;内核并不过时。毕竟&#xff0c;静态存量分析这本身就不符合现实&#xff0c;用现在的话说&#xff0c;建模就错了&#xff0c;但马尔萨斯的理论核心并不仅仅是一个模型&…