ClickHouse学习

ClickHouse是由C++编写的列式存储数据库(DBMS),主要用来在线分析处理查询(OLTP),能够用Sql查询生成的实时数据分析报告。

适用场景

大多数是读请求 、数据总是批量写入 、不更新或少更新数据、每次都是读取大量的行、宽表(有大量列的表,这些列中已经冗余所需数据)、简单查询 、处理单个查询需要高吞吐量、无需事务,数据一致性要求低

  1. 实时分析:ClickHouse能够处理大规模数据集的实时查询和分析,非常适合需要在大数据集上进行快速数据分析和报告生成的场景。
  2. 日志分析:由于其高性能和实时处理能力,ClickHouse成为了处理大量日志数据的理想选择,能够将日志数据快速导入并执行复杂的查询和分析。
  3. 时序数据处理:特别适用于处理时间序列数据,如传感器数据、监控数据、日志数据等,能够高效地存储和查询大量的时间序列数据。
  4. 数据仓库:作为企业数据仓库的核心组件,ClickHouse用于存储和处理大量结构化和半结构化数据,提供快速的数据加载、聚合和查询能力。
  5. 实时监控:可以实时处理和分析监控数据,如网络流量数据、服务器性能数据等,快速生成实时报告和仪表盘。
  6. 大数据分析和处理:ClickHouse能够在毫秒级别内对海量数据进行实时查询和分析,支持高并发查询和数据聚合,是大数据分析和处理的理想选择。
  7. 商业智能领域(BI):适用于商业智能领域,能够被广泛应用于广告流量、Web、App流量、电信、金融、电子商务、信息安全、网络游戏、物联网等多个其他领域。
  8. OLAP场景:ClickHouse是面向联机分析处理的列式数据库,支持SQL查询,尤其适用于基于大宽表的聚合分析查询,查询性能非常好。

列式存储的优缺点:

优点缺点
1. 数据检索速度快1. 不适合存储复杂结构的数据
2. 易于进行数据分析聚合、计数、求和等2. 可扩展性有限
3. 数据处理效率高3. 对事务处理的支持不如关系型数据库
4. 通常具有较好的可靠性4. 不适用于需要复杂查询的场景
5. 适用于大规模数据存储同列数据类型相同,便于数据压缩,可以节省空间5. 需要自行处理一致性和完整性问题

ClickHouse几大特点

 1、涵盖了标准的Sql语法,如DDL、DML。具备DBMS所具备的功能如:

  1. 数据定义:允许用户定义数据结构、设置数据的约束条件以及建立相应的数据库模式。
  2. 数据操纵:提供了对数据进行插入、删除、修改和查询的能力。
  3. 数据完整性:确保数据的一致性和准确性,通过强制实施预定义的规则和约束条件。
  4. 并发控制:协调多个用户对数据的同时访问,防止数据出现冲突或不一致。
  5. 数据安全性:通过权限控制和认证机制来保护数据,确保只有授权用户才能访问和修改数据。
  6. 数据恢复:提供故障恢复机制,确保在发生故障时能够恢复数据,并保持数据的一致性。

2、多样化引擎

        把表级的存储引擎插件化,根据表的不同需求可以设定不同的存储引擎(比如可以使用Hive的引擎)。目前包括合并树、日志、接口和其他四大类20多种引擎。

3、高吞吐

        采用LSM Tree结构,数据顺序写,数据插入后不可更改,更新操作将携带时间戳或版本号,在后台定期合并携带最新时间戳或版本号的数据。

4、数据分区与线程级并行

        数据分区可以避免全表扫描,单个操作充分利用多线程压榨cpu性能,但是也导致了qps(查询)性能低。

数据类型

ClickHouse支持以下主要数据类型:

  1. UInt8, UInt16, UInt32, UInt64: 无符号整数类型,分别占用1、2、4、8字节。
  2. Int8, Int16, Int32, Int64: 有符号整数类型,分别占用1、2、4、8字节。
  3. Float32, Float64: 浮点数类型,分别占用4、8字节。
  4. String: 字符串类型,使用UTF-8编码。
  5. Date: 日期类型,使用日期格式存储。
  6. DateTime: 日期时间类型,使用日期和时间格式存储。
  7. Enum: 枚举类型,根据特定的字典进行编码存储。

此外,ClickHouse还支持其他一些数据类型,如Array、Nested、Tuple等复杂数据类型。

表引擎 

ClickHouse表引擎是指在ClickHouse中存储数据的不同方式或存储结构,不同的表引擎在存储和查询数据时会有不同的性能表现和特点。

下面是一些ClickHouse常用的表引擎及其简要介绍:

  1. MergeTree:MergeTree是ClickHouse最常用的表引擎之一,主要用于存储大量有序数据,支持范围查询、聚合和快速插入等操作。

  2. CollapsingMergeTree:在MergeTree的基础上增加了合并重复行的功能,用于去除重复数据。

  3. ReplacingMergeTree:MergeTree的扩展,用于支持根据主键替换数据,适用于需要更新数据的场景。

  4. SummingMergeTree:MergeTree的扩展,支持存储汇总后的数据,适合存储预先聚合好的数据。

  5. AggregatingMergeTree:基于MergeTree,用于在持续更新的数据流中定期计算聚合数据。

  6. Distributed:分布式表引擎,用于将数据分布在集群中不同的物理节点上。

除了上面列举的表引擎外,ClickHouse还支持其他不同类型的表引擎,每种引擎都有其特定的使用场景和优势。选择合适的表引擎可以更好地满足数据存储和查询的需求。

待续。。。 

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

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

相关文章

机器学习中为什么需要梯度下降

在机器学习中,梯度下降是一种常用的优化算法,用于寻找损失函数的最小值。我们可以用一个简单的爬山场景来类比梯度下降的过程。 假设你被困在山上,需要找到一条通往山下的路。由于你是第一次来到这座山,对地形不熟悉,你…

Python——元组

一、元组特性介绍 元组和列表⼀样,也是⼀种序列类型的数据。 唯⼀的不同是,元组是相对不可变的。 二、⾼效创建元组 In [1]: t1 () # 创建 空 元素的元组In [2]: type(t1) Out[2]: tuple有元素的元组实际上是使⽤英⽂的逗号创建的 In [3]:…

【sgCreateTableColumn】自定义小工具:敏捷开发→自动化生成表格列html代码(表格列生成工具)[基于el-table-column]

源码 <template><!-- 前往https://blog.csdn.net/qq_37860634/article/details/136126479 查看使用说明 --><div :class"$options.name"><div class"sg-head">表格列生成工具</div><div class"sg-container"…

RSA加密,解密,加签及验签

目录 1.说明 2.加密和加签的区别 3.后端加密&#xff0c;解密&#xff0c;加签及验签示例 4.前端加密&#xff0c;解密&#xff0c;加签及验签示例 5.前端加密&#xff0c;后端解密&#xff0c;前端加签&#xff0c;后端验签 6.注意事项 1.说明 RSA算法是一种非对称加密…

【JavaScript】输入输出语法

目录 一、输出语法 二、输入语法 一、输出语法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>D…

Java解决石子游戏问题

Java解决石子游戏问题 01 题目 Alice 和 Bob 用几堆石子在做游戏。一共有偶数堆石子&#xff0c;排成一行&#xff1b;每堆都有 正 整数颗石子&#xff0c;数目为 piles[i] 。 游戏以谁手中的石子最多来决出胜负。石子的 总数 是 奇数 &#xff0c;所以没有平局。 Alice 和…

Netty学习------2024/02/19

non-blocking io 非阻塞 IO 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream&#xff0c;它就是读写数据的双向通道&#xff0c; 可以从 channel 将数据读入 buffer&#xff0c;也可以将 buffer 的数据写入 channel&#xff0c; 而之前的 stream 要么是输…

【Linux系列】超算作业调度系统批量取消作业介绍

在使用HPC跑模型时常常需要批量取消提交的job&#xff0c;本文将三种常见的作业调度系统的批量取消作业方法进行介绍&#xff0c;方便平时使用。 一、Slurm Slurm取消/删除作业的命令为scancel&#xff0c;其基本的使用方法有&#xff1a; 命令说明scancel < jobid >删…

HCIA-HarmonyOS设备开发认证V2.0-IOT硬件子系统-I2C

目录 一、 I2C 概述二、I2C 模块相关API三、接口调用实例四、I2C HDF驱动开发4.1、开发步骤(待续...) 坚持就有收获 一、 I2C 概述 I2C&#xff08;Inter Integrated Circuit&#xff09;集成电路间总线是由 Philips 公司开发的一种简单、双向二线制同步串行总线。I2C 以主从方…

面试题:链表相交

链表相交 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 思路 这个题目有2个思路&#xff0c;我先说容易想到的思路 对齐链表…

有关光猫、路由器、交换机、网关的理解

前提 在了解计算机网络的过程中&#xff0c;出现了这四个名词&#xff1a;光猫、路由器、交换机、网络。有点模糊&#xff0c;查阅互联网相关资料&#xff0c;进行整理。如有错误&#xff0c;欢迎大家批评指正。 光猫 首先光猫是物理存在的&#xff0c;大家在家里应该都可以…

初识Nginx

摘要&#xff1a;最近几个项目中的接口总是访问受限&#xff0c;需要后端同事配置Nginx代理&#xff0c;了解下Nginx后面自己配置。 Nginx 是一款高性能的开源 Web 服务器和反向代理服务器。它具有轻量级、高并发、低内存消耗等特点&#xff0c;常被用作静态资源服务、负载…

最新Discuz! X模板文件结构详细手册

| — template — default 系统内置风格模板(默认风格) | — template — default – discuz_style_default.xml 风格安装文件&#xff0c;可用风格导出功能创建 | — template — default – preview.jpg 预览图 | — template — default – common 风格中的公共包含文…

探索与实践:深度解读禅道项目管理工具的高效运用

【引言】 在日益复杂的现代项目管理领域中&#xff0c;一款优秀的项目管理工具能够极大地提升团队协作效率&#xff0c;降低项目风险&#xff0c;而禅道正是这样一款深受开发者和项目经理喜爱的产品。它是一款基于敏捷开发理念设计的开源项目管理软件&#xff0c;涵盖了产品管…

5G网络RedCap

RedCap&#xff1a;RedCap&#xff08;Reduced Capability&#xff09;&#xff0c;即“降低能力”。它是3GPP在5G R17阶段&#xff0c;针对速率、时延要求不高的5G应用场景&#xff0c;专门推出的一种新技术标准协议&#xff0c;旨在全面提升5G网络质量和覆盖率&#xff0c;也…

H12-821_62

62.如图所示,RTA、RTB、RTC、RTD在同一个AS内,通过直连链路建立IBGP邻居关系,RTB、RTC为路由反射器,RTA与RTC为RTB的路由反射器客户端,RTB与RTD为RTC的路由反射器客户端,RTA上将10.1.1.0/24宣告进BGP中,则RTD上收到的BGP路由更新其Originator ID值为() 答案&#xff1a;1.1.1.1…

PostgreSQL教程(三):SQL语言

一、引言 本章提供了一个如何使用SQL执行简单操作的概述。本教程的目的只是给你一个介绍。有许多关于SQL的书籍&#xff0c;包括[melt93]和[date97]。你还要知道有些PostgreSQL语言特性是对标准的扩展。 在随后的例子里&#xff0c;我们假设你已经创建了名为mydb的数据库&…

第24讲投票管理实现

投票管理实现 后端&#xff1a; package com.java1234.controller;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.java1234.entity.*; import com.java1234.service.…

代码随想录算法训练营第二十二天 | LeeCode 235. 二叉搜索树的最近公共祖先,701. 二叉搜索树中的插入操作, 450. 删除二叉搜索树中的节点

题目链接&#xff1a;235. 二叉搜索树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:TreeNode *lowestCommonAncestor(TreeNode *root, TreeNode *p, TreeNode *q){if(rootnullptr||rootp||rootq) return root;TreeNode *leftlowestCommonA…

数据结构之线性表插入与删除运算

线性表 线性表的定义 线性表&#xff0c;或称表&#xff0c;是一种非常灵便的结构&#xff0c;可以根据需要改变表的长度&#xff0c;也可以在表中任何位置对元素进行访问、插入或删除等操作。另外&#xff0c;还可以将多个表连接成一个表&#xff0c;或把一个表拆分成多个表…