DBMS 中的分布式数据库系统

17 Mar 2025 | 6 分钟阅读

分布式数据库本质上是一个分散在多个站点(即多台计算机或计算机网络上)的数据库,不限于单个系统。分布式数据库系统分散在具有不同物理组件的多个位置。当世界各地不同的人需要访问某个数据库时,这可能是必要的。它必须以这样一种方式进行处理,即对用户来说,它看起来像一个单一的数据库。

类型

1. 同构数据库:同构数据库在所有位置统一存储数据。所有站点都使用相同的操作系统、数据库管理系统和数据结构。因此,它们易于管理。

2. 异构数据库:在异构分布式数据库中,许多位置可能使用不同的软件和模式,这可能会导致查询和事务问题。此外,一个站点可能甚至不知道其他站点的存在。不同的机器可能使用不同的操作系统和数据库应用程序。它们甚至可能采用不同的数据库数据模型。因此,跨不同站点进行通信需要进行翻译。

数据可以通过两种方式使用分布式数据存储存储在多个位置

  1. 复制 - 采用此策略,连接的每个方面都冗余地保留在两个或多个位置。如果整个数据库可以从每个位置访问,则它是一个完全冗余的数据库。系统由于复制而保留数据副本。这具有优势,因为它使得在许多位置可以访问更多数据。此外,查询请求现在可以并行处理。但是,也有一些缺点。数据必须经常更新。在一个站点执行的所有更改都必须记录在该关系存储的每个站点,以避免结果不一致。这里有大量的开销。此外,由于现在必须跨多个站点监控并发访问,因此并发管理变得更加复杂。
  2. 分片 - 在这种方法中,关系被分解成更小的片段,每个片段都存储在需要的多个位置。为了确保没有数据丢失,片段的创建方式必须允许重建原始关系。由于分片不会导致重复数据,因此一致性不是问题。

关系可以通过两种方式进行分片

  • 通过行将关系分成元组组,从而产生水平分片,其中每个元组都分配给至少一个片段。
  • 垂直分片,也称为按列拆分,当关系的模式被拆分成更小的模式时发生。每个片段中必须存在一个共同的候选键,以确保无损连接

有时会采用结合分片和复制的策略。

分布式数据库的用途

  • 企业管理信息系统使用它。
  • 多媒体应用程序使用它。
  • 用于连锁酒店、军事指挥系统等。
  • 生产控制系统也使用它

分布式数据库的特点

分布式数据库在作为集合的一部分时在逻辑上相互连接,并且它们通常形成一个单一的逻辑数据库。数据物理存储在多个站点,并在分布式数据库中单独处理。每个站点的处理器通过网络相互连接,但它们未设置为多处理。

一个普遍的误解是分布式数据库等同于松散耦合的文件系统。实际上,它要复杂得多。尽管分布式数据库使用事务处理,但它们与使用事务处理的系统不同。

一般来说,分布式数据库具有以下特点

  • 位置无关
  • 分散式查询处理
  • 分布式事务的管理
  • 独立于硬件
  • 操作系统独立于网络
  • 事务透明性
  • DBMS 无关

分布式数据库的架构

存在同构和异构分布式数据库。

同构分布式数据库系统中的所有物理站点都使用相同的操作系统和数据库软件,以及相同的底层硬件。同构分布式数据库系统可能更容易构建和管理,因为它们对用户来说似乎是一个单一系统。每个站点的数据结构必须相同或兼容,分布式数据库系统才被认为是同构的。此外,每个站点使用的数据库程序必须兼容或相同。

异构分布式数据库中每个站点的硬件、操作系统或数据库软件可能不同。尽管不同的站点可能采用不同的技术和模式,但模式的变化可能会使查询和事务处理变得具有挑战性。

不同的节点可能具有不同的硬件、软件和数据结构,或者它们可能位于不兼容的位置。用户可能能够访问存储在不同位置的数据,但无法上传或修改它。由于异构分布式数据库有时难以使用,因此许多组织认为它们在经济上不可行。

分布式数据库的优势

使用分布式数据库有很多好处。

  • 由于分布式数据库提供模块化开发,系统可以通过在新位置放置新计算机和本地数据并将其无缝连接到分布式系统来扩展。
  • 对于集中式数据库,故障会导致系统完全关闭。但是,分布式数据库系统在组件发生故障时会继续以较低的性能运行,直到问题解决。
  • 如果数据接近最常使用它的地方,管理员可以降低分布式数据库系统的传输成本。集中式系统无法适应这一点

分布式数据库的类型

  • 数据实例是在数据库的不同区域使用复制数据创建的。分布式数据库可以通过利用复制数据在本地访问相同的数据,从而减少带宽。只读和可写数据是两种可区分的复制数据类型。
  • 只读版本的复制数据只能更改初始实例;所有后续的企业数据复制都会更新。可写数据可以修改,但只影响初始出现。
    Distributed Database System in DBMS
  • 指向单个数据库记录的主键用于识别水平分片数据。水平分片通常用于当业务位置只想访问其自己的分支机构的数据库时。
  • 使用彼此重复且可供数据库的每个分支访问的主键来组织垂直分片数据。当公司的分支机构和中心位置以不同方式处理相同的帐户时,使用垂直分片数据。
  • 为决策支持数据库编辑或修改的数据称为重组数据。当两个不同的系统管理事务和决策支持时,通常使用重组数据。当有许多请求时,在线事务处理必须重新配置,并且决策支持系统可能难以管理。
  • 为了适应不同的部门和情况,单独的模式数据将数据库和用于访问它的软件分开。通常,许多数据库和单独的模式数据之间存在重叠

分布式数据库示例

  • Apache Ignite、Apache Cassandra、Apache HBase、Couchbase Server、Amazon SimpleDB、Clusterpoint 和 FoundationDB 只是众多可用分布式数据库中的几个示例。
  • Apache Ignite 可以跨节点集群存储和处理大型数据集。GridGain Systems 于 2014 年发布 Ignite 作为开源,后来被批准加入 Apache 孵化器计划。RAM 在 Apache Ignite 中充当数据库的主要处理和存储层。
  • Apache Cassandra 有自己的查询语言 Cassandra Query Language (CQL),它支持跨多个位置的集群。Cassandra 中的复制策略也可以自定义。
  • Apache HBase 提供了一种容错机制,用于在 Hadoop 分布式文件系统之上存储大量的稀疏数据。此外,它还提供每列布隆过滤器、内存执行和压缩。尽管 Apache Phoenix 为 HBase 提供了 SQL 层,但 HBase 并非旨在取代 SQL 数据库。
  • Couchbase Server 是一种 NoSQL 软件包,最适合通过生成、存储、检索、聚合、修改和显示数据来为多个并发用户提供服务的交互式应用程序。Couchbase Server 提供可扩展的键值和 JSON 文档访问,以满足这些不同的应用程序需求。
  • Amazon SimpleDB 与 Amazon S3 和 Amazon Elastic Compute Cloud 一起用作 Web 服务。开发人员可以使用 Amazon SimpleDB 请求和存储数据,而无需最少的数据库维护和管理工作。
  • Clusterpoint 消除了关系数据库设计的复杂性、可伸缩性问题和性能限制。开放 API 用于处理 XLM 或 JSON 格式的数据。Clusterpoint 不存在其他关系数据库系统所经历的可伸缩性或性能困难,因为它是一个无模式文档数据库。