个人房产查询系统网站官网,广州三大坑公司,网站对比app还有优势吗,12380举报网站制度建设各种规模的企业都在拥抱面向用户的应用程序的快速现代化#xff0c;作为其更广泛的数字化转型战略的一部分。此类应用程序所依赖的关系数据库 (RDBMS) 基础设施突然需要支持更大的数据量和事务量。然而#xff0c;在这种情况下#xff0c;单体 RDBMS 往往很快就会过载。在 R…各种规模的企业都在拥抱面向用户的应用程序的快速现代化作为其更广泛的数字化转型战略的一部分。此类应用程序所依赖的关系数据库 (RDBMS) 基础设施突然需要支持更大的数据量和事务量。然而在这种情况下单体 RDBMS 往往很快就会过载。在 RDBMS 中获得更高性能和可扩展性的最常见架构之一是“分片”数据。在本博客中我们将了解什么是分片以及如何使用它来扩展数据库。我们还将回顾常见分片架构的优缺点并探讨如何在YugaByte DB 等基于 SQL 的分布式 RDBMS 中实现分片。
什么是数据分片 分片是将大表分解成更小的块称为分片的过程这些块分布在多个服务器上。分片本质上是一个水平数据分区包含总数据集的子集因此负责服务整体工作负载的一部分。这个想法是将无法容纳在单个节点上的数据分布到数据库节点集群上。分片也称为水平分区。水平和垂直之间的区别来自于数据库的传统表格视图。数据库可以垂直拆分将不同的表列存储在单独的数据库中也可以水平拆分将同一表的行存储在多个数据库节点中。
图 1垂直和水平数据分区来源Medium
为什么要对数据库进行分片 依赖整体 RDBMS 的业务应用程序随着增长而遇到瓶颈。由于CPU、存储容量和内存有限数据库性能必然受到影响。未分片数据库的查询性能和日常维护变得极其缓慢。当涉及到添加资源来支持数据库操作时垂直扩展也称为向上扩展有其自身的限制并最终达到收益递减的点。
另一方面水平分区表意味着有更多的计算能力来服务传入的查询因此您最终可以获得更快的查询响应时间和索引构建。通过不断平衡额外节点上的负载和数据集分片还可以轻松扩展以容纳更多容量。此外从长远来看由更小、更便宜的服务器组成的网络可能比维护一台大型服务器更具成本效益。
除了解决扩展挑战之外分片还可以减轻意外中断的影响。在停机期间未分片数据库中的所有数据都无法访问这可能会造成破坏或彻底灾难性的。如果做得正确分片可以提供高可用性即使托管几个分片的一两个节点出现故障只要其他节点托管剩余分片运行数据库的其余部分仍然可用于读/写操作。不同的故障域。总体而言分片可以增加集群总存储容量加快处理速度并以比垂直扩展更低的成本提供更高的可用性。
手动分片的危险 分片包括第一天的创建和第二天的重新平衡如果完全自动化可以为大容量数据应用程序带来福音。不幸的是Oracle、PostgreSQL、MySQL 等单体数据库甚至 Amazon Aurora 等较新的分布式 SQL 数据库都不支持自动分片。这意味着如果您想继续使用这些数据库则需要在应用程序层进行手动分片。最终结果是开发复杂性大幅增加。您的应用程序必须具有额外的分片逻辑才能准确了解数据的分布方式以及如何获取数据。您还必须决定采用哪种分片方法、创建多少分片以及使用多少节点。如果您的业务需求发生变化还要考虑分片键甚至分片方法的变化。
手动分片最重大的挑战之一是分片分配不均匀。数据不成比例的分布可能会导致分片变得不平衡一些分片过载而另一些则相对空。最好避免在分片上积累过多数据因为热点可能会导致速度减慢和服务器崩溃。这个问题也可能是由小分片集引起的这迫使数据分布在太少的分片上。这在开发和测试环境中是可以接受的但在生产中则不行。数据分布不均匀、热点以及在太少的分片上存储数据都会导致分片和服务器资源耗尽。
最后手动分片会使操作流程变得复杂。现在必须对多台服务器执行备份。数据迁移和架构更改必须仔细协调以确保所有分片具有相同的架构副本。如果没有充分的优化跨多个服务器的数据库连接可能效率极低且难以执行。
常见的自动分片架构 分片已经存在很长时间了多年来不同的分片架构和实现已被用于构建大规模系统。在本节中我们将讨论三个最常见的问题。
基于哈希的分片 基于哈希的分片采用分片键的值并从中生成哈希值。然后使用哈希值来确定数据应驻留在哪个分片中。借助ketama等统一哈希算法哈希函数可以将数据均匀分布在服务器之间降低热点风险。通过这种方法具有接近分片键的数据不太可能被放置在同一个分片上。因此这种架构非常适合有针对性的数据操作。
图 2基于哈希的分片来源MongoDB 文档
基于范围的分片 基于范围的分片根据数据值的范围也称为键空间来划分数据。具有附近值的分片键更有可能落入相同的范围并进入相同的分片。每个分片本质上都保留了原始数据库中相同的模式。分片变得就像识别数据的适当范围并将其放置在相应的分片上一样简单。
图 3基于范围的分片示例
基于范围的分片允许高效查询读取连续范围内的目标数据或范围查询。然而基于范围的分片需要用户先验选择分片键而选择不当的分片键可能会导致数据库热点。
一个好的经验法则是选择基数大、重复频率低且不会单调增加或减少的片键。如果没有正确的分片键选择数据可能会在分片之间分布不均匀并且与其他数据相比特定数据可能会被更多地查询从而在分片中产生潜在的系统瓶颈从而导致工作负载较重。
解决分片大小不均匀的理想解决方案是执行自动分片拆分和合并。如果分片变得太大或托管频繁访问的行则将分片分成多个分片然后在所有可用节点上重新平衡它们从而获得更好的性能。同样当小分片过多时可以进行相反的过程。
基于地理的分片 在基于地理也称为位置感知的分片中数据根据用户指定的列进行分区该列将范围分片映射到特定区域以及这些区域中的节点。例如跨美国、英国和欧盟 3 个区域运行的集群可以依赖 User 表的 Country_Code 列将用户的行映射到最近的符合 GDPR 规则的区域。