数据库分片是将数据分成更小的称为“分片”的片段的过程分片通常在需要扩展写入时引入。在一个成功的应用程序的生命周期中,数据库服务器将达到它在处理或容量级别上可以执行的最大写入次数。将数据分割成多个碎片——每个碎片位于自己的数据库服务器上——减少了每个节点的压力,有效地增加了整个数据库的写入容量。这就是数据库分片。
分布式SQL是一种扩展关系数据库的新方法,它采用一种完全自动化的、对应用程序透明的类似分片的策略。分布式SQL数据库是从头开始设计的,几乎可以线性扩展。在本文中,您将学习分布式SQL的基础知识以及如何入门。
数据库分片的缺点
分片带来了许多挑战:
数据分区: 决定如何在多个碎片之间划分数据可能是一个挑战,因为它需要在数据邻近性和数据均匀分布之间找到平衡,以避免热点。
故障处理: 如果一个关键节点出现故障,并且没有足够的碎片来承载负载,那么如何在不停机的情况下将数据放在一个新节点上呢?
查询复杂性: 应用程序代码耦合到数据分片逻辑,需要来自多个节点的数据的查询需要重新连接。
数据一致性: 确保跨多个碎片的数据一致性是一项挑战,因为这需要协调跨碎片的数据更新。当同时进行更新时,这可能特别困难,因为可能需要解决不同写入之间的冲突。
弹性可扩展性: 随着数据量或查询数量的增加,可能有必要向数据库添加额外的碎片。这可能是一个复杂的过程,不可避免地会出现停机,需要手动过程跨所有碎片均匀地重新定位数据。
通过采用多语言持久性(针对不同的工作负载使用不同的数据库)、数据库具有本机分片功能的存储引擎,或者数据库代理。然而,虽然这些工具有助于解决数据库分片中的一些挑战,但它们也有局限性,并且会带来需要持续管理的复杂性。
什么是分布式SQL?
分布式SQL指的是新一代的关系数据库。简单地说,分布式SQL数据库是一种关系数据库,具有透明分片对于应用程序来说,这看起来像是一个单一的逻辑数据库。分布式SQL数据库被实现为无共享架构以及一个在保持真实性的同时扩展读取和写入的存储引擎酸合规性和高可用性。分布式SQL数据库具有以下可伸缩性特征NoSQL数据库这在21世纪初开始流行,但不要牺牲一致性。它们保留了关系数据库的优势,并通过多区域弹性增加了云兼容性。
分布式SQL是如何工作的?
为了理解分布式SQL是如何工作的,让我们以开源软件兼容的分布式SQL数据库MariaDB数据库。工作原理是在节点之间分割数据和索引,并自动执行数据重新平衡和分布式查询执行等任务。查询是并行执行的,以尽量减少延迟。数据会自动复制,以确保没有单点故障。当一个节点出现故障时,会在幸存的节点之间重新平衡数据。添加新节点时也会发生同样的情况。一个名为再平衡器确保没有热点,这是手动数据库分片面临的一个挑战,当一个节点与其他有时可能保持空闲的节点相比,不均衡地必须处理太多事务时,就会出现热点。
何时不使用分布式SQL
对数据库进行分片可以提高性能,但也会在节点间的通信级别引入额外的开销。如果数据库配置不正确或者查询路由器没有优化,这可能会导致性能下降。在每秒10K查询数或每秒5K事务数不到的应用程序中,分布式SQL可能不是最佳选择。此外,如果您的数据库主要由许多小表组成,那么整体数据库的性能可能会更好。
分布式SQL入门
由于分布式SQL数据库对于应用程序来说就像是一个逻辑数据库,因此入门非常简单。您所需要的是以下内容:
像这样的SQL客户端DBeaver, DbGate, DataGrip或任何适用于您的IDE的SQL客户端扩展
SQL数据库
码头工人让第二部分变得简单。