一.前言
ClickHouse是Yandex在2016年6月15日开源的一个数据分析数据库,国内使用情况:
今日头条 内部用ClickHouse来做用户行为分析,内部一共几千个ClickHouse节点,单集群最大1200节点,总数据量几十PB,日增原始数据300TB左右,大多数查询相应时间在几秒钟。
腾讯内部用ClickHouse做游戏数据分析,并且为之建立了一整套监控运维体系。
携程内部从18年7月份开始接入试用,目前80%的业务都跑在ClickHouse上。每天数据增量十多亿,近百万次查询请求。
快手内部也在使用ClickHouse,存储总量大约10PB, 每天新增200TB, 90%查询小于3S。
ClickHouse处理速度快,但快也是有代价的,限制如下:
不支持事务;
不支持delete&update;
不支持高并发,即使一个查询,也会用服务器一半的CPU去执行,官方建议qps为100;
SQL满足日常使用80%以上的语法,join写法比较特殊;
ClickHouse官方文档参见:ClickHouse文档
二.ClickHouse安装
比较简单,网上文档很多,不再阐述。
三.数据迁移方法
看了下相关资料,批量数据迁移大概三种方法
1.csv导入
这种方法速度非常快,普通服务器导入千万数据60秒左右,如果SSD盘会更快; 但是从Oracle大表快速导出csv是个问题,Oracle存储过程在服务器端导出千万数据花了一个多小时(csv6G左右)。
2.第三方工具,如flume,datax等
flume暂不说,datax官网并没有提供ClickHouse支持,不过GitHub有热心同仁提供了源码,需要自己打包,见:Datax源码
3.自己写代码
这种费时费力不说,效率也不能保证,关键没那么多时间^_^。
四.DATAX实测
1.数据库环境准备
Oracle数据库
create table TDBA_TEST01
(
TID number primary key,
TSN varchar2(40),
TNO number,
TAMT number(15,2),
CREATE_DATE date not null,
UPDATE_DATE date,
UPDATE_TIME date
)
INSERT INTO TDBA_TEST01 VALUES(1,'SN001',1,1.01,TO_DATE('2020-02-01','YYYY-MM-DD'),TO_DATE('2020-02-02','YYYY-MM-DD'),TO_DATE('2020-02-02 01:01:01','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TDBA_TEST01 VALUES(2,'SN002',2,2.12,TO_DATE('2020-02-02','YYYY-MM-DD'),TO_DATE('2020-02-03','YYYY-MM-DD'),TO_DATE('2020-02-03 01:01:01','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TDBA_TEST01 VALUES(3,'SN003',3,3.23,TO_DATE('2020-02-03','YYYY-MM-DD'),TO_DATE('2020-02-04','YYYY-MM-DD'),TO_DATE('2020-02-04 01:01:01','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TDBA_TEST01 VALUES(4,NULL,4,4.34,TO_DATE('2020-02-04','YYYY-MM-DD'),TO_DATE('2020-02-05','YYYY-MM-DD'),TO_DATE('2020-02-05 01:01:01','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TDBA_TEST01 VALUES(5,'SN005',NULL,5.45,TO_DATE('2020-02-05','YYYY-MM-DD'),TO_DATE('2020-02-06','YYYY-MM-DD'),TO_DATE('2020-02-06 01:01:01','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TDBA_TEST01 VALUES(6,'SN006',6,NULL,TO_DATE('2020-02-06','YYYY-MM-DD'),TO_DATE('2020-02-07','YYYY-MM-DD'),TO_DATE('2020-02-07 01:01:01','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TDBA_TEST01 VALUES(7,'SN007',7,7.67,TO_DATE('2020-02-07','YYYY-MM-DD'),NULL,TO_DATE('2020-02-08 01:01:01','YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TDBA_TEST01 VALUES(

:datax&spm=1001.2101.3001.5002&articleId=105425610&d=1&t=3&u=11baede78832496a920a9c0691a8e39d)
3827

被折叠的 条评论
为什么被折叠?



