分片并不意味着分布式

未知
2024-03-16 11:27:19
0

分片是一种在多个独立数据库实例之间分配数据和负载的技术。此方法通过将原始数据集拆分为分片,然后将其分布在多个数据库实例中来利用水平可扩展性。

分片并不意味着分布式

但是,即使分片的定义中出现了动词“分布”,分片数据库也不是分布式数据库。

分片解决方案

每一种分片解决方案的架构中都有一个关键组件。该组件可以有各种名称,包括协调器、路由器或导向器:

分片并不意味着分布式

协调器是唯一了解数据分布的组件。它将客户端请求映射到特定的分片,然后映射到相应的数据库实例。这就是为什么客户端必须始终通过协调器路由其请求。

例如,如果客户端想要向Car表中插入一条新记录,则请求首先发送到协调器。协调器将记录的主键映射到其中一个分片,然后将请求转发到负责该分片的数据库实例。

分片并不意味着分布式

在上面的架构中,首先,协调器将键 121 映射到分片 10,其次,将记录插入到存储在拥有分片 10 的数据库实例上的表 car_10 中

然而,仍然存在一个问题:为什么分片解决方案中甚至需要协调器?答案很简单。分片存储在专为单服务器部署而设计的数据库实例上。

这些数据库实例不相互通信,也不支持任何促进此类通信的协议。他们彼此不知情,存在于自己孤立的环境中,没有意识到自己是一个更大系统的一部分。

因此,协调器在分片解决方案中是不可或缺的。如果您有兴趣深入研究分片数据库架构,请考虑探索 CitusData 或 Azure CosmosDB for PostgreSQL、Vitess for MySQL、Oracle 分布式自治数据库和 MongoDB 分片集群。

分布式数据库

与分片数据库解决方案非常相似,分布式数据库也采用类似的分片技术来跨数据库节点集群分发数据和加载。然而,与分片解决方案不同,分布式数据库不依赖于协调器组件。

分布式数据库建立在无共享架构之上,该架构没有像协调器这样的单一组件,需要做出大量决策:

分片并不意味着分布式

集群中的所有节点都了解彼此,从而了解数据分布。通过直接通信,每个节点都可以将客户端请求路由到适当的分片所有者。此外,它们还可以执行和协调多节点交易。当扩展到更多节点时,集群会自动重新平衡并拆分分片。节点维护数据的冗余副本(基于配置的复制因子),并且即使某些节点出现故障,也可以在不停机的情况下继续操作。

所有这些对客户端来说都是透明的,客户端只需与任何节点建立连接并允许该节点管理分布式方面。

例如,客户端可能会连接到 node1 并插入 ID 为 121 的新 Car 记录。如果 node1 是记录分片的所有者,则它将在本地存储记录,并采用共识算法将更改复制到其他节点的子集。如果没有,node1 会将记录转发给分片的所有者,该所有者可能是 node4。

分片并不意味着分布式

如果您有兴趣探索真正的分布式数据库的架构,请考虑研究 Google Spanner、YugabyteDB、CockroachDB、Apache Cassandra 或 Apache Ignite。

在数据库领域,分片和分布经常被混为一谈,但它们有不同的目的。

虽然分片涉及将数据拆分到多个独立实例中,但这并不意味着系统本质上是分布式的。分片解决方案中协调器的存在,将客户端请求引导到适当的分片,强调了这种区别。

另一方面,建立在无共享架构之上的分布式数据库缺乏这种集中的协调器。这些系统中的节点相互了解、管理数据分发并无缝处理客户端请求。

两种架构都有其优点,了解它们的细微差别对于明智的数据库设计和选择至关重要。

以上就是分片并不意味着分布式的详细内容,更多请关注全栈开发网其它相关文章!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 service@p2hp.com 进行投诉反馈,一经查实,立即处理!
-- -- 0

上一篇:如何为分布式系统设计数据库

下一篇:没有了

相关内容

MySQL主从复制最全详解
MySQL主从复制最全详解
半同步复制,就是主节点执行写操作后,等待至少一个从节点确认收到数据后再返回给客户端,这就是...
2024-03-21 10:32:17
互联网大厂是如何设计和使用缓存的?方案已开源!
互联网大厂是如何设计和使用缓存的?方案已开源!
以秒杀系统为例,采用本地缓存+分布式缓存的混合型缓存方案时,如果整个秒杀系统前置的流量管控...
2024-03-18 10:18:59
MySQL安全最佳实践指南(2024版)
MySQL安全最佳实践指南(2024版)
由于存储着敏感数据,MySQL数据库正沦为网络罪犯的攻击目标。这份全面的安全指南将深入研究...
2024-03-17 11:28:09
没用过微服务?别慌,丐版架构图,让你轻松拿捏面试官
没用过微服务?别慌,丐版架构图,让你轻松拿捏面试官
很多人都说现在是云原生、大模型的时代,微服务已经过时了,但现实的是,很多人开发多年,都没有...
2024-03-16 14:41:57
Instagram 仅 3 名工程师,如何做到 1400 万用户?
Instagram 仅 3 名工程师,如何做到 1400 万...
Instagram发布的19个月,后活跃用户数量超过5000万,活跃用户数量达到1亿,20...
2024-03-15 11:28:22
如何为分布式系统设计数据库 针对微服务和云原生解决方案的数据管理已经出现了几种模式,为此需要了解在分布式环境中管理数据的重要模式...
分片并不意味着分布式 分片是一种在多个独立数据库实例之间分配数据和负载的技术。此方法通过将原始数据集拆分为分片,然后将其分...

最新文章

分片并不意味着分布式 分片是一种在多个独立数据库实例之间分配数据和负载的技术。此方法通过将原始数据集拆分为分片,然后将其分...
如何为分布式系统设计数据库 针对微服务和云原生解决方案的数据管理已经出现了几种模式,为此需要了解在分布式环境中管理数据的重要模式...