本博文主要讲了OLAP是什么,以及快速安装ClickHouse(容器化部署),CK可视化工具的下载链接使用以及创建第一个CK数据库和表,然后新增数据,浏览3分钟即可快速掌握这些知识。
单机-->请求量大查询慢,单机故障导致业务不可用
主从-->数据库主从同步,从库可以水平扩展,满足更大读需求,但单服务器TPS,内存,IO都是有限的
双主-->用户量级上来后,写请求越来越多
一个Master是不能解决问题的,添加多了个主节点进行写入,
多个主节点数据要保存一致性,写操作需要2个master之间同步更加复杂
分库和分表
基本业务量到达这个分库分表量级,则离不开数据大屏、推荐系统、画像系统等搭建
需要搭建上面的系统,则离不开海量数据进行存储-分析-统计
海量数据下 TB、PB级别数据存储,靠Mysql进行存储-分析-统计无疑是灾难
那应该怎么办?使用OLAP数据处理技术!
什么是OLTP
全称 OnLine Transaction Processing,联机事务处理系统, 就是对数据的增删改查等操作
存储的是业务数据,来记录某类业务事件的发生,比如下单、支付、注册、等等
典型代表有Mysql、 Oracle等数据库
面向群体:业务人员
什么是OLAP
OnLine Analytical Processing,联机分析处理系统
存储的是历史数据,对应的风控平台、BI平台、数据可视化等系统就属于
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策,并且提供直观易懂的查询结果
典型代表有 Hive、ClickHouse
针对基于查询的分析系统,基础数据来源于生产系统中的操作数据,数据量非常大,常规是TB级别的
面向群体:分析决策人员
什么是行存储?
传统的OLTP关系型数据库 都是行存储,适合随机的增删改查操作 或者 在行中选取所有属性的查询操作,结合索引提升性能
缺点:
查询的全部记录的某几个字段,但由于这些字段在各行数据单元中,而整个行特别大(字段特别多),程序必须不断读取每一条的行记录取对应的字段,使得读取效率大大降低
例子:找某个订单的话,就很方便,订单的全部信息都能获取; 但找全部订单总金额就需要遍历多个数据
什么是列式存储
存储结构化数据时,在底层的存储介质上,数据是以列的方式来组织的
存储完若干条记录的首个字段后,再存储这些记录的第二个字段,然后再第三个字段、第四个字段...
查询时只有涉及到的列会被读取,而不需要全表扫描,可以显著减少IO消耗,并降低查询响应时间
例子:查询全部成交额,只需要把订单金额拿出来即可
特点和应用场景:
不依赖Hadoop 生态、安装和维护简单,支持主流的大部分SQL语法和函数,擅长对列的聚合、计数等统计操作性能强劲
对列存储和压缩的采用更好的算法,更好节省成本
应用:互联网电商、在线教育、金融等领域用,户行为数据记录和分析,搭建数据可视化平台
#安装并运行Docker。
yum install docker-io -y
systemctl start docker#检查安装结果。
docker info#启动使用Docker
systemctl start docker #运行Docker守护进程
systemctl stop docker #停止Docker守护进程
systemctl restart docker #重启Docker守护进程docker ps查看容器
docker stop 容器id#修改镜像仓库
vim /etc/docker/daemon.json
#改为下面内容,然后重启docker
{
"debug":true,"experimental":true,
"registry-mirrors":["https://pb5bklzr.mirror.aliyuncs.com","https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
}#查看信息
docker info
运行:
docker run -d --name wnn_clickhouse(容器名称) --ulimit nofile=262144:262144(最大文件进程数) \
-p 8123:8123(宿主机和容器的端口映射) -p 9000:9000 -p 9009:9009 --privileged=true(登录权限) \
-v /mydata/docker/clickhouse/log:/var/log/clickhouse-server(容器内部和宿主机映射,将后者容器映射到前者宿主机) \
-v /mydata/docker/clickhouse/data:/var/lib/clickhouse clickhouse/clickhouse-server:22.2.3.5(仓库和版本)执行的时候,去掉括号和文字描述
默认http端口是8123,tcp端口是9000, 同步端口9009 .注意:阿里云的话,网络安全组记得开放
安装后,通过浏览器访问 web可视化界面:http://阿里云公网IP:8123/play
查看数据库 SHOW DATABASES
查看某个库下面的全部表 SHOW TABLES IN system
系统数据库是 ClickHouse 存储有关 ClickHouse 部署的详细信息的地方
默认数据库最初为空,用于执行未指定数据库的命令
在任何其他情况下不能将ClickHouse服务器暴露给公共互联网!
可视化工具下载:https://dbeaver.io/download/
双击进行安装 一直下一步 跟安装QQ差不多
安装后打开:
建立数据库连接:
然后就可以连接上啦
在DBserver的连接上右键,进入sql编辑器
先创建数据库:CREATE DATABASE wnn_shop
再创建数据表
ClickHouse 有自己的数据类型,每个表都必须指定一个Engine引擎属性来确定要创建的表的类型
引擎决定了数据的存储方式和存储位置、支持哪些查询、对并发的支持
数据类型的说明:
String类型替换来自其他数据库的 VARCHAR、BLOB、CLOB 和其他类似字符串的数据类型
UInt64是一个 64 位无符号整数
日期是在 ClickHouse 中存储日期的几种方法之一
知道列中所有字符串的精确长度,则使用FixedString( n )数据类型,类似MySQL的Char类型,属于定长字符,固定长度 N 的字符串(N 必须是严格的正自然数)
新增一条数据(语法跟mysql没什么区别):
INSERT INTO wnn_shop.clickstream
VALUES ('customer01', '2022-07-21', 'add_to_cart', 'home_enter', 568239 )
查询数据: