什么是clickhouse
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。
ClickHouse 适用于大规模数据分析、OLAP 场景,特别是对于需要处理海量数据并进行复杂的数据分析和聚合操作的场景。传统数据库则更适用于 OLTP 场景,如在线交易处理、实时数据更新等。
关于clickhouse的更多特性在这里不做阐述,这并非本文的重点,详情可以参考clickhouse官网的相关介绍:clickhouse特性介绍。
部署clickhouse服务器
了解clickhouse协议的最好方法,首先是搭建一个clickhouse服务器,在这里笔者选择使用docker快速地进行环境搭建,具体方法可参考docker搭建clickhouse服务器并访问
客户端工具
- Dbeaver
- Dbvisualizer
- Datagrip
上述三种客户端都支持从官方下载clickhouse的JDBC驱动,该驱动是基于HTTP协议实现的。
在连接时可能会报错不支持LZ4压缩算法,这是因为客户端本身及驱动并不包含相关算法的实现,相应解决方法有两个:
- 在驱动属性中将压缩compress选项设置为false
- 导入相关压缩算法的jar包
协议
clickhouse目前支持两种主流的协议:
- HTTP协议
- TCP协议
HTTP是官方JDBC采用的通信方式,有点是协议简单、你可以在任何平台上用任何编程语言以 REST API 的形式使用 ClickHouse;
TCP协议相对于 HTTP 协议具有更低的开销,因为它没有 HTTP 头部信息和额外的协议解析,TCP 协议支持持久连接,可以在一个连接上进行多次请求和响应,减少连接管理开销;
另外,clickhouse还支持通过其他协议访问,例如Mysql、Postgresql,但存在兼容性问题。
通信端口
- HTTP/HTTPS: 8123/8443
- TCP/Secure TCP: 9000/9440
认证
这里只分析基于HTTP协议通信的场景:
- 用户名密码认证,使用官方jdbc驱动时在每一个HTTP请求中,都会将用户名密码信息记录在HTTP请求的header中
- 证书认证
- 基于其他服务器的认证(LDAP、Kerberos)
数据类型
clickhouse支持标准的SQL规范,且相关结果集有多种呈现方式,例如二进制、JSON、表格等,具体可参考clickhouse数据格式;
结果集同样支持多种数据类型,例如INT、ENUM、string、ipv4…
详情可参考clickhouse数据类型
PS:
以上内容仅为个人学习记录,并不保证输出的准确性,一切请以官方文档为准clickhouse
ClickHouse:列式数据库详解,部署与特性,
2217

被折叠的 条评论
为什么被折叠?



