ClickHouse 的 Map 类型以及相关操作(十四)
ClickHouse 的 Map 类型以及相关操作(十四) 本文来源: ( https://www.cnblogs.com/traditional/tag/ClickHouse:一款速度快到让人发指的列式存储数据库/ )
楔子之前在介绍数据类型的时候,有一种没有说,就是 Map。Map 是什么想必无需多言,简单来说的话就是维护键值对之间的映射关系,可以通过键迅速定位到值。
下面就先来创建一张表:
12-- 在定义 Map 的时候,必须要指定键值对的类型CREATE TABLE table_map(a Map(String, UInt64)) ENGINE = Memory();
但是不出意外我们创建表的时候应该会报错,原因就是在表中支持定义 Map 类型的字段还只是试验性的,我们需要将 allow_experimental_map_type 设置为 1,这也是我们单独拿出来介绍的原因。然后我们插入数据:
12345set allow_experimental_map_type = 1;CREATE TABLE table_map(a Map(St ...
ClickHouse 数组的相关操作函数,一网打尽(十)
ClickHouse 数组的相关操作函数,一网打尽 本文来源: ( https://www.cnblogs.com/traditional/tag/ClickHouse:一款速度快到让人发指的列式存储数据库/ )
楔子在一般的关系型数据库,相信很多人都不怎么使用数组这个结构,如果真的需要数组,那么会选择将其变成数组格式的字符串进行存储。但在 ClickHouse 中,数组的使用频率是非常高的,因为它内置了大量和数组有关的函数。
12345678910111213SELECT version();/*┌─version()─┐│ 21.7.3.14 │└───────────┘*/SELECT count() FROM system.functions WHERE name LIKE '%array%';/*┌─count()─┐│ 48 │└─────────┘*/
当前的 ClickHouse 是 21.7.3.14 版本,关于数组的函数有 48 个,通过这个 48 个函数,我们可以对数组进行各种骚操作。当然也有一 ...
ClickHouse 的执行计划以及优化策略(十六)
ClickHouse 的执行计划以及优化策略(十六) 本文来源: ( https://www.cnblogs.com/traditional/tag/ClickHouse:一款速度快到让人发指的列式存储数据库/ )
执行计划如果要在 ClickHouse 20.6 版本之前查看 SQL 语句的执行计划,需要在 config.xml 里面将日志级别设置为 trace。
1234<!-- 新版本默认是 trace --><logger> <level>trace</level></logger>
然后还要真正执行相应的 SQL 语句,在执行日志里面查看,很明显这是非常不方便的。于是 ClickHouse 在 20.6 版本里面引入了原生的执行计划的语法(此时处于试用期阶段),并在 20.6.3 版本中正式转正。
我们当前系列都是基于 ClickHouse 的 21.7.3.14 版本。
然后我们来介绍如何查看执行计划,不过介绍之前我们先创建一张数据表,这次我们采用真实的数据。首先 ...
ClickHouse 的管理与运维(十九)
ClickHouse 的管理与运维(十九) 本文来源: ( https://www.cnblogs.com/traditional/tag/ClickHouse:一款速度快到让人发指的列式存储数据库/ )
楔子下面来说一下 ClickHouse 管理和运维相关的知识,该部分可以让 ClickHouse 变得更加安全与健壮。在前面演示的案例中,为了方便,我们一直使用默认的 default 用户,并且没有配置密码,这显然不符合生产环境的要求。所以接下来,我们就来介绍 ClickHouse 的权限、熔断机制、数据备份和服务监控等知识。
用户配置users.xml 配置文件默认位于 /etc/clickhouse-server 路径下,ClickHouse 用它来定义用户相关的配置项,包括系统参数的设定、用户的定义、权限以及熔断机制等。
用户的角色配置(profile)在 users.xml 中有一个 profiles 标签,在该标签中我们可以定义用户角色,先看看默认配置:
这是 ClickHouse 的默认配置,显然默认有两个角色, ...
ClickHouse 的副本与分片(十七)
ClickHouse 的副本与分片(十七) 本文来源: ( https://www.cnblogs.com/traditional/tag/ClickHouse:一款速度快到让人发指的列式存储数据库/ )
楔子纵使单节点性能再强,也会有遇到瓶颈的那一天,业务量的持续增长、服务器的意外故障,都是 ClickHouse 需要面对的洪水猛兽。但常言道:一个好汉三个帮,一个篱笆三个桩,放在计算机领域就是,一个节点不够,就多来几个节点,下面就来介绍一下 ClickHouse 的集群、副本与分片。
概述集群是副本和分片的基础,它将 ClickHouse 的服务拓扑由单节点延伸到多个节点,但它并不像 Hadoop 生态的某些系统那样,要求所有节点组成一个单一的大集群。ClickHouse 的集群配置非常灵活,用户既可以将所有节点组成一个单一集群,也可以按照业务的诉求把节点划分为多个小的集群。在每个小的集群区域之间,它们的节点、分区和副本数量可以各不相同,如图所示。
从作用来看,ClickHouse 集群的工作更多是针对逻辑层面的,集群定义了多个节点的拓扑关系, ...
ClickHouse 的系统表(十八)
ClickHouse 的系统表(十八) 本文来源: ( https://www.cnblogs.com/traditional/tag/ClickHouse:一款速度快到让人发指的列式存储数据库/ )
楔子我们知道 ClickHouse 自带两个库,分别是 default 和 system,default 是默认的数据库,我们创建表的时候如果不指定库名,那么默认会在 default 下创建。而 system 则是系统库,里面存放了大量与系统相关的表,通过这些系统表我们可以查看服务器的所有状态信息。
12use system;show tables;
总共有 69 个系统表,通过这些系统表,我们可以牢牢把控 ClickHouse 服务端的运行状态。下面来看看就来挑几个介绍一下。
system.asynchronous_metricsClickHouse 在后台会定期对一些指标进行计算,得到内存的使用量,该表负责存储相关指标以及对应的值。
字段:
metric:指标名,String 类型
value:指标值,Float64 类型
system ...
Java8异步利器:CompletableFuture使用教程
CompletableFuture是jdk8的新特性。CompletableFuture实现了CompletionStage接口和Future接口,前者是对后者的一个扩展,增加了异步会点、流式处理、多个Future组合处理的能力,使Java在处理多任务的协同工作时更加顺畅便利。
一、创建异步任务1. supplyAsyncsupplyAsync是创建带有返回值的异步任务。它有如下两个方法,一个是使用默认线程池(ForkJoinPool.commonPool())的方法,一个是带有自定义线程池的重载方法
12345// 带返回值异步请求,默认线程池public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier)// 带返回值的异步请求,可以自定义线程池public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor)
测试 ...
ClickHouse 数据表的增删改(五)
ClickHouse 数据表的增删改(五) 本文来源: (https://www.cnblogs.com/traditional/p/15218565.html)
增跟绝大部分关系型数据库一样,ClickHouse 使用 INSERT 语句进行数据的插入。并且 INSERT语句支持三种语法范式,三种范式各有不同,可以根据写入的需求灵活运用。
其中,第一种是使用 VALUES 格式的常规语法:
12-- 中括号表示里面的内容可以省略INSERT INTO [db.]table_name [(col1, col2, col3...)] VALUES (val1, val2, val3, ...), (val1, val2, val3, ...), ...
这个和其它关系型数据库没什么两样,就不赘述了。
在使用 VALUES 格式的语法写入数据时,还支持加入表达式或函数,例如:
1INSERT INTO partizion_v2 VALUES('matsuri', toString(1+2), now())
第二种是使用指定格式的语 ...
ClickHouse 数据表、数据分区的相关操作,以及 DDL(四)
ClickHouse 数据表、数据分区的相关操作,以及 DDL(四) 本文来源: (https://www.cnblogs.com/traditional/p/15218664.html
楔子在知晓了 ClickHouse 的主要数据类型之后,接下来我们开始介绍 DDL 操作以及定义数据的方法,DDL 查询提供了数据表的创建、修改和删除操作,是最常用的功能之一。
数据库数据库起到了命名空间的作用,可以有效规避命名冲突的问题,也为后续的数据隔离提供了支撑。任何一张数据表,都必须归属在某个数据库之下。创建数据库的完整语法如下所示:
1CREATE DATABASE IF NOT EXISTS db_name[ENGINE = engine]
IF NOT EXISTS 表示如果已经存在一个同名的数据库,则会忽略后续的创建过程;[ENGINE = engine] 表示数据库所使用的引擎类型(是的,你没看错,数据库也支持设置引擎)。
数据库目前一共支持 5 种引擎,如下所示。
Ordinary:默认引擎,在绝大多数情况下我们都会使用默认引擎, ...
ClickHouse 的数据类型(三)
ClickHouse 的数据类型(三) 本文来源: (https://www.cnblogs.com/traditional/p/15218628.html)
楔子作为一款分析型数据库,ClickHouse 提供了许多数据类型,它们可以划分为基础类型、复合类型和特殊类型。其中基础类型使 ClickHouse 具备了描述数据的基本能力,而另外两种类型则使 ClickHouse 的数据表达能力更加的丰富立体。
下面就来分门别类的介绍一下。
基础类型基础类型只有数值、字符串和时间三种类型,注:准确来说,还有布尔类型(Bool),但由于没有 true、false,所以一般都用整型(UInt8)表示布尔类型,1 为真 0 为假。
数值类型数值类型分为整数、浮点数和 Decimal 三类,接下来分别进行说明。
1)Int
在普遍观念中,常用 Tinyint、Smallint、Int 和 Bigint 指代整数的不同取值范围,而 ClickHouse 则直接使用 Int8、Int16、Int32、Int64 来指代 4 种大小的 Int 类型,其末尾的数字则表示 ...