一、引言
在大数据和云原生时代,数据孤岛和异构数据源的整合成为企业数字化转型的核心挑战。
Apache Calcite 作为一个开源的动态数据管理框架,通过提供标准 SQL 解析、查询优化和跨数据源适配能力,为企业构建统一的数据查询层提供了关键支撑。
Calcite有意地远离了存储和处理数据的任务。如我们所见,这使得它成为在应用程序和一个或多个数据存储位置和数据处理引擎之间的最佳中间层选择。它同样也是构建数据库的完美基础选择: 只需要在它的基础上添加数据。
在大数据和云原生时代,数据孤岛和异构数据源的整合成为企业数字化转型的核心挑战。
Apache Calcite 作为一个开源的动态数据管理框架,通过提供标准 SQL 解析、查询优化和跨数据源适配能力,为企业构建统一的数据查询层提供了关键支撑。
Calcite有意地远离了存储和处理数据的任务。如我们所见,这使得它成为在应用程序和一个或多个数据存储位置和数据处理引擎之间的最佳中间层选择。它同样也是构建数据库的完美基础选择: 只需要在它的基础上添加数据。
Calcite 执行流程的核心, 主要是三个部分:
元数据主要用于对 SqlNode 语法树进行校验,并为 CBO 优化中代价的计算提供统计信息。
优化规则被 Calcite 优化器使用,用来对逻辑计划进行改写,并生成最优的执行计划。
最终,执行器会基于最优的执行计划,在不同的存储引擎上进行执行。
ClickHouse OLAP列式数据库。
ClickHouse目前是基于ZooKeeper来存储元数据,包含分布式的DDL、表和数据Part信息,从元数据丰富程度来说稍弱,因为存储了大量细粒度的文件信息,导致ZooKeeper经常出现性能瓶颈.
ClickHouse依赖Zookeeper来实现数据的高可用,Zookeeper带来额外的运维复杂性的同时也有性能问题。
如果遇到Doris集群性能下降的情况,你会如何进行故障排查?
SQL解析具体包括了五个步骤:词法分析,语法分析,生成单机逻辑计划,生成分布式逻辑计划,生成物理执行计划。
一个简单的查询SQL在Doris的解析实现:
Doris的架构主要分为三层:FE(Frontend)、BE(Backend)和存储层。
只设 FE(Frontend)、BE(Backend)两种角色、两个进程。
Doris 的数据模型主要分为3类:
可根据key 列聚合数据;通常用于需要汇总或聚合信息(如总数或平均值)的情况。
聚合模型需要用户在建表时显式的将列分为 Key 列和 Value 列。该模型会自动的对 Key 相同的行,在 Value 列上进行聚合操作。
当我们导入数据时,对于 Key 列相同的行(可以理解为业务主键的冲突行)会聚合成一行,而 Value 列会按照设置的 AggregationType 进行聚合。
Insert Into 方式能够提供快速导数性能
Spark Doris Connector 导入方式更具有通用性,能够解决大量数据导入的问题,导入性能相对稳定,在导入过程需要 合理控制导入速率与导入并行度 。
InterSystems Caché ® 是一个高性能的数据库,可助力全球范围的事务处理应用。
它的用途极为广泛,包括:银河系亿万颗星球的测绘,每天数十亿次股权交易的处理,以及智能电网的管理等等。
在Caché中,数据可以被建模并存储为表、对象或多维数组(层次结构)。 不同的模型可以无缝地访问数据——不需要在模型之间进行扼杀性能的映射。
最底层是多维数组存储,可暴露给用户并有成熟的语法,属于ISO和ansi的叫m语言的标准,在其上是平行的两个抽象层级:对象和sql。
也就是说有三套接口来同时瞄准一套数据和元数据,最大化开发灵活性了。
架构上的好处是,三种接口,以及脚本化的语法以及后台编译机制,最大化了灵活性和性能的平衡,提供给应用开发者非常高的重构能力和低重构成本。