clickhouse的高级使用摸索

目录

前言

OLAP场景的关键特征

 缺陷

一、集群模式搭建

1、centos系统安装

2、配置文件

3、启动

4、连接数据库

二、字段知识

三、表知识

1、表引擎介绍

2、集群模式表用法

四、综合使用


前言

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。

OLAP场景的关键特征

  • 大多数是读请求
  • 数据总是以相当大的批(> 1000 rows)进行写入
  • 不修改已添加的数据
  • 每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列
  • 宽表,即每个表包含着大量的列
  • 较少的查询(通常每台服务器每秒数百个查询或更少)
  • 对于简单查询,允许延迟大约50毫秒
  • 列中的数据相对较小: 数字和短字符串(例如,每个URL 60个字节)
  • 处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行)
  • 事务不是必须的
  • 对数据一致性要求低
  • 每一个查询除了一个大表外都很小
  • 查询结果明显小于源数据,换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中

 缺陷

  • 1.无事务处理。
  • 2.缺乏全面的UPDATE / DELETE实现

参考:https://blog.csdn.net/asfjgvajfghaklsbf/article/details/85139888

 

一、集群模式搭建

1、centos系统安装

#集群模式,每台机器上都要执行
sudo yum install yum-utils
sudo rpm --import https://repo.yandex.ru/clickhouse/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.yandex.ru/clickhouse/rpm/stable/x86_64
sudo yum install clickhouse-server clickhouse-client

官网教程:https://clickhouse.yandex/docs/zh/getting_started/

2、配置文件

每台机器上都要执行

  • 配置文件目录: /etc/clickhouse-server
  • 修改config.xml:在里面添加一句:/etc/clickhouse-server/metrika.xml
  • 在该目录下添加一个文件:metrika.xml  

	
		
		
		    
		    
			
			1
			
			true
			
			    hadoop001
			    9000
			    default
			    123456
			
		    

		    
		    
			
			1
			
			true
			
			    hadoop002
			    9000
			    default
			    123456
			
		    

		    
		    
			
			1
			
			true
			
			    hadoop003
			    9000
			    default
			    123456
			
		    

		
	 

        
                 
                        hadoop001
                        2181
                 
                
                        hadoop002
                        2181
                
                
                        hadoop003
                        2181
                
        

3、启动

每台机器都要执行

启动: 
sudo service clickhouse-server start


关闭: 
sudo service clickhouse-server stop

4、连接数据库

1)终端下连接

clickhouse-client -h 127.0.0.1 --port 9000 -m -u default --password 123456

2)数据库工具

推荐使用:DBeaver ,下载:https://dbeaver.io/download/

二、字段知识

参考官网:https://clickhouse.yandex/docs/zh/data_types/int_uint/

三、表知识

1、表引擎介绍

  • ReplacingMergeTree() :主键去重,主键相同的数据,会有一个后台线程去重,不同的节点上相同的主键不会去重,去重的时间是不确定的,不能实时的去重;
  • MergeTree()主键不去重;
  • Distributed()分布式引擎,不存储数据,可以关联对应的物理表(存储数据的表),在集群模式中使用这个表引擎;
  • AggregatingMergeTree() 聚合型表

2、集群模式表用法

-- 创建物理表
CREATE TABLE IF NOT EXISTS operation.`store_cluster` ON CLUSTER clickhouse_cluster ( \ 
  `id` UInt32 COMMENT 'ID',\
  `storeID` Nullable(UInt16) COMMENT '门店ID',\
  `goodsID` Nullable(UInt32) COMMENT '商品ID',\
  `status` String  DEFAULT 'A'  COMMENT '关系状态',\
  `createTime` Nullable(datetime)   COMMENT '创建时间',\
  `lastUpdate` Nullable(datetime )  COMMENT '最后更新时间',\
  `saleStatus` Nullable(String) COMMENT '门店销售该商品的状态',\
  `stockBorder` Nullable(Int16) COMMENT '门店商品边界值'\
) ENGINE ReplacingMergeTree() PARTITION BY toDate(lastUpdate)  ORDER BY (id) SETTINGS index_granularity=8192 ;

-- operation为数据库
-- store_cluster为物理表
-- clickhouse_cluster为集群的名字
-- ReplacingMergeTree为表引擎
-- ORDER BY的字段,默认也是主键
-- 8192 分片大小


-- 创建逻辑表
CREATE TABLE store ON CLUSTER clickhouse_cluster  AS operation.`store_cluster` \
ENGINE = Distributed(clickhouse_cluster,  operation, `store_cluster`, rand());
-- store为逻辑表,映射的是store_cluster这个物理表
--                             
-- Distributed的4个参数,分别是集群名字、数据库名、表名、分布规则;

集群模式下创建表,只用在一个节点上就可以,需要加上ON CLUSTER clickhouse_cluster这句,同样集群 删除的话也可以加上这一句,在一个节点上操作,集群上的每一个节点对应的表就会删除,这个是集群操作。

暴露给外部的只要一个逻辑表就可以了,一切的增删改查都只能在逻辑表上,同时逻辑表也是一个集群操作

四、综合使用

你可能感兴趣的:(MySQL-System,clickhouse集群建表,clickhouse的集群搭建,clickhouse,clickhouse的表引擎)