文章目录
1.ClickHourse入门简介
(1)什么是行存储
- 传统的OLTP关系型数据库 都是行存储
- 一行中的数据在存储介质中以连续存储形式存在
- 适合随机的增删改查操作 或者 在行中选取所有属性的查询操作,结合索引提升性能
- 缺点
- 查询的全部记录的某几个字段,但由于这些字段在各行数据单元中,而整个行特别大(字段特别多),程序必须不断读取每一条的行记录取对应的字段,使得读取效率大大降低
- 例子:找某个订单的话,就很方便,订单的全部信息都能获取; 但找全部订单总金额就需要遍历多个数据
user_name | product_name | order_id | tatal_amount |
---|---|---|---|
李祥 | 六位地黄丸 | 20220123343485 | 4999 |
张三 | 苹果13手机 | 20220121347880 | 1699 |
(2)什么是列式存储
- 存储结构化数据时,在底层的存储介质上,数据是以列的方式来组织的
- 存储完若干条记录的首个字段后,再存储这些记录的第二个字段,然后再第三个字段、第四个字段…
- 查询时只有涉及到的列会被读取,而不需要全表扫描,可以显著减少IO消耗,并降低查询响应时间
- 例子:查询全部成交额,只需要把订单金额拿出来即可
李祥 | 张三 |
---|---|
六味地黄丸 | 苹果13手机 |
20220123343485 | 20220121347880 |
4999 | 1699 |
- 总结
- 描述的是底层存储介质上,数据的组织形式,哪种组织对应哪种业务需求
- 列存储在聚合、统计等操作性能会优于行存储
- 列存储将多行记录的列连续存储在一起,一列接着一列
- 列式存储是同个数据类型,会进行数据压缩率更高,更省空间
- 列存储数据更新成本较高,一般适合读多写少的场景,适合 OLAP 分析型系统
(3)什么是ClickHouse
- ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的用于在线分析处理查询(OLAP :Online Analytical Processing)MPP架构的列式存储数据库(DBMS:Database Management System),能够使用 SQL 查询实时生成分析数据报告。ClickHouse的全称是Click Stream,Data WareHouse。
- clickhouse可以做用户行为分析,流批一体。
- 线性扩展和可靠性保障能够原生支持 shard + replication。
- clickhouse没有走hadoop生态,采用 Local attached storage 作为存储。
(4)ClickHouse的特点和应用场景
- 不依赖Hadoop 生态、安装和维护简单
- 擅长对列的聚合、计数等统计操作性能强劲
- 对列存储和压缩的采用更好的算法,更好节省成本
- 拓展性强,在生产中经过实战测试,从单服务器部署到具有数千个节点的集群的线性水平可扩展性
- 具有企业级安全功能和故障安全机制,可防止数据因应用程序错误和人为错误而损坏
- 支持主流的大部分SQL语法和函数
- 吞吐能力强,官方测试支持,支持多种存储引擎,满足多数业务场景
- 广泛应用:互联网电商、在线教育、金融等领域用,户行为数据记录和分析,搭建数据可视化平台
(5)整体架构
2.Docker部署ClickHouse
(1)Docker部署ClickHouse
- docker的官网:https://hub.docker.com/
提前在有docker环境的centos7系统下执行命令:
docker run -d --name clickhouse --ulimit nofile=262144:262144 \
-p 8123:8123 -p 9000:9000 -p 9009:9009 --privileged=true \
-v /usr/local/clickhouse/log:/var/log/clickhouse-server \
-v /usr/local/clickhouse/data:/var/lib/clickhouse clickhouse/clickhouse-server:22.2.3.5
-
默认http端口是8123,tcp端口是9000, 同步端口9009
-
web可视化界面:http://ip:8123/play ip为你当前机器的ip地址
注意:
- 在任何其他情况下不能将ClickHouse服务器暴露给公共互联网
- ClickHouse体验平台界面实际上是通过ClickHouse 的HTTP API接口实现的
- 确保它只在私有网络上侦听,并由正确配置的防火墙监控