clickhouse 为什么快?

news2024/11/15 11:37:41

文章目录

    • @[TOC](文章目录)
  • 前言
  • 一、什么是列式数据库?
      • 为什么要用列式数据库,优点是什么?
  • 二、clickhouse入门
    • 1. 个人猜想
    • 2. 使用clickhouse
      • 引入依赖
      • yml配置
      • 扫描mapper
    • 2.生成相应代码,执行测试用例
    • 查询结果
  • 总结

前言

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


一、什么是列式数据库?

什么事列式数据库,顾名思义它与平时的主流关系型数据库不太一致,例如mysql 它是行式数据库,什么意思呢?
行数据库

这就是普通的行式数据库的存储,一行是一条完整的数据;

接下来看看列式数据库
列数据库

一列是一条完整的数据; 每一行则是同类型的数据;
这就意味着查询的时候, 和存入的时候与传统的行式数据库都不太一致

为什么要用列式数据库,优点是什么?

  1. 列式数据库的存储方式更节省空间

它的存储与传统行式数据库一样,也是以每一行为一个单元进行存储的,由于每一行作为一个存储单元,每一行的数据类型必定一致,这样对于数据存储的压缩更有利

  1. 列式数据库查询字段更少,性能更佳

例如行式数据库,我要查询所有人的年龄,那么我需要扫描全表,然后取每一条的一个属性age,相当于全表扫描,但是有用的属性只有一个,造成了查询效率低下; 列式数据库呢? 只需要取出age属性所在的某一行数据,取到的就都是属性age的值; 所以当有数据统计 如: 聚合 统计的时候,列式存储性能更佳

二、clickhouse入门

1. 个人猜想

既然是列式数据库,那么它的存储与查询肯定也与行式的不太一样
clickhouse与传统关系型数据库读取对比

  • 1 存储

当传入传统的一行数据后, 会对这条数据的字段进行拆分,拆分后,每个字段存入各自的列式数据库中的行,但是他们虽然拆分,但是在所有行中,列号相同

  • 2 查询

当想查询一条传统的一行数据, 会根据条件查询需要的字段
既列式数据库的要查询行的所有数据,然后按照条件过滤,得到相应的列式中的行数据,然后根据行所在的列号,找到其他行,然后拼接成一条条数据
这样就变为了传统数据上的一行行数据,返回结果

2. 使用clickhouse

  • 来吧,展示~~
  • 搞一个springboot项目
  • 引入依赖,由于clickhouse springboot没有相应的封装,所以这里采用 springboot的 dynamic-datasource 搞
  • 切记不可以用springboot的jdbc,他与clickhouse-jdbc 冲突
  • 引入mybatis-plus 然后尝试操作数据库

引入依赖

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>ru.yandex.clickhouse</groupId>
            <artifactId>clickhouse-jdbc</artifactId>
            <version>0.3.2</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.6.1</version>
            <scope>runtime</scope>
        </dependency>

yml配置

spring:
  datasource:
    dynamic:
      primary: master
      strict: false
      datasource:
        master:
          driver-class-name: com.clickhouse.jdbc.ClickHouseDriver
          username: default
          password:
          url: jdbc:clickhouse://ip:8123/数据库名

扫描mapper

启动类增加扫描

@MapperScan("com.example.clickhousedemo.dao")

2.生成相应代码,执行测试用例

测试用例代码:

@SpringBootTest
class ClickhouseDemoApplicationTests {

    @Autowired
    MoniterCpuService moniterCpuService;

    @Test
    void contextLoads() throws Exception{
        List<MoniterCpu> list = moniterCpuService.list();
        for (MoniterCpu moniterCpu : list) {
        	// 类内部重新了toString 方法
            System.out.println(moniterCpu.toString());
        }
    }
}

查询结果

总结

clickhouse 在使用上,与mysql几乎没有差别,遵循sql92标准,某些函数会有不同,然后体验它优越的性能就好了~~
文章中涉及到的所有源码: 项目地址

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

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

相关文章

还在玩传统终端,不妨来试试全新 AI 终端 Warp

壹 ❀ 引 最近一段时间&#xff0c;AI领域如同雨后春笋般开始猛烈生长&#xff0c;processon&#xff0c;sentry&#xff0c;一些日常使用的工具都在积极接入AI&#xff0c;那么正好借着AI的风头&#xff0c;今天给大家推荐一款非常不错的智能终端 warp&#xff08;目前仅限ma…

Servlet配置与高效部署

作出网页后端的核心目标就是 , 基于 tomcat 编程进行网站后端的开发 , 肯定需要对 http 协议进行一系列操作 , 幸运的是 tomcat 已经把这些 http 相关的底层操作封装好了(监听端口 , 接收连接 , 读取请求 , 解析请求 , 构造请求对象等一系列操作) , 只需调用 tomcat 为我们提供…

VMware虚拟机安装Linux教程(Windows版)

VMware虚拟机安装Linux教程&#xff08;Windows版&#xff09; 第一步、安装 VM &#x1f4e2;&#x1f4e2;&#xff1a;VMware下载以及Linux系统镜像需要的小伙伴可以私信我&#xff0c;也可以去官网上下载&#xff0c;文章中不能涉及安装包啥的&#xff0c;不然显示侵权&a…

如何一键免费压缩PDF文件?最好的 PDF 阅读器免费下载!

PDF&#xff08;便携式文档格式&#xff09;是一种独立于应用程序和平台的通用文件格式。它确保不同的用户可以在各种软件、硬件或操作系统中接收具有相同格式和视觉呈现的相同内容。您还可以在需要时对 PDF 进行电子签名。因此&#xff0c;PDF 文档在学术和正式用途中具有普遍…

Idea Git 分支合并全部文件或指定文件

这里有两个分支&#xff0c;一个 master 主分支&#xff0c;一个 hy-master 分支 一、将 hy-master 全部合并到 master 1、先回到 master 分支 2、在当前工作目录的分支为 master 的基础上&#xff0c;点击 hy-master 分支 点击 Merge into Current&#xff0c;就会将 hy-mas…

真题详解(MTTR)-软件设计(五十七)

设计模式详解-软件设计&#xff08;五十六)https://blog.csdn.net/ke1ying/article/details/130327216 采用DMA方式传送数据的时候&#xff0c;都是占用 存储周期。 解析&#xff1a; 因为不需要与cpu交互&#xff0c;所以不是指令周期&#xff0c;与外设交互&#xff0c;所…

nodejs+python+php+springboot+vue 女生穿衣搭配系统

本文研究的女生穿衣搭配管理基于当前较为流行的B/S结构 通过本系统&#xff0c;实现了不同权限的用户登录&#xff0c;包括用户和管理员。管理员:用户管理、类型信息管理、服饰单品管理、今日搭配管理、论坛管理、系统管理、我的收藏管理。用户&#xff1a;类型信息管理、服饰单…

【项目实战】一个赛事组队交流分享平台——微信小程序 uniapp+springboot微服务

前言 去年微信小程序国三&#xff0c;今年这个比赛绝版了&#xff0c;把这个项目开源出来给大家学习一下吧&#xff0c;整个架构还是比较完善的&#xff0c;特别适合学习。&#xff08;开源不易&#xff0c;求个star&#xff09; 项目地址&#xff1a;https://github.com/Unde…

【独具匠心设计】全网最好的国学,历代文学,名著,小说网推荐

极力推荐一个功能简单、易用、访问快捷、界面大气,清爽、资源丰富、设计专业、完全免费的文学网站。它的名字叫“历代文学”&#xff0c;是由成都心海科技公司所研发&#xff0c;设计真可谓独具匠心。 “历代文学”收录了来自古今中外 20 多个朝代&#xff0c;近 30个 国家的作…

Mysql列的完整性约束详解(主键约束)

文章目录 前言一、设置表字段的主键约束&#xff08;PRIMARY KEY&#xff0c;PK&#xff09; 1.单字段主键2.多字段主键总结 前言 完整性约束条件是对字段进行限制&#xff0c;要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件&#xff0c;数据库系统将不再…

AUTOSAR文档如何阅读 -- 这些缩写是干嘛的!!!

目录 1 Autosar BSW Module List 2 Autosar规范文档的类型 2.1 Autosar文档中提到的缩写 3 如何快速查看相邻CP Autosar版本之间的差异 结尾 优质博文推荐阅读&#xff08;单击下方链接&#xff0c;即可跳转&#xff09;&#xff1a; 点击返回「《Autosar从入门到精通-实…

[入门必看]数据结构5.2:二叉树的概念

[入门必看]数据结构5.2&#xff1a;二叉树的概念 第五章 树与二叉树5.2 二叉树的概念知识总览5.2.1_1 二叉树的定义和基本术语5.2.1_2 二叉树的性质5.2.2 二叉树的存储结构 5.2.1_1 二叉树的定义和基本术语二叉树的基本概念二叉树的五种状态几个特殊的二叉树满二叉树&#xff1…

智慧医院的信息集成平台建设与配电设计方案

摘要&#xff1a;随着云计算、5G、大数据、物联网等技术的不断发展与进步&#xff0c;推动着智慧医院建设的飞速发展。智慧医院建设强调医院内部业务的多流程联动和医疗信息互联互通的高协同效率&#xff0c;突出了数据驱动下构建高质量数据的必要性。文章提出并分析智慧医院发…

操作Redis只有RedisTemplate吗?

还在只用 RedisTemplate 访问 Redis 吗&#xff1f;这几种方式给你安排上&#xff01; 开始准备RedisTemplateJPA RepositoryCache总结 开始准备 开始之前我们需要有Redis安装&#xff0c;我们采用本机Docker运行Redis&#xff0c;主要命令如下 docker pull redis docker ru…

细数Java集合List的10个坑

1 Arrays.asList转换基本类型数组的坑 在实际的业务开发中&#xff0c;我们通常会进行数组转List的操作&#xff0c;通常我们会使用Arrays.asList来进行转换 但是在转换基本类型的数组的时候&#xff0c;却出现转换的结果和我们想象的不一致。 上代码 int[] arr {1, 2, 3}…

Centos安装python3详细教程

Centos安装python3详细教程 转载&#xff1a;https://blog.csdn.net/qq_32742573/article/details/119849634?spm1001.2014.3001.5502 文章目录 Centos安装python3详细教程 1、先查看系统python的位置在哪儿2、下载python3的包之前&#xff0c;要先安装相关的依赖包&#xff0…

接打电话的蓝牙耳机哪个牌子好?接听电话蓝牙耳机推荐

耳机已经成为人们生活中不可或缺的重要物件&#xff0c;乘坐公共交通&#xff0c;在图书馆学习&#xff0c;在操场上运动&#xff0c;可以看到许多不同种类的蓝牙耳机&#xff0c;可知耳机品牌、种类众多&#xff0c;质量良莠不齐&#xff0c;耳机产品的价格区间也相差巨大&…

DAB-Deformable-DETR代码学习记录之模型构建

DAB-DETR的作者在Deformable-DETR基础上&#xff0c;将DAB-DETR的思想融入到了Deformable-DETR中&#xff0c;取得了不错的成绩。今天博主通过源码来学习下DAB-Deformable-DETR模型。 首先我么看下Deformable的创新之处&#xff1a; Deformable-DETR创新 多尺度融合 首先便是…

如何真正认识 Linux 系统结构?这篇文章告诉你

Linux 系统一般有 4 个主要部分&#xff1a;内核、shell、文件系统和应用程序。内核、shell 和文件系统一起形成了基本的操作系统结构&#xff0c;它们使得用户可以运行程序、管理文件并使用系统。 Linux内核 内核是操作系统的核心&#xff0c;具有很多最基本功能&#xff0c;…

Springboot获取jar包中resources资源目录下的文件

阿萨斯多问题现象&#xff1a; 今天在项目中遇到一个业务场景&#xff0c;需要用到resources资源目录下的文件&#xff0c;然后就在思考一个问题&#xff1a; 当项目打成jar后&#xff0c;Springboot要如何获取resources资源目录下的文件呢&#xff1f; 问题分析&#xff1a; 如…