CK介绍
CK是目前社区里面比较热门的,应用场景也比较广泛。
首先,在架构上,集群内划分为多个分片,通过分片的线性扩展能力,支持海量数据的分布式存储计算,每个分片内包含一定数量的节点Node,即进程,Node之间互为副本,通过ZooKeeper进行数据同步。
其次,CK的数据模型主要使用MergeTree表引擎——一种LSM Tree的实现,同时支持分布式表,写入时进行数据转发,读取时进行数据收集。
再者,在存储上,CK采用了列存、分区、数据排序和分块、主键索引等方式。最后,在计算上,CK采用向量化执行方式,利用SIMD指令加速。
存储引擎
在存储引擎上来看,TDSQL-A和CK各有自己鲜明的特点。
TDSQL-A采用的是典型的列存设计,功能完备,包括完整的事务能力,同时还设计一些特殊的优化来加速数据读写操作。
SQL引擎
在SQL引擎上,TDSQL-A继承了PG原生的SQL能力,SQL完备且兼容性好,支持多表关联、存储过程等复杂查询,另外TDSQL-A在分布式架构上对优化器和执行器具有很多优化。我们也在分布式架构上做了一些并发器和执行器的优化,左图实际上就是分布式的一个重要例子。
CK也具有出色的向量化执行引擎,特别是在AGG计算中,针对不同数据类型设计不同的数据结构和算法,将CPU和内存能力发挥到极致。右图中列了一下针对于Hash AGG计算设计的不同数据结构。
对比
整体来看,TDSQL-A相比于CK,在SQL能力、事务能力、优化器能力、分布式管控能力以及高可用能力上具有优势,而CK则在计算引擎执行效率上表现突出。
TDSQL-A受惠于PG社区的长期积累,同时经过我们团队长时间的功能增强、性能优化以及在多个应用领域的实践,已经具备了全面和强大的能力,可以提供企业级一站式解决方案,可以把事务、高可用以及部分业务逻辑放到数据库中来处理,大大降低业务的复杂程度。我们也将继续与PG社区、CK社区等优秀开源社区保持紧密联系,吸收改进新的发展技术和研究成果,不断地提高TDSQL-A的能力并开放给我们的用户。