OB有问必答 | 分区是什么?在OceanBase中起到了什么作用?-阿里云开发者社区

开发者社区> OB数据库> 正文

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 副本,都能提供读写服务。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
OceanBase创始人阳振坤:什么是面向未来的数据库?
OceanBase 接下来做的最重要事情不仅是关系数据库的功能,要做的是把商业智能的能力做进来,能够向客户提供所需要的交易处理和商业智能分析。
878 0
OB有问必答 | 分区是什么?在OceanBase中起到了什么作用?
分区是一种水平拆分方案,是数据同步的最小单元,是高可用的最小单元,是高可用的最小单元。
246 0
OB有问必答 | OceanBase的一致性协议为什么选择 Paxos 而不是 Raft?
“OB有问必答”是OceanBase最新上线的互动类栏目,每周围绕一个关于分布式数据库的议题为大家详细展开解答,如果你有任何感兴趣的问题,欢迎留言,我们会每周选取一个问题为大家详细解答。
893 0
OB有问必答 | LSM Tree的技术原理是什么?OceanBase的存储引擎为什么基于LSM Tree?
相对于传统的page based数据库存储方式,OceanBase使用了现在非常流行的LSM Tree作为存储引擎保存数据的基本数据结构,这在分布式的通用关系型数据库当中是很少见的。今天我们就来为大家详细解读下LSM Tree的技术原理。
723 0
bash 常用操作
删除不为空的文件夹 rm -rf dir_name
521 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3956 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
10713 0
+关注
137
文章
1
问答
来源圈子
更多
蚂蚁OceanBase数据库团队,用于OceanBase技术原理、运维经验和案例分享、对外交流。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载