2019年10月9日,某部委人士在公开会议上指出,“OceanBase测试指标虽高,但在关键领域仍不能使用”、“互联网和银行场景完全不同”、“不能支持跑批(批处理业务)”。问题本质是“什么样的分布式数据库在关键领域可用”?
从用户的角度,答案很明确,兼容Oracle功能且满足性能要求。兼容Oracle,意味着“不改造应用系统无缝升级模式”,用户责任小,风险低。满足性能要求,意味着业务可运行。那OceanBase是不是这样一个产品呢?
先说Oracle的兼容性:
- 数据库核心功能,OceanBase在分布式架构下,不兼容Oracle的存储过程、触发器、视图、多表关联、大表关联等常用数据库核心功能,需要通过大规模改造应用系统来弥补功能缺口,工程繁复,且不保证改造一定成功;
- 隔离等级,OceanBase不支持Oracle的隔离等级“可重复读”,存在不可知数据错误风险及高失败率;
- 锁机制,和Oracle严苛锁机制相比,OceanBase是松散锁机制,在有数据冲突的金融场景,必然导致跑批(批处理业务)中断,存在业务连续性风险;
结论,OceanBase完全不兼容Oracle,其缺口源于结构性差异,不可能通过适配解决。
再说性能,分布式数据库性能的关键是处理分布式事务的效率:
- 两次tpc-c测试,分布式事务均不是由OceanBase数据库完成的。按tpc-c规则,存在随机15%和1%跨仓交易,如果完全随机,总交易量的6.896%