大数据架构的演变与多种大数据架构类型说明——解读大数据架构(一)

文章目录

    • 前言
    • 数据架构的演变
    • 关系型数仓
    • 数据湖
    • 现代数仓
    • 数据网络
    • 数据湖仓
    • 数据网格

前言

在搭建和使用大数据组件前,预先投入时间设计和构建正确的数据架构绝对至关重要。如果在前期没有设计正确的数据架构就开始实施方案,在后期想更改架构设计是十分困难的。

但是又不存在放之四海而皆准的架构,架构没有好坏之分,只有合适与不合适之分,需要根据具体的情况选择最合适的架构。

但是好在目前已经有很多成熟的数据架构方案,本文主要简单介绍多种数据架构类型:关系数据仓库、数据湖、现代数据仓库、数据网络、数据湖仓和数据网格。

数据架构的演变

关系数据库以结构化方式存储数据,数据元素之间的关系由键定义。数据通常组织成表,每个表由行和列组成。每行代表数据的单个实例,而每列代表数据的特定属性。

关系数据库旨在处理结构化数据,它提供了使用称为结构化查询语言或 SQL 的标准化语言创建、修改和查询数据的框架。关系模型最初由 Edgar F. Codd 于 1970 年提出,自 70 年代中期以来,它已成为数据库管理系统的主导模型。大多数操作应用程序都需要永久存储数据,而关系数据库是大多数人选择的工具。

在关系数据库中,一致性和数据完整性至关重要,数据通常采用称为写入时定义 schemaSchemas 是指定义表、字段、数据类型和约束等关系间的元信息。它充当存储和管理数据的蓝图,并确保数据库内的一致性、完整性和高效组织。

关系型数据库(和关系型数据仓)需要一些前期工作才能将数据放入其中。必须创建数据库及其表、字段和 schema 约束,然后编写代码以将数据传输到数据库中。通过定义写入 schema,数据在存储之前必须遵守预定义的 schema,包括数据类型、约束和关系。

相比之下,另一种是读取时定义schema方法,在读取或访问数据时应用 schema,而不是在写入数据时应用 schema。数据可以不需要过多约束条件写入数据库,并且仅在查询或消费数据时才定义 schema。这种方法在存储非结构化或半结构化数据方面提供了更大的灵活性,并且通常用于数据湖,本文稍后将对此进行讨论。

从较高层面上看,数据架构提供了一个框架,用于以支持公司组织内需求的方式组织和管理数据。这涉及定义数据的采集、存储、处理和访问方式,以及维护数据的质量、安全性和隐私性等方面。虽然数据架构可以采用多种不同的形式,但一些常见的方式包括:

  • 数据存储

    所有数据架构都需要指定数据的存储方式,包括物理存储介质(例如硬盘或云存储)和用于组织数据的数据结构。

  • 数据处理

    数据架构需要定义数据的处理方式,包括在存储或分析数据之前对数据执行的任何转换或计算。

  • 数据存取

    数据架构需要提供访问数据的机制,包括支持查询和分析数据的用户界面和应用程序接口(API)。

  • 数据安全和隐私

    数据架构需要纳入确保数据安全和隐私的机制,例如访问控制、加密和数据脱敏。

  • 数据治理

    数据架构需要提供管理数据的框架,包括数据质量标准、数据血缘管理和数据持久化策略。
    总体而言,数据架构的主要目标是使公司能够有效地管理和利用其数据资产,以支持其业务目标和决策流程。

    下表是对不同大数据架构的的一些比较:

    特征关系型数仓数据湖现代数仓数据网络数据湖仓数据网格
    推出时间198420102011201620202019
    数据集中/数据分散集中集中集中集中集中分散
    存储类型关系型存储对象存储关系型和对象存储关系型和对象存储对象存储由所在域决定
    schema 类型写时 schema读时 schema读时schema和写时schema读时schema和写时schema读时schema由所在域决定
    数据安全中低中高由所在域决定
    数据延迟看情况,从低到高看情况,从低到高中高由所在域决定
    价值体现所需时间中等
    所需成本中低中高中低
    支持的使用场景低到中中高
    开发难度中高
    技术成熟度中高中高中高
    人员技能要求中低中高中高

关系型数仓

几十年来,关系型数据库一直是数据存储的支柱。第一个用于生产的关系型数据仓库是 Teradata 系统,由 Jack E. Shemer 博士在斯坦福大学开发,他于 1979 年创立了 Teradata 公司。富国银行于 1983 年安装了第一个 Teradata 系统,并用它来分析金融数据。

随着公司产生越来越多的数据,在没有长时间延迟的情况下处理和分析这些数据变得越来越具有挑战性。关系型数据库的特性促进了关系型数据仓库的发展,大约在关系型数据库出现 15 年后,关系型数据仓库在 20 世纪 80 年代末变得更加流行。关系型数据仓库(RDW)是一种特定类型的关系型数据库,专为数据仓库和商业智能应用程序而设计,具有优化过的查询性能并支持大规模数据分析。虽然关系型数据仓库和事务处理都使用关系模型来组织数据,但关系型数据仓库的规模通常更大,并且针对分析查询进行了优化。

RDW 既有计算引擎又有存储。计算引擎用于查询数据的处理能力。存储是
关系存储
,它保存通过表、行和列结构化的数据。 RDW 的计算能力只能用于其关系存储——它们是捆绑在一起的。

RDW 的一些最重要的功能包括事务支持(确保数据得到可靠且一致的处理)、审计跟踪(保留对系统中数据执行的所有活动的记录)和schema 实现(确保数据以预定的方式被存放和使用)。

在 20 世纪 70 年代和 80 年代,公司将关系型数据库用于订单输入和库存管理等应用程序。这些应用程序称为_在线事务处理(OLTP)系统。 OLTP 系统可以对数据库中的数据进行创建、读取、更新和删除更改,或者CRUD操作。 CRUD 操作构成了数据架构中数据操作和管理的基础。它们对于设计和实现数据存储系统以及与数据交互的用户界面至关重要。

CRUD 操作要求我们的系统要能够快速响应,虽然我们可以在业务库中进行查询生成报表,但是这会导致我们的系统响应变慢,导致丧失用户信任度。

RDW 的发明就是为了解决这个问题,关系数据库中的数据被复制到数据仓库中,用户可以针对数据仓库而不是关系数据库(业务库)运行查询生成报表。这样业务系统的响应就不会受到影响, RDW 还能采集来自多个应用程序的数据以生成报表:

数据湖

数据湖是一个较新的概念,首次出现于 2010 年左右。我们可以将数据湖视为一个美化的文件系统,与笔记本电脑上的文件系统没有太大区别。数据湖只是存储,与关系数据仓库不同,没有与之关联的计算引擎。幸运的是,有许多计算引擎可以与数据湖一起使用,因此数据湖的计算能力通常比关系数据仓库开销小。另一个区别是,RDW 使用关系存储,而数据湖使用对象存储,不需要将数据结构化为行和列。

数据湖存储技术始于 Apache Hadoop 分布式文件系统 (HDFS),这是一种几乎完全在本地存储的开源技术,在 2010 年代初期非常流行。HDFS 是一种可扩展、容错的分布式存储系统,设计用于在商用硬件上运行。它是 Apache Hadoop 生态系统的核心组件。随着云计算的重要性不断增长,数据湖是使用不同类型的存储在云中构建的,并且大多数数据湖现在都存在于云中。

与关系数据仓库相比,数据湖是读时schema,这意味着无需进行任何前期工作即可将数据放入数据湖中:

它可以像使用笔记本电脑上的文件夹将文件复制到其中一样简单。数据湖中的数据以其自然(或原始)格式存储,这意味着它可以从源系统进入数据湖,而无需转换为其他格式。例如,如果我们将数据从关系数据库导出到原始 CSV 格式的文件中,则可以将其原封不动地存储在数据湖中。但是,如果我们想将其存储在关系数据仓库中,则必须对其进行转换以适合表的行和列。

将数据文件复制到数据湖时,其 schema 可能不会随之复制,或者可能位于不同的文件中。因此,我们必须通过创建schema 或从单独的文件中提取 schema 来定义schema,这就是术语读时schema的由来。如下图所示,来自源系统的数据(例如web应用数据库、传感器数据和社交媒体数据)都可以落入数据湖。这些文件可以保存结构化数据(如关系数据库中的数据)、半结构化数据(如 CSV、日志、XML 或 JSON 文件)或非结构化数据(如电子邮件、文档和 PDF 中的数据)。它们甚至可以保存二进制数据(如图像、音频和视频)。

数据湖最初是为了解决关系数据仓库的所有问题,包括成本高、可扩展性有限、性能差、数据清洗开销大以及对复杂数据类型的支持有限。 Cloudera、Hortonworks 和 MapR 等销售 Hadoop 和数据湖的公司对它们进行了大肆宣传,就好像它们是银弹,可以复制和清理数据,并以神奇的方式轻松地将其提供给最终用户。他们声称数据湖可以以“一种技术包揽一切”的方式完全取代关系数据仓库。

问题是查询数据湖实际上并不那么容易:它对人员技能要求高。比如说 IT 部门会告诉其用户:“嘿,我们将您需要的所有数据复制到这个数据湖中了,你只需打开 Jupyter 笔记本,然后使用 Hive 和 Python 使用这些文件夹中的文件构建报表就行了。”但这绝对会遭到吐槽拒绝,因为大多数最终用户根本不具备完成这一切所需的技能。公司后续将会发现,由于硬件和人力支持成本、生产延迟和生产力损失,这些复杂、难以使用的解决方案实际上要花费更多的成本。此外,数据湖不具备人们喜欢的数据仓库的一些功能,例如事务支持、schema 实现和审计跟踪。这导致三大顶级数据湖供应商中的两家——Hortonworks 和 MapR——破产。

数据湖并没有消失。相反,它的目的变成了另一种不同但非常有用的设计:**暂存和清洗数据,**我会在后续讲解数据湖的文章中详细说明。

现代数仓

数据湖未能取代关系型数据仓库,但仍然为暂存和清洗数据提供了好处。为什么不兼具两者的优点呢? 2011年前后,许多公司开始构建将数据湖与关系型数据仓库并列的架构,形成我们现在所说的现代数据仓库(MDW)的数据架构。现代数据仓库中的现代是指使用最新的技术和方法进行数据仓库构建
下图为现代数仓架构:

这是一种“两全其美”的方法:数据湖用于暂存和准备数据,数据科学家用它来构建机器学习模型;数据仓库用于服务、安全性和合规性,业务用户用它进行查询和报表生成。

数据网络

数据网络在 2016 年左右开始出现。我们可以将数据网络 架构视为现代数据仓库架构的演变,添加了更多技术来获取更多数据、保护数据并使其可用。此外,系统加载数据、转换、查询、搜索和访问数据的方式也得到了改进。通过添加各种组件,系统变成了一个“网络”——一个可以加载任何类型数据的大型框架。

数据湖仓

数据湖仓”是数据湖数据仓库的合成词(混合)。数据湖仓架构在 2020 年左右开始流行,当时 Databricks 公司开始使用该术语。 Lakehouse 的概念是摆脱关系数据仓库,并在数据架构中仅使用一个存储库(数据湖)。所有类型的数据(结构化、半结构化和非结构化)都被引入数据湖,并且所有查询和报告都是从数据湖完成的。

为何早期的数据湖失败了,而现在的湖仓一体又兴起了呢,是因为一个名为 Delta Lake 的支持事务的软件存储层,它运行在现有数据湖之上,使其更像关系数据库。该层的开源项目包括 Delta Lake、Apache Iceberg 和 Apache Hudi、Apache Paimon。

数据网格

数据网格一词最初由 Nextdata 创始人兼首席执行官、《数据网格:大规模交付数据驱动的价值》(O’Reilly,2022 年)一书的作者Zhamak Dehghani 在 2019 年 5 月的博客文章中首次引入。 2020 年 12 月,Dehghani进一步阐明了什么是数据网格,并提出了四项基本原则。从那时起,数据网格架构一直是一个非常热门的话题,在大量的博客、演示、会议和媒体报道中得到讨论,甚至出现在Gartner 数据管理技术成熟度曲线中。数据网格架构有很多值得喜欢的地方,但它只适合少数使用场景。

现代数据仓库、数据结构和数据湖仓架构都涉及集中存储数据在 IT 控制的架构下将运营数据复制到 IT 拥有的中央位置,然后 IT 在其中创建分析数据(下图****的左侧) 。这种集中式方法带来了三个主要挑战:数据所有权数据质量公司组织/技术扩展。数据网格的目的就是解决这些挑战。


重要的是要理解数据网格是一个概念,而不是一项技术。实施数据网格涉及非常大的公司组织和公司文化的改变,很少有公司会为这个做出改变。 (事实上,大多数公司甚至没有大到足以考虑采用数据网格架构:这在很大程度上是一种需要企业推进的方法。)构建它之前需要确定哪些现有技术可以复用以及哪些部分必须重新改造。每个领域都可以确定将使用哪些技术来构建其数据网格部分,其中可能包括构建现代数据仓库、数据结构或数据湖库。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp-IOS自定义启动页面模版的修改

启动界面设置 在打包IOS包时,需要我们选择app的启动页面配置 在HBuilderX内,有三个样式的选择 第一个,是通用界面,就是一个启动页是一个圆形的应用图标加上应用名称 第二个,自定义的启动图,目前无法通过App…

企业级网络安全:入侵防御实时阻止,守护您的业务安全

随着互联网技术的快速发展,企业级网络安全问题日益凸显。在这个数字化时代,企业的业务安全不仅关系到企业的形象和声誉,还直接影响到企业的生存和发展。因此,加强企业级网络安全,预防和抵御各种网络攻击已成为企业的重…

lua学习笔记17(面相对象之继承)

print("*****************************面相对象继承*******************************") object{} object.id1 function object:new()local obj{}self.__indexself setmetatable(obj,self)return obj end function object:text()--面相对象的类其实就是基于table来实现…

备考ICA----Istio实验20---跨网络Primary-Remote主从架构部署

备考ICA----Istio实验20—跨网络Primary-Remote主从架构部署 按照本实验在 cluster1(主集群)上安装 Istio 控制平面,并将 cluster2(远程集群)配置为使用 cluster1 中的控制平面。群集 cluster1 在 network1 网络上&am…

基于Springboot的笔记记录分享网站(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的笔记记录分享网站(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

提升法律文书起草效率:AlphaGPT 助力律师快速生成诉讼和仲裁文件

法律文书起草对于法律专业人士而言是一项基础而关键的任务。无论是民事、刑事还是行政诉讼,以及仲裁案件,精确的法律文书撰写对于案件的成功至关重要。然而,这一过程往往既耗时又复杂,尤其是在处理复杂的案情和面对当事人难以理解…

浅谈网络安全威胁与防御策略

企业网络安全威胁概述 外部威胁:来自网络安全威胁,比如DDOS攻击,病毒,sql注入,木马,蠕虫,等网络入侵,网络扫描,垃圾邮件,钓鱼邮件,针对web的攻击…

Docker Redis Debian服务器版

1.使用官方安装脚本自动安装docker 安装命令如下: curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh 如果安装提示 -bash sudo command not found 则需要 #update sudo apt-get update sudo apt-get install sudo再执行安装脚本1 安装…

WS2812B彩灯

目录 1、介绍 2、参数 3、引脚功能 4、应用电路 5、Code 1、介绍 WS2812是一种智能控制LED灯源,集成了控制电路和RGB芯片在一个5050封装组件中。它的主要特点和技术规格如下: 集成设计:WS2812将控制电路和RGB芯片集成在同一个封装中&…

Redis(三) String字符串

文章目录 前言常见命令SETGETMSETMGETINCRINCRBYDECRDECRBYINCRBYFLOATAPPENDGETRANGESETRANGESTRLEN命令小结 前言 Redis 的数据有很多种数据类型,包括字符串类型、列表类型、哈希类型、集合类型、有序集合类型等。这几种数据类型是针对于 value 来说的&#xff0…

数据应用OneID:ID-Mapping Spark GraphX实现

前言 说明 以用户实体为例,ID 类型包含 user_id 和 device_id。当然还有其他类型id。不同id可以获取到的阶段、生命周期均不相同。 device_id 生命周期通常指的是一个设备从首次被识别到不再活跃的整个时间段。 user_id是用户登录之后系统分配的唯一标识&#xff…

ELK及ELFK排错

目录 一、ELK及ELFK排错思路 1.1filebeat侧排查 1.2logstash侧排查 1.3ES、kibana侧问题 一、ELK及ELFK排错思路 1.1filebeat侧排查 第一步:排查filebeat上的配置文件有没有写错,filebeat的配置文件是yml文件,一定要注意格式。 第二步…

Harmony鸿蒙南向驱动开发-HDMI接口使用

功能简介 HDMI(High Definition Multimedia Interface),即高清多媒体接口,主要用于DVD、机顶盒等音视频Source到TV、显示器等Sink设备的传输。 HDMI以主从方式工作,通常有一个Source端和一个Sink端。 HDMI接口定义了…

Harmony鸿蒙南向驱动开发-MIPI CSI接口使用

功能简介 CSI(Camera Serial Interface)是由MIPI联盟下Camera工作组指定的接口标准。CSI-2是MIPI CSI第二版,主要由应用层、协议层、物理层组成,最大支持4通道数据传输、单线传输速度高达1Gb/s。 物理层支持HS(High …

Flutter - 环境配置提示 cmdline-tools component is missing

问题: flutter doctor运行命令 flutter doctor 报错: Android toolchain - develop for Android devices (Android SDK version 30.0.2) ✗ cmdline-tools component is missing Run path/to/sdkmanager --install "cmdline-tools;lates…

NI-LabView的DAQ缺少或丢失的解决办法(亲测有效)

DAQmx在Labview中不显示或缺失 问题:在NI Packasge Manager安装完DAQ后在labview中不显示控件解决办法 问题:在NI Packasge Manager安装完DAQ后在labview中不显示控件 在打开测量I/O时,见不到 DAQmx,或者在Express中见不到DAQ助手…

《战神4》和《战神5》有什么联系吗 苹果电脑如何运行《战神4》苹果电脑玩战神 Mac玩游戏 战神5攻略 crossover激活码

《战神4》(God of War 2018)和《战神5》(God of War: Ragnark)是一对引人注目的游戏作品,它们不仅在游戏界引起了广泛的关注,也给玩家带来了深入探索北欧神话世界的机会。这两部游戏之间的联系不仅体现在剧…

Docker 安装 RocketMQ

目录 一、新建两个配置文件 1.1 创建docker-compose.yml文件 1.2 .新建broker.conf文件 二、运行 三、可视化界面 一、新建两个配置文件 1.1 创建docker-compose.yml文件 version: 3.5 services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_name: rmqnamesrvports…

集合系列(十九) -List与数组互转操作介绍

一、数组转List 方式一 通过 Arrays.asList(strArray) 方式,将数组转换List,但不能对List增删,只能查改,否则抛异常,例子如下: public static void main(String[] args) {//创建一个字符串数组String[] …

MobX入门指南:快速上手状态管理库

一、什么是MobX MobX 是一个状态管理库,它可以让你轻松地管理应用程序的状态,并且可以扩展和维护。它使用观察者模式来自动传播你的状态的变化到你的 React 组件。 二、安装及配置 安装 MobX 和 MobX-React:你可以使用 npm 或 yarn 安装这…