今天简要介绍一下StarRocks 这个强大的数据库。
注意:本文章内容仅供个人学习,不包含任何推荐性质。
StarRocks(原名 Doris)是一个高性能、全场景的MPP(大规模并行处理)分析型数据库。它专为极速的多维联机分析处理(OLAP) 而设计,能够对海量数据进行实时和批量的多维分析、即席查询和高并发报表。
官方网站获取文档和下载:https://www.starrocks.io
一、 特性与优势
1. 性能
列式存储引擎:数据按列存储,在查询时只需读取相关列,极大减少了I/O消耗。
向量化执行引擎:利用CPU的SIMD指令,一次处理一批数据(一个向量),而不是一行数据,显著提高了CPU利用率和查询效率。
MPP架构: 查询任务被并行分发到集群中的所有节点,各节点独立处理自己负责的数据,最后汇总结果,实现了线性扩展。
CBO(基于成本的优化器): 拥有非常智能的优化器,能够为复杂查询选择最优的执行计划。
2. 实时分析
支持实时数据导入,数据写入后立即可查。它支持从多种数据源(如Kafka、Flink、Spark等)通过物化视图(Materialized View) 和 Bitmap 索引 等技术进行预聚合和加速,使得即使在大数据量下,聚合查询也能在亚秒级返回。
3. 高并发
架构设计上避免了外部系统依赖(如ZooKeeper),并进行了大量优化,能够支持数千甚至上万的高并发查询,非常适合作为企业统一的分析门户或数据中台的查询引擎。
4.全面兼容 MySQL 协议
支持标准SQL-92,并且兼容MySQL网络协议。这意味着你可以使用任何常见的MySQL客户端、BI工具(如Tableau、Superset、FineBI)或应用程序直接连接StarRocks,学习成本和迁移成本极低。
5. 物化视图
用户可以在基表上创建多个物化视图。StarRocks的优化器能够自动、智能地选择最优的物化视图来响应查询,无需在查询语句中显式指定,对应用透明,极大地加速了聚合查询。
6. 易于运维
提供简洁的前端(FE)和后台(BE)架构,部署和运维相对简单。
支持在线弹性扩缩容,可通过简单的SQL命令添加或删除节点,集群会自动进行数据重分布。
二、 技术架构
StarRocks 采用了一个非常简洁的架构,主要由两个角色组成:
1. Frontend (FE)
职责:负责元数据管理、客户端连接管理、查询规划与调度。
组件:
nLeader FE: 主节点,负责元数据的写入和日志。
nFollower FE: 从节点,参与选举,提供元数据读取服务。
nObserver FE: 观察者节点,仅扩展元数据的读取能力,不参与选举。
通常通过BDB JE进行Leader和Follower之间的元数据同步。
2. Backend (BE)
职责:负责数据存储和查询执行。每个BE节点存储一部分数据(Tablet),并执行FE下发的查询任务。
数据分片:表的数据被水平分区为多个Tablet,每个Tablet有多个副本(通常为3),分布在不同BE上,保证了高可用和高性能。
三、适用场景:
实时数据看板与BI报表: 为业务人员提供高并发的自助分析平台。
用户行为分析:支持对海量用户数据进行多维度、即席的探查与分析。
日志分析:替代ELK等方案,进行结构化的日志存储与查询。
统一查询入口(数据网关):通过External Table功能,可以直接查询Hive、Iceberg、Hudi、Elasticsearch等外部数据源,无需数据导入,实现“湖仓一体”分析。
高并发精准查询:例如电商的订单查询、用户画像的标签查询等。
四、与其他OLAP数据库的对比
特性 | StarRocks | ClickHouse | Apache Druid | Snowflake |
架构 | MPP | 无共享(Share-Nothing) | 分布式、列式 | 云原生、存储计算分离 |
并发能力 | 极高 | 一般(单表) | 高 | 极高 |
实时摄入 | 支持 | 支持 | 非常擅长 | 支持(Streaming) |
查询延迟 | 亚秒到秒级 | 亚秒级(简单查询) | 秒级 | 秒级 |
SQL兼容性 | 高(兼容MySQL) | 中等(方言) | 中等(方言) | 极高(标准SQL) |
易用性 | 简单 | 较复杂 | 复杂 | 极简(全托管) |
运维成本 | 低 | 高 | 高 | 无(SaaS) |
成本 | 开源/低成本 | 开源/低成本 | 开源/低成本 | 商业/按量付费 |
文章小结
StarRocks 是一个在性能、并发、实时性和易用性之间取得出色平衡的MPP数据库,其极简架构、向量化引擎和智能物化视图,成为了大数据实时分析领域的一个OLAP解决方案。;适合需要高并发、低延迟查询的企业级分析场景,支持自建数据中心和云上部署。
文章至此。