在云原生TP(事务型)数据库我准备重点分析2款典型的云原生数据,AWS的Aurora和阿里的polardb,我把以aurora为代表的称之为redo log复制流,把polardb为代表的称之为文件复制流。
之所以这么区分的原因在于他们实现存储与计算分离最大的区别,在于计算与存储切分的点,以aurora为代表的存储计算分离,选择了redo log,而以polardb为代表的存储计算分离,选择了文件系统。
这点可以从他们的架构图看到:
在aurora的架构中,通过读写节点(Primary Instance)把写操作生成的redo log通过quorum协议同步给存储层的6个副本。
在polardb的架构中,用户态的文件系统与计算层结合在一起,下面的存储层Data chunk Server实际由自己实现的块存储服务。
而至于microsoft的socrates,腾讯的cynosdb和华为的taurusdb,在对待存储计算分离中关键的切分点上,都与aurora雷同,差别只是在于是不是把redo log存储,page回放是否分开(socrates),以及redo log后面接的存储是使用raft协议(cynosdb,taurusdb),还是quromon协议(aurora)。
后面我们会深入解析aurora与polardb的实现。