数据库水平分区
“分区是将逻辑数据库或其组成元素划分为不同的独立部分。数据库分区通常是出于可管理性、性能或可用性的原因,例如用于负载均衡。”
水平分区,也称为分片,是实现分布式数据库系统的一种方法。由于在线服务提供商、软件即服务(SaaS)公司、社交网络网站、资本市场应用等服务的业务应用数据库的交易量和规模的大幅增长,在过去几年中,数据库分片的概念越来越受欢迎。
分片可以简单地定义为将数据库“无共享”地水平分区为多个较小的数据库实例,这些实例共同构成一个逻辑数据库。推动分片需求的原因是,随着数据库的大小和事务量呈线性增长,响应时间往往呈对数增长。由于在每个分片上执行并行操作,分布式查询能够实现更快的处理。下面的图表说明了 xSQL 和分布式 SQL 客户端应用程序可能如何实现分片。

众所周知,数据库性能会随着数据库大小的增加而下降。这在很大程度上是由于诸如 B 树等索引结构的规模(深度)不断增大。当数据库存在于旋转磁盘上时,机械因素会使问题加剧(当数据库占用更多磁盘空间时,等待磁盘盘片旋转或磁盘磁头移动到正确磁道的“旋转等待时间”更长)。将一个逻辑数据库例如划分为五个物理数据库,意味着如果它作为单个物理数据库存在,每个物理数据库的大小仅为相同逻辑数据库的 20%。因此,索引结构更浅,旋转磁盘几何形状的影响(如果有的话)也得到了缓解。此外,不再是由单个数据库服务器为单个物理数据库提供查询执行,我们可以允许(例如,再次)五个服务器进程来提供查询执行。这被称为分布式查询处理,对于数据库客户端应用程序是透明的。客户端应用程序只需打开逻辑数据库,数据库配置(在 JSON 文档中描述)确定数据库的物理构成(即逻辑和物理是否意味着相同的东西,或者逻辑数据库是由 2、5 还是 100 个物理分区等组成)。一旦连接,客户端应用程序以正常方式开始/提交/中止其事务和查询。如果数据库进行了物理分区,SmartESQL 查询引擎会代表客户端应用程序负责分发查询,并收集(附加)每个分区的结果集,以向客户端应用程序呈现单个(逻辑)视图。
高可用性的分片
分片和 SmartEDB高可用性可以结合使用。在这种配置中,单个逻辑数据库被水平分区为两个或更多物理数据库实例。每个分片(物理数据库实例)都有一个主服务器进程和一个副本服务器进程,如果原始主服务器意外终止,副本可以提升为主服务器。通过这种方式,我们可以保留单个逻辑数据库的可用性,如果处理分片的任何服务器出现故障,否则这是不可能实现的。(请参考 SmartESQL 用户指南以获取更多详细信息。)
下面的图表说明了两个数据库分片如何在使用分布式 SQL 引擎的客户端应用程序访问时使用 SmartEDB高可用性。
