ClickHouse-简单了解

news2025/1/4 17:43:47

文章目录

        • 前言
        • 数据库引擎
        • 数据表引擎
          • Log 系列
          • Integration 系列
          • Special 系列
          • MergeTree 系列
        • ClickHouse 数据类型
        • ClickHouse 常用的函数

前言

什么是 ClickHouse?简单来说它是一个高性能,面向列的SQL数据库管理系统(DBMS),用于在线分析处理(OLAP)。

ClickHouse 提供了大量的数据引擎,分为数据库引擎、表引擎,根据数据特点及使用场景选择合适的引擎,这很重要。其相关文档为:

  • 数据库引擎

  • 数据表引擎

数据库引擎默认是 Ordinary,在这种数据库下的表可以是任意类型引擎。生产环境中常用的表引擎是 MergeTree 系列,也是官方主推的引擎。

数据库引擎

  • Ordinary:默认引擎,在大多数情况下都会使用默认引擎,使用时无须刻意声明。在此数据库下可以使用任意类型的表引擎。
  • Dictionary:字典引擎,此类数据库会自动为所有数据字典创建它们的数据表。
  • Memory:内存引擎,用于存入临时数据。此类数据库下的数据表只会停留在内存中,不会涉及任何磁盘操作,当服务重启后数据会被清除。
  • Lazy:日志引擎,此类数据库下只能使用 Log 系列的表引擎。
  • MySQL:MySQL 引擎,此类数据库下会自动拉取远端 MySQL 中的数据,并为它们创建 MySQL 表引擎的数据表。

数据表引擎

表引擎在 ClickHouse 中的作用十分关键,直接决定了数据如何存储和读取、是否支持 index、支持的 query 种类、是否支持主备复制等。其表引擎比较多,各有各的用途,那应该如何选择呢?

  • Log 系列:用来做小表数据分析。
  • MergeTree 系列:用来做大数据量分析。
  • Integration 系列:多用于外表数据集成。

表引擎概述

在这里插入图片描述

Log 系列

Log 系列表引擎功能相对简单,主要用于快速写入小表(1百万行左右的表),然后全部读出的场景。

几种 Log 表引擎的共性是:

  • 数据被顺序 append 写到磁盘上;
  • 不支持 delete、update;
  • 不支持 index;
  • 不支持原子性;
  • insert 会阻塞 select 操作。

它们彼此之间的区别是:

  • TinyLog:不支持并发读取数据文件,查询性能较差;格式简单,适合用来暂存中间数据;
  • StripLog:支持并发读取数据文件,查询性能比 TinyLog 好;将所有列存储在同一个大文件中,减少了文件个数;
  • Log:支持并发读取数据文件,查询性能比 TinyLog 好;每个列会单独存储在一个独立文件中。
Integration 系列

主要用于将外部数据导入到 ClickHouse 中,或者在 ClickHouse 中直接操作外部数据源。

  • Kafka:将 Kafka Topic 中的数据直接导入到 ClickHouse;
  • MySQL:将 MySQL 作为存储引擎,直接在 ClickHouse 中对 MySQL 表进行 select 等操作;
  • JDBC/ODBC:通过指定 jdbc、odbc 连接串读取数据源;
  • HDFS:直接读取 HDFS 上的特定格式的数据文件。
Special 系列

大多是为了特定的场景而定制。如:

  • Memory:将数据存储在内存中,重启后会导致数据丢失。查询性能极好,适合对于数据持久性没有要求的 1 亿以下的小表。通过用来做临时表。
  • Buffer:为目标设置一个内存 buffer,当 buffer 达到一定条件之后会 flush 到磁盘。
  • File:直接将本地文件作为数据存储。
  • Null:写入数据被丢弃、读取数据为空。
MergeTree 系列

官方主推存储引擎,支持几乎所有 ClickHouse 核心功能。适用于负载任务,可以快速插入数据(极大量的数据插入到一张表中)并进行后续的后台数据处理。

表结构,MergeTree 官方文档表结构:

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
    INDEX index_name1 expr1 TYPE type1(...) GRANULARITY value1,
    INDEX index_name2 expr2 TYPE type2(...) GRANULARITY value2
) ENGINE = MergeTree()
[PARTITION BY expr]
[ORDER BY expr]
[PRIMARY KEY expr]
[SAMPLE BY expr]
[SETTINGS name=value, ...]
  • ENGINE—引擎名和参数。ENGINE = MergeTree(). MergeTree 引擎没有参数

  • PARTITION BY—分区键

  • ORDER BY—表的排序键

  • PRIMARY KEY—主键【默认情况下主键跟排序键(由 ORDER BY 子句指定)相同】

  • SAMPLE BY—用于抽样的表达式

  • SETTINGS—影响 MergeTree 性能的额外参数:

    • index_granularity—索引粒度。即索引中相邻『标记』间的数据行数。默认值,8192。

    • index_granularity_bytes—索引粒度,以字节为单位,默认值: 10Mb。

    • enable_mixed_granularity_parts—启用或禁用通过index_granularity_bytes控制索引粒度的大小。

    • merge_with_ttl_timeout—TTL合并频率的最小间隔时间。默认值: 86400 (1天)。

    • write_final_mark—启用或禁用在数据片段尾部写入最终索引标记。默认值:1(不建议更改)。

    • storage_policy—存储策略。

ReplacingMergeTree:

有去重功能。它会删除具有相同主键的重复项,但数据的去重只会在合并的过程中出现。合并会在未知的时间在后台进行,所以你无法预先作出计划。即不保证没有重复的数据出现。

表结构:

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
) ENGINE = ReplacingMergeTree([ver])
[PARTITION BY expr]
[ORDER BY expr]
[PRIMARY KEY expr]
[SAMPLE BY expr]
[SETTINGS name=value, ...]

合并的时候,ReplacingMergeTree 从所有具有相同主键的行中选择一行留下:

  • 如果ver 列未指定,选择最后一条。
  • 如果ver 列已指定,选择 ver 值最大的版本。

SummingMergeTree:

有汇总求和功能。当合并 SummingMergeTree 表的数据片段时,ClickHouse 会把所有具有相同主键的行合并为一行,该行包含了被合并的行中具有数值数据类型的列的汇总值。

表结构:

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
) ENGINE = SummingMergeTree([columns])
[PARTITION BY expr]
[ORDER BY expr]
[SAMPLE BY expr]
[SETTINGS name=value, ...]

AggregatingMergeTree:

有聚合功能。

CollapsingMergeTree:

有折叠删除功能。

VersionedCollapsingMergeTree:

有版本折叠功能。

GraphiteMergeTree:

有压缩汇总功能。

ClickHouse 数据类型

数据类型

  • Integer types:有符号和无符号整数 ( UInt8UInt16UInt32UInt64UInt128UInt256Int8Int16Int32Int64Int128Int256 )。
  • Floating-point numbers:浮点数( Float32Float64 )和 Decimal 值。
  • Boolean:ClickHouse 具有 Boolean 类型。
  • Strings:StringFixedString
  • Dates:使用 DateDate32 表示天数,使用 DateTimeDateTime64 表示时间实例。
  • JSON:JSON 对象将 JSON 文档存储在单个列中。
  • UUID:用于存储 UUID 值的高性能选项。
  • Low cardinality types:当具有少量唯一值时,请使用 Enum ,当列最多有 10,000 个唯一值时,请使用 LowCardinality
  • Arrays:任何列都可以定义为值的 Array
  • Maps:使用 Map 存储键/值对。
  • Aggregation function types:使用 SimpleAggregateFunctionAggregateFunction 存储聚合函数结果的中间状态。
  • Nested data structures:Nested 数据结构类似于单元格内的表。
  • Tuples:元素的 Tuple ,每个元素都有单独的类型。
  • Nullable:Nullable 允许您在值“缺失”时将值存储为 NULL (而不是列获取其数据类型的默认值)。
  • IP addresses:使用 IPv4IPv6 高效存储 IP 地址。
  • Geo types:用于地理数据,包括 PointRingPolygonMultiPolygon
  • Special data types:包括 ExpressionSetNothingInterval

ClickHouse 常用的函数

时间日期函数

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

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

相关文章

嵌入式知识分享——GDB程序调试方法说明

前 言 本指导文档适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit Linux开发环境:Ubuntu 18.04.4 64bit 虚拟机:VMware15.1.0 U-Boot:U-Boot-2020.04 Kernel:Linux-5.4.70 Linux…

接口调用重放测试-业务安全测试实操(21)

接口调用重放测试。 接口调用遍历测试 接口调用重放测试 测试原理和方法 在短信、邮件调用业务或生成业务数据环节中,如短信验证码、邮件验证码、订单生成、评论提交等,对业务环节进行调用(重放) 测试。如果业务经过调用(重放) 后多次生成有效的业务或数据结果,可判断为存在…

PMP®证书增持 CSPM-2证书,哪里办理?

2023年6月起,持有PMP证书的朋友可以直接增持一个同等级证书CSPM-2,不用重新考试,不用重新学习,原PMP证书不影响正常使用,相当于多了一个国标项目管理领域的证书。 第一步准备资料 1、填写能力评价表 2、提供2张2寸蓝底…

在 Jetson Nano 上安装 ncnn 深度学习框架。

Install ncnn deep learning framework on a Jetson Nano. Introduction.RTTI.CMake 3.18.4.Dependencies.Benchmark.Introduction. 本页面将指导您在 Jetson Nano 上安装腾讯的 ncnn 框架。由于 ncnn 框架面向移动设备(例如 Android 手机),因此它不支持 CUDA。然而,大多数…

考虑储能的电价套利收益模型研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

C语言笔记-1 编译过程字节数

文章目录 C 基础语法注意 C 其他知识点编译过程编译器数据模型区别32/64位机器中,各数据类型所占位数assert() 断言(宏)用法总结与注意事项 C 基础语法 注意 if(a表达式) 判断的就是a的值,而不是判断这个赋值操作的成功与否。 查…

项目经理告诉你,项目管理的基本原则

张伟初升为项目经理,正面临着职业生涯中的挑战。他意识到项目经理的责任是复杂而艰巨的,因此在工作中经常犯错。他发现自己的表达不够清晰,思维混乱;花费大量时间制作的文字记录重点不突出,缺乏逻辑。这些问题破坏了他…

韶音open fit开放式耳机怎么样?和南卡OE Pro相比哪个值得入手的呢?

最近南卡新上线了一款南卡OE Pro,官方宣称佩戴上0压无感,是音质体验最好的耳机,究竟有没有这么好用呢?正好我手头上也有了南卡OE Pro,试用了几天,那么下面我就来给大家对比一下耳机圈内这两款热门的开放式耳…

AI智能服务未来可能的场景

一、产业结构 ChatGPT大模型技术变革加速人工智能产业的变迁 1.投资热 2.产业结构:硬件-云平台-智能应用-应用提供 智能服务产业未来会是一个从算力到服务分发全流程的结构 二、Al智能无处不在的未来,产业将如何演变? 1.技术:…

【正点原子STM32连载】 第四十二章 DS18B20数字温度传感器实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 第四…

IEEE Vis会议内容整理

IEEE Vis 2017 IEEE 2017的VIS会议主题按论文的类型划分为三类:可视分析(VAST)、信息可视化(InfoVis)、科学可视化(SciVis)。因为可视化研究的涉及的方向越来越多,已超出了这三个主…

python爬虫学习简记

目录 页面结构的简单认识 爬虫概念理解 urllib库使用 爬虫解析工具xpath JsonPath Selenium requests基本使用 scrapy 页面结构的简单认识 如图是我们在pycharm中创建一个HTML文件后所看到的内容 这里我们需要认识的是上图的代码结构,即html标签包含了hea…

13、Nginx高级之高级模块(geoip_module)

一、ngx_http_geoip_module模块 ngx_http_geoip_module模块使用预编译的MaxMind数据库,根据客户端IP地址创建变量值 ,读取ip所在地信息。 当使用支持IPv6的数据库(1.3.12, 1.2.7)时,IPv4地址被查找为IPv4映射的IPv6地址。 默认情况下不构建此…

聚焦数字能源供给侧和需求侧,龙讯旷腾出席2023全球数字能源展

本月初,深圳市人民政府新闻办召开2023全球数字能源展新闻发布会,宣布本次展会将于6月29日-7月2日在深圳会展中心(福田馆)举办。此次展会将聚焦数字能源供给侧和需求侧,着力打造数字能源领域集专业性、实践性、国际性和…

打造智能公路工程:BIM+GIS可视化管理平台的应用

摘要: 本文研究了BIM技术在交通基础设施领域的应用现状,并探索了BIM与GIS技术的关键融合方法,研发了BIMGIS可视化管理平台,并通过实际项目应用验证方案的可行性。研究表明,BIM与GIS的融合技术具有广泛的应用价值&…

人人都能生成火爆全网的最不像二维码的二维码

最近有人展示了使用 Stable Diffusion 创建的艺术二维码。这些二维码是使用定制训练的 ControlNet模型生成的。 但是操作门槛有点高。 你需要 GPU,还需要学习如何使用 Stable Diffusion。 现在有一款非常无脑的产品,使用这个产品来创建艺术二维码&…

【算法题】算法之动态规划系列(基础篇)

算法之动态规划系列(基础篇) 一、前置基础二、题目-- 爬楼梯2.1、思路2.2 代码实现 三、题目--杨辉三角3.1、思路3.2、代码实现 四、题目--买卖股票的最佳时机4.1、思路4.2、代码实现4.3、优化 五、比特位计数5.1、思路5.2、代码实现(最高有效…

大数据从0到1的完美落地之sqoop命令执行

Sqoop命令执行 常见命令执行参数 通过Sqoop加不同参数可以执行导入导出,通过sqoop help 可以查看常见的命令行 #常见Sqoop参数 [rootqianfeng01 sqoop-1.4.7] sqoop helpcodegen Generate code to interact with database recordscreate-hive-table Import a ta…

DC-DC降压恒流芯片 12-110V 9V/1A AP2400 LED汽车摩托车灯驱动IC

1,方案来源:深圳市世微半导体有限公司 2,产品BOM表:输入 12-100V 输出9V 0.9A 3,产品线路图:输入 12-100V 输出9V 0.9A 4,产品介绍 AP2400 是一款 PWM 工作模式, 率、外围简单、外驱功率管&#xff0…

Axure教程—复选框全选与反选

很多业务系统之中都会有以列表的形式展现数据的情况,那么问题来了,对列表选择时会出现多选、全选、反选的问题,今天就来介绍如何使用axure原型工具实现复选框的多选、全选和反选。 效果预览 预览地址:https://ddprtm.axshare.com…