HDFS入门讲义(一) | 青训营笔记

127 阅读6分钟

这是我参加[第四届青训营]笔记创作活动得第1天。

本系列就分布式数据库相关知识进行介绍,以更好地理解HDFS的运作机理。

同构和异构数据库

在同构分布式数据库(homogeneous distributed database) 系统中,所有站点都使用相同的数据库管理系统软件, 它们彼此了解,共同合作处理用户的请求。在这样的系统中, 本地站点放弃了它们的部分自治性,以修改模式或者数据库管理系统软件这方面的权利的方式。为使事务处理能在多个站点间进行,数据库管理系统软件还必须和其他站点合作来交换与事务有关的信息。 相反, 在异构分布式数据库(heterogeneous distributed database) 中,不同站点可能使用不同的模式和不同的数据库管理系统软件。站点之间可能彼此并不了解,在合作处理事务的过程中,它们可能仅提供有限的功能。模式的差别经常是査询处理中的主要问题,而软件的差异成为处理访问多站点事务的一个障碍。

分布式存储

考虑一个要存储到数据库中的关系 。在分布式数据库中存储这个关系有两种方法:

  • 复制。系统维护这个关系的几个相同的副本(拷贝), 并把每个副本存储在不同的 站点上。复制的替代方式是只存储关系r的一份拷贝。
  • 分片。 系统把关系划分为几个片, 并把每个片存储在不同的站点上。 分片和复制可以组合:一个关系可以划分为几个片,并且每个片可以有几个副本。下面几个节将详细阐述每种这样的技术。

数据复制

复制有很多优点和缺点。

●可用性(availability)。如果包含关系r的站点之一发生故障,那么关系r可以在另一个站点中找826

到。因此,即使一个站点发生了故障,系统仍可以继续处理涉及r的查询。

● 增加的并行度(increased parallelism)。如果大多数对关系r的访问都只会导致对该关系的读取,

那么几个站点可以并行地处理涉及r的查询。r的副本越多,在事务执行的站点上发现所需数据的机会就越大。因此,数据复制将站点之间的数据移动减到了最小。

● 增加的更新开销(increased overhead on update)。系统必须保证关系r的所有副本是一致的;否

则可能产生错误的计算。因此,只要r更新了,更新就必须传播到包含其副本的所有站点。结果增加了开销。例如,在银行系统中,账户信息被复制到不同站点中,必须保证特定账户中的余额在所有站点上是一致的。

通常情况下,复制提高了read操作的性能,并增加了数据对只读事务的可用性。但是,更新事务的开销会增大。控制几个事务对复制数据的并发更新比我们在第15章学习的集中式系统中更为复杂。我们可以通过选择关系的副本之一作为r的主拷贝(primary copy)来简化关系r的副本管理。例如,在银行系统中,账户可以同与其开户站点关联起来。类似地,在机票预订系统中,航班可以与其起飞的站点关联起来。19.5节将讨论用于分布式并发控制的主拷贝方案和其他可选方案。19.2.2 数据分片

如果关系r是分片的,那么r划分为多个分片In,72,…,r。中。这些分片包含足够的信息使得能够重构出原始关系r。有两种不同的方案用于对关系分片∶水平分片和垂直分片。水平分片通过将r的每个元组分给一个或多个分片来划分关系。垂直分片通过对关系r的模式R进行分解来划分关系。

在水平分片(horizontal fragmentation)中,关系r划分为多个子集r,ry,rz,。,.。关系r的每个元组必须至少属于其中一个分片,以使得在需要时可以重构出原始关系。

举一个例子,account关系可以划分为几个不同的分片,每个分片由属于特定支行的账户的元组构成。如果银行系统只有两个支行,即Hillside和Valleyview,那么就有两个不同的分片:

image.png

水平分片通常用来把元组保持在它们最常使用的站点上以最小化数据的传输。

一般而言,水平分片可以定义为整个关系r上的一个选择。也就是说,使用谓词P;来构造分片:

image.png

通过将所有分片合并来重构关系r,即∶

image.png

在该例子中,分片是不相交的。通过改变用于构造分片的选择谓词,可以让r的特定元组出现在不止一个r中。

垂直分片最简单的形式和分解(见第8章)是一样的。r(R)的垂直分片(vertical fragmentation)涉及定义模式R的几个属性子集Ri,R2,…,R。,使得∶

image.png

r的每个分片r定义为

image.png

分片采用的方式应使得我们可以通过采用自然连接来从分片中重构出关系r∶

image.png

保证关系r能重构的一种方法是在每个R,中包含R的主码属性。更一般地,可以使用任何超码。在模式R中加入一个称为tuple-id的特殊属性通常会比较方便。元组的tuple-id值是唯一的,可以将该元组与其他所有元组区别开来。这样 tuple-id 属性就作为扩展后模式的一个候选码,并包含到每个R. 中。元组的物理地址或逻辑地址可以用作tuple-id,因为每个元组有一个唯一的地址。

为了说明垂直分片,考虑一个大学数据库,它包含关系employee_info来存储每位员工的employee_id、name、dsignation和salay。出于保密的缘故,这个关系可能分为关系employee_private_info(包含employee_id和salary)以及另一个关系employee_public_info(包含属性employee_id、name和designation)。可能同样出于安全考虑,它们可能存储在不同的站点。

两种类型的分片可以应用到单个模式上;例如,对关系水平划分后得到的分片可以进一步垂直划分。分片也可以复制。一般而言,一个分片可以复制,分片的副本可以进一步分片,依此类推。