
clickhouse
鸭梨山大哎
life hard take it easy
展开
-
clickhouse 数据存储
表由按主键排序的数据片段(DATA PART)组成。当数据被插入到表中时,会创建多个数据片段并按主键的字典序排序。例如,主键是 (CounterID, Date) 时,片段中数据首先按 CounterID 排序,具有相同 CounterID 的部分按 Date 排序。不同分区的数据会被分成不同的片段,ClickHouse 在后台合并数据片段以便更高效存储。不同分区的数据片段不会进行合并。合并机制并不保证具有相同主键的行全都合并到同一个数据片段中。数据片段可以以 Wide 或 Compact 格式存储。原创 2021-09-23 09:24:04 · 1615 阅读 · 0 评论 -
clickhouse分布式DDL查询
默认情况下,CREATE、DROP、ALTER和RENAME查询仅影响执行它们的当前服务器。在集群设置中,可以使用ON CLUSTER子句以分布式方式运行此类查询。例如,以下查询在cluster中的每个主机上创建all_hits Distributed表:CREATE TABLE IF NOT EXISTS all_hits ON CLUSTER cluster (p Date, i Int32) ENGINE = Distributed(cluster, default, hits)为了正原创 2021-09-23 09:13:39 · 751 阅读 · 0 评论 -
clickhouse分布式查询
集群设置中的服务器大多是独立的。你可以在一个集群中的一个或多个服务器上创建一个 Distributed 表。Distributed 表本身并不存储数据,它只为集群的多个节点上的所有本地表提供一个«视图(view)»。当从 Distributed 表中进行 SELECT 时,它会重写该查询,根据负载平衡设置来选择远程节点,并将查询发送给节点。Distributed 表请求远程服务器处理查询,直到可以合并来自不同服务器的中间结果的阶段。然后它接收中间结果并进行合并。分布式表会尝试将尽可能多的工作分配给远程服务器原创 2021-09-23 09:01:12 · 1864 阅读 · 0 评论 -
clickhouse 分布式表
分布式表一般用来查询,实际数据写入还是在本地式表在操作分布式表之前:1 连接到tutorial数据库。2 在MergeTree 引擎上创建hits_v1表,该表将位于所有集群主机上:(要在集群的每台机器上都要创建)CREATE TABLE tutorial.hits_v1 ON CLUSTER '{cluster}' ( <table structure> )ENGINE = MergeTree()PARTITION BY toYYYYMM(EventDate)ORDER BY (原创 2021-09-22 16:30:19 · 759 阅读 · 0 评论 -
clickhouse修改表的TTL
-- 查看表结构describe table my_table;-- 查看建表语句,当然也可以查看TTLshow create table my_table;-- 修改表的TTL(整个表,不是列)-- 如下insertTime是表中的一列数据,代表以这个时间为准,365天自动删除过期数据,就是删除数据插入时间超过365天的数据ALTER TABLE my_table MODIFY TTL insertTime + INTERVAL 365 DAY;...原创 2021-06-23 10:18:57 · 7698 阅读 · 0 评论 -
Bitmap存储入门
BitMap 的基本原理就是用一个bit 位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。案例举例:在Java里面一个int类型占4个字节,假如要对于10亿个int数据进行处理呢?10亿*4/1024/1024/1024=4个G左右,需要4个G的内存。如果能够采用bit存储, 那么占用空间10亿/8/1024/2014=119MB可以看出,使用Bitmap存储可以极大的节约空间.缺点Bitmap 有一个很大的问题就是,就算哪怕我只是存储一个数原创 2021-01-28 15:33:59 · 1503 阅读 · 0 评论 -
clickhouse聚合函数之groupBitmap
用途官方点就是计算基数,直白点就是统计不重复的个数参数为Uint类型,就是不是负数的整数返回值为Uint64类型案例测试数据UserID1123SELECT groupBitmap(UserID) as num FROM t;结果num3再举个例子,比如我们有用户id uid, string类型,相要统计其个数,则SELECT groupBitmap(toUInt64(uid)) as num from usertable;+----+|num |+----+原创 2021-01-17 16:06:11 · 10941 阅读 · 2 评论 -
clclickhouse与bitmap的结合
用途AggregatingMergeTree用来做增量数据统计聚合用bitmap存储用户id,因为id数据量较大,用bitmap存储可以有效节约空间案例举个例子在clickhouse中建立表,引擎为AggregatingMergeTree,因为要做一些自定义聚合,所以选择这个引擎.create table testbit( label String, name String, uv AggregateFunction(groupBitmap,UInt64) comme原创 2021-01-17 15:44:48 · 1799 阅读 · 0 评论 -
clickhouse bitmap入门
从数组构造bitmapSELECT bitmapBuild([1, 2, 3, 4, 5]) AS res, toTypeName(res)┌─res─┬─toTypeName(bitmapBuild([1, 2, 3, 4, 5]))─┐│ │ AggregateFunction(groupBitmap, UInt8) │└─────┴──────────────────────────────────────────┘bitmap转arraySELECT b原创 2021-01-17 15:24:38 · 844 阅读 · 0 评论 -
clickhouse代理Chproxy
为什么开发了Chproxy由于各种原因,ClickHouse 的最大执行时间、最大并发语句可能会超过 max_execution_time 和max_concurrent_queries 的限制:max_execution_time 可能会因为当前实现的缺陷而被超过。max_concurrent_queries 只针对每个节点的限制。如果是在集群节点上,是没法限制集群整体的并发查询数量。这种 “泄漏” 的限制可能会导致所有集群节点的高资源使用率。遇到这个问题后,我们不得不在我们的 ClickHous原创 2021-01-13 19:30:18 · 2315 阅读 · 0 评论 -
clickhouse kafka引擎入门
Kakfa使用方式CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2], ...) ENGINE = Kafka()SETTINGS kafka_broker_list = 'host:por原创 2021-01-13 16:24:17 · 886 阅读 · 0 评论 -
clickhouse HDFS引擎
HDFS使用方式ENGINE = HDFS(URI, format)URI:HDFS文件路径format:文件格式,比如CSV、JSON、TSV等使用示例-- 建表,hdfs上的文件夹要提前存在CREATE TABLE hdfs_engine_table3( emp_id UInt16 COMMENT '员工id', name String COMMENT '员工姓名', work_place String COMMENT '工作地点',原创 2021-01-13 15:57:58 · 1621 阅读 · 0 评论 -
clickhouse CollapsingMergeTree表引擎
CollapsingMergeTree表引擎CollapsingMergeTree就是一种通过以增代删的思路,支持行级数据修改和删除的表引擎。它通过定义一个sign标记位字段,记录数据行的状态。如果sign标记为1,则表示这是一行有效的数据;如果sign标记为-1,则表示这行数据需要被删除。当CollapsingMergeTree分区合并时,同一数据分区内,sign标记为1和-1的一组数据会被抵消删除。每次需要新增数据时,写入一行sign标记为1的数据;需要删除数据时,则写入一行sign标记为-1的数据原创 2021-01-13 15:43:57 · 3946 阅读 · 2 评论 -
clickhouse Aggregatingmergetree表引擎
Aggregatingmergetree表引擎该表引擎继承自MergeTree,可以使用 AggregatingMergeTree 表来做增量数据统计聚合。如果要按一组规则来合并减少行数,则使用 AggregatingMergeTree 是合适的。AggregatingMergeTree是通过预先定义的聚合函数计算数据并通过二进制的格式存入表内。与SummingMergeTree的区别在于:SummingMergeTree对非主键列进行sum聚合,而AggregatingMergeTree则可以指定各种原创 2021-01-13 14:57:36 · 4285 阅读 · 0 评论 -
clickhouse SummingMergeTree表引擎
该引擎继承了MergeTree引擎,当合并 SummingMergeTree 表的数据片段时,ClickHouse 会把所有具有相同主键的行合并为一行,该行包含了被合并的行中具有数值数据类型的列的汇总值,即如果存在重复的数据,会对对这些重复的数据进行合并成一条数据,类似于group by的效果。推荐将该引擎和 MergeTree 一起使用。例如,将完整的数据存储在 MergeTree 表中,并且使用 SummingMergeTree 来存储聚合数据。这种方法可以避免因为使用不正确的主键组合方式而丢失数据。原创 2021-01-13 14:34:37 · 1387 阅读 · 0 评论 -
clickhouse MergeTree系列引擎
在所有的表引擎中,最为核心的当属MergeTree系列表引擎,这些表引擎拥有最为强大的性能和最广泛的使用场合。对于非MergeTree系列的其他引擎而言,主要用于特殊用途,场景相对有限。而MergeTree系列表引擎是官方主推的存储引擎,支持几乎所有ClickHouse核心功能。MergeTree表引擎MergeTree在写入一批数据时,数据总会以数据片段的形式写入磁盘,且数据片段不可修改。为了避免片段过多,ClickHouse会通过后台线程,定期合并这些数据片段,属于相同分区的数据片段会被合成一个新的原创 2021-01-13 13:51:46 · 532 阅读 · 0 评论 -
clickhouse条件函数
-- 可以用类似三元运算符的写法select 12>10 ? 'desc':'asc' as x;+----+|x |+----+|desc|+----+select 12<10 ? 'desc':'asc' as x;+---+|x |+---+|asc|+---+--常规写法select if(12>10,'desc','asc') as x;+----+|x |+----+|desc|+----+...原创 2021-01-09 09:53:55 · 6514 阅读 · 0 评论 -
clickhouse字符串函数
长度以及大小写SELECT --11 length('hello world') as str_length, -- 判断字符串是否为空,空为1,非空为0 --0 empty('hello world'), --1 notEmpty('hello world'), --11 lengthUTF8('hello world'), --11 char_length('hello world'), -- 同 lengthUTF原创 2021-01-09 09:45:30 · 7626 阅读 · 0 评论 -
clickhouse时间日期函数
SELECT toDateTime('2019-07-30 10:10:10') AS time,-- 将DateTime转换成Unix时间戳 toUnixTimestamp(time) as unixTimestamp,-- 保留 时-分-秒 toDate(time) as date_local, toTime(time) as date_time,--原创 2021-01-09 08:59:52 · 10619 阅读 · 0 评论 -
clickhouse算术函数
--求和SELECT plus(12, 21), plus(10, -10), plus(-10, -10);+------------+-------------+--------------+|plus(12, 21)|plus(10, -10)|plus(-10, -10)|+------------+-------------+--------------+|33 |0 |-20 |+------------+---------原创 2021-01-09 08:50:37 · 1366 阅读 · 0 评论 -
clickhouse表引擎
表引擎作用- 决定表存储在哪里以及以何种方式存储- 支持哪些查询以及如何支持- 并发数据访问- 索引的使用- 是否可以执行多线程请求- 数据复制参数表引擎分类引擎分类引擎名称MergeTree系列MergeTree 、ReplacingMergeTree 、SummingMergeTree 、 AggregatingMergeTree CollapsingMergeTree 、 VersionedCollapsingMergeTree 、GraphiteMer原创 2021-01-08 20:00:58 · 1086 阅读 · 2 评论 -
clickhouse数据类型
UUIDuuid类型可以求min,max,计数,但是不能sum1-- 创建表CREATE TABLE t_uuid (id UUID, name String) ENGINE=TinyLog-- 插入数据INSERT INTO t_uuid SELECT generateUUIDv4(), '张三'-- 查询数据SELECT * FROM t_uuid-- 测试函数SELECT min(id),name FROM t_uuid group by id,name;┌────────────原创 2021-01-08 19:33:11 · 2296 阅读 · 0 评论