ClickHouse----单击安装 引擎

一. ClickHouse概述

1. 什么是clickHouse?

1) SQL结构化查询语言

2) 分布式数据库

3) 存储海量资源

4) 列式存储  (切片 分区 副本)

5) 解决并发

自己管理数据,读取别人的mysql hdfs 网络 本地文件

ClickHouse是一个完全的列式存储数据库管理系统 , 主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告,

2. 选择ClickHouse的主要原因就是以为它快,为什么会快?

1) C++

2) 利用c语言和硬件的交互优势 更好的读写数据

3) 方便实时数据结构管理数据

4) 使用大量的硬件优化算法

5) 数据存储的时候是特殊数据格式,压缩

6) 使用了大量读取优化算法

7) 集群的运算资源并行处理数据 , 利用单节点的多线程运算

二. ClickHouse单击安装

1) 安装curl工具

yum install -y curl

2) 添加clickhouse的yum镜像

curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo bash

3) 检查镜像情况

[root@doit04 yum.repos.d]# yum list | grep clickhouse                        
clickhouse-client.x86_64                    20.5.4.40-1.el7            @Altinity_clickhouse
clickhouse-common-static.x86_64             20.5.4.40-1.el7            @Altinity_clickhouse

4) 安装clickhouse的服务端和客户端

yum install -y clickhouse-server clickhouse-client

5) 启动服务daunt

service clickhouse-server start

6) 启动交互式客户端

clickhouse-client -m     --m支持多行输入

7) 检验

show databases

三. 常用数据类型 数据存储的位置

1.  Int8 ... int256  (正负)

UInt8 Uint256 (正)

Float32   Float64  (double)

String

Date

DateTime

2.  数据存储在本地的默认位置 

/var/lib/clickhouse/data
[root@linux01 data]# ll
total 0
drwxr-x---. 2 clickhouse clickhouse   6 Dec  3 22:26 db_name
drwxr-x---. 5 clickhouse clickhouse  62 Dec  4 00:14 default
drwxr-x---. 2 clickhouse clickhouse 113 Dec  3 19:58 system

 

四. 引擎: 不同的引擎不同的存储位置和存储特点

1. 数据库引擎  engine=mysql( hdfs路径 )

 

2. 表引擎

1) 自己的特殊引擎

(1). Log引擎: 不支持索引  如果写入失败,则该表将被破坏  试用于临时数据

    数据是以列为文件存储
    插入数据的时候是想文件后面追加数据
    xx.bin  列数据
    size.json每个文件的大小
    不支持索引
    读写分离 

create table  `tb_user`(
id String ,
name String ,
age UInt8 ,
birthday  Date
)  engine = Log;       --engine(引擎)= Log


​
-rw-r-----. 1 clickhouse clickhouse  54 Dec  3 21:58 age.bin    --列数据
-rw-r-----. 1 clickhouse clickhouse  56 Dec  3 21:58 birthday.bin
-rw-r-----. 1 clickhouse clickhouse  68 Dec  3 21:58 id.bin
-rw-r-----. 1 clickhouse clickhouse  64 Dec  3 21:58 __marks.mrk  --数据的块偏移量
-rw-r-----. 1 clickhouse clickhouse  69 Dec  3 21:58 name.bin  
-rw-r-----. 1 clickhouse clickhouse 151 Dec  3 21:58 sizes.json  -- 长度

MergerTree引擎底层存储数据以Tree基本存储结构
1) 维护节点关系; 方便分区
2) 方便CRUD(增删改查)
3) 排序 挡边索引
4) 合并(归并)

create table tb_tree1(
id String,
name String,
city String
)
engine=MergerTree;   --指定引擎
order by id;     --必须指定排序字段和主键,指定了排序会默认以排序字段为主键,也可自己设置


-rw-r-----. 1 clickhouse clickhouse 319 Dec  4 00:13 checksums.txt  --检查数据类型是否匹配
-rw-r-----. 1 clickhouse clickhouse  53 Dec  4 00:13 city.bin       --数据
-rw-r-----. 1 clickhouse clickhouse  48 Dec  4 00:13 city.mrk2
-rw-r-----. 1 clickhouse clickhouse  77 Dec  4 00:13 columns.txt
-rw-r-----. 1 clickhouse clickhouse   1 Dec  4 00:13 count.txt      --统计数据条数
-rw-r-----. 1 clickhouse clickhouse  61 Dec  4 00:13 id.bin
-rw-r-----. 1 clickhouse clickhouse  48 Dec  4 00:13 id.mrk2        --保存块偏移量
-rw-r-----. 1 clickhouse clickhouse  61 Dec  4 00:13 name.bin
-rw-r-----. 1 clickhouse clickhouse  48 Dec  4 00:13 name.mrk2
-rw-r-----. 1 clickhouse clickhouse  12 Dec  4 00:13 primary.idx    --保存主键的索引

optimize table tb_tree1 ;   --表的合并

ReplacingMergeTree:它会删除具有相同主键的重复项,留下最新版本的数据,数据的去重只会在合并的
                   过程中出现,使用于在后台清除重复的数据以节省空间,但是不保证没有重复的数据出现

create table tb_replacing_tree2(
id String,
name String,
v UInt8
) 
engine=ReplacingMergeTree(v)    --指定引擎
order by id;                    --分组,且默认主键为id
insert into tb_replacing_tree2 values('a001','zss',10) , ('a002','lss',20);  --插入数据
insert into tb_replacing_tree2 values('a001','wuu',30) , ('a002','zll',40);
optimize table tb_replacing_tree2;   --合并

┌─id───┬─name─┬──v─┐
│ a001 │ wuu  │ 30 │
│ a002 │ zll  │ 40 │
└──────┴──────┴────┘

select now();   --获取服务器的当前时间

create table tb_replacing_tree3(
id String ,
name String ,
accTime DateTime
)
engine=ReplacingMergeTree(accTime)
order by id ;
insert into tb_replacing_tree3 values('a001','zss',now());
insert into tb_replacing_tree3 values('a001','zss2',now());
optimize table tb_replacing_tree3;

┌─id───┬─name─┬─────────────accTime─┐
│ a001 │ zss2 │ 2020-12-04 23:31:44 │
└──────┴──────┴─────────────────────┘

VersionedCollapsingMergeTree(标记 , 版本)   指定删除数据的版本

create table tb_versioned_collapsing_mergetree(
id UInt8,
name String, 
version UInt8,        
sign Int8       --标记
)
engine=VersionedCollapsingMergeTree(sign,version)    --参数一标记  参数二版本
order by id ;

insert into tb_versioned_collapsing_mergetree values(1,'a',1,1);  --参数三版本 四标记 标记为-1合并后会被删除
insert into tb_versioned_collapsing_mergetree values(1,'a',2,-1);

optimize table tb_versioned_collapsing_mergetree;

3) 集成引擎: clickhouse极易和其他数据源整合
MySQL -- 数据库引擎   

create  database  db_ch_mysql engine=MySQL('linux01:3306' , 'hive','root','root');   --在house中连接数据库

MySQL   -- 表引擎

注意:  数据库引擎  MySQL中不支持DDL
          MySQL表引擎  插入数据

create  table  tb_user(
id  Int32 ,
name  String
)
engine=MySQL('linux01:3306','db_doit19','tb_user','root','root') ;


SELECT *
FROM tb_user
INNER JOIN tb_user2 ON tb_user.id = tb_user2.id
┌─id─┬─name─┬─tb_user2.id─┬─tb_user2.name─┐
│  1 │ zss  │           1 │ A             │
│  2 │ lss  │           2 │ B             │
│  3 │ ww   │           3 │ C             │
└────┴──────┴─────────────┴───────────────┘

HDFS   --- 表引擎 

create  table  tb_ch_hdfs(
uid  String ,
name String ,
city  String ,
age UInt8
)
engine = HDFS("hdfs://linux01:8020/ch/data/*.tsv" , "TSV") ;
1    zss    北京    24
2    lss    北京    21
3    wb    上海    27
--mysql引擎表 和  hdfs引擎表 和  ch原生表 关联查询  join  join   
select
*
from
(select 
tb_ch_hdfs.uid uid ,
tb_ch_hdfs.name  hdfs_name,
tb_ch_hdfs.city  hdfs_city,
tb_user2.id  as  id  ,
tb_user2.name as ch_name
  from  
tb_ch_hdfs 
join
tb_user2
on
tb_ch_hdfs.uid = CAST(tb_user2.id as String))t  --CAST(类似转换数据类型,也可同时使用两种型)
join
tb_user 
on 
tb_user.id = t.id  ;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值