列式数据库ClickHouse,大宽表聚合、报表一下全搞定

news2025/7/19 17:57:51

一、前言

现在数据库的种类也是特别的多,大致的类别包括:

  • 关系型数据库( MySQL、Oracle、PostgreSQL)
  • 非关系型数据库(Redis、MongoDB、Cassandra、Neo4j)
  • 全文搜索引擎和分布式文档存储系统(Elasticsearch )
  • 列式数据库(ClickHouse)

每种都在各自的领域表现出色,但当涉及到大规模数据分析和复杂查询时,ClickHouse 出现在了舞台上。

ClickHouse 使用列式存储,这意味着它可以高效地执行聚合、过滤和排序操作。

面试经常问到大宽表查询聚合怎么办,这不是解决方案来了嘛!!

今天我们就一起来深入了解一下ClickHouse !看的人多的话,下期出实战哈!

二、ClickHouse简介

ClickHouse是一款由俄罗斯搜索引擎公司 Yandex 开发的开源列式数据库管理系统(DBMS)。发布于2016年,是使用 C++ 编程语言开发的。它的设计目标是用于高性能的大规模数据分析和查询,类似SQL语法降低开发和学习成本。

ClickHouse 是用于实时应用程序和分析的速度最快、资源效率最高的开源数据库。

Github的start数量已经:30.6k

官网地址

在这里插入图片描述

三、OLAP

简介

说起列式数据库,就不得不说OLAP,列式型数据库天然适合OLAP场景,下面我们一起了解一下什么是OLAP

OLAP(联机分析处理)是一种强大的数据处理分析方法,特别适用于需要深入探索大量多维数据的应用场景,如业务智能、数据仓库、销售分析、财务报告等。
OLAP 技术允许用户从不同的角度、维度和层次来查看和分析数据,以发现潜在的关联、趋势和模式,从而更好地做出决策。

场景特性

  • 表很“宽”,这意味着它们包含大量列。
  • 数据集很大,处理单个查询时查询需要高吞吐量(每台服务器每秒高达数十亿行)。
  • 列值相当小:数字和短字符串(例如,每个 URL 60 字节)。
  • 查询提取大量行,但只提取一小部分列。
  • 对于简单查询,允许 50 毫秒左右的延迟。
  • 每个查询有一张大表;除了一张大表外,所有表都很小。
  • 查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合单个服务器的 RAM。
  • 查询相对较少(通常每台服务器每秒数百个查询或更少)。
  • 插入发生在相当大的批次(> 1000 行)中,而不是单行。
  • 事务不是必须的。

为什么适合OLAP

面向列的数据库更适合 OLAP 场景:它们处理大多数查询的速度至少快 100 倍。下面详细解释了原因,但事实更容易直观地展示:

制作了一个动态图片能够直观的看到比行式数据库效率高很多!

在这里插入图片描述

四、业务场景

我们单独讲业务场景的话有点单调,我们一般喜欢那它和Elasticsearch 进行比较!

ClickHouse 和 Elasticsearch 都是用于数据存储和查询的强大工具,但它们在业务场景和使用方面有一些不同之处。

以下是 ClickHouse 和 Elasticsearch 的业务场景对比:

ClickHouse:

  • 数据仓库和大规模数据分析:ClickHouse 是一个出色的大规模数据分析工具,特别适用于存储和查询历史数据。它支持复杂的 SQL 查询,可以执行聚合、过滤、排序等操作,是构建数据仓库的理想选择。

  • 时序数据分析:ClickHouse 的列式存储结构和高性能使其非常适合处理时序数据,如传感器数据、监控数据、日志数据等。

  • 报表生成:如果你需要生成复杂的报表和分析结果,ClickHouse 可以提供高性能的数据检索和处理能力。

  • 数据压缩和存储优化:ClickHouse 使用快速压缩算法,可以大幅减小存储空间占用,降低硬件成本。

  • 复杂查询:ClickHouse 支持复杂的查询和聚合操作,适用于需要深入分析数据的场景。

Elasticsearch:

  • 全文搜索和文本分析:Elasticsearch 是一个出色的全文搜索引擎,专注于文本数据的高级搜索、分析和相关性排序。它通常用于构建搜索引擎、日志分析和全文搜索应用。

  • 实时数据分析:Elasticsearch 支持实时数据分析,可以实时监控、查询和可视化数据。它在监控、日志分析和实时数据仓库等场景中表现出色。

  • 数据探索:Elasticsearch 提供了灵活的数据探索能力,用户可以通过自由组合查询条件来探索数据。

  • 非结构化数据:Elasticsearch 适用于非结构化或半结构化数据,如日志、社交媒体数据、文档等。

  • 数据可视化:结合 Kibana 工具,Elasticsearch 可以用于创建交互式数据可视化仪表板。

  • 高并发查询:相对于ClickHouse 更适合高并发下的查询

五、拓展

当然我们也有列式存储,字节在 ClickHouse 架构基础上进行了升级,于 2020 年在内部启动了 ByConity 项目,并于 2023 年 1 月发布 Beta 版本,5月底正式对外开源。

ByConity官网地址

ByConity 是字节跳动开源的云原生数据仓库,它采用计算-存储分离的架构,支持多个关键功能特性,如计算存储分离、弹性扩缩容、租户资源隔离和数据读写的强一致性等。

通过利用主流的 OLAP 引擎优化,如列存储、向量化执行、MPP 执行、查询优化等,ByConity 可以提供优异的读写性能

在这里插入图片描述

字节也在内部准备从ClickHouse 全面切换为ByConity

我们本次了解一下ClickHouse,后面再深入学习一下ByConity!

五、总结

综上所述,ClickHouse 更适用于大规模数据分析、数据仓库、复杂查询、大宽表聚合、报表等场景,而 Elasticsearch 更适用于全文搜索、实时数据分析、日志分析和数据探索等场景。

大家根据自己的业务具体使用那个即可!

如果想了解Elasticsearch 的可以看一下小编之前写的文章:

Springboot整合ElasticSearch进行简单的测试及用Kibana进行查看

docker搭建Elasticsearch、Kibana、Logstash 同步mysql数据到ES


看到这里了,还请动一下您的发财小手,关注一下公众号哈!!谢谢您的关注!!文章首发看!!!

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

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

相关文章

阿里云绝地反击:老用户购买云服务器99元一年

2023阿里云服务器优惠活动来了,以前一直是腾讯云比阿里云优惠,阿里云绝地反击,放开老用户购买资格,99元服务器老用户可以买,并且享受99元续费,阿腾云亲测可行,大家抓紧吧,数量不多&a…

【LeetCode:80. 删除有序数组中的重复项 II | 双指针】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【排序算法】 计数排序(非比较排序)详解!了解哈希思想!

🎥 屿小夏 : 个人主页 🔥个人专栏 : 算法—排序篇 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言🌤️计数排序的概念☁️什么是计数排序?☁️计数排序思想⭐绝对…

免费低代码软件:最佳选型推荐

低代码是什么?他是鉴于0代码和高代码之间的概念,主要强调用户无需专业的代码知识即可完成一个成熟的应用程序的搭建。而市场上众多的低代码软件,如何选择一个合适自身企业的产品呢?小编建议不妨先试试免费低代码软件Zoho Creator。…

栅格及波段融合工具

支持大部分栅格数据的波段融合,可以将不同栅格数据的任意波段融合到一个栅格文件里,可以选择融合的波段。 下载地址: https://download.csdn.net/download/qq_35582643/88490703?spm1001.2014.3001.5503 运行方式: 输入…

万达商业携手蜂鸟视图实现CAD图纸一键转换三维地图

室内三维电子地图在很多行业已经形成了广泛应用,特别是商业地产领域的需求持续增长。然而,应用方一直面临挑战的难题是传统的地图绘制工作的繁重和难以满足时效性。为应对这一难题,在2022年蜂鸟视图推出CAD快速转换工具,能够将主流…

Python和urllib库下载网页内容

首先我们需要导入urllib库,然后使用urllib库的urlopen()函数来打开网页。urlopen()函数的第一个参数是需要下载的网页的URL,第二个参数是服务器的URL和端口。 import urllib.request ​ # 打开网页 url proxy_url response urllib.request.urlopen…

记一次 .NET 某工厂无人车调度系统 线程爆高分析

一:背景 1. 讲故事 前些天有位朋友找到我,说他程序中的线程数爆高,让我帮忙看下怎么回事,这种线程数爆高的情况找问题相对比较容易,就让朋友丢一个dump给我,看看便知。 二:为什么会爆高 1. …

【java学习—十一】泛型(1)

文章目录 1. 为什么要有泛型Generic2. 泛型怎么用2.1. 泛型类2.2. 泛型接口2.3. 泛型方法 3. 泛型通配符3.1. 通配符3.2. 有限制的通配符 1. 为什么要有泛型Generic 泛型,JDK1.5新加入的,解决数据类型的安全性问题,其主要原理是在类声明时通过…

精选10款Python可视化工具,请查收

今天我们会介绍一下10个适用于多个学科的Python数据可视化库,其中有名气很大的也有鲜为人知的。 1、matplotlib matplotlib 是Python可视化程序库的泰斗。经过十几年它仍然是Python使用者最常用的画图库。它的设计和在1980年代被设计的商业化程序语言MATLAB非常接近…

的修工单管理系统好用吗?工单系统应该怎么选?

在当今的数字化时代,企业运营效率的高低往往取决于其内部管理工具的先进性和实用性。工单管理系统作为企业运营中的重要工具,其作用日益凸显。市场上存在许多工单管理系统,但“的修”以其独特的产品差异化和优势,在竞争中独树一帜…

Linux C语言进阶-D3~D4字符串处理函数

求字符串长度函数strlen、字符串拷贝strcpy、字符串连接strcat、字符串比较strcmp 头文件<string.h> 求字符串长度strlen函数 1、计算字符串长度&#xff0c;并且遇到\0结束&#xff0c;返回字符串长度 2、 计算字符串长度&#xff0c;遇到转义字符&#xff0c;\不算在内…

基于ASP.NET MVC + Bootstrap的仓库管理系统

基于ASP.NET MVC Bootstrap的仓库管理系统。源码亲测可用&#xff0c;含有简单的说明文档。 适合单仓库&#xff0c;基本的仓库入库管理&#xff0c;出库管理&#xff0c;盘点&#xff0c;报损&#xff0c;移库&#xff0c;库位等管理&#xff0c;有着可视化图表。 系统采用Bo…

消息的订阅与发布机制

消息的订阅与发布机制 功能&#xff1a;可完成任意组件之间数据的传递&#xff08;同全局事件总线功能一样&#xff09;区别&#xff1a;与全局事件总线相比&#xff0c;消息的订阅和发布机制需要使用第三方库。我用的是pubsub-js库&#xff0c;其他的第三方库也可以使用&#…

如何在崩坏3rd游戏中使用万安单机单窗口软件进行游戏道具收购?

如何在崩坏3rd游戏中使用窗口软件进行游戏道具收购&#xff1f; 首先&#xff0c;定义在崩坏3rd游戏中&#xff0c;使用窗口软件进行游戏道具收购涉及到账户绑定、软件下载、游戏内购买等步骤。 我在玩崩坏3rd游戏时&#xff0c;使用了窗口软件成功完成了游戏道具的收购。 步骤…

【产品体验】OA办公系统

一、演示地址 http://admin.dianshixinxi.com:90/index 二、办公管理功能 1.我的待办&#xff1a;当前登录用户&#xff0c;办理任务 2.通知公告&#xff1a;通知与公告&#xff0c;已发布通知公告会显示在首页 3.自定义表单&#xff1a;自定义表单&#xff0c;托拉拽的形式…

【Python 零基础入门】Numpy 常用函数

【Python 零基础入门】内容补充 3 Numpy 常用函数 概述Numpy 数组创建np.arangenp.linspace 数组操作reshapeflattenconcatenatesplitvstackhstack 数学运算add 相加subtract 相减multiply 相乘divide 相除 通用函数np.sqrt 平方根np.log 对数np.exp 指数np.sin 正弦 概述 Num…

WPS文件恢复怎么做?记得掌握这5个方法!

“我保存在WPS里的部分文件丢失了&#xff0c;大家快帮我想想办法吧&#xff0c;有什么方法可以恢复这些WPS里的文件吗&#xff1f;真的很重要&#xff01;” WPS Office是一款流行的办公套件&#xff0c;给用户在办公和学习方面提供了很多的便利。但在整理文件时&#xff0c;我…

CV计算机视觉每日开源代码Paper with code速览-2023.10.30

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【语义分割】&#xff08;NeurIPS2023&#xff09;SmooSe…

pc通过window.open打开新页面,新页面要使用原来页面的token

原文链接&#xff1a; https://blog.csdn.net/weixin_42342065/article/details/127420783 (以下为本人笔记使用) 对于前端来说&#xff0c;一般在登录获取token之后会把token存入缓存以及放置在Request Headers请求头中&#xff0c;但是使用iframe/window.open/a这三种标签打…