以下是本次直播中收集的问题,欢迎大家踊跃发言和学习~
hnwyllmm问:OB开源后,目前数据库内核主要研究方向是什么?
竹翁答:数据库内核一直在持续演进,包括HTAP混合负载支持,提升事务处理性能等很多方向。
王宇问:OceanBase 创造了7.07亿 tpmC 在线事务处理性能的TPC-C 世界纪录,那OceanBase能否在关键核心领域替代Oracle?主要有哪几个方面的原因?
obpilot答:OB除了把支付宝的核心的oracle替换掉了外,在外部传统领域,已经在保险(中国人寿)核心、运营商核心(山东移动、福建移动)开始逐步替换核心ORACLE。 银行核心也在替换过程中了,主要是替换 DB2 、ORACLE。
Zaki问:OB集群是怎么解决各个读写节点间内存的数据一致性?故障转移会做事务补偿吗?应用需要回滚当前事务重新建立连接么?
obpilot答:OB数据有三副本,读写默认针对的是主副本。主副本事务提交时,事务日志会在多数派副本里落盘成功后事务才算提交成功。主副本故障的时候,会选举新的主副本(这个新主拥有老主全部的事务日志),新主应用完所有事务日志后数据自然就跟老主故障前保持一致(未提交事务会回滚)。
Menkar问:OB为什么没有选择逻辑时钟?时间戳服务在实际中如何满足业务需求?
obpilot答:因为不需要。OB 有 GTS 。GTS不是逻辑时钟。GTS是一种集中式的时间戳服务。GTS本身实现了高可用,所以在可用性方面影响不大。性能方面,事务层做了各种优化,实测使用GTS还是local ts对业务性能几乎没有影响。
jieyancai问:zone_1,zone_2,zone_3如果同时坏了两个zone,这个集群是否还可用?业务就彻底瘫了吧?
obpilot答:paxos协议是这样的,多数派故障的时候集群为了保证数据一致性就不可用了。这个时候加上 OB 集群主备方案来弥补。
psufnxk问: OB关于ACID中的I使用的是什么级别?如何实现的?
obpilot答:OB 支持的事务隔离级别跟oracle是一致的。即使是mysql租户,ob也选择了oracle的隔离级别:rc 和 serializable 。
psufnxk问:读操作是读的Leader节点数据库吗?如果是的话,为什么不读非Leader节点的数据?如果不是的话,如何实现的?
obpilot答:OB里读默认是强一致性读,读主副本,强一致指写后读数据是正确的。OB数据有2个备副本,通过设置弱一致性读,也是可以读取备副本,可能数据不是最新的。这就是常用的读写分离方案。不过OB 还有只读副本可以用于专门的读写分离。
陈宇明问:请问一下 OB主备 与 Oracle的主备有什么区别:
obpilot答:OB 的主备是对OB 两地三中心和三地五中心方案的补充。OB 主备的架构目标跟ORACLE 主备 基本一致(都支持最大保护、最大可用、最大性能)。
jieyancai问:oracle 远程 rac的架构 rpo不就做到0了吗?
竹翁答:做不到的。如果是最大保护,RPO可以做到0,但是此时每次事务提交都必须写入备库,那么备库如果发生了故障,主库就无法做事务提交,牺牲了可用性。