OB有问必答 | 分区是什么?在OceanBase中起到了什么作用?

简介: 分区是一种水平拆分方案,是数据同步的最小单元,是高可用的最小单元,是高可用的最小单元。

虽然“分区”的概念不是很新,但是 ”分区”对理解 OceanBase 的很多原理却是非常重要的。

分区是一种水平拆分方案
从水平拆分设计上说,目前分布式数据库产品里有三种拆分途径。一是以 Spanner、为代表的在存储层按定长块切片的,称为Region,拆分细节对业务完全透明。二是以 ORACLE、OceanBase 为代表的使用分区表的多分区拆分,业务需要指定拆分策略和分片数,使用上基本上跟单表一样。三是以DRDS等为代表的分布式数据库中间件的分库分表拆分,业务使用的是一个逻辑表,实际数据存放在多个结构相同命名或位置不同的物理表上。

OceanBase 里一个非分区表只有一个分区,一个分区表有多个分区。分区就是表的子集OceanBase 里单个分区只能在一个节点上,不同分区可以在不同节点上。

分区的好处有:
1.提高可扩展性。分区表的不同分区可以分布在不同的机器上,使得单表能获得多机的处理能力,并且使得单表的容量可以超过单机的容量。性能也是同理。

2.提高可管理性。对于数据操作的粒度可以控制在单个分区。例如按照时间分区的数据,可以通过 drop 一个分区来实现数据过期功能。

3.提高性能。通过分区裁剪,可以快速定位到用户需要查询的分区,提高查询性能。

分区是数据同步的最小单元
在 OceanBase 里,每个数据有三份,每个具体的分区也有三份,分布在不同的 Zone 里的不同节点上。每个分区有三份副本,副本内容相同,角色上有区分,是1个 leader 副本和2个 follower 副本。有时候会简单说1个主副本2个备副本。但是主备的概念容易引起误解。

默认业务只有 leader 副本提供读写服务,follower 副本只同步数据,不提供服务。特殊场景下,业务 SQL 使用弱一致性读 Hint (即 read_consistency(weak))可以就近读取follower 副本。数据的变更在 leader副本,事务提交的时候,leader 副本会就Redo 落盘发起表决,使用 Paxos 协议。具体就是除了自己把 Redo 落盘,同时还发往两个 follower 副本,follower 副本收到 redo 落盘后表决“成功”。同时 Follower副本开始应用该 Redo。三副本里只要有一半以上成员(2个副本)表决落盘成功,leader 副本上的业务的事务就提交成功返回消息给客户端。

每个分区的三副本组成一个独立的 Paxos 小组,相应的 Redo 在副本之间传输。所以说分区是数据同步的最小单元。并且这种 Redo同步是自动的,不需要也不能干预的。

分区是高可用的最小单元
每个分区的三副本会保持数据同步,目的是为了保证在 Leader 副本不可用的时候选举出新的 Leader 副本拥有全部的数据。Paxos协议保证了 Redo 会在至少一个 Follower 副本里有(最终会所有Follower副本都有)。三副本会跟 OceanBase 集群的 rootservice 服务维持心跳,当 Leader 副本不可用时,经过2个租约时间后 rootservice 会选举出新的Leader 出来,在应用完 Redo 后新 Leader提供读写服务。

分区的选举是自动的,只要多数派存活,就不需要人工介入。所以说“分区”是高可用的最小单元。OceanBase 的“切换”指的就是一个个 Leader 分区重新选举的过程,并不是实例级别的“切换”。当一个机器节点挂掉后, 严格的说,其影响只是局部的数据(Leader 副本)的读写访问短暂中断)。在OceanBase 里,一般不会说某台机器是主,某台机器是备,因为理论上所有的机器都可能存在 Leader 副本,都能提供读写服务。

相关文章
|
5天前
|
存储 关系型数据库 数据处理
OceanBase数据库常见问题之start ob出错如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
5天前
|
存储 SQL Apache
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
|
5天前
|
SQL 存储 测试技术
删除日志文件可能会影响OceanBase数据库的正常运作
删除日志文件可能会影响OceanBase数据库的正常运作
51 3
|
存储 算法 NoSQL
高并发分布式环境中获取全局唯一ID[分布式数据库全局唯一主键生成]
高并发分布式环境中获取全局唯一ID; 分布式数据库全局唯一主键生成
2948 0
|
存储 监控 Java
【ClickHouse 技术系列】- 使用新的 TTL move,将数据存储在合适的地方
本文翻译自 Altinity 针对 ClickHouse 的系列技术文章。面向联机分析处理(OLAP)的开源分析引擎 ClickHouse,因其优良的查询性能,PB级的数据规模,简单的架构,被国内外公司广泛采用。本系列技术文章,将详细展开介绍 ClickHouse。
【ClickHouse 技术系列】- 使用新的 TTL move,将数据存储在合适的地方
|
存储 SQL 容灾
深入剖析数据库内核之事务的本质 | 附下一代分布式数据库 OceanBase 解决方案
在近日 OceanBase 开源技术直播上,OceanBase 分布式数据库事务研发负责人颜然以数据库事务的本质为主题,深入分享了事务的前世今生一季 OceanBase 在分布式事务上的解决方案。本文将从以下三方面进行阐述数据库事务:一、事务的前世,二、事务的挑战,三、分布式事务
深入剖析数据库内核之事务的本质 | 附下一代分布式数据库 OceanBase 解决方案
|
存储 SQL 缓存
|
存储 SQL Oracle
OB有问必答 | 分区是什么?在OceanBase中起到了什么作用?
分区是一种水平拆分方案,是数据同步的最小单元,是高可用的最小单元,是高可用的最小单元。
|
Oracle 关系型数据库 数据库
OB有问必答 | OceanBase 如何做到 RTO < 30秒?
“OB有问必答”是OceanBase最新上线的互动类栏目,每周围绕一个关于分布式数据库的议题为大家详细展开解答,今天我们围绕服务可用性话题讨论,如果你有任何感兴趣的问题,欢迎留言,我们会每周选取一个问题为大家详细解答。
|
存储 运维 分布式数据库
OB有问必答 | OceanBase如何保证数据可靠性?
“OB有问必答”是OceanBase最新上线的互动类栏目,每周围绕一个关于分布式数据库的议题为大家详细展开解答,今天我们围绕数据可靠性话题讨论,如果你有任何感兴趣的问题,欢迎留言,我们会每周选取一个问题为大家详细解答