ClickHouse-简单了解

这篇具有很好参考价值的文章主要介绍了ClickHouse-简单了解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

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

  • 数据库引擎

  • 数据表引擎

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

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

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

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

表引擎概述

ClickHouse-简单了解

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 常用的函数

时间日期函数文章来源地址https://www.toymoban.com/news/detail-511862.html

到了这里,关于ClickHouse-简单了解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据ClickHouse进阶(六):Distributed引擎深入了解

    文章目录 Distributed引擎深入了解 一、简单介绍 二、分布式表插入数据

    2024年01月15日
    浏览(36)
  • 五分钟了解GPT 模型背后的原理是什么?为什么 GPT 模型能生成有意义的文本?为什么 GPT 模型不会做简单的数学题?为什么有人担心 GPT 模型可能会危害人类?

    由于 GPT 模型的相关内容非常丰富,所以我计划对它进行更加深入的学习和研究,并把它应用到自己的工作、生活和学习中,用来提高工作效能,改善生活质量,提升学习效果。 按照第一性原理,在开始实战演练之前,我认为有必要先了解一下 GPT 模型背后的原理,这样才能

    2024年02月07日
    浏览(65)
  • 大数据系列——什么是ClickHouse?ClickHouse有什么用途?

    目录 一、什么是ClickHouse 二、ClickHouse有什么用途 三、ClickHouse的不足 四、适用场景 五、ClickHouse特点 六、ClickHouse VS MySQL 七、类SQL 语句  八、核心概念 clickHouse是俄罗斯的 Yandex 公司于 2016 年开源的 列式存储数据库, 使用 C++ 语言编写; 一款面向 OLAP 的数据库 ClickHouse支持类

    2024年01月22日
    浏览(41)
  • clickhouse安装及简单使用

    clickhouse设计比较精简,具有强大的数据写入性能、极其高效的查询性能、高效压缩存储,单机部署性能丝毫不逊色于传统的大数据集群。 由于使用体验简单直接,使得运维工作同样变的简单。 版本迭代相当迅速,主动兼容了jdbc、mysql和postgresql这些成熟产品,周边生态成熟。

    2024年01月20日
    浏览(28)
  • clickhouse简单安装部署

    目录 前言(来源于官方文档): 一.下载并上传 1.下载地址:点我跳转下载 2.上传至Linux 二.解压和配置 1.解压顺序 注意:必须按照以下顺序解压,并且每解压一个都要执行该解压后文件的install/doinst.sh文件  解压步骤: 三.启动 1.启动服务 2.启动客户端 四.建表语法与clickhouse数

    2024年02月07日
    浏览(35)
  • 01-单节点部署clickhouse及简单使用

    1、下载rpm安装包: 官网:https://packages.clickhouse.com/rpm/stable/  clickhouse19.4版本之后只需下载3个rpm安装包,上传到节点目录即可 2、rpm包安装: 安装顺序为conmon-server-client 执行 rpm -ivh ./clickhouse-*.rpm 即可自动顺序安装 安装中途enter默认即可; 3、clickhouse常见目录介绍: /etc/clic

    2024年02月05日
    浏览(38)
  • clickhouse ssb-dbgen数据构造 及 clickhouse-benchmark简单压测

    1. 数据样例 官方文档有给出一批数据样例。优点是比较真实,缺点是太大了,动辄上百G不适合简单小测试 Anonymized Yandex.Metrica Dataset Star Schema Benchmark WikiStat Terabyte of Click Logs from Criteo AMPLab Big Data Benchmark New York Taxi Data OnTime 相对来说 ssb-dbgen工具 生成的表比较简单,数据量也可

    2024年02月11日
    浏览(38)
  • Docker Desktop 安装 ClickHouse 超级简单教程

    下载 Docker desktop Docker Desktop 是 Docker 公司为桌面操作系统(如 macOS 和 Windows)提供的一种应用程序。它允许开发人员在其本地计算机上运行 Docker 容器,从而提供了一个方便的开发和测试环境。 Docker Desktop 提供了一种简单的方式来安装和管理 Docker 引擎、Docker CLI(命令行界面

    2024年03月23日
    浏览(41)
  • 数据仓库系列:StarRocks的简单试用及与clickhouse的对比

    StarRocks 与 ClickHouse 是两款基于 MPP 架构的列式数据库管理系统,都可以提供高性能的 OLAP 分析能力。 但是它们在功能、性能和使用场景上也有一些区别。 总结如下: StarRocks 与 ClickHouse 最大的区别就在于对于 join 的处理上 。 ClickHouse 虽然提供了 join 的语义,但使用上对大表

    2024年02月09日
    浏览(44)
  • 开源XL-LightHouse与Flink、ClickHouse之类技术相比有什么优势

    Flink是一款非常优秀的流式计算框架,而ClickHouse是一款非常优秀的OLAP类引擎,它们是各自所处领域的佼佼者,这一点是毋庸置疑的。Flink除了各种流式计算场景外也必然可以用于流式统计,ClickHouse同样也可以用于流式统计,但我不认为它们是优秀的流式统计工具。XL-Lighthou

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包