数据库三级(13)
Posted 364.99°
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库三级(13)相关的知识,希望对你有一定的参考价值。
目录
13.大规模数据库架构
选择
13.1.分布式数据库
13.1.1.分布式数据库系统概述
- 分布式数据库系统
物理上分散、逻辑上集中的数据库系统。系统中的数据分布在物理位置不同的计算机上,由通信网络将这些场地连接起来,每个场地既具有独立处理的能力,也可以和其他场地协同工作。 - 分布式数据库
分布式数据库系统中各场地上数据库的逻辑集合。
13.1.2.分布式数据库目标与数据分布策略
-
分布式数据库目标
1987年,C.J.Date提出了分布式数据库要达到的12个目标,如下图所示:
-
数据分布策略
2.1 数据分片
对某一个关系进行分片是将关系划分为多个片断,这些片断包含足够的信息可以是关系重构,有4种基本方法:
- 水平分片:在关系中从行的角度(元组) 依据—定条件划分为不同的片断,关系中的每一行必须至少属于一个片断,以便在需要时可以重构关系
- 垂直分片:在关系中从列的角度(属性)依据一定条件分为不同的片断,各片断中应该包含关系的主码属性,以便通过连接方法恢复关系
- 导出分片:是导出水平分片,分片的依据不是本关系属性的条件,而是其他关系属性的条件
- 混合分片:是指以上3种方法的混合
2.2 数据分配
是分布式数据库的特征,解决数据分配有以下几种方法:
13.1.3.分布式数据库系统的体系结构
-
分布式数据库的一种参考模型结构:
分布式数据库系统具体内容:
-
分布透明性
分布式透明性的几种级别:
-
分布式数据库管理系统
分布式数据库管理系统的结构图:
- LDBMS局部数据管理系统:负责创建和管理局部数据库,提供场地自治能力,执行全局应用以及全局查询的子查询
- GDBMS全局数据库管理系统:分布式数据库管理系统的核心,它为终端用户提供分布透明性,协调全局事务在各个场地的执行,为全局应用提供支持。
- GDD全局数据字典:提供系统的各种描述、管理和控制信息,如为系统提供各级模式描述、存取权限定义、事务优先级、完整性约束与相容性约束等
- CM通信管理:负责在各个场地之间传送数据和消息,为各场地的协同工作提供可靠通信
13.1.4.分布式数据库的相关技术
- 分布式查询
在集中式数据库系统中,查询代价主要是由CPU代价和/O代价来衡量的,在分布式数据库系统中,数据分布在多个不同的场地上,在查询处理中还要考虑站点间传输数据的通信代价。分布式查询优化主要考虑以下策略:
- 分布式事务管理
分布式事务管理主要包括恢复控制和并发控制,内容如下。在分布式教据库系统中一个全局事务的完成需要多个场地共同参与,为了保持事务的原子性,参与事务执行的所有场地或者全部提交,或者全部撤销。
- 恢复控制:
1.1 分布式数据库系统的恢复控制采用最典型策略是基于两阶段的提交协议,该协议将场地的事务管理分为协调者和参与者
1.2 通过协调者在第一阶段询问所有参与者事务是否可以提交,参与者做出应答;在第二阶段协调者根据参与者的回答决定事务是否提交
1.3 协调者和参与者都在稳定的存储器中维护一份日志信息,当故障发生时,可以利用日志信息恢复操作
1.4 缺点:两阶段协议在协调者发生故障时可能导致阻塞,三阶段协议提交可以避免阻塞问题- 并发控制
在大多数分布式系统中并发控制主要是基于封锁协议的。集中式数据库系统中的各种封锁协议都可以用于分布式系统,需要改变的是锁管理器处理复制数据的方式
13.2.并行数据库
13.2.1.并行数据概述
- 数据库系统发展的关键问题:提高数据库系统吞吐率和减少事务响应时间,数据库应用的发展对数据库的性能和可用性提出了更高的要求。
- 在软件和硬件需求的推动下,推出了并行数据库,以多处理器并行处理提高速度,使用多个处理器构造的廉价并行计算机比传统的大型计算机有更好的性能。
13.2.2.并行数据库系统结构
并行数据库有多种体系结构,主要可分为以下4种:
- 共享内存结构
所有的处理机通过互联网共享一个公共的主存储器,如下所示( P表示处理机,M表示内存,D表示磁盘)。
- 这种并行结构与单机系统的差别只是在于以多个处理代替单个处理器,并行执行事务,通过共享内存传送消息和数据,实现对一个或多个磁盘的访问
- 优势:实现简单,最为经济的解决方案
- 缺点:若处理器数量过多,容易造成访问内存冲突。所以处理器数量必须限制在32或64个之内,在一定程度上限制了并行能力的扩展
- 共享磁盘结构
所有的处理机拥有独立的主存储器,通过互联网共享磁盘。如下所示( P表示处理机,M表示内存,D表示磁盘)。
- 优势:共享磁盘结构相比共享内存结构具有更大的优势,每个处理器有独立内存,访问内存不再会产生冲突。从一定程度上克服了内存发生故障时系统崩溃的问题,提高系统可用性
- 缺点:该结构是通过互联网实现各个处理器之间的信息和数据交换,会产生一定的通信代价
- 无共享结构
每个处理机拥有独立的主存储器和磁盘,不共享任何资源。如下所示(P表示处理机,M表示内存,D表示磁盘)。
- 优点:该结构被认为是支持并行数据库系统的最好并行结构,通过最小化共享资原来降低资源竞争的概率,具有极高的可扩展性,比较适用于如银行出纳、民航售票等OLTP之类的应用
- 缺点:通信的代价和非本地磁盘访问的代价高
- 层次结构
该结构综合了共享内存、共享磁盘和无共享结构的特点,从全局角度考虑可以分为两层,顶层是由若干节点组成的无共享结构,底层是共享内存或共享磁盘结构。如下图d所示。(P表示处理机,M表示内存,D表示磁盘)。
- 优势:这种结构的灵活性很大,可以根据用户不同的需求配置成不同结构的系统
- 缺点:集成了以上三种结构的优缺点
13.2.3.数据划分与并行计算
合理的数据划分可以使查询处理时间最小化,并行处理性能最大化。
- 一维数据划分
一维数据划分主要有以下几种划分方法:
- 轮转法(Round-Robin ):
1.1 该策略顺序扫描整个关系,将元组依欠划分到n个磁盘上,即元组r0分配到D0,r1分配到D1,rn-1分配到Dn-1,rn分配到D0。一般来说,ri分配到Di mod n上
1.2 轮转法保证了元组在多个磁盘上平均分配,最多相差1
1.3 该策略适合于扫描整个关系的应用,在扫描时可以并行地从n个磁盘读取数据,负载均衡,充分发挥了并行性
1.4 缺点:该策略不适合点查询和范围查询,无法准备定位元组在那一个磁盘上,查询效率低- 散列划分( Hash Partitioning ):
2.1 该策略使用一个值域为{0,1,2,3…,n-1)的散列函数,选取关系中的一个或多个属性作为划分属性,根据这个划分属性进行散列,根据散列函教返回值确定分配的磁盘
2.2 该策略适合点查询,对于顺序扫描关系也是非常高效的
2.3 缺点:若散列函数选择不合理,可能会引起数据划分的不均衡,因此散列函数选择是该策略的关键点- 范围划分( Range Partitioning ):
3.1 该策略按照关系中某个属性的取值范围将数据文件划分为n部分,分别存放在磁盘上。如属性的取值范围为0~10的元组分配到磁盘0,属性的取值范围为10~50的元组分配到磁盘1,依次类推,按照范围将所有元组分配到n个磁盘上
3.2 该策略适合范围查询和点查询
3.3 缺点:可能会引起数据分布不均匀,导致并行处理能力下峰
-
多维数据划分
多维数据划分主要有以下几种划分方法:
-
并行算法
排序和连接是数据库系统中开销较大的运算,下面是这两种运算的并行算法介绍。
并行排序
如果关系是按照范围划分的方法分配到各个磁盘之上,且排序属性为划分属性,则可以直接将各个划分中的数据串接起来,可以得到好序的关系。若关系是以其他方式划分的,则可以用下列方法进行排序
并行连接
并行连接分为划分连接和分片-复制连接两种,具体内容如下:
其他的关系操作
13.3.1.云计算概述
-
描述:云计算是分布式计算、并行计算和网格计算的发展,或者说是这些计算机科学概念的商业实现。
-
概念:云计算是一种商业计算模型,/font>,它通过集中所有的计算资源,采用硬件虚拟化技术,为云计算使用者提供强大的计算能力、存储和带宽等资源,它将计算任务分布在大量计算机构成的资原池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务,获得与传统大型服务器相同或者更高的计算能力。云计算包括以下软硬件设施:
-
云计算提供商的数据中心
计算提供商的数据中心的软硬件设置就是所谓的云,具体内容如下:
-
云计算的突破
从硬件上看,云计算在三方面突破了传统,如下图所示:
13.3.2.云计算体系结构简介
云环境下,计算的主要对象仍是数据,“云+数据库”的结合产生了云数据库(CloudDB,简称为“云库”)。Google的云数据库架构如下图所示:
- BigTable数据模型
- 描述:BigTable是Google的云数据库,是一个分布式的结构化数据存储系统,用于对海量数据进行处理、存储和查询
- BigTable表的索引是行关键字( Row Key )、列关键字(Column Key)和时间戳(Timestamp )
- 每个单元 ( Cell )由行关键字、列关键字和时间戳共同定位,即( row , column , timestamp ) cell contents
- 在BigTable中,不仅可以随意地增减行的数量,同在一定的约束条件下,还可以对列的数量进行扩展,而且在每个单元还引入一个时间标签,可以存储多个不同时间版本的不同数据
数据模型的特点
- BigTable的体系结构
一个BigTable集群存储了很多表,每个表包含了一个Tablet的集合,而每个Tablet包含了某个范围内行的所有相关数据。初始状态下,一个表只有一个Tablet。随着表中数据的增长,它被自动分割成多个Tablet。BigTable结构图如下所示:
13.3.3.云数据库与传统数据库比较
- 云数据库与现有的RDBMS存在较大差别,虽然都是关系数据模型,但通常的云数据库就是一系列的二维表格,操作方式也是基于简化版本的类SQL或访问对象。
- 云数据库的使用使我们不必购买托管服务器、自己安装和维护数据库,也不关心服务器地理位置及其他信息,只需存取所要的信息。但云数据库也存在以下缺点:
13.4.XML数据库
13.4.1.XML语言的概述
XML(可扩展标识语言):一般用于标记电子文件,使其具有结构性,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。其语法与html类似,都是用标签来描述数据。其特点如下:
13.4.2.XML数据的概述
- XML数据库是一种支持对XML格式文档进行存储和查询等操作的数据库管理系统,是XML文档及其部件的集合,并通过一个具有能力管理和控制这个文档集合本身及其所表示信息的系统来维护。
- XML数据库不仅是结构化数据和半结构化数据的存储库,持久的XML数据管理包括数据的很多特性,如下所示:
- XML数据库的3种类型
- 与传统数据库相比,XML数据库具有以下优势∶
13.4.3.SQL Server 2008与XML
- SQLServer中的XML语句
在关系数据库中,SELECT语句返回的查询结果是一个标准的行集(由字段与记录组成的数据表格式的数据集)。如果希望将查询结果以XML形式返回,那么可以在SELECT语句中加入FOR XML子句,将返回结果变为XML格式。另外,在SQL Server 2008中还提供了一个OPENXML的函数用于处理XML数据流。
SQL Server中的XML语句语法格式:
在SELECT语句里加人FORXML子句可以以XML格式返回查询结果,此子句的语法如下:
[ FOR{ BROWSE ]<XML>)]
<XML>: :=
XML
{
RAW[ ( 'ElementName' )]|AUTO}
[
<CommonDirectives>
[,{XMLDATA IXMLSCHEMA[( ' TargetNameSpaceURI' )]}]
[,ELEMENTS[ XSINILIABSENT ]
]
|EXPLICIT
]
<CommonDirectives>
[,XMLDATA]
|PATH[(' ElementName' )]
{
<CommonDirectives>
[,ELEMENIS [ XSINIL I ABSENT ]]
]
}
<Common Directives> : :=
[,BINARY BASE64 ]
[,TYPE]
[,ROOT [ ('RootName') ]]
案例:使用FORXMLRAM参数,查询年龄在20-30岁之间的顾客的姓名、性别和所在地址
SELECT Cname,Sex,Address
FORM Table_Customer
WHERE datediff(year ,BirthDate,Getdate( ))
BETWEEN 20 AND 30 FOR XML RAM
案例:使用FORXMLAUTO参数,查询年龄在20~30岁之间的顾客的姓名、性别和所在地址,同时输出XML的XSD
SELECT Cname,Sex,Address
FORM Table_Customer
WHERE datediff(year ,BirthDate,Getdate( ) )
BETWEEN 20 AND 30
FOR XML AUTO ,XMLSCHEMA
- SQL Server中的XML数据类型
在SQLServer 2008中,可以使用XML数据类型,也可以将XML文档或片段存储在SQLServer数据库中。
在创建数据表时,可以定义XML类型的字段,声明XML数据类型字段的方法与声明其他数据类型字段的方法一样的。
案例:创建一个包含XML字段类型的表
CREATE TABLE 文档表
(
文档编号 int,
文档标题 nvarchar(50),
文档内容 xml
)
案例:将FORXML的查询结果赋值给XML变量并进行查询显示
SET @myXML=(
SELECT 文档内容
FROM 文档表
WHERE 文档编号 = 1
)SELECT @myXML
XML索引类型
为了提高XML数据查询时的速度,需在XML类型字段上建立索引。
13.4.4. 操作XML
SQL Server 2008中支持使用XQuery语言来查询XML数据类型,其常用的方法主要包括:
以上是关于数据库三级(13)的主要内容,如果未能解决你的问题,请参考以下文章