一篇文章了解 StarRocks

时间:2023-01-10 21:54:06

前言

本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见大数据技术体系


正文

一篇文章了解 StarRocks

  • StarRocks 是新一代极速全场景 MPP 数据库。
  • StarRocks 充分吸收关系型 OLAP 数据库和分布式存储系统在大数据时代的优秀研究成果,在业界实践的基础上,进一步改进优化、升级架构,并增添了众多全新功能,形成了全新的企业级产品。
  • StarRocks 致力于构建极速统一分析体验,满足企业用户的多种数据分析场景,支持多种数据模型(明细模型、聚合模型、更新模型),多种导入方式(批量和实时),支持导入多达10000列的数据,可整合和接入多种现有系统(Spark、Flink、Hive、 ElasticSearch)。
  • StarRocks 兼容 MySQL 协议,可使用 MySQL 客户端和常用 BI 工具对接 StarRocks 来进行数据分析。
  • StarRocks 采用分布式架构,对数据表进行水平划分并以多副本存储。集群规模可以灵活伸缩,能够支持10PB 级别的数据分析; 支持 MPP 框架,并行加速计算; 支持多副本,具有弹性容错能力。
  • StarRocks 采用关系模型,使用严格的数据类型和列式存储引擎,通过编码和压缩技术,降低读写放大;使用向量化执行方式,充分挖掘多核 CPU 的并行计算能力,从而显著提升查询性能。

StarRocks 特性

StarRocks 的架构设计融合了 MPP 数据库,以及分布式系统的设计思想,具有以下特性:

架构精简

StarRocks 内部通过 MPP 计算框架完成 SQL 的具体执行工作。MPP 框架本身能够充分的利用多节点的计算能力,整个查询并行执行,从而实现良好的交互式分析体验。 StarRocks 集群不需要依赖任何其他组件,易部署、易维护,极简的架构设计,降低了 StarRocks 系统的复杂度和维护成本,同时也提升了系统的可靠性和扩展性。 管理员只需要专注于 StarRocks 系统,无需学习和管理任何其他外部系统。

全面向量化引擎

StarRocks 的计算层全面采用了向量化技术,将所有算子、函数、扫描过滤和导入导出模块进行了系统性优化。通过列式的内存布局、适配 CPU 的 SIMD 指令集等手段,充分发挥了现代 CPU 的并行计算能力,从而实现亚秒级别的多维分析能力。

智能查询优化

StarRocks 通过 CBO 优化器(Cost Based Optimizer)可以对复杂查询自动优化。无需人工干预,就可以通过统计信息合理估算执行成本,生成更优的执行计划,极大提高了 Adhoc 和 ETL 场景的数据分析效率。

联邦查询

StarRocks 支持使用外表的方式进行联邦查询,当前可以支持 Hive、MySQL、Elasticsearch 三种类型的外表,用户无需通过数据导入,可以直接进行数据查询加速。

高效更新

StarRocks 支持多种数据模型,其中更新模型可以按照主键进行 upsert/delete 操作,通过存储和索引的优化可以在并发更新的同时实现高效的查询优化,更好的服务实时数仓的场景。

智能物化视图

StarRocks 支持智能的物化视图。用户可以通过创建物化视图,预先计算生成预聚合表用于加速聚合类查询请求。StarRocks 的物化视图能够在数据导入时自动完成汇聚,与原始表数据保持一致。并且在查询的时候,用户无需指定物化视图,StarRocks 能够自动选择最优的物化视图来满足查询请求。

标准 SQL

StarRocks 支持标准的 SQL 语法,包括聚合、JOIN、排序、窗口函数和自定义函数等功能。StarRocks 可以完整支持 TPC-H 的22个 SQL 和 TPC-DS 的99个 SQL。此外,StarRocks还兼容 MySQL 协议语法,可使用现有的各种客户端工具、BI 软件访问 StarRocks,对 StarRocks 中的数据进行拖拽式分析。

流批一体

StarRocks 支持实时和批量两种数据导入方式,支持的数据源有 Kafka、HDFS、本地文件,支持的数据格式有 ORC、Parquet 和 CSV 等,支持导入多达10000列的数据。StarRocks 可以实时消费 Kafka 数据来完成数据导入,保证数据不丢不重(exactly once)。StarRocks 也可以从本地或者远程(HDFS)批量导入数据。

高可用易扩展

StarRocks 的元数据和数据都是多副本存储,并且集群中服务有热备,多实例部署,避免了单点故障。集群具有自愈能力,可弹性恢复,节点的宕机、下线、异常都不会影响 StarRocks 集群服务的整体稳定性。 StarRocks 采用分布式架构,存储容量和计算能力可近乎线性水平扩展。StarRocks 单集群的节点规模可扩展到数百节点,数据规模可达到10PB 级别。 扩缩容期间无需停服,可以正常提供查询服务。 另外StarRocks 中表模式热变更,可通过一条简单 SQL 命令动态地修改表的定义,例如增加列、减少列、新建物化视图等。同时,处于模式变更中的表也可也正常导入和查询数据。


StarRocks VS Apache Doris

关于 Apache Doris 请参考我的博客——Apache Doris 技术调研

StarRocks 和 Apache Doris 在 2020 年以前是完全相同的,2020 年后 StarRocks 公司 fork 了Apache Doris 的代码,并且选择 Elastic License 开源。

有意思的是,StarRocks 之前名称是 DorisDB,后来因为和百度的纠纷就改成了 StarRocks,它现在还有个中文名称,叫:镜舟数据库

不提 StarRocks 公司和百度的恩怨情仇,StarRocks 本身性能还是不错的,毕竟,一个单靠数据库来吃饭的专业小公司,比起一个大公司的小部门来说压力和竞争力更大一点。

目前,StarRocks 比起 Apache Doris 的迭代更新要快的多,对于各种新特性的更新力度也要强的多。