09 2021 档案

摘要:楔子 我们知道 ClickHouse 自带两个库,分别是 default 和 system,default 是默认的数据库,我们创建表的时候如果不指定库名,那么默认会在 default 下创建。而 system 则是系统库,里面存放了大量与系统相关的表,通过这些系统表我们可以查看服务器的所有状态信息 阅读全文
posted @ 2021-09-28 15:05 古明地盆 阅读(2095) 评论(0) 推荐(0)
摘要:楔子 纵使单节点性能再强,也会有遇到瓶颈的那一天,业务量的持续增长、服务器的意外故障,都是 ClickHouse 需要面对的洪水猛兽。但常言道:一个好汉三个帮,一个篱笆三个桩,放在计算机领域就是,一个节点不够,就多来几个节点,下面就来介绍一下 ClickHouse 的集群、副本与分片。 概述 集群是 阅读全文
posted @ 2021-09-27 20:30 古明地盆 阅读(2819) 评论(1) 推荐(3)
摘要:执行计划 如果要在 ClickHouse 20.6 版本之前查看 SQL 语句的执行计划,需要在 config.xml 里面将日志级别设置为 trace。 <!-- 新版本默认是 trace --> <logger> <level>trace</level> </logger> 然后还要真正执行相应 阅读全文
posted @ 2021-09-13 18:44 古明地盆 阅读(9014) 评论(1) 推荐(1)
摘要:楔子 在 ClickHouse 中还存在一些其它比较有意思的函数,我们来看一下。 and:计算多个值逻辑与连接的结果 该函数只能接收 整型、浮点型和 Null,其逻辑和 Python 中的 and 类似 SELECT and(1, 2, 0, Null, 3, 5); /* ┌─and(1, 2, 阅读全文
posted @ 2021-09-09 13:09 古明地盆 阅读(2895) 评论(0) 推荐(1)
摘要:楔子 之前在介绍数据类型的时候,有一种没有说,就是 Map。Map 是什么想必无需多言,简单来说的话就是维护键值对之间的映射关系,可以通过键迅速定位到值。 下面就先来创建一张表: -- 在定义 Map 的时候,必须要指定键值对的类型 CREATE TABLE table_map(a Map(Stri 阅读全文
posted @ 2021-09-07 19:09 古明地盆 阅读(10506) 评论(5) 推荐(3)
摘要:楔子 下面来说一说日期和时间的相关操作。 toDate、toDateTime:将字符串转成 Date、DateTime SELECT toDate('2020-11-11 12:12:12') v1, toDateTime('2020-11-11 12:12:12') v2; /* ┌─────── 阅读全文
posted @ 2021-09-07 16:29 古明地盆 阅读(12604) 评论(0) 推荐(1)
摘要:楔子 下面来说一说字符串的相关操作。 empty:检测一个字符串是否为空,为空返回 1,不为空返回 0 notEmpty:检测一个字符串是否不为空,不为空返回 1,为空返回 0 SELECT empty(''), empty('satori'); /* ┌─empty('')─┬─empty('sa 阅读全文
posted @ 2021-09-06 15:45 古明地盆 阅读(22288) 评论(0) 推荐(1)
摘要:楔子 这次来说一下 ClickHouse 中的聚合函数,因为和关系型数据库的相似性,本来聚合函数不打算说的,但是 ClickHouse 提供了很多关系型数据库中没有的函数,所以我们还是从头了解一下。 count:计算数据的行数,有以下几种方式: count(字段):计算该字段中不为 Null 的元素 阅读全文
posted @ 2021-09-05 00:19 古明地盆 阅读(14087) 评论(0) 推荐(3)
摘要:楔子 在一般的关系型数据库,相信很多人都不怎么使用数组这个结构,如果真的需要数组,那么会选择将其变成数组格式的字符串进行存储。但在 ClickHouse 中,数组的使用频率是非常高的,因为它内置了大量和数组有关的函数。 SELECT version(); /* ┌─version()─┐ │ 21. 阅读全文
posted @ 2021-09-04 15:12 古明地盆 阅读(24906) 评论(0) 推荐(4)
摘要:楔子 作为一款 OLAP 型的数据库,它的查询功能可谓是重中之重,而且我相信大家在绝大部分时间都在使用它的查询功能,事实上,在日常运转的过程中,数据查询也是 ClickHouse 的主要工作之一。ClickHouse 完全使用 SQL 作为查询语言,能够以 SELECT 查询语句的形式从数据库中选取 阅读全文
posted @ 2021-09-03 15:59 古明地盆 阅读(20759) 评论(2) 推荐(0)
摘要:楔子 Everything is table(万物皆为表)是 ClickHouse 的一个非常有意思的设计思路,正因为 ClickHouse 是一款数据库,所以自然而然数据表就是它的武器,是它与外部进行交互的接口层。在数据表背后无论连接的是本地文件、HDFS、zookeeper,还是其它服务,终端用 阅读全文
posted @ 2021-09-02 15:05 古明地盆 阅读(2335) 评论(0) 推荐(1)
摘要:楔子 目前在 ClickHouse 中,按照特点可以将表引擎分为 6 个系列,分别是合并树、外部存储、内存、文件、接口和其它,每一个系列的表引擎都有独自的特点和使用场景。而其中最核心的当属 MergeTree 系列,因为它们拥有最为强大的性能和最为广泛的使用场景。 经过之前的介绍,我们知道 Merg 阅读全文
posted @ 2021-09-02 15:02 古明地盆 阅读(1430) 评论(0) 推荐(1)
摘要:楔子 表引擎是 ClickHouse 中的一大特色,可以说表引擎决定了一张表最终的性格,比如数据表拥有何种特性、数据以何种形式被存储以及如何被加载。ClickHouse 拥有非常庞大的表引擎体系,总共有合并树、外部存储、内存、文件、接口和其它 6 大类 20 多种表引擎,而在这众多的表引擎中,又属合 阅读全文
posted @ 2021-09-02 14:54 古明地盆 阅读(17321) 评论(9) 推荐(8)
摘要:楔子 日常工作中,我们更多地还是对数据表中的数据进行操作,而对于 OLAP 类型的数据库而言,这些操作还都是查询操作。不过查询涉及到的内容非常多,我们会单独展开,这里先看看如何进行增删改。 增 跟绝大部分关系型数据库一样,ClickHouse 使用 INSERT 语句进行数据的插入。并且 INSER 阅读全文
posted @ 2021-09-02 14:45 古明地盆 阅读(5129) 评论(0) 推荐(2)
摘要:### 楔子 **在知晓了 ClickHouse 的主要数据类型之后,接下来我们开始介绍 DDL 操作以及定义数据的方法,DDL 查询提供了数据表的创建、修改和删除操作,是最常用的功能之一。** ### 数据库 **数据库起到了命名空间的作用,可以有效规避命名冲突的问题,也为后续的数据隔离提供了支撑 阅读全文
posted @ 2021-09-02 14:42 古明地盆 阅读(6294) 评论(0) 推荐(3)
摘要:楔子 作为一款分析型数据库,ClickHouse 提供了许多数据类型,它们可以划分为基础类型、复合类型和特殊类型。其中基础类型使 ClickHouse 具备了描述数据的基本能力,而另外两种类型则使 ClickHouse 的数据表达能力更加的丰富立体。 下面就来分门别类的介绍一下。 基础类型 基础类型 阅读全文
posted @ 2021-09-02 14:36 古明地盆 阅读(5617) 评论(8) 推荐(3)
摘要:ClickHouse 的架构设计 下面我们来聊一聊 ClickHouse 底层设计中的一些概念,这些概念可以帮助我们了解 ClickHouse。 当然这些东西后面会慢慢说。 Column 与 Field Column 和 Field 是 ClickHouse 中最基础的映射单元,作为一款百分百的列式 阅读全文
posted @ 2021-09-02 14:31 古明地盆 阅读(2353) 评论(1) 推荐(2)
摘要:楔子 最近公司决定采用 ClickHouse 来做数据的大规模处理,关于 ClickHouse 虽然早有耳闻,但因为时间原因并没有专门去学习。而公司也考虑到目前内部具有 ClickHouse 使用经验的人还不是很多,因此给了相对比较充足的时间去了解。虽然 ClickHouse 诞生于 2016 年, 阅读全文
posted @ 2021-09-02 14:27 古明地盆 阅读(38563) 评论(14) 推荐(9)