ClickHouse列式存储基础笔记

一、基础概念

ClickHouse是俄罗斯Yandex在2016年开源,使用C++编写的列式存储数据库,近几年在OLAP领域大范围应用。国内:阿里、字节、腾讯 、虎牙、青云、新浪等在使用;国外:优步、Ebay、Spotify、思科等在使用.

  • 官网:Fast Open-Source OLAP DBMS - ClickHouse
  • GitHub: https://github.com/ClickHouse/ClickHouse

二、特点和应用场景

  • 不依赖Hadoop 生态、安装和维护简单
  • 擅长对列的聚合、计数等统计操作性能强劲
  • 对列存储和压缩的采用更好的算法,更好节省成本
  • 拓展性强,在生产中经过实战测试,从单服务器部署到具有数千个节点的集群的线性水平可扩展性
  • 具有企业级安全功能和故障安全机制,可防止数据因应用程序错误和人为错误而损坏
  • 支持主流的大部分SQL语法和函数
  • 吞吐能力强,官方测试支持,支持多种存储引擎,满足多数业务场景
  • 广泛应用:互联网电商、在线教育、金融等领域用,户行为数据记录和分析,搭建数据可视化平台

三、海量数据OLTP/OLAP系统

OLTP:OnLine Transaction Processing,联机事务处理系统, 就是对数据的增删改查等操作

主要存储的是业务数据,如下单、支付、注册,典型代表有Mysql、 Oracle等数据库。这类操作事务进行操作,对响应时间要求高,数据是GB级别。-业务人员

OLAP:OnLine Analytical Processing,联机分析处理系统。存储的是历史数据,如风控平台、BI平台、数据可视化系统等,支持复杂的分析操作,侧重决策,典型代表有 Hive、ClickHouse,基础数据来源于生产系统中的操作日志数据,数据是TB级别。-分析决策人员

四、行存储与列存储的区别

行存储

  • 传统的OLTP关系型数据库 都是行存储

  • 一行中的数据在存储介质中以连续存储形式存在

  • 适合随机的增删改查操作 或者 在行中选取所有属性的查询操作,结合索引提升性能

缺点:

  • 查询的全部记录的某几个字段,但由于这些字段在各行数据单元中,而整个行特别大(字段特别多),程序必须不断读取每一条的行记录取对应的字段,使得读取效率大大降低

列式存储 

  • 存储结构化数据时,在底层的存储介质上,数据是以列的方式来组织的。
  • 存储完若干条记录的首个字段后,再存储这些记录的第二个字段,然后再第三个字段、第四个字段...以此类推。
  • 查询时只有涉及到的列会被读取,而不需要全表扫描,可以显著减少IO消耗,并降低查询响应时间。

小结

  • 列存储在聚合、统计等操作性能会优于行存储。
  • 列存储将多行记录的列连续存储在一起,一列接着一列。
  • 列式存储是同个数据类型,会进行数据压缩率更高,更省空间。
  • 列存储数据更新成本较高,一般适合读多写少的场景,适合 OLAP 分析型系统

未完待续...

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

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

相关文章

已解决redis.clients.jedis.exceptions.JedisConnectionException异常的正确解决方法,亲测有效!!!

已解决redis.clients.jedis.exceptions.JedisConnectionException异常的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 总结 博主v:XiaoMing_Java redis.clients.jedis.exceptions.JedisC…

linux之centos7vmware虚拟机的安装

目录 一、下载合适的vmware和操作系统镜像安装文件 来自引用文章的软件下载本片文章使用的软件下载 二、根据教程进行安装 三、网络配置解说 四、配置网络 编辑虚拟机网络 对VMWARE虚拟机网络进行配置 设置虚拟机网络为NAT模式 设置自定义网络为 VMnet8(NAT模式) 编辑li…

爬虫第3课:二手车搜索

下面这段代码的目的是从58同城网站上爬取与特定二手车品牌相关的网页信息。它使用了urllib.request模块来发送HTTP请求,fake_useragent来生成随机的User-Agent字符串(以避免被网站识别为爬虫),urllib.parse的quote函数来对URL中的…

Panasonic松下PLC如何数据采集?如何实现快速接入IIOT云平台?

在工业自动化领域,数据采集与远程控制是提升生产效率、优化资源配置的关键环节。对于使用Panasonic松下PLC的用户来说,如何实现高效、稳定的数据采集,并快速接入IIOT云平台,是摆在他们面前的重要课题。HiWoo Box工业物联网关以其强…

WordPress站点如何实现发布文章即主动推送到神马搜索引擎?

平时boke112百科很少关注到神马搜索引擎,近日有站长留言想要实现WordPress站点发布文章就主动推送到神马搜索引擎,而且推送成功就自动添加一个自定义字段,以防重复推送。 登录进入神马站长平台后才知道神马也有一个API推送功能,不…

Tcl学习笔记(一)——环境搭建及基本语法

一、Tcl简介 TCL(Tool Command Language,即工具命令语言)是一种解释执行的脚本语言。所谓解释执行语言,是指其不需要通过编译和联结,而是直接对每条语句进行顺序解释、执行。 TCL包含语言和工具库,TCL语言主…

UE5拷贝复制快捷键修改Ctrl+w

UE5默认修改了原来的Ctrl w的快捷键方式,改成Ctrl D 非常不习惯 其实可以在编辑器中进行修改快捷键的 位置在 Editor Preferences ,搜索 Duplicate, 在其中的command selection中,修改 按键为Ctrl w 如图所示; …

LeetCode 面试经典150题 380.O(1)时间插入、删除和获取随机元素

题目: 实现RandomizedSet 类: RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。bool remove(int val) 当元素 va…

C. Left and Right Houses

Problem - C - Codeforces 题目分析 <1>0&#xff1a;想被分割至左边&#xff1b; 1&#xff1a;想被分割至右边 <2>使得左右两侧均有一半及其以上的人满意&#xff08;我*******&#xff09; <3>答案若有多个&#xff0c;取最接近中间位置的答案 <4…

C# 方法(函数)

文章目录 C# 方法&#xff08;函数&#xff09;简单示例程序代码运行效果 值传递和引用传递示例程序 运行效果按输出传递参数运行结果 C# 方法&#xff08;函数&#xff09; 简单示例 程序代码 访问的限制符 using System; using System.Collections.Generic; using Syste…

R语言:microeco:一个用于微生物群落生态学数据挖掘的R包,第八:trans_func class

# 生态学研究人员通常对微生物群落的功能特征感兴趣&#xff0c;因为功能或代谢数据对于解释微生物群落的结构和动态以及推断其潜在机制是强有力的。 # 由于宏基因组测序复杂且昂贵&#xff0c;利用扩增子测序数据预测功能谱是一个很好的选择。 # 有几个软件经常用于此目标&…

性能优化(CPU优化技术)-NEON指令详解

原文来自ARM SIMD 指令集&#xff1a;NEON 简介 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09;开发基础教程 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xf…

Qt5.9.6+VS2015 部署PCL1.8.1

本文系转载&#xff0c;如侵权请告知删除。原博文链接&#xff1a;https://blog.csdn.net/jepco1/article/details/80752954 0 编译环境 所需软件包及其版本 Qt5.9.6 msvc2015_64 VS2015 VTK 8.0.0 https://gitlab.kitware.com/vtk/vtk/tree/v8.0.0 PCL1.8.1 https://github.c…

蓝桥杯刷题(十二)

1.答疑 代码 n int(input()) L [] for i in range(n):a,b,c map(int,input().split())A ab # 进入和答疑时间B abc # 个人总用时L.append([A,B]) L.sort(keylambda x:x[1]) # 个人总用时短的优先 ans tmp 0 # ans为发消息时刻&#xff0c;tmp为前一个人的总用时 for i …

Linux:Gitlab:16.9.2 创建用户及项目仓库基础操作(2)

我在上一章介绍了基本的搭建以及邮箱配置 Linux&#xff1a;Gitlab:16.9.2 (rpm包) 部署及基础操作&#xff08;1&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/136821311?spm1001.2014.3001.5501 本章介绍一下用户的创建&#xff0c;组内设置用户&…

[AIGC] MySQL与PostgreSQL:两种流行的数据库系统的对比

数据库是存储和查询数据的重要工具。在选择数据库时&#xff0c;两个经常被考虑的选项都是开源的&#xff1a;MySQL和PostgreSQL。这两个数据库都与许多应用程序一起使用&#xff0c;但它们在某些方面存在显著的不同。在本文中&#xff0c;我们将比较MySQL和PostgreSQL的一些关…

长安链团队论文入选国际顶会Usenix Security 2024

零知识证明是区块链扩容和隐私保护的关键前沿技术&#xff0c;其天然具备完备性、可靠性和零知识性的特点&#xff0c;是提升区块链交易吞吐量与可扩展性、在验证用户身份的同时保护用户数据隐私&#xff0c;实现复杂计算不可或缺的关键技术。基于零知识证明技术实现高兼容性、…

ansible Playbook案例 安装nginx

目录 核心元素基本组件举例命令行也 是可以创建文件的编辑nginx.yml 运行前三部曲 核心元素 Playbook的核心元素&#xff1a; Hosts&#xff1a;主机组&#xff1b; Tasks&#xff1a;任务列表&#xff1b; Variables&#xff1a;变量&#xff0c;设置方式有四种&#xff1b;…

代码随想录Day51:最佳买卖股票时机含冷冻期、买卖股票的最佳时机含手续费

最佳买卖股票时机含冷冻期 class Solution { public:/*0&#xff1a;状态一&#xff1a;持有股票状态1&#xff1a;状态二&#xff1a;保持卖出股票的状态2&#xff1a;状态三&#xff1a;今天卖出股票3&#xff1a;状态四&#xff1a;今天为冷冻期状态*/int maxProfit(vector…

驱动开发中的DMA是什么

DMA是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。 使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来&#xff0c; 从而大大提高系统的吞吐率。 DMA通常与硬件体系结构&#xff0c; 特别是外设的总线技术密切相关。 DMA方式的数据传输由DM…