腾讯TDSQL提三个“数据库之问”,数据库技术未来重点在哪?(11)

所以,数据库架构背景下各个模块解耦问题,是一个技术问题。解耦工作,可以在许多层次、许多模块间展开。解耦技术,各有其妙。

如图7右上子图所示,AWS的Aurora提出的存储计算分离,就是存储和计算两大模块的解耦。而微软Deuteronomy系统在08年-16年也有过一系列相关工作。Deuteronomy一开始采用的方案是在存储层上面实现事务,而底层的存储采用的是KV模型。存储层只需要提供KV的原子性和幂等性,上层就可以比较容易实现事务的并发访问控制和恢复。后来的Percolator、Spanner/F1、CockroachDB、TiDB其实也是沿着这个思路在发展,底层是Bigtable/Spanner或者RocksDB这样的KV存储引擎,在存储之上封装一层事务。但是在类似RocksDB这样的KV存储中,对于KV记录的并发控制还是和存储紧耦合的。

存储和计算两大模块的解耦,促进了各自所囊括的子模块之间再次进行解耦,如图9所示,事务和存储层的解耦,该怎么进行?有的研究者,把事务处理功能提取到客户端进行(图9左子图),有的把事务处理功能放到中间件层实行按(图9中间子图),这2种方式不同于传统的在Server端进行事务处理(图9的右子图)。

推荐阅读