StarRocks中有趣的点

发布时间:2024年01月14日

最近在工作中,遇到有小伙伴使用StarRocks,所以看了下文档,感觉以下几点比较有趣。

支持MySQL协议

想必是为了通用性,StarRocks 提供MySQL协议接口,支持标准SQL语法。即可通过MySQL客户端连接StarRocks,并执行SQL。

版本升级

StarRocks目前有两个版本,旧版本在数据存储方面有劣势,存在冗余数据。

优化后的版本将数据部分抽离了出来。支持使用hdfs进行存储。

可用性概念

为了保证可用性及响应性能,多节点使用时仍用到了主从的概念。

如下表格来自官方文档,其中选举的部分还是值得了解一下的。

FE 角色

元数据读写

Leader 选举

Leader

Leader FE 提供元数据读写服务,Follower 和 Observer 只有读取权限,无写入权限。Follower 和 Observer 将元数据写入请求路由到 Leader,Leader 更新完元数据后,会通过 BDB JE (Berkeley DB Java Edition) 同步给 Follower 和 Observer。必须有半数以上的 Follower 节点同步成功才算作元数据写入成功。

Leader 从 Follower 中自动选出。如果当前 Leader 节点失败,Follower 会发起新一轮选举。

Follower

只有元数据读取权限,无写入权限。通过回放 Leader 的元数据日志来异步同步数据。

Follower 参与 Leader 选举,会通过类 Paxos 的 BDBJE 协议自动选举出一个 Leader,必须有半数以上的 Follower 节点存活才能进行选主。

Observer

同 Follower。

Observer 主要用于扩展集群的查询并发能力,可选部署。Observer 不参与选主,不会增加集群的选主压力。

高性能原理

下面一段话摘自官方原文:

“在执行 SQL 计算时,一条 SQL 语句首先会按照语义规划成逻辑执行单元,然后再按照数据的分布情况拆分成具体的物理执行单元。物理执行单元会在对应的 BE 节点上执行,这样可以实现本地计算,避免数据的传输与拷贝,从而得到极速的查询性能。”

SQL的拆分执行是一种非常有趣的思路,实质是以空间换时间的手法。

文章来源:https://blog.csdn.net/zcy_wxy/article/details/135505276
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。