clickhouse物化视图优缺点_ClickHouse 适用场景

ClickHouse是一个适用于大数据分析的列式数据库,擅长处理大量数据的快速查询。其适合读多写少、无频繁更新、需要高吞吐量的场景。然而,ClickHouse不支持事务、二级索引,SQL支持有限,且不适宜实时更新。常用SQL语法包括默认值处理和数据类型。物化视图可提高查询效率,但也有其限制,如不参与INSERT操作。多种存储引擎如MergeTree提供了特定场景下的优化。
摘要由CSDN通过智能技术生成

Clickhouse是一个用于联机分析处理(OLAP)的列式数据库管理系统(columnar DBMS)。
传统数据库在数据大小比较小,索引大小适合内存,数据缓存命中率足够高的情形下能正常提供服务。但残酷的是,这种理想情形最终会随着业务的增长走到尽头,查询会变得越来越慢。你可能通过增加更多的内存,订购更快的磁盘等等来解决问题(纵向扩展),但这只是拖延解决本质问题。如果你的需求是解决怎样快速查询出结果,那么ClickHouse也许可以解决你的问题。

应用场景:1.绝大多数请求都是用于读访问的2.数据需要以大批次(大于1000行)进行更新,而不是单行更新;或者根本没有更新操作3.数据只是添加到数据库,没有必要修改4.读取数据时,会从数据库中提取出大量的行,但只用到一小部分列5.表很“宽”,即表中包含大量的列6.查询频率相对较低(通常每台服务器每秒查询数百次或更少)7.对于简单查询,允许大约50毫秒的延迟8.列的值是比较小的数值和短字符串(例如,每个URL只有60个字节)9.在处理单个查询时需要高吞吐量(每台服务器每秒高达数十亿行)10.不需要事务11.数据一致性要求较低12.每次查询中只会查询一个大表。除了一个大表,其余都是小表13.查询结果显著小于数据源。即数据有过滤或聚合。返回结果不超过单个服务器内存大小

相应地,使用ClickHouse也有其本身的限制:

1.不支持真正的删除/更新支持 不支持事务(期待后续版本支持)2.不支持二级索引3.有限的SQL支持,join实现与众不同4.不支持窗口功能5.元数据管理需要人工干预维护


常用SQL语法


- 列出数据库列表show databases;-- 列出数据库中表列表show tables;-- 创建数据库create database test;-- 删除一个表drop table if exists test.t1;-- 创建第一个表create /*temporary*/ table /*if not exists*/ test.m1 (id UInt16,name String) ENGINE = Memory;-- 插入测试数据insert into test.m1 (id, name) values (1, 'abc'), (2, 'bbbb');-- 查询select * from test.m1;

默认值


默认值 的处理方面, ClickHouse 中,默认值总是有的,如果没有显示式指定的话,会按字段类型处理:

数字类型, 0
字符串,空字符串
数组,空数组
日期, 0000-00-00
时间, 0000-00-00 00:00:00
注:NULLs 是不支持的

数据类型


1.整型:UInt8,UInt16,UInt32,UInt64,Int8,Int16,Int32,Int64
范围U开头-2N/2~2N-1;非U开头0~2^N-12.枚举类型:Enum8,Enum16
Enum('hello'=1,'test'=-1),Enum是有符号的整型映射的,因此负数也是可以的3.字符串型:FixedString(N),String
N是最大字节数,不是字符长度,如果是UTF8字符串,那么就会占3个字节,GBK会占2字节;String可以用来替换VARCHAR,BLOB,CLOB等数据类型4.时间类型:Date5.数组类型:Array(T)
T是一个基本类型,包括arry在内,官方不建议使用多维数组6.元组:Tuple7.结构:Nested(name1 Type1,name2 Type2,...)
类似一种map的结

物化列


指定 MATERIALIZED 表达式,即将一个列作为物化列处理了,这意味着这个列的值不能从insert 语句获取,只能是自己计算出来的。同时,
物化列也不会出现在 select * 的结果中:

drop table if exists test.m2;create table test.m2 (a MATERIALIZED (b+1),b UInt16) ENGINE = Me
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值