daka
发布于

klustron相比于tdsql有什么优势?

klustron的创始人先前就职于tdsql团队,应该对tdsql很熟悉,两款产品比较起来,klustron有哪些优势?

浏览 (568)
点赞 (2)
收藏
1条评论
Klustron小助手
Klustron小助手
泽拓昆仑Klustron的核心开发团队中有多位曾经的TDSQL-2.0 的核心开发者,包括创始人赵伟就曾经在TDSQL团队主导TDSQL-2.0分布式数据库的核心功能的设计和研发,所以这两个产品在宏观的架构层面有一些相似之处。比如Klustron和TDSQL都是多个计算节点和多个存储shard组成的分布式数据库集群,都支持分布式事务处理和分布式查询处理,以及弹性扩缩容。并且存储节点都使用经过优化和完善的MySQL做存储节点,有较好的OLTP 性能,并且支持binlog生态的各种组件。 不过Klustron与TDSQL 也有很多的不同之处,这部分来源于Klustron的计算节点是基于PostgreSQL而开发的事实。Klustron研发团队之所以基于PostgreSQL并广泛扩展它作为Klustron的计算节点,是因为我们认可PostgreSQL在查询处理方面的优秀设计和实现,以及PostgreSQL丰富而活跃的开源生态。Klustron研发团队在PostgreSQL 中增加了大量新模块,来实现了诸如分布式事务处理,分布式并行查询处理,全局死锁检测和处理,MySQL连接协议和MySQL私有的SQL语法、系统函数等等的功能。 在下面一些方面Klustron比TDSQL有明显的优势和独特性。事实上,Klustron的下述独特能力和优势,几乎全部是任何其他分布式数据库所不具备的,在分布式数据库这个类别中,Klustron独有下述几乎全部能力。 1. 生态兼容性 Klustron不仅支持MySQL连接协议和完整的MySQL DML语法和常用的MySQL DDL语法,而且由于Klustron的计算节点是基于PostgreSQL而开发,Klustron天然地支持PostgreSQL的连接协议和SQL语法,并且对[PostgreSQL的功能集支持非常完善](https://doc.kunlunbase.com/zh/Klustron_compatible_with_PostgreSQL.html)--- Klustron仅去除了外键等极少数分布式数据库中不合适的功能点。 特别需要指出的是,Klustron支持PostgreSQL生态的所有第三方组件。TDSQL不支持PostgreSQL的连接协议和SQL语法或者第三方组件。 Klustron支持的PostgreSQL生态的组件中,大名鼎鼎的包括空间地理数据管理组件PostGIS,机器学习组件PostgresML和Apache MadLib, 向量数据管理组件PGVector, PGEmbedding。由于Klustron支持了PostGIS和PGVector,Klustron也就支持了GIS和向量两种复杂数据类型,这极大地扩充了Klustron的数据管理能力。TDSQL不支持GIS或者向量数据管理。 同时Klustron还支持PostgreSQL生态的所有其他扩展组件,其中很多是非常有用的。比如各种FDW组件,可以让Klustron的计算节点从各种第三方数据源(例如其他数据库系统,公有云对象存储系统S3,OSS,以及hbase/hive等等)读取数据,与集群中的数据统一做查询和OLAP分析;还比如plpython, plperl, pltcl, pllua, plv8, pljava等存储过程语言组件,让用户可以分别使用python, perl, tcl, lua, javascript, java语言来编写存储过程,以便在Klustron的计算节点中运行用户开发的数据处理逻辑。TDSQL不支持存储过程,也不支持从外部数据源读取数据。 这些组件大大扩充了Klustron的功能,同时Klustron也让这些组件突破了PostgreSQL受限于单台服务器硬件资源的扩展性难题,可以利用大量服务器的硬件资源实现数据管理和查询分析功能。 2. 分布式并行查询处理 Klustron支持[多层级的并行查询处理](https://doc.kunlunbase.com/zh/KunlunBase_multilevel_parallel_query_processing_technology.html),包括计算节点内,计算节点与存储节点之间,以及存储节点内部; 计算节点内的并行,是指Klustron的计算节点可以开启多个工作进程来执行针对同一个分区表的不同分片的查询;计算节点与存储节点之间是指Klustron的计算节点在执行一条SQL语句时,会同时发送给所有目标shard 对应的查询语句,而不是收到一个shard的语句执行结果再发送SQL语句给下一个目标shard。 存储节点内的并行,是指Klustron的计算节点可以使用多个连接来查询针对同一个表的不同表分片,或者不同的表,或者同一个表分片的不同行范围。 Klustron的多层级并行查询处理可以利用多台计算机服务器的多个CPU核心和内存资源执行同一个查询,实现极致的查询分析性能。 TDSQL仅支持计算节点与存储节点之间的并行查询执行,不支持计算节点内的并行查询执行或者存储节点内的并行查询执行。 3. SQL 标准兼容性和OLAP 功能 Klustron从PostgreSQL继承了完整的OLAP查询功能(比如ROLLUP, CUBE, GROUPING-SET等),以及诸如CTE, window function(对于制作酷炫的报表非常有用)等高级SQL语法。 同时[Klustron从PostgreSQL继承了丰富的高级SQL功能](https://doc.kunlunbase.com/zh/Use_advanced_SQL_capabilities_in_KunlunBase.html)。包括多语言编写(PL/SQL, python,perl,java,lua,JavaScript等)的存储过程,行级访问控制,domain(可复用的列定义),视图、物化视图,数据校验(CHECK 约束),触发器等。 Klustron不仅从PostgreSQL完美的继承了这些能力,而且通过上述多层级的分布式并行查询处理机制,提升了OLAP分析和机器学习任务的性能。这些功能中除了触发器之外都是TDSQL不支持的。 需要强调的是,本文作者对TDSQL的认知截止2019年8月,因此所述TDSQL有关内容与其最新状态未必完全相同,如与其当前状况有出入请读者指正。
点赞
评论