如今,我们正处于数据库从互联网基础软件转变为社会数字化基础软件的时代,在传统集中式数据库已不能满足大规模数据承载需求与高并发处理需求的形势下,基于海量数据场景应用而生的分布式数据库迎来应用热潮。据IDC调研,目前约26.8%的企业级市场用户部署了分布式数据库,超过90%的企业认可分布式数据库部署后的效果,
在分布式数据库中,主要有三类解决方案,一类是以中间件+单机数据库为主的分布式数据库,下层的单机数据库提供存储和执行能力,在多个单机数据库上封装一层中间层,以统一分片规则管理及处理分布在不同数据库节点的数据,并提供SQL解析,请求转发和结果合并的能力;第二类是原生分布式数据库,在架构设计之初,便根据分布式一致性协议做底层设计,因此,数据的存储、查询、处理都天然具备分布式特性,各数据节点提供对等的读写服务,组成统一的集群对外提供服务;第三类是通过构建分布式共享存储实现扩展,采用非对称计算节点,大部分公有云数据库都属于此类。在本文中,我们重点说说前两类。
无论是分库分表中间件还是原生分布式数据库,目的都是解决数据容量问题,但实际上,二者的实践路径有本质区别。那么具体而言,分库分表中间件与原生分布式数据库的区别在哪,各自有哪些优劣势?原生分布式数据库与如今热炒的云原生数据库又是什么关系?笔者采访了OceanBase CTO杨传辉(日照),以下为他的解读。
原生分布式数据库与分库分表中间件的区别
区别一:是否依赖中间件
分库分表中间件大多采用中间件来补充分布式的能力,也就是说在各数据库节点上,架构一层事务处理和查询优化的中间层。在这套系统中