本节主要介绍 OceanBase 数据库的主要应用场景。
交易支付透明拆分
交易支付是蚂蚁集团最核心的一个业务,最初采用的是分库分表的解决方案。分库分表的方案给核心业务带来了水平扩展的能力,同时也带来了灰度升级的能力,让核心业务的系统性风险大大降低。但随着支付宝业务的飞速发展,发现系统中的单机容量开始出现不足,在分库分表的架构下,这种情况只能通过将数据继续拆分成 M*N 份来解决,导致一方面耗时耗力,另外一方面技术风险非常高。
而 OceanBase 数据库利用分区表的方案及其带来的水平扩展能力,完美地解决了这一问题。只需要将原来的 N 份数据,每一份都通过分区表打散为 M 个数据分区,利用分区表打破单机的容量限制,就可以从数据层完成这一拆分过程,无需业务改造,极大地节省了成本,降低了技术风险。同时,OceanBase 数据库的分区表方案也可以使得用户完全无需关注数据的分布细节,轻松支持跨分区的分布式事务、多分区的关联,真正实现“透明”访问分布式数据库。
会员系统的多维度查询
会员系统在很多企业中也都是存在的,系统中保存了很多重要的用户信息。对于这些信息,是需要从多个维度进行访问的,例如:通过用户的 ID 查询用户的详细信息;通过用户的手机号码查询用户的详细信息;以年龄作为一个维度来对用户进行分组等等。对于这种多维度查询场景,尤其是非分区键查询在海量数据的分布式场景中是经常碰到的问题。通常可以采用在非分区列建立影子表的方式来解决。但这样的解决方式并非利用了数据库本身的能力,只能算是应用层的折中方案。OceanBase 数据库可以利用分区表特性将数据打散后分布到集群的多个节点上,从而满足一部分的查询需求,之后利用强一致性全局索引功能来满足其它维度的查询和分析需求,在数据库层面实现了数据分片和水平扩展能力,并且对用户透明。
批处理系统
很多行业的批处理系统中通常会有大量批处理操作,包含多张大表关联的复杂计算,并且涉及到大量的数据更新。批处理意味着每一次处理的数据量很大,而且有很多张大表要做关联,经常要做一些比较复杂的查询,并且更新量也比较大,使得传统的集中式数据库,出现了单点瓶颈,垂直扩容成本非常高,几乎不可接受。OceanBase 数据库的 SQL 引擎在经过了近 10 年的发展之后,已经拥有了很好的 SQL 执行能力和分布式计算能力,可以支撑这种复杂的 HTAP 应用。由于 OceanBase 数据库的原生分布式数据库特点,可以完美地解决传统数据库的单点性能瓶颈问题,而且还可以节省扩容带来的成本。