ClickHouse(一):ClickHouse介绍及OLAP场景特征

news2024/12/26 12:05:00

目录

1. ClickHouse与其特性

​​​​​​​2. 什么是ClickHouse

​​​​​​​3. OLAP场景的特征


进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容!


​​​​​​​1. ClickHouse与其特性

在大数据处理场景中,流处理和批处理使用到的技术大致如下:

批处理会将源业务系统中的数据通过数据抽取工具(例如Sqoop)将数据抽取到HDFS中,这个过程可以使用MapReduce、Spark、Flink技术对数据进行ETL清洗处理,也可以直接将数据抽取到Hive数仓中,一般可以将结构化的数据直接抽取到Hive数据仓库中,然后使用HiveSQL或者SparkSQL进行业务指标分析,如果涉及到的分析业务非常复杂,可以使用Hive的自定义函数或者Spark、Flink进行复杂分析,这就是我们通常说的数据指标分析。分析之后的结果可以保存到Hive、HBase、MySQL、Redis等,供后续查询使用。一般在数仓构建中,如果指标存入Hive中,我们可以使用Sqoop工具将结果导入到关系型数据库中供后续查询。HBase中更擅长存储原子性非聚合查询数据,如果有大量结果数据后期不需要聚合查询,也可以通过业务分析处理考虑存入HBase中。对于一些查询需求结果反馈非常快的场景可以考虑将结果存入Redis中。

对于大多数企业构建数仓之后,会将结果存入到Hive中的DM层中。DM层数据存入的是与业务强相关的报表数据,DM层数据是由数仓中DWS层主题宽表聚合统计得到,这种报表层设计适合查询固定的场景。对于一些查询需求多变场景,我们也可以使用impala来直接将主题宽表数据基于内存进行交互式查询,对web或者数据分析做到交互式返回结果,使用impala对内存开销非常大。还有另外一种方式是使用Kylin进行预计算,将结果提前计算好存入Hbase中,以供后续交互式查询结果,Kylin是使用空间获取时间的一种方式,预先将各种维度组合对应的度量计算出来存入HBase,用户写SQL交互式查询的是HBase中预计算好的结果数据。最后将数据分析结果可以直接对web以接口服务提供使用或者公司内部使用可视化工具展示使用。

以上无论批处理过程还是流处理过程,使用到的技术几乎离不开Hadoop生态圈。

​​​​​​​2. 什么是ClickHouse

ClickHouse是一个开源的,用于联机分析(OLAP)的列式数据库管理系统(DBMS-database manager system), 它是面向列的,并允许使用SQL查询,实时生成分析报告。ClickHouse最初是一款名为Yandex.Metrica的产品,主要用于WEB流量分析。ClickHouse的全称是Click Stream,Data WareHouse,简称ClickHouse。

ClickHouse不是一个单一的数据库,它允许在运行时创建表和数据库,加载数据和运行查询,而无需重新配置和重新启动服务器。ClickHouse同时支持列式存储和数据压缩,这是对于一款高性能数据库来说是必不可少的特性。一个非常流行的观点认为,如果你想让查询变得更快,最简单且有效的方法是减少数据扫描范围数据传输时的大小,而列式存储和数据压缩就可以帮助我们实现上述两点,列式存储和数据压缩通常是伴生的,因为一般来说列式存储是数据压缩的前提。

​​​​​​​3. OLAP场景的特征

  1. 绝大多数是读请求。
  2. 数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。
  3. 已添加到数据库的数据不能修改。
  4. 对于读取,从数据库中提取相当多的行,但只提取列的一小部分。
  5. 宽表,即每个表包含着大量的列。
  6. 查询相对较少(通常每台服务器每秒查询数百次或更少)。
  7. 对于简单查询,允许延迟大约50毫秒。
  8. 列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)。
  9. 处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)。
  10. 事务不是必须的。
  11. 对数据一致性要求低。有副本情况下,写入一个即可,后台自动同步。
  12. 每个查询有一个大表。除了他以外,其他的都很小。
  13. 查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中。

通过以上OLAP场景分析特点很容易可以看出,OLAP场景与其他通常业务场景(例如,OLTP或K/V)有很大的不同, 因此想要使用OLTP或Key-Value数据库去高效的处理分析查询场景,并不是非常完美的适用方案。例如,使用OLAP数据库去处理分析请求通常要优于使用MongoDB或Redis去处理分析请求。


🏡个人主页:主页包含各种IT体系技术,IT贫道_Apache Doris,Kerberos安全认证,随笔-CSDN博客

📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情!

👍点赞:赞同优秀创作,你的点赞是对我创作最大的认可!

⭐️ 收藏:收藏原创博文,让我们一起打造IT界的荣耀与辉煌!

✏️评论:留下心声墨迹,你的评论将是我努力改进的方向!


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

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

相关文章

刷题小总结

数组 数组是存放在连续内存空间上的相同类型数据的集合。 经典题目: 二分查找 双指针法 滑动窗口 模拟行为 链表 链表的种类主要为:单链表,双链表,循环链表链表的存储方式:链表的节点在内存中是分散存储的&…

php项目内存飚高处理与优化

公司服务器最近内存占用超过阈值一直报警 经过排查,内存占用很多,剩余很少 free -m 排查代码无太多冗余和缓存 最后和运维一起排查,发现宝塔安装后带的gitlab的进程很吃内存,赶紧停用,并卸载无用的软件 最后内存降下来了

大数据Flink(四十九):框架版本介绍和编程语言选择

文章目录 框架版本介绍和编程语言选择 一、框架版本介绍 二、编程语言选择 框架版本介绍和编程语言选择

Udp编程 - 客户端和服务端的注意事项

网上有很多教程,他们说发送使用sendto,接收使用recvfrom就可以,确实如此。但是你会用吗? 我们以QT(C)为例,来使用这个udp实现自发自收的功能(途中我们会用到QThread来开启我们的线程) 服务端(线程) #include "udpserverthread.h" #include …

MySQL数据库配置及创建用户和授权

注意: 都是基于MySQL8.0以上版本 1、检查是否安装过sql [rootlocalhost ~]# rpm -[qa](https://so.csdn.net/so/search?qqa&spm1001.2101.3001.7020) | grep mysql[rootlocalhost ~]# rpm -qa | grep [mariadb](https://so.csdn.net/so/search?qmariadb&…

Day 66-68 主动学习之ALEC

代码: package dl;import java.io.FileReader; import java.util.*; import weka.core.Instances;/*** Active learning through density clustering.*/ public class Alec {/*** The whole dataset.*/Instances dataset;/*** The maximal number of queries that …

修改密码和再次确认密码的js和element-ui的使用

<template><div><!-- plan的插槽 --><plan title"修改密码"><!-- 插槽的名字 --><span slot"header">修改密码</span><el-form:model"ruleForm2"status-icon:rules"rules2"ref"rul…

微服务安全简介

​由于其可扩展性、灵活性和敏捷性&#xff0c;微服务架构已经变得越来越受欢迎。然而&#xff0c;随着这种架构的分布和复杂性增加&#xff0c;确保强大的安全措施变得至关重要。微服务的安全性超越了传统的方法&#xff0c;需要采用全面的策略来保护免受不断演变的威胁和漏洞…

Linuxの Shell 函数、$(())、$( )、``与${ }

删除 # 标准定义 function funName () {....[return int;]}# 简写 function 可以省略 funName () {....[return int;] }# 简写 &#xff08;&#xff09; 可以省略 function funName {....[return int;] }## 函数调用 # 直接 函数名即可 无参数 funName # 参数 函数名即…

基本排序算法

目录 一&#xff0c;插入排序 二&#xff0c;希尔排序 三&#xff0c;选择排序 四&#xff0c;冒泡排序 五&#xff0c;快排 5.1 Hoare法 5.2 挖坑法 5.3 指针法 5.4 非递归写法 六&#xff0c;归并排序 6.1 递归 6.2 非递归 一&#xff0c;插入排序 基本思想&…

蓝牙HID配对过程

配对通常调用分两步 &#xff11;. Bluetooth AdapterService.cancelDiscovery btif_dm_cancel_discovery BTfM_CancelInquiry BTA_DM_SEARCH_CANCEL_CMPL_EVT BTM_BLI_INQ_CANCEL_EVT BTM_BLI_INQ_DONE_EVT discovery_state_changed_cb btif_dm_cancel_discovery BTA_DM_SE…

ElasticSearch学习--自动补全

目录 自定义分词器 介绍 配置自定义分词器 拼音分词器的问题​编辑 总结 DSL自动补全查询 RestAPI实现自动补全 自定义分词器 介绍 自定义分词器只在当前库中有效 配置自定义分词器 拼音分词器的问题 总结 DSL自动补全查询 RestAPI实现自动补全

VLAN---虚拟局域网

VLAN— 虚拟局域网 LAN—局域网 MAN—城域网 WAN—广域网 1.一个VLAN相当于是一个广播域 VLAN—通过路由器和交换机协同工作后&#xff0c;将原本的一个广播域逻辑上&#xff0c;拆 分为多个虚拟的广播域。 VLAN配置&#xff1a; 1.创建VLAN VID—VLAN ID------用来区分和…

1、传统锁回顾(Jvm本地锁,MySQL悲观锁、乐观锁)

目录 1.1 从减库存聊起1.2 环境准备1.3 简单实现减库存1.4 演示超卖现象1.5 jvm锁1.6 三种情况导致Jvm本地锁失效1、多例模式下&#xff0c;Jvm本地锁失效2、Spring的事务导致Jvm本地锁失效3、集群部署导致Jvm本地锁失效 1.7 mysql锁演示1.7.1、一个sql1.7.2、悲观锁1.7.3、乐观…

行为型设计模式之观察者模式【设计模式系列】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everythi…

Alluxio技术分析

Alluxio技术分析 Alluxio: A Virtual Distributed File System Alluxio主要解决的基于磁盘的分布式存储层性能低下的问题&#xff0c;通过alluxio提供的分布式内存来加速数据分析。 Alluxio的这种通过内存加速数据的想法其实是有明确的使用场景的&#xff1a; Immutable da…

【安全】web中的常见编码浅析浏览器解析机制

目录 常见编码 一、ASCII码 二、URL编码 三、Unicode编码 四、HTML实体编码 结合编码理解浏览器解析机制 常见编码 一、ASCII码 ASCII (American Standard Code for Information Interchange&#xff0c;美国信息交换标准代码&#xff09; 计算机内部&#xff0…

QString和QByteArray的区别

QString和QByteArray的区别 本质格式转换QString字符串格式化打印长度 本质 QString是对QByteArray的再次封装 QString可以通过char*来构造&#xff0c;也可以通过QByteArray来构造 QByteArray就是char* QString是编码后的char* QString也是封装了字符串, 但是内部的编码为utf…

Linux笔记——搜索命令find、解压缩命令、vi编辑器、用户权限命令、系统信息相关命令讲解

系列文章目录 Linux笔记——磁盘进行分区与挂载介绍 Linux笔记——管道相关命令以及shell编程 Linux笔记——进程管理与网络监控技术讲解​​​​​​ Linux笔记——rpm与yum下载软件命令介绍 文章目录 系列文章目录 准备工作 一 搜索命令—— find 搜索 1.1 目标 1.…

【UE5 多人联机教程】04-加入游戏

效果 步骤 1. 新建一个控件蓝图&#xff0c;父类为“USC_Button_Standard” 控件蓝图命名为“UMG_Item_Room”&#xff0c;用于表示每一个搜索到的房间的界面 打开“UMG_Item_Room”&#xff0c;在图表中新建一个变量&#xff0c;命名为“Session” 变量类型为“蓝图会话结果…