ScholarGate
助手

数据分区与复制

数据分区将数据库分散到多个节点以实现可伸缩性,而数据复制则在多个节点上保留数据副本以提高可用性和读取性能;它们共同决定了分布式数据库如何扩展和容忍故障。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

分区(fragmentation 或 sharding)将关系的行或列分散到多个节点上,使每个节点持有一部分数据;复制则在多个节点上存储相同数据的副本;放置和复制策略共同决定了可伸缩性、可用性和负载均衡。

Scope

本主题涵盖数据如何在节点间放置:按范围、哈希或列表进行的水平分区(分片)以及按列进行的垂直分区;分区策略,包括一致性哈希;以及复制模型——同步与异步、主备与多主——以及它们所隐含的一致性与可用性权衡。它探讨了分区如何实现并行性以及复制如何实现容错性。它不包括保持副本一致的提交和共识协议,这些是相邻主题。

Core questions

  • 范围、哈希和列表分区如何将行分布到不同节点?
  • 垂直分区何时优于水平分区?
  • 当节点增加或移除时,一致性哈希如何限制数据移动?
  • 同步复制和异步复制之间有哪些权衡?
  • 主备复制和多主复制在一致性和可用性方面有何不同?

Key concepts

  • 水平分区(分片)
  • 垂直分区
  • 范围、哈希和列表分区
  • 一致性哈希
  • 同步与异步复制
  • 主备复制
  • 多主复制
  • 分区键和负载均衡

Key theories

水平和垂直分区
水平分区(分片)通过分区键将表的行分布到不同节点,以分散负载并实现并行处理,而垂直分区则按列拆分表;分区函数对负载均衡和查询局部性有关键影响。
一致性哈希
一致性哈希将键和节点映射到一个环上,这样添加或移除节点只会移动一小部分有界限的键,使其成为弹性分布式数据存储中分区的基本技术。
复制模型和权衡
同步复制以延迟和分区下的可用性为代价保持副本一致,而异步复制速度更快但可能提供过时数据;主备复制集中写入,而多主复制允许在任何地方写入,但需要解决冲突。

Clinical relevance

分区和复制是使数据系统实现扩展和保持可用的杠杆:分片使得单个逻辑数据库能够处理单台机器无法处理的工作负载,而复制则使服务在故障和跨区域时保持运行和快速,这些技术对于每个大型数据平台都至关重要。

History

碎片化和复制在20世纪70年代末和80年代早期的分布式数据库系统中得到了研究。Karger及其同事于1997年为网络缓存引入的一致性哈希,后来被可伸缩的键值存储采纳为分区方案,大型互联网服务则推广了激进的分片和复制以实现弹性和可用性。

Key figures

  • M. Tamer Özsu
  • Patrick Valduriez
  • David Karger

Related topics

Seminal works

  • ozsu2011
  • karger1997

Frequently asked questions

分区和复制有什么区别?
分区将数据分割,使每个节点持有不同的子集,从而分散存储和负载以实现可伸缩性。复制则在多个节点上保留相同数据的副本,以提高可用性和加快读取速度。大多数大型系统会同时进行这两种操作:数据在节点间分片,并且每个分片都会被复制多次。
为什么使用一致性哈希而不是普通的哈希分区?
使用普通的基于模数的哈希分区时,改变节点数量会重新映射几乎所有键,导致大量数据移动。一致性哈希将键和节点排列在一个环上,这样添加或移除节点只会重新分配靠近该节点的键,从而在集群增长或缩小时保持再平衡的成本较低。

Methods for this concept

Related concepts