Clickhouse

clickhourse是一个真正意义上的列式存储数据库,传统数据库存储数据都是按照数据进行存储 表代表着目录  列是一个文件

Mysql 是行式存储,保证数据的完整性

行列的区别

oltp的事务计算

ll |grep click 查看开启的命令

cd /etc/clickhouse-server/里面是click的核心配置文件

cd /var/lib/clickhouse/ 数据的目录

里面有核心数据库 data(存数据) metadata(数据库,表)

/var/log/clickhouse-server/ 排查错误日志

-h 访问哪一个机械

clickhouse端口8123

Mysql 9004

Postgresql 9005

单机模式远程连接外机

Clickhouse -h slave01

Clickhouse-client -h slave01

Clickhouse 效率问题 引擎很强大

Clickhouse 建库

CREATE DATABASE test 创建数据库

Show create database test;查看数据库

Atomic 默认库的引擎

查看数据类型库 less

test.sql

Store 存储

quit;退出

Mysql 库引擎,clickhouse 本身并不存储数据,只是将请求转发到mysql,同样,

Clickhouse 还提供了针对 postgresql ,sqllite 的库引擎

关注experimental sql

数据类型

clickhouse的极简化在基础数据类型中体现得尤为明显

Int8-[-128:127 ] 占用8个字节,对应java中的byte

Int16-[-32768:32767] 占用16个字节,对应java跟踪的short

Int32-占用32个字节,对应java中的int

Int64-占用64个字节,对应java中的long

无符号整形范围

UINT8-[0:255]

UINT16-[0:255]

UIN32-[0:255]

UIN64-[0:255]

Boolean

Clickhouse 没有定义表示true 和 false的布尔类型的数据,通常都是直接用使用UInt8

浮点型 (精度有丢失)

Float32 -float

Float64 -double

解决办法(Decimal型(有符号的浮点数))三种声明:Decimal32(s)Desimal64(s)后面的 s 表示小数点后的数字位数,前面的32表示浮点精度,决定可以有多少个十进制数字(包括小数位),也就代表不同的取值范围

字符串型

clickhouse字符型数据使用string进行声明 字符串可以是任意长度,没有编码的概念,字符串可以是任意的字符集,比如 lengthUTF8函数是假设字符串以UTF8编码,计算的字符串包含的 Unicode子字符的长度

还有一个固定长度的字符串类型FixedString(N)这个 N 就是要声明的字节数,如果字符串包含的字节数不足N,将会对字符串末尾进行空字节填充,如果字符串包含的字节数大于 N ,将会抛出异常,可以用来保存一些列如手机号码,IP地址这一类等长的规范数据,在实际开发中使用比较少

枚举类型 (-m支持多行的参数)

包含 Enum8 和 Enum

Clickhouse 插入的时候要(),(),()一批一批的插入,为了更好的保证原子性

Cast (x, "Int8") 说明了key只是表面的,底层存储的就是 对应Int8的值,也就是数字

优点:不用维护字典表

数组类型

类型声明:array(T),表示一个有T类型元素组成的数组,T可以是任意类型,甚至也可以是数组类型,但是不建议使用多位数组,clickhouse对多维数组的支持有限,列如在MergeTree引擎中就不能存储多维数组

时间类型

有三种数据类型

Data 可以节后一个年月日格式的字符串,列如201-10-13

Datatime 可以接收一个年月日时分秒格式的字符串列如2021-10-13 20:50:10.232

Datatime64 可以接受一个年月日时分秒,毫秒格式的字符串,列如2021-10-13 20:50:10.232

可为空类型

可以在前面的字段加上Nullable (Int8), 对于整数类型,-1可以代替空 不建议使用

UUID 产生是无序,建议是有序的

MergeTree(核心)(合并数,适用于高负载任务的最通用和功能最强大的表引擎)

就像mysql提供lnnodb和myisam等等多种数据引擎来对表进行管理一样

Replicated 表示在另一台机器上存储一个副本

日志 最小功能的轻量级引擎(练习,日志)

集成引擎 用于与其他的数据存储与处理系统集成的引擎

尽量不要产生虚拟列,如果有的话,可以 提前处理好当成字段,做个宽表

MergeTree

  1. Partition by

概念:合并 LSM hbase中提到过 直接写到内存 查询相对比较慢 基于olap的这个场景

合并的时机:在后台执行一次合并的操作

手动合并:optimize table 表名 final;业务夜晚定时合并

2.order by排序键(有序保存)

3.primary key (主键) 并不要求数据唯一性 相当于对排序再做了一个索引

索引粒度并不能决定你数据的分布情况

clickhouse中的主键相当于给主键列的数据建立了一级索引,而实际上,在一级索引的基础上,clickhouse还提供了二级索引的功能,相当于给一级索引再建立一个索引,二级索引的目的同样也是为了加快数据检索速度

明确的说是把一级索引再优化合并成二级索引,同样也是更快的加快数据检索速度

布隆过滤器也可以 建立一个集合,把集合全部传进去然后比较

TTL 数据存活时间 (可以用来指定行存储的持续时间)字段和表都可以用

MergeTree可以针对表或者列声明数据存活时间

注意列式 TTL 不能用于主键 很好理解,数据删了,那我

索引怎么办

用法:只能够表示存活多长时间

这里是定义clickhouse如何移除过期数据

Delete -删除过期的行 默认行为

TO DISK  'aaa' 将数据块移动到磁盘 ‘aaa’

TO VOLUME 'bbb' 将过期的数据块移动到卷 'bbb' 将远程的目录挂在卷里面,是不是就可以远程的文件共享了 就是把虚拟的磁盘挂到卷里面

GROUP BY 聚合过期的行

后面的 where 可以指定哪些过期的行为会被删除或聚合(不适合用于数据移动)

SAMPLE BY 数据抽样

数据抽样同样用于大数据分析, 可以极大提升数据分析的性能,采用修饰符只能用在MergeTree的表中才有效,并且抽样表达式指定的列,必须包含在主键中,进行了采样声明后,就可以在查询时进行采样查询 10%

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值