从starrocks安装说起和Oracle的OLAP殊途同归

StarRocks是一款分析型数据库(他的定语也很多,分布式存算分离等等)。作为数据库他的运行和维护迟早也是落在我这里的。对于做数据库的人都知道什么是交易型数据库,什么是分析型数据库。以及什么是事务分析混合型数据库。但是对于非这块领域的人根本不知道为什么选择某个产品。某些产品是好,但是为什么好不知道。只是傻子过年看街坊,别人这样用了,那我也这样用。至于为什么不知道。

其实行式存储对交易友好,因为写入和修改是以行为基础。而列式存储对分析友好,是因为聚合都是对列进行运算的。而如果大家熟悉我国的实际业务场景就会发现。几乎没有单纯的OLTP,单纯的OLAP。都会发现是事务分析混合的。这也就是为什么2021年时候信通院白皮书定了数据库七大趋势之一就是HTAP。

从技术分类来说Oracle、MySQL是数据库。Redis、MongoDB、influxdb、neo4j、Elasticsearch也是数据库。Hadoop技术栈也是数据库。区块链也是数据库。Impala、StarRocks等也是数据库。所以最终有问题都会涉及到我。本着这个思路我也尝试着进行一下安装。虽然也有容器化部署的方式,但是自己手工安装一遍收获是不一样的。

考虑到大家说我排版问题(不会墨天轮的排版,然后就到处复制了)这次用截图。

下载好安装包传上去。将近3G啊。下载了一会。

不少yum安装的,看上去容易。正式环境时候怎么办?还能yum吗?

解压以后该有的目录都有了。不用自己创建(自己创建的还乱,官方的目录层级挺好的)

然后就编辑fe的配置文件。Fe是前台的意思。FEFrontend)负责管理元数据、管理客户端连接、进行查询规划、查询调度等工作。每个 FE 节点都会在内存保留一份完整的元数据,这样每个 FE 节点都能够提供无差别的服务。

所以要建立这个元数据目录。(本次体验为单机部署)

然后设置环境变量(为了以后打命令偷懒)

这里遇到一个问题,一定要在环境变量中设置JAVA_HOME。开始以为安装了他能自己识别。

启动前台进程。

然后配置后台进程。BE (Backend)。这里需要把相应的路径写到配置文件中去。

BE 是 StarRocks 的后端节点,负责数据存储和 SQL 计算等工作。

数据存储方面,BE 节点都是完全对等的。FE 按照一定策略将数据分配到对应的 BE 节点,BE 负责将导入数据写成对应的格式存储下来,并生成相关索引。

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

然后启动后台进程。start_be.sh –-daemon

但是这里出问题了。后台进程启动失败,也没错误日志。传说的be.info日志没有。在反复确认配置没有问题后,只得找人咨询。恰好微信好友有一个原厂的朋友。问过后原厂产研的老师非常准确的说,是avx2的问题。没有 avx2 的话, be 肯定启动失败。

这里解释一下:AVX2(Advanced Vector Extensions 2)是一种指令集扩展,用于增强处理器的并行计算能力。它引入了更多的SIMD(Single Instruction, Multiple Data)指令,可以同时对多个数据进行操作,加快向量化计算和并行处理的速度。

AVX2指令集在一些需要进行大规模数据处理和并行计算的任务中能够提供性能优势,例如图像和视频处理、科学计算、机器学习等。通过使用AVX2指令集,程序可以更高效地利用CPU的并行计算能力,加快运算速度,提高系统的响应能力。

说到这里明白了,是我虚拟机的指令集不支持。马上找给我虚拟机的同事看看能不能解决?最后是把虚拟机做热迁移,迁移到一个新的宿主机上。

现在看到支持avx2指令集了,后台进程也开起来了。

他的客户端用的是MySQL的客户端。

这里密码是空。输入回车。不写 -p我试下来不行。

执行这个命令看看前台进程和后台进程。

然后就可以像MySQL一样操作的。但是

语法不一样。直接建表会出ERROR的1064错误。需要指定分片键等。关键的是由于是单机体验,要手写副本1.默认是3.目前不能再配置文件中修改。

最后写入数据。

重点来了:

StarRocks一开始说了是列式数据库,所以适合分析。这点应该说明白了。之所以表现出众主要原因我觉得应该是SIMD(向量化执行)我这里引用一下杨廷琨老师PPT

Oracle的In-memory之所以快,其实也是因为SIMD的原因(当然在内存中做就更加快了),而这个是2013年就发布的。试想一下2013年做出来的,那么哪年开始做的?又是哪年开始设计的?这才是重点。

我这里标题之所以写殊途同归,看来要像分析更快,最后SIMD目前看是绕不过去的。而这些都是数学的范畴吧。我一直说数据库是数学和物理学的结合(CPU  内存这些硬件就是物理器件)。至今还有不少人,没有意识到数据库和数学的紧密关系。(当然内行人都已经认识到了,没有意识到的也的确是外行。也许有些人并不看重数据库所以没有认识也就没有认识吧)。其实在2010年之前我就是外行,我就没认识到。

通过今天这个我想说,要知道有些技术,要知其然也要知其所以然。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang for 循环

从基础知识到高级技术、并发和通道 Go(Golang)编程语言中的“for”循环是一个基本而多功能的结构,用于迭代集合、重复执行代码块以及管理循环控制流。Golang的“for”循环语法简洁却强大,为处理多样的循环场景提供了一系列能力。无…

大厂的数据质量中心系统设计

日常工作中,数据开发上线完一个任务后并不是就可以高枕无忧,时常因上游链路数据异常或者自身处理逻辑的 BUG 导致产出的数据结果不可信。而问题发现可经历较长周期(尤其离线场景),往往是业务方通过上层数据报表发现数据…

【Unity】【VR开发】如何创建让物体透明的Material

【背景】 在VR开发中,如果遇到需要锚点传送移动的场景,作为锚点的目标往往需要设置为透明。本篇介绍简单设置Material使3D GameObject便透明的方法。 【操作方法】 新建一个Material对象选中Material对象后,在Inspector面板中重选Shader属…

Excel练习:双层图表

Excel练习:双层图表 学习视频Excel制作双层图表,很多人都不会,其实只需1步操作就够了!_哔哩哔哩_bilibili ​​ 通过调整两个图形的显示范围实现 增加折现图的负数显示范围,使折现图仅出现在整体图形的上方增加柱形…

Kotlin 基本语法5 继承,接口,枚举,密封

1.继承与重写的Open关键字 open class Product(val name:String ) {fun description() "Product: $name"open fun load() "Nothing .."}class LuxuryProduct:Product("Luxury"){//继承需要调用 父类的主构造函数override fun load(): String {…

Mybatis | 初识Mybatis

初识Mybatis 目录: 初识Mybatis什么是Mybatis?Hibernate 和 MyBatis的区别?Mybatis的下载和使用Mybatis的工作原理 作者简介 :一只大皮卡丘,计算机专业学生,正在努力学习、努力敲代码中! 让我们一起继续努力学习&#…

从宏观到微观——泽攸科技ZEM系列台式扫描电子显微镜在岩石分析中的应用

岩石作为地球地壳的主要构成物质之一,其微观结构对于了解地质过程、资源勘探以及工程建设具有重要意义。按照岩石的成因,可以把它们分为三类:岩浆岩、沉积岩和变质岩。在地球表面,沉积岩占据75%的份额,而在地壳深度&am…

卡车拆解不再难:可视化示意图的魔力

随着科技的飞速发展和工业的不断进步,卡车作为物流运输的核心力量,承担着越来越多的运输任务。然而,当卡车出现故障或需要维护时,复杂的拆解流程往往让人头疼不已。这时,一份清晰易懂的卡车拆解示意图就显得尤为重要。…

解决本地googleapis 谷歌统计 nodejs 遇到 ECONNRESET和 ETIMEDOUT

在本地通过谷歌分析接口, 获取网站的访问量统计, 用于在管理端面板世界地图显示 获取分析数据的部分代码,这部分很简单示例有 // 获得前10个页面浏览量与页面标题在过去30天 const {BetaAnalyticsDataClient} require(google-analytics/data); const analyticsDataClient ne…

Linux 内存top命令详解

通过top命令可以监控当前机器的内存实时使用情况,该命令的参数解释如下: 第一行 15:30:14 —— 当前系统时间 up 1167 days, 5:02 —— 系统已经运行的时长,格式为时:分 1 users ——当前有1个用户登录系统 load average: 0.00, 0.01, 0.05…

数组的左旋和右旋算法

public class Test09 {public static void main(String[] args) {//右旋 数组逆序遍历,将尾部元素,不断交换至头部int[] arr {1,2,3,4,5,6,7,8};for(int i arr.length-1;i>0;i--) { //遍历一次arr[i] arr[i] ^ arr[i-1];arr[i-1] arr[i] ^ arr[i…

SpringCloud-基于Feign远程调用

Spring Cloud 是一个用于构建分布式系统的开发工具包,它提供了一系列的微服务组件,其中之一就是 Feign。Feign 是一种声明式的 Web 服务客户端,它简化了在 Spring Cloud 中进行远程调用的过程。本文将介绍如何在 Spring Cloud 中使用 Feign 进…