官网地址:点击跳转官网地址
一、介绍
ClickHouse是俄罗斯的Yandex于2016年开源的一个用于联机分析(OLAP:Online Analytical Processing)的列式数据库管理系统(DBMS:Database Management System) , 主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 ClickHouse的全称是Click Stream,Data WareHouse,简称ClickHouse。ClickHouse是一个完全的列式分布式数据库管理系统(DBMS),允许在运行时创建表和数据库,加载数据和运行查询,而无需重新配置和重新启动服务器,支持线性扩展,简单方便,高可靠性,容错。它在大数据领域没有走 Hadoop 生态,而是采用 Local attached storage 作为存储,这样整个 IO 可能就没有 Hadoop 那一套的局限。它的系统在生产环境中可以应用到比较大的规模,因为它的线性扩展能力和可靠性保障能够原生支持 shard + replication 这种解决方案。它还提供了一些 SQL 直接接口,有比较丰富的原生client。
二、优缺点
优点:
- 灵活的MPP架构,支持线性扩展,简单方便,高可靠性
- 多服务器分布式处理数据 ,完备的DBMS系统
- 底层数据列式存储,支持压缩,优化数据存储,优化索引数据 优化底层存储
- 容错跑分快:比Vertica快5倍,比Hive快279倍,比MySQL快800倍,其可处理的数据级别已达到10亿级别
- 功能多:支持数据统计分析各种场景,支持类SQL查询,异地复制部署
缺点:
- 不支持事务,不支持真正的删除/更新 (批量)
- 不支持高并发,官方建议qps为100,可以通过修改配置文件增加连接数,但是在服务器足够好的情况下。
- 不支持二级索引
- 不擅长多表join *** 大宽表
- 元数据管理需要人为干预 ***
- 尽量做1000条以上批量的写入,避免逐行insert或小批量的insert,update,delete操作
三、应用场景
- 绝大多数请求都是用于读访问的, 要求实时返回结果
- 数据需要以大批次(大于1000行)进行更新,而不是单行更新;或者根本没有更新操作
- 数据只是添加到数据库,没有必要修改
- 读取数据时,会从数据库中提取出大量的行,但只用到一小部分列
- 表很“宽”,即表中包含大量的列
- 查询频率相对较低(通常每台服务器每秒查询数百次或更少)
- 对于简单查询,允许大约50毫秒的延迟
- 列的值是比较小的数值和短字符串(例如,每个URL只有60个字节)
- 在处理单个查询时需要高吞吐量(每台服务器每秒高达数十亿行)
- 不需要事务
- 数据一致性要求较低 [原子性 持久性 一致性 隔离性]
- 每次查询中只会查询一个大表。除了一个大表,其余都是小表
- 查询结果显著小于数据源。即数据有过滤或聚合。返回结果不超过单个服务器内存大小
四、实战
部署:
- 拉取镜像:clickhouse/clickhouse-server
- 开放端口:9000
- 挂载路径:
-
- /data/clickhouse/data /var/lib/clickhouse/
- /data/clickhouse/conf /etc/clickhouse-server/
- /data/clickhouse/log
MYSQL修改配置:开启binlog和GTID模式
- 打开/etc/my.cnf,在[mysqld]下添加
binlog_format=ROW
- 开启GTID模式:如果clickhouse使用的是20.8 prestable之后发布的版本,那么MySQL还需要配置开启GTID模式,这种方式在 mysql主从模式下可以确保数据同步的一致性(主从切换时)。
gtid-mode=on
enforce-gtid-consistency=1 # 设置为主从强一致性
log-slave-updates=1 # 记录日志
开启Clickhouse雾化视图
set allow_experimental_database_materialize_mysq1=1;
数据同步SQL:
//方式一
CREATE DATABASE HMALL ENGINE = MySQL('IP:HOST','DATABASE','USER','PASSWORD');
//方式二
CREATE DATABASE HMALL ENGINE = MATERIALIZEMYSQL('IP:HOST','DATABASE','USER','PASSWORD');
同步SQL区别:
- MySQL引擎:这是一个只读引擎,它允许你从MySQL数据库中查询数据,但不支持数据修改。你可以在ClickHouse中创建一个外部MySQL表,用于查询MySQL中的数据,但这些数据不会被同步到ClickHouse中
- MaterializedMySQL引擎:这是一个实验性的引擎,它允许你同步MySQL中的数据到ClickHouse中,并支持数据修改。当你在ClickHouse中创建一个MaterializedMySQL表时,MySQL中的数据会被同步到ClickHouse中,并且任何对MySQL表的更新、插入或删除操作都会自动同步到ClickHouse表中。
问题:
1、连接被拒:
Connection refused: no further information, server ClickHouseNode [uri=http://127.0.0.1:30980/default, options={custom_http_params=session_id=DataGrip_c3635ad3-2cb1-4704-ab36-884683502e4a}]@-2022533577.
修改配置文件config.xml