分布式数据库架构:它是什么?

导航至

本文由 Alexander Fridman 撰写,最初发表在 The New Stack,在此经授权转载。向下滚动以查看作者的简介。

探讨不同类型、其优缺点以及如何设计一个架构。

distributed-database-architecture

数据库为所有现代应用程序提供动力。它们既支持您的 Angry Birds 移动游戏,也支持航天飞机。最初,数据库托管在单个物理机器上。基本上,它是一台仅运行一个程序:数据库的计算机。然后我们转向在虚拟机上运行数据库,其中资源在多个操作系统和应用程序之间共享。

近年来,我们转向在云中运行数据库。我们不再使用单个数据库实例来存储数据。现代数据库系统分布在多台计算机或节点上,它们协同工作以存储、管理和访问数据。

本篇文章将介绍分布式数据库架构。我们将涵盖什么是 分布式数据库、存在哪些类型、它们的优缺点以及如何设计一个。

什么是分布式数据库?

如上所述,分布式数据库是一种由多个节点协同工作的数据库设计。节点基本上是一个运行数据库的计算实例(它也可以是虚拟机或容器)。分布式数据库中的每个节点都有自己的数据库副本,并且这些节点通过相互通信来确保它们拥有相同的信息。

分布式数据库相对于传统的单服务器数据库提供了许多优势,包括提高的可扩展性、可用性、性能和容错能力。

为什么从单节点切换到多节点设置?

在过去,当数据以兆字节计算,数据库用户以数十计时,单个数据库节点可以完成这项工作。这种架构的典型场景是在本地主机机架上托管数据库。开发人员连接到数据库,运行查询,接收输出,然后断开连接。一个系统管理员或数据库管理员负责系统的可用性、性能和升级。

以 Netflix 为例。它拥有现代化的数据库架构。数亿用户使用该应用程序,来自世界各地,使用不同的设备。数百万用户同时使用该系统。它应全天候可用。

在这种场景下,Netflix不可能只依赖于一台运行单个数据库应用程序的计算机。如果它崩溃,数百万用户将遭受服务中断。此外,将所有数据存储在一个地方既不经济也不实用。

想象一下将所有用户数据保存在一个运行在单个服务器上的数据库实例中。随着更多订阅者加入服务,数据库后端应该自动扩展。因此,从可用性、可扩展性和容错性的角度来看,单个本地数据库是不切实际的。

分布式数据库架构的优点

如上所述,分布式数据库相对于传统的单服务器数据库具有许多优点,包括提高了可扩展性、可用性、性能和容错性。

可扩展性

与只能水平扩展的单个数据库相比,分布式数据库可以垂直扩展。换句话说,如果你有一个单个数据库,唯一扩展以处理更多负载的方法是添加内存和RAM。而分布式数据库,你可以添加额外的节点。

可用性和容错性

如果你只有一个数据库,并且数据库崩溃,应用程序也会随之崩溃。但有了分布式数据库,丢失一个节点不会影响整个应用程序,服务将继续运行。

数据安全

你可以将数据分散在多个节点上。因此,如果一个节点遭到入侵,应用程序的大部分数据仍然会保持安全。对于数据损坏也是如此。如果节点数据因服务器或软件错误而损坏,它不会影响其他节点。

减少网络流量

分布式数据库可以通过将数据存储在接近使用的地方来减少网络流量,从而减少通过网络传输数据的需求。

分布式数据库的缺点

设计和实现单个数据库实例比设计和实现分布式数据库架构要简单得多。同样也适用于监控、故障排除、维护和升级。分布式数据库需要周密的规划、合适的数据库供应商、合适的架构等等。

除了增加复杂性外,成本也会更高,因为它通常需要更多的硬件、软件和熟练的人员。最后,还有一致性和协调问题。确保分布式数据库中所有节点的一致性可能具有挑战性,尤其是在高并发或大量数据的系统中。

分布式数据库架构的类型

有几种类型的分布式数据库架构。每种都有自己的优点和缺点,架构的选择取决于应用程序的具体需求。

主从复制

在主从架构中,有一个主数据库负责管理所有写操作,而一个或多个从数据库复制主数据库的数据以进行读操作。因此,所有插入操作都发送到一个节点,而读操作则在各个节点之间分配。这种配置非常适合读密集型应用程序。

多主复制

在多主复制中,所有节点都提供读取和写入功能,既是主节点也是从节点。

无共享架构

在无共享架构中,数据是共享的,每个节点只负责部分数据。数据本质上是在节点之间分割的,每个节点负责读写。

在联邦数据库架构中,有多个独立的数据库(甚至有几种数据库类型)组织成一个元数据库。

联邦数据库架构

在联邦数据库架构中,有多个独立的数据库(甚至有几种数据库类型)组织成一个元数据库。基本上,这里是一个可以查询的统一虚拟数据库。查询由虚拟数据库管理器内部分发。

分布式数据库的示例

有许多示例和供应商提供的工作数据库解决方案,您可以将它们作为分布式架构部署。以下是最受欢迎的:

  1. MongoDB,一个流行的NoSQL文档数据库,您可以在多个服务器上分布式部署。它使用集合而不是表,使用文档而不是行来存储数据。
  2. Apache Cassandra,一个高度可扩展的分布式数据库系统,设计用于跨多个数据中心管理大量结构化和非结构化数据。
  3. Amazon DynamoDB,一个完全管理的NoSQL数据库服务。

distributed-databases

选择和设计您的分布式数据库架构

当您需要为您的组织或应用程序选择哪种数据库架构时,有一些事情需要考虑。这里没有正确或错误答案。每种架构都有其用例,因此您应该选择最适合您的架构。考虑(其他因素)数据分区、复制和一致性。更详细地说,以下是一些您应该采取的步骤:

  1. 确定需要在分布式数据库中存储和访问的数据。这将有助于确定存储量、模式设计等。
  2. 确定您的数据分区策略。决定在多个节点之间分区的策略。
  3. 选择您的复制策略。您可以选择主从、多主或其他方案。
  4. 确定一致性模型。选择您是否需要在节点之间保持数据一致性,最终一致性或强一致性。

这当然不是详尽的列表。您还需要聘请一位经验丰富的架构师。

结论

就像任何其他技术一样,分布式数据库有其优点和缺点。然而,对于现代用例,其优点超过了缺点。有几种类型的分布式数据库架构,您应在仔细考虑后选择最适合您需求的那一种。

关于作者

本文由Alexander Fridman撰写。 Alexander 是软件行业的资深人士,拥有超过11年的经验。他一路走来,从高级软件开发人员、团队领导、软件架构师到CTO。Alexander在前端开发和DevOps方面有经验,但他在后端开发方面专长。