一篇文章了解 StarRocks

news2024/9/27 9:14:55

前言

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

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


正文

在这里插入图片描述

  • 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 的迭代更新要快的多,对于各种新特性的更新力度也要强的多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php宝塔搭建部署实战响应式园林景观设计公司网站系统源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套php开发的响应式园林景观设计公司网站系统源码,感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码…

12月更新2022亮点总结 | Java on Visual Studio Code

大家好,一年的时间过得很快,我们已经来到了2023年。回顾2022年,我们的产品也经历了很多的迭代,在此之中,我们有几个亮点想与大家分享! 2022年的亮点 Spring Boot 插件的重大可视化体验升级 从今年年初开始…

基于springboot+mybatis+mysql+vue房屋租赁管理系统

基于springbootmybatismysqlvue房屋租赁管理系统一、系统介绍二、功能展示1.用户登陆2.管理员端主要功能2.房主角色端主要功能3.租客角色端主要功能三、其它系统一、系统介绍 功能说明: 普通用户角色: 寻找房源功能–提供了两种寻找房源的功能&#xff…

JS日期格式化——数字日期转中文日期(封装函数,dayjs时间格式化YYYY-MM-DD)

JS数字日期转中文日期往期相关文章场景复现封装函数(数字日期转中文日期)实际应用往期相关文章 文章内容文章链接JS数组对象——根据日期进行排序,按照时间进行升序或降序排序https://blog.csdn.net/XSL_HR/article/details/128579840?spm1…

10分钟完全理解golang context

当前go的各种源码中应该都可以看到context的使用,Context是golang 1.7的引入的核心结构,本质是为了处理go的并发控制问题。本文主要带大家深入理解context如何使用,为什么需要context和context设计原理。 并发控制问题 先来看下并发控制到底…

Unity 3D 使用高度图创建地形|| Unity 3D 使用笔刷绘制地形

Unity 3D 使用高度图创建地形 在 Unity 3D 中编辑地形有两种方法: 通过地形编辑器编辑地形。通过导入一幅预先渲染好的灰度图来快速地为地形建模。 地形上每个点的高度被表示为一个矩阵中的一列值。这个矩阵可以用一个被称为高度图(heightmap&#xff0…

Win11关闭Windows Defender实时保护,暂时关闭和永久关闭方法 | Win10怎么永久关闭Windows Defender实时保护

文章目录1. 按2. 暂时关闭Windows Defender实时保护3. 永久关闭实时保护3.1. 方法一:改组策略(Windows11实测可以)3.2. 方法二:改注册表(Windows11实测不行)1. 按 开启Windows Defender实时保护有时候会导…

HJ2 计算某字符出现次数

HJ2 计算某字符出现次数1 题目2 解法2.1 count_if 本题代码2.1.1 C STL非更易型算法--count_if介绍2.1.2 C中cin(),cin.get(),cin.getline(),getline()总结:2.2 一般做法3 【扩展】C STL--非更易型算法1 题目 题源链接 描述 写出一个程序,接受一个由字…

【HTTP】浏览器缓存(HTTP缓存)

文章目录一、强制缓存1.1、ExPires1.2、Cache-Control二、协商缓存2.1、last-modified2.2、etag浏览器缓存(Browser Caching)是为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页…

在国内 PMP 有多少含金量?

PMP 证书已经在全球206个国家和地区得到认可,据 PMI 官方数据统计,截至2021,全球持有效 PMP 证书人数达110 W,国内占比28.98%,超33 W人次。 第一,PMP证书有什么价值? 01.PMP认证的重要性 PMP是…

Unreal UPROPERTY属性标记宏

BlueprintReadOnly,让该变量可在蓝图中访问。新建一个继承AActor的C类CustomActor,添加int变量TestProperty,并给他加上BlueprintReadOnly标记:这样,就能在蓝图中引用该变量。BlueprintReadWrite,让该变量可以在蓝图中使用以及修改。给TestProperty变量添加BlueprintReadWrite标…

【云原生进阶之容器】第二章Controller Manager原理2.7节--Indexer剖析

7 Indexer Indexer是client-go用来存储资源对象并自带索引功能的本地存储,Reflector从DeltaFIFO中将消费出来的资源对象存储至Indexer。Indexer中的数据与Etcd集群中的数据保持完全一致。client-go可以很方便地从本地存储中读取相应的资源对象数据,而无须每次都从远程Etcd集群…

复现yolov5CPP经验贴

源码: https://github.com/Hexmagic/ONNX-yolov5/blob/master/src/test.cpp 该源码亲测可行,但是还是有一些问题 此处改成False 此处改成自己转换好的onnx模型路径 用神经网络工具: https://github.com/lutzroeder/netron 用该工具可查看输入…

【UE4 第一人称射击游戏】24-添加人工智能的敌人跟随功能

上一篇:【UE4 第一人称射击游戏】23-添加子弹伤害本篇效果:步骤:将 导航网格体边界体积 拖入视口按P键显示区域将导航区域扩大一些如果不想让导航体覆盖上面的区域可以将导航体的高度降低一些打开“SimpleAI”,添加一个“Pawn感应…

Java Type

Type 是Java 编程语言中所有类型的公共高级接口(官方解释),也就是Java 中所有类型的”爹“。其中”所有类型“的描述尤为指的关注。它并不是我们平常工作中经常使用的int、String、List、Map等数据类型,而是从Java语言角度磊说&am…

shell练习之安全脚本

题目: 将密码输入错误超过4次的IP地址通过firewalld防火墙阻止访问 1.初始配置 首先使用systemctl工具启用firewalld服务: ​[rootlocalhost ~]# systemctl enable firewalld如果已经启用了,我们现在可以通过执行以下命令启动firewalld&a…

失败就是差一点的成功,社科院与杜兰大学金融管理硕士项目为你在职读研助力

失败的人,只差了一点点;成功的人,是多做了一点点;顶尖的人,则是再多做一点点。小事成就大事,细节成就完美,所以,千万不要只差那么一点,就放弃了。都说失败是成功之母&…

从Reactor模式俯瞰Nginx,你会发现你与高手的差距就在设计模式上

我们知道了Nginx是做什么的以及它为何如此高效,以至于全宇宙拿它来做负载均衡或者说web server。 但是如果你只是了解了使用和知道了原理就认为已经掌握了它,那只能说你肤浅了,原理和使用技能看看大家都知道了,没必要拿出去和别人…

快排递归、迭代的实现和两种优化方法

目录 快速排序 实现代码 时间复杂度 快排的优化 随机选择策略 三位取中法 非递归的快排 快速排序 快速排序算法是基于分治策略的一个排序算法,其基本思想是对于输入的子数组进行分解、递归求解,最后合并。 分解:以数组中左边第一个数作…

运行flutter doctor命令检测环境是否配置成功报错及解决方案

/** 运行flutter doctor命令检测环境是否配置成功,报如下错误**/ 1. cmdline-tools component is missing & Android licenses status unknown 1.1.安装cmdline-tools 1.2.配置android-licenses 运行命令flutter doctor --android-licenses,提示…