📜  分布式数据库系统

📅  最后修改于: 2021-09-08 15:44:44             🧑  作者: Mango

分布式数据库基本上是一种不限于一个系统的数据库,它分布在不同的站点上,即在多台计算机或计算机网络上。分布式数据库系统位于不共享物理组件的各个站点上。当一个特定的数据库需要被全球的不同用户访问时,这可能是必需的。需要对其进行管理,以便对用户来说它看起来像一个单一的数据库。

类型:

1.同构数据库:
在同构数据库中,所有不同的站点都以相同的方式存储数据库。操作系统、数据库管理系统和使用的数据结构——在所有站点都是相同的。因此,它们易于管理。

2.异构数据库:
在异构分布式数据库中,不同的站点可以使用不同的架构和软件,这可能会导致查询处理和事务出现问题。此外,特定站点可能完全不知道其他站点。不同的计算机可能使用不同的操作系统、不同的数据库应用程序。他们甚至可能对数据库使用不同的数据模型。因此,不同的站点需要进行翻译才能进行通信。

分布式数据存储:
有两种方法可以将数据存储在不同的站点上。这些都是:

1. 复制——
在这种方法中,整个关系在 2 个或更多站点上冗余存储。如果整个数据库在所有站点都可用,则它是一个完全冗余的数据库。因此,在复制中,系统维护数据的副本。

这是有利的,因为它增加了不同站点的数据可用性。此外,现在可以并行处理查询请求。
但是,它也有某些缺点。数据需要不断更新。在一个站点上所做的任何更改都需要在存储关系的每个站点上进行记录,否则可能会导致不一致。这是很多开销。此外,并发控制变得更加复杂,因为现在需要检查多个站点的并发访问。

2. 碎片化——
在这种方法中,关系是碎片化的(即,它们被分成更小的部分),并且每个片段都存储在需要它们的不同站点中。必须确保这些片段可以用来重建原始关系(即,没有任何数据丢失)。
分片是有利的,因为它不会创建数据副本,一致性不是问题。

关系的碎片化可以通过两种方式完成:

  • 水平碎片 – 按行拆分 –
    该关系被分成多组元组,以便每个元组被分配给至少一个片段。
  • 垂直碎片化 – 按列拆分 –
    关系的模式被分成更小的模式。每个片段必须包含一个共同的候选键,以确保无损连接。

在某些情况下,会使用碎片化和复制混合的方法。

参考 :
Silberschatz、Korth 和 Sudarshan 的数据库系统概念