ClickHouse

  • ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS), 主要用于在线分析处理查询(OLAP), 能够使用SQL查询实时生成分析数据报告。

1、ClickHouse特性:真正的面向列的DBMS

以下表为例:


mysql中的表Student
  • 在采用行式存储的数据库(例如mysql)中, 数据在磁盘上是一行一行存储的。这样存储的好处是想要查找某个学生的所有属性时,可以通过一次磁盘查找加顺序读取即可,但是当想要查所有人的年龄时,需要不停滴查找,或者全表扫描才行,遍历的很多数据都是不需要的。
  • 而在采用列式存储时(例如clickhouse),数据是按照每一个字段在磁盘上建一个文件,所以当查询所有学生的年龄时,直接读取某一个文件即可。读取速度大大加快!

2、ClickHouse单机安装:略

3、ClickHouse单机命令行使用:clickhouse-client

  1. 常见参数
  • --host,-h:服务端的host名称, 默认是localhost
  • --port : 连接的端口,默认9000
  • --user,-u:用户名
  • --password:密码
  • --query,-q:非交互模式下的查询语句
  • --database, -d:默认当前操作的数据库。默认值default
  • --multiline,-m:允许多行语句查询
  • --format, -f:使用指定的默认格式输出结果
  • --time,-t:非交互模式下回打印查询执行的时间到窗口
  • --stacktrace:如果出现异常,会打印堆栈跟踪信息
  • --config-file:配置文件名称
  1. 命令行上sql的使用
  • show database;
  • show tables;

4、ClickHouse分布式集群安装

  1. 第1步:安装3台单机模式的clickhouse
  2. 第2步:配置3台机器的config.xml,让他们互相知道对方的存在,然后组合成一个集群:
  • 有一个配置:<listen_host>::</listen_host>
  • 配这个的意思是:Listen specified host. use ::(wildcard IPv6 address), if you want to accept connections both with IPv4 and IPv6 frm everywhere.
  • 即:为了能让别的机器连接,配置成::即可
  1. 第3步:新建metrika.xml文件

5、启动集群

  1. 使用clickhouse-client 进入命令行
  2. select * from system.clusters 查询集群状态

6、ClickHouse数据类型

  1. 和其他数据库比较
MySQL Hive ClickHouse(区分大小写)
byte tinyint Int8
short smallint Int16
int int Int32
long bigint Int64
varchar string String
timeestamp timestamp DateTime
float float Float32
double double Float64

7、引擎

  • 特性:表引擎(即表的类型)决定了:
  1. 数据的存储方式和位置,写到哪里以及从哪里读取数据
  2. 支持哪些查询以及如何支持
  3. 并发数据访问
  4. 索引的使用(如果存在)
  5. 是否可以执行多线程请求
  6. 数据复制参数
  • 引擎的分类:
  1. Log:

具有最小功能的轻量级引擎。当你需要快速写入许多小表(最多约100万行)并在以后整体读取它们时,该类型的引擎是最有效的。

  • [TinyLog](tinylog/)
  • [StripeLog](stripelog/)
  • [Log](log/)
  1. MergeTree:

适用于高负载任务的最通用和功能最强大的表引擎。这些引擎的共同特点是可以快速插入数据并进行后续的后台数据处理。 MergeTree系列引擎支持数据复制(使用Replicated* 的引擎版本),分区和一些其他引擎不支持的其他功能。

  1. 外部表引擎:

用于与其他的数据存储与处理系统集成的引擎。

  1. 用于其他特定功能的引擎:

7.1、 TinyLog

最简单的表引擎,用于将数据存储到磁盘上。每列都存储在单独的压缩文件中,写入时,数据将附加在文件的末尾。

  1. 该引擎没有并发控制
  • 如果同时从表中读取和写入数据, 则读取操作将抛出异常;
  • 如果同时写入多个查询的表, 则数据将被破坏;
  1. 不支持索引
  • 这种表引擎的典型用法是write-once:只写入一次数据,然后根据需要多次读取。
  • 此引擎适用于相对较小的表(建议最多1000000行)。

7.2、Memory

内存引擎,数据以未压缩的原始形式直接保存在内存当中,服务器重启数据就会消失。

  • 一般不会使用到这个引擎,除非是用来搞测试,或者需要非常非常高德性能,同时数据量又不太大(上线大概1亿行)的场景。
  • 不支持索引(ps:数据已经在内存中了,速度已经很快了,所以无需索引)

7.3、Merge

Merge引擎本身不存储数据,但可用于同时从任意多个其他的表中读取数据。读是自动并行的,不支持写入。 读取时,那些呗真正读取到数据的表的索引(如果有的话)会被使用。

  • Merge引擎的参数:一个数据库名和一个用于匹配表名的正则表达式。
  • 类似于mysql的视图(view)

7.4、MergeTree(重要)

  • ClickHouse中最强大的表引擎是MergeTree及该系列(*MergeTree)中的其他引擎。
  • 允许你高效滴一批批写入数据片段,这些数据会在后台按照一定规则合并。
  • 可以直接看官方文档(MergeTree)。

建表语句

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
    INDEX index_name1 expr1 TYPE type1(...) GRANULARITY value1,
    INDEX index_name2 expr2 TYPE type2(...) GRANULARITY value2
) ENGINE = MergeTree()
[PARTITION BY expr]
[ORDER BY expr]
[PRIMARY KEY expr]
[SAMPLE BY expr]
[SETTINGS name=value, ...]

7.5、Distributed

分布式引擎本身不存储数据, 但可以在多个服务器上进行分布式查询。 读是自动并行的。读取时,远程服务器表的索引(如果有的话)会被使用。 分布式引擎参数:服务器配置文件中的集群名,远程数据库名,远程表名,数据分片键(可选)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容

  • 引言 ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域。目前国内社区火热,各...
    达微阅读 1,934评论 0 7
  • ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域。目前国内社区火热,各个大厂...
    达微阅读 822评论 0 0
  • 早睡早起124天 女儿: 一大早好友敏敏就给我打电话,接起来是她的儿子佑佑,原来佑佑今天决定自己放暑假,不去...
    小妮蛋阅读 294评论 0 0
  • 一.時間: 2017年3月1日-2017年5月31日 二.目標: 1.為公司在名錶銷售,個人訂製珠寶銷售創造,月營...
    andychan1106阅读 240评论 0 2
  • 人们把三百六十五天划作一个阶段,叫做一年。这样到了每一个三百六十五的末尾,就有了特殊的意义,可以庆祝,可以...
    大朋阅读 289评论 0 1