【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第四次作业

云数据库研究

云计算与云数据库背景

云计算(cloud computing)是 IT 技术发展的最新趋势,正受到业界和学术界的广泛关注。云计算是在分布式处理、并行处理和网格计算等技术的基础上发展起来的,是一种新兴的共享基础架构的方法。它可以自我维护和管理庞大的虚拟计算资源(包括计算服务器、存储服务器、宽带资源等等),从而提供各种 IT 服务。用户在使用云计算提供的服务时按需付费,这不仅降低了使用门槛,也极大地节省了开销。

随着云计算技术的不断升温,它对各个技术领域的影响开始显现,其中比较典型的包括数据库领域。截止到 2011 年 6 月,传统的数据库厂商,比如 Oracle、Teradata、IBM、Microsoft 等,都已经推出了基于云计算环境的相关数据库产品。原来没有从事数据库产品开发的知名大公司,比如 Amazon 和 Google 等,也发布了 SimpleDB 和 BigTable 等产品。

云数据库概述

云数据库是在 SaaS(software-as-a-service:软件即服务)成为应用趋势的大背景下发展起来的云计算技术,它极大地增强了数据库的存储能力,消除了人员、硬件、软件的重复配置,让软、硬件升级变得更加容易,同时也虚拟化了许多后端功能。云数据库具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点。

如图 1 1 1 所示,在云数据库应用中,客户端不需要了解云数据库的底层细节,所有的底层硬件都已经被虚拟化,对客户端而言是透明的。它就像在使用一个运行在单一服务器上的数据库一样,非常方便、容易,同时又可以获得理论上近乎无限的存储和处理能力。

在这里插入图片描述

图 1    云数据库应用示意图

云数据库与传统分布式数据库

分布式数据库是计算机网络环境中各场地或节点上的数据库的逻辑集合。逻辑上它们属于同一系统,而物理上它们分散在用计算机网络连接的多个节点,并统一由一个分布式数据库管理系统管理。

分布式数据库已经存在很多年,它可以用来管理大量的分布存储的数据,并且通常采用非共享的体系架构。云数据库和传统的分布式数据库具有相似之处,比如,都把数据存放到不同的节点上。但是,分布式数据库在可扩展性方面是无法与云数据库相比的。由于需要考虑数据同步和分区失败等开销,前者随着节点的增加会导致性能快速下降。而后者则具有很好的可扩展性,因为后者在设计时就已经避免了许多会影响到可扩展性的因素,比如采用更加简单的数据模型、对元数据和应用数据进行分离以及放松对一致性的要求等等。另外,在使用方式上,云数据库也不同于传统的分布式数据库。云数据库通常采用多租户模式,即多个租户共用一个实例,租户的数据既有隔离又有共享,从而解决数据存储的问题,同时也降低了用户使用数据库的成本。

云数据库产品

云数据库供应商主要分为 3 类:

  • 传统的数据库厂商:Teradata,Oracle,IBM DB2 和 Microsoft SQL Server
  • 涉足数据库市场的云供应商:Amazon,Google 和 Yahoo
  • 新兴小公司:Vertica,LongJump 和 EnterpriseDB

常见的云数据库产品如表 1 1 1 所示。

企业产品
AmazonDynamo, SimpleDB, RDS
GoogleBigTable, FusionTable
MicrosoftMicrosoft SQL Server Data Services 或 SQL Azure
OracleOracle Cloud
Yahoo!PNUTS
VerticaAnalysis Database v3.0 for the Cloud
EnerprieseDBPostgres Plus in the Cloud
开源项目Hbase, Hypertable
其它EnerpriseDB,FathomDB, ScaleDB, Objectivity/DB, M/DB:X

表 1    云数据库产品

Amazon 是云数据库市场的先行者。Amazon 除了提供著名的 S3 存储服务和 EC2 计算服务以外,还提供基于云的数据库服务Dynamo。Dynamo 采用“键/值”存储,其所存储的数据是非结构化数据,不识别任何结构化数据,需要用户自己完成对值的解析。Dynamo 系统中的键(key)不是以字符串的方式进行存储,而是采用 mds_key(通过 md5 算法转换后得到)的方式进行存储,因此,它只能根据 key 去访问,不支持查询。SimpleDB 是 Amazon 公司开发的一个可供查询的分布数据存储系统,它是 Dynamo “键/值”存储的补充和丰富。顾名思义,SimpleDB 的目的是作为一个简单的数据库来使用,它的存储元素(属性和值)是由一个 id 字段来确定行的位置。

Google BigTable 是一种满足弱一致性要求的大规模数据库系统。Google 设计 BigTable 的目的,是为了处理 Google 内部大量的格式化及半格式化数据。目前,许多 Google 应用都是建立在 BigTable 上的,比如 Web 索引、Google Earth、Google Finance、Google Maps 和 Search History。BigTable 是构建在其他几个 Google 基础设施之上的:首先,BigTable 使用了分布式 Google 文件系统 GFS(Google file system)来存储日志和数据文件;其次,BigTable 依赖一个高可用的、持久性的分布式锁服务 Chubby;再次,BigTable 依赖一个簇管理系统来调度作业、在共享机器上调度资源、处理机器失败和监督机器状态。

云数据库领域的研究问题

对于学术界而言,要想在云数据库中提供类似于现有 DBMS 的丰富功能,比如查询、索引和事务处理,仍然有许多亟待解决的问题。云数据库领域中的研究问题主要包括:云数据库中数据模型设计、编程模型、服务器体系架构设计、事务一致性、基于云数据库的容灾和 SLA(service level agreement)监控、云数据的访问控制和授权管理、云应用数据访问体系的调优、云数据生命周期管理、云数据库与本地数据库的协同和联邦设计、测试基准等。

云数据库的设计可以采用不同的数据模型,不同的数据模型可以满足不用应用类型的需求,主要包括:键/值模型和关系模型。

BigTable 和它的同类开源产品 HBase,提供了一个不同于以往的简单的、动态的、非关系型的数据模型。BigTable 采用了键/值数据模型。在 BigTable 中,包括行列以及相应的时间戳在内的所有数据都存放在表格的单元里。BigTable 的内容按照行来划分,多个行组成一个小表(Tablet),保存到某一个服务器节点中。这就意味着,每个 Tablet 包含了位于某个区间内的所有数据。对于 BigTable 而言,一个数据簇中存储了许多表,其中每个表都是一个 Tablet 集合。在最初阶段,每个表只包含 1 个 Tablet。随着表的增长,它会被自动分解成许多 Tablet,每个 Tablet 默认尺寸大约是 100MB ~ 200MB。BigTable 使用一个类似于 B+ 树的 3 层架构来存储 Tablet 位置信息。由于 BigTable 采用了键/值数据模型,因此不存在表间的联接操作,这也使得数据分区操作相对简单,只需要根据键的区间来划分即可。

微软的 SQL Azure 云数据库采用了关系模型,它的数据分区方式和 BigTable 有些不同。关系型云数据库的数据模型涉及行组和表组等相关概。一个表是一个逻辑关系,它包含一个分区键,用来对表进行分区。具有相同分区键的多个表的集合称为表组。在表组中,具有相同分区键值的多个行的集合称为行组。一个行组中包含的行总是被分配到同一个数据节点上。每个表组会包含多个行组,这些行组会被分配到不同的数据节点上。一个数据分区包含了多个行组.因此,每个数据节点都存储了位于某个分区键值区间内的所有行。

2 2 2 所示为云数据库的数据访问方法。当客户端请求数据时,它首先向管理器请求一份分区映射图,管理器向客户端发送分区映射图;客户端收到以后,在图中进行搜寻,根据键值找到自己所需数据的存储位置;然后,客户端到指定的数据节点请求数据;最后,由该数据节点把数据返回给客户端。实际上,为了改进性能,同时也为了避免管理器的性能瓶颈,通常会在客户端缓存常用的分区映射图。这样,客户端在很多情况下不必与管理器交互就可以直接访问相应的数据节点。

在这里插入图片描述

图 2    云数据库中的数据访问方法

云数据库的安全性也是影响其普及与应用的关键因素。云数据库虽然提供了对海量数据的存储,但同时也对数据的保密性和访问控制等安全问题提出了新的挑战:一方面,一些敏感的数据,比如企业财务数据、医疗机构的病例档案、政府机构的文件等,必须经过加密才能放到云数据库中;另一方面,针对众多的用户,必须设置不同的访问控制级别,保证不同层次的用户只能授权访问限定范围内的数据。

云数据管理的新数据模型

传统关系型数据库系统在处理超大规模数据的存储 、高并发的数据访问、半结构化和非结构化数据存储等新型应用时已经出现瓶颈。而关系数据模型用关系表示实体及实体之间的联系,以关系代数为基础,数据独立性强,并且其非过程化的数据存取方式大大降低了数据库编程的难度。非关系数据模型有更好的可扩展性,很好地解决了多机并行处理的瓶颈,存储容量也不再受限,并且能更好地存储各种复杂的数据类型,查询效率也更高。

基于以上的考虑,可以从数据的具体特性出发,结合关系数据模型与非关系数据模型,建立一种新的云数据模型,用新模型中的关系部分处理复杂的事务需求,非关系部分处理复杂的海量数据需求,具体来说就是对数据实体的切分。在传统的关系数据模型中,实体根据范式要求而被划分为不同的关系模式;然而在新模型中,可以根据实体的属性类型对实体再次进行划分,划分后的一个实体型由很多子实体组成,并且每个子实体要么属于关系型,要么属于非关系型,各个子实体的物理储存介质都是 shared-nothing 结构。此外,新模型在数据管理的对外接口上,保持已有的关系接口不变,新的功能封装在已有的关系接口中。在处理新的复杂的数据类型时,首先在实体模式的定义中标记数据的对应属性(用 Blob 做约束),然后系统模型就会自动转换到对应的处理模块,例如当用户处理事务性较弱的大批量数据操作时,系统就会进行自动转换。新模型数据实体有低耦合、高内聚的特性,因此有很好的可扩展性;并且不限于存储基本的数据类型,做到了与结构化数据的关系模型的平滑过渡,有很好的可用性。图 3 3 3 说明了一个实体型的划分。

图 3    实体划分

由于新模型要同时管理了小字段的结构化数据和大字段的非结构化数据,并且扩展了数据库管理系统中垂直分片的技术,所以总体上表现为层次结构的数据模型。新数据模型与传统的层次模型主要有以下几方面的不同:

  • 整个数据实体只有两层,关系层和非关系层
  • 关系层和非关系层均由表结构表示数据
  • 关系表中的一个数据项和非关系表中的一个数据项是一一对应的
  • 关系表和非关系表是 n:1 的关系,并且组成倒立的树形结构
  • 关系层和非关系层的划分都是针对同一个实体型的数据,属于同一实体型的横向分层,不同与传统的不同实体型之间的纵向分层
  • 由于横向分层的原因,在处理实体间的无论一对多,还是多对多都很方便,不需要建立冗余结点和虚拟结点,均封装在系统的关系层中,克服了纵向分层结构的弱点

在非关系层中,只有数据表存储了实际的大字段数据,包括其 key 及 value。其他都是索引表,二层索引表 Tablet 保存了数据表 Tablet 的地址信息以及其它元数据信息,二层索引表 Tablet 中每行记录对应一个数据表 Tablet。根索引表 Tablet 保存了二层索引表 Tablet 的地址信息以及其他元数据信息,根索引表 Tablet 中每条记录对应一个二层索引表 Tablet。数据寻址时,涉及到分散的多台服务器的磁盘查询,为了降低磁盘读取次数,差用变形的 B+ 结构存储索引表和数据表,每个结点即为一个 Tablet。变形 B+ 树的很多操作与 3 阶 B+ 树一致,与传统 B+ 树有以下几点不同:

  • 简化了第一-层根索引结点和第二层索引结点的操作,根索引结点不分裂,永远只有一个
  • 数据结点的合并和分裂不由B十树的最小度数或者阶数决定,而是根据可自定义的结点大小与其文件大小而定
  • 无论数据插入还是删除,都在数据结点进行,树永远都由两层索引结点和一层数据结点组成
  • 索引结点(包括根索引结点)的子树个数等于索引结点的记录项数目,不由 B+ 树的最小度数或者阶数决定
  • 索引结点的记录项数目等于可自定义的节点大小除以每行记录大小

通过与 HBase 作对比,对大字段的数据进行连续写入和读取,作者得出了如图 4 4 4 试验结果。

在这里插入图片描述

图 4    数据写入(左)与数据读取(右)对比

可以看出新模型与 HBase 相比,在大字段数据写入时,效率相当。因为新模型的 Blob 数据写入语法语义较简单,与 HBase 相似,都是 key-value 操作,而 Blob 数据索引在关系层的写人数据量与 Blob 本身相比较小。系统每写入 1MB 的数据(一行)大概是 0.36 秒,吞吐量为 23Mb/s,当写入 10000 行时,数据量达到 30GB,在写入过程中会发生很多次的 tablet 的拆分与合并。在大字段数据读取时,效率稍低。因为系统首先会分析查询条件,而且有相当一部分 Blob 数据的复杂查询都会涉及到关系层中索引的操作。系统每读取 1MB 的数据(一行)大概是 0.1 秒,吞吐量为 80Mb/s。

从数据库到云计算:亚马逊的大数据

云计算有 SaaS、 PaaS、laaS 三层,亚马逊着力的是 IaaS 的底层建设。亚马逊云计算解决方案和网络服务部高级经理在接受媒体采访时表示,在网络互联的需求之上,直接就是亚马逊的最底层的IT基础架构 AWS,包括计算、存储、内容分发等;在 AWS 基础上,用户才可以构建自己的应用层,这些应用层包括构建数据库、应用服务器;最上层是应用软件。亚马逊已经不是一个云服务提供商,而是云基础设施供应商。

亚马逊的 IaaS 以弹性计算云 EC2、存储云 S3 为主。分析师和投资者目前主要通过 AWS 提供的 S3 服务中存储的数据量来了解 AWS 的发展情况,S3 主要销售基于云计算系统的存储空间。亚马逊的数据显示,2011 年亚马逊云服务 S3 的对象量翻了 3 番,增加了 5000 亿对象,相当于每个季度增加 1250 亿对象。据美国调查公司 451 Group 的报告,AWS 已经占据了美国 59% 的基础设施及服务(IaaS)市场份额,领先优势相当明显。

AWS 提供的另一个主要服务为 EC2,该服务提供基于云计算系统的额外计算能力。根据云计算专家盖伊·罗森的调查,2011 年 1 月,全球排名前 50 万的网站中有 3674 家网站使用该服务,较去年同期增长了近 50%。这使得亚马逊超过 Rackspace Hosting,成为全球最大的云计算服务提供商。

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

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

相关文章

大数据技术7:基于StarRocks统一OALP实时数仓

前言: 大家对StarRocks 的了解可能不及 ClickHouse或者是远不及 ClickHouse 。但是大家可能听说过 Doris ,而 StarRocks 实际上原名叫做 Doris DB ,他相当于是一个加强版的也就是一个 Doris ,也就是说 Doris 所有的功能 StarRocks 都是有的&a…

this.$emit(‘update:isVisible‘, false)作用

这个写是不是很新颖&#xff0c;传父组件传值&#xff01;这是什么鬼。。。 假设你有以下逻辑业务。在A页面弹出一个组件B&#xff0c;A组件里面使用B组件&#xff0c;是否展示B组件你使用的是baselineShow变量控制&#xff01; <BaselineData :isVisible.sync"basel…

SQL命令---修改字段的排列位置

介绍 使用sql语句表字段的排列顺序。 命令 alter table 表名 modify 字段名1 数据类型 first|after 字段名2;例子 将a表中的age字段改为表的第一个字段。 alter table a modify age int(12) first;下面是执行命令后的表结构&#xff1a; 将a表中的age字段放到name字段之…

ELK简单介绍二

学习目标 能够部署kibana并连接elasticsearch集群能够通过kibana查看elasticsearch索引信息知道用filebeat收集日志相对于logstash的优点能够安装filebeat能够使用filebeat收集日志并传输给logstash kibana kibana介绍 Kibana是一个开源的可视化平台,可以为ElasticSearch集群…

linux 15day apache apache服务安装 httpd服务器 安装虚拟主机系统 一个主机 多个域名如何绑定

目录 一、apache安装二、访问控制总结修改默认网站发布目录 三、虚拟主机 一、apache安装 [rootqfedu.com ~]# systemctl stop firewalld [rootqfedu.com ~]# systemctl disable firewalld [rootqfedu.com ~]# setenforce 0 [rootqfedu.com ~]# yum install -y httpd [rootqfe…

用23种设计模式打造一个cocos creator的游戏框架----(十二)状态模式

1、模式标准 模式名称&#xff1a;状态模式 模式分类&#xff1a;行为型 模式意图&#xff1a;允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 结构图&#xff1a; 适用于&#xff1a; 1、一个对象的行为决定于它的状态&#xff0c;并且它必须…

记录一次云原生线上服务数据迁移全过程

文章目录 背景迁移方案调研迁移过程服务监控脚本定时任务暂停本地副本服务启动&#xff0c;在线服务下线MySQL 数据迁移Mongo 数据迁移切换新数据库 ip 本地服务启动数据库连接验证服务打包部署服务重启前端恢复正常监控脚本定时任务启动旧服务器器容器关闭 迁移总结 背景 校园…

代码随想录二刷 |二叉树 |101. 对称二叉树

代码随想录二刷 &#xff5c;二叉树 &#xff5c;101. 对称二叉树 题目描述解题思路 & 代码实现递归法迭代法使用队列使用栈 题目描述 101.对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,…

adb unauthorized 踩坑记录

给Realme X7 Pro 安装Root后&#xff0c;发现adb连接设备呈现unauthorized 状态&#xff1a; 在Google以后&#xff0c;尝试了很多方案&#xff0c;均无效&#xff0c;尝试的方案如下&#xff1a; 重启手机&#xff0c;电脑。不行撤销调试授权&#xff0c;开关usb调试&#xf…

持续集成交付CICD:Jenkins配置Nexus制品发布

目录 一、实验 1.Jenkins配置Nexus制品发布 一、实验 1.Jenkins配置Nexus制品发布 &#xff08;1&#xff09;策略 发布其实就是下载制品&#xff0c;然后将制品发送到目标主机&#xff0c;最后通过脚本或者指令启动程序。 &#xff08;2&#xff09;安装Maven Artifact …

基于JavaWeb+SSM+Vue马拉松报名系统微信小程序的设计和实现

基于JavaWebSSMVue马拉松报名系统微信小程序的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.…

SQL命令---添加新字段

介绍 使用sql语句为表添加新字段。 命令 alter table 表名 add 新字段名 数据类型;例子 向a表中添加name字段&#xff0c;类型为varchar(255)。 alter table a add name varchar(255);下面是执行添加有的表结构&#xff1a;

react之项目打包,本地预览,路由懒加载,打包体积分析以及如何配置CDN

react之项目打包,本地预览,路由懒加载,打包体积分析以及如何配置CDN 一、项目打包二、项目本地预览三、路由懒加载四、打包体积分析五、配置CDN 一、项目打包 执行命令 npm run build根目录下生成的build文件夹 及时打包后的文件 二、项目本地预览 1.全局安装本地服务包 npm…

内存分配器

实现分配器需要考虑的问题 空闲块的组织方式&#xff1a;如何记录现有的空闲块空闲块的选择&#xff1a;如何选择一个合适的空闲块空闲块的分割&#xff1a;选择了一个合适的空闲块后如何处理空闲块内部的剩余部分空闲块的合并&#xff1a;如何处理一个刚刚被释放的块&#xf…

Python sqlalchemy使用

基本结构 #!/usr/bin/python3 # -*- coding:utf-8 -*- """ author: JHC file: base_db.py time: 2023/6/19 21:34 desc: """ from sqlalchemy import create_engine,text from sqlalchemy.orm import sessionmaker,scoped_session from contex…

计算机服务器中了Mallox勒索病毒怎么解密,Mallox勒索病毒解密步骤

计算机网络技术的不断发展与应用&#xff0c;为企业的生产运营提供了坚实的基础&#xff0c;大大提高了企业的生产与工作效率&#xff0c;但随之而来的网络安全威胁也在不断增加。在本月&#xff0c;云天数据恢复中心接到了很多企业的求助&#xff0c;企业的计算机服务器遭到了…

Nacos源码解读12——Nacos中长连接的实现

短连接 VS 长连接 什么是短连接 客户端和服务器每进行一次HTTP操作&#xff0c;就建立一次连接&#xff0c;任务结束就中断连接。 长连接 客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭&#xff0c;客户端再次访问这个服务器时&#xff0c;会继续使用这一条已经建立…

数理统计基础:参数估计与假设检验

在学习机器学习的过程中&#xff0c;我充分感受到概率与统计知识的重要性&#xff0c;熟悉相关概念思想对理解各种人工智能算法非常有意义&#xff0c;从而做到知其所以然。因此打算写这篇笔记&#xff0c;先好好梳理一下参数估计与假设检验的相关内容。 1 总体梳理 先从整体结…

【Spring 基础】00 入门指南

【Spring 基础】00 入门指南 文章目录 【Spring 基础】00 入门指南1.简介2.概念1&#xff09;控制反转&#xff08;IoC&#xff09;2&#xff09;依赖注入&#xff08;DI&#xff09; 3.核心模块1&#xff09;Spring Core2&#xff09;Spring AOP3&#xff09;Spring MVC4&…

用python 网络自动化统计交换机有多少端口UP

用python统计交换机有多少端口UP 用python统计交换机有多少端口UP&#xff0c;可以间接的反馈有多少个用户在线。我们使用上次的脚本将可达的网络设备ip统计到reachable_ip.txt中&#xff0c;这次我们使用reachable_ip.txt来登陆设备来统计多少端口是UP的 云配置 拓扑 交换机…