细说分布式数据库的过去、现在与未来

TiDB目前即将发布RC3版本,预计六月份能够发布GA版本。在即将到来的 RC3版本中,对MySQL兼容性、SQL优化器、系统稳定性、性能做了大量的工作。对于OLTP场景,重点优化写入性能。另外提供了权限管理功能,用户可以按照MySQL的权限管理方式控制数据访问权限。对于OLAP场景,也对优化器做了大量的工作,包括更多语句的优化、支持SortMergeJoin算子、IndexLookupJoin算子。另外对内存使用也做了大量的优化,一些场景下,内存使用下降75%。

除了TiDB本身的优化之外,我们还在做一个新的工程,名字叫TiSpark。简单来讲,就是让Spark更好地接入TiDB。现在其实Spark已经可以通过JDBC接口读取TiDB中的数据,但是这里有两个问题:1. 只能通过单个TiDB节点读取数据且数据需要从TiKV中经过 TiDB 中转。2. 不能和Spark的优化器相结合,我们期望能和Spark的优化器整合,将Filter、聚合能通过TiKV的分布式计算能力提速。这个项目已经开始开发,预计近期开源,五月份就能有第一个版本。

三、分布式数据库的未来趋势

关于未来,我觉得未来的数据库会有几个趋势,也是TiDB项目追求的目标:

1、数据库会随着业务云化,未来一切的业务都会跑在云端,不管是私有云或者公有云,运维团队接触的可能再也不是真实的物理机,而是一个个隔离的容器或者「计算资源」,这对数据库也是一个挑战,因为数据库天生就是有状态的,数据总是要存储在物理的磁盘上,而数据移动的代价比移动容器的代价可能大很多。

2、多租户技术会成为标配,一个大数据库承载一切的业务,数据在底层打通,上层通过权限,容器等技术进行隔离,但是数据的打通和扩展会变得异常简单,结合第一点提到的云化,业务层可以再也不用关心物理机的容量和拓扑,只需要认为底层是一个无穷大的数据库平台即可,不用再担心单机容量和负载均衡等问题。

3、OLAP和OLTP业务会融合,用户将数据存储进去后,需要比较方便高效的方式访问这块数据,但是OLTP和OLAP在SQL优化器/执行器这层的实现一定是千差万别的。以往的实现中,用户往往是通过ETL工具将数据从OLTP数据库同步到OLAP数据库,这一方面造成了资源的浪费,另一方面也降低了OLAP的实时性。对于用户而言,如果能使用同一套标准的语法和规则来进行数据的读写和分析,会有更好的体验。

4、在未来分布式数据库系统上,主从日志同步这样落后的备份方式会被Multi-Paxos / Raft这样更强的分布式一致性算法替代,人工的数据库运维在管理大规模数据库集群时是不可能的,所有的故障恢复和高可用都将是高度自动化的。