本文源码:GitHub·点这里 || GitEE·点这里linux
Yandex开源的数据分析的数据库,名字叫作ClickHouse,适合流式或批次入库的时序数据。ClickHouse不该该被用做通用数据库,而是做为超高性能的海量数据快速查询的分布式实时处理平台,在数据汇总查询方面(如GROUP BY),ClickHouse的查询速度很是快。
下载仓库:https://repo.yandex.ru/clickhouse 中文文档:https://clickhouse.yandex/docs/zh/
(1)列式数据库git
列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询。
(2)数据压缩github
在一些列式数据库管理系统中不是用数据压缩。可是, 数据压缩在实现优异的存储系统中确实起着关键的做用。
(3)数据的磁盘存储spring
许多的列式数据库只能在内存中工做,这种方式会形成比实际更多的设备预算。ClickHouse被设计用于工做在传统磁盘上的系统,它提供每GB更低的存储成本。
(4)多核心并行处理数据库
大型查询能够以很天然的方式在ClickHouse中进行并行化处理,以此来使用当前服务器上可用的全部资源。
(5)多服务器分布式处理vim
在ClickHouse中,数据能够保存在不一样的shard上,每个shard都由一组用于容错的replica组成,查询能够并行的在全部shard上进行处理。
(6)支持SQL和索引segmentfault
ClickHouse支持基于SQL的查询语言,该语言大部分状况下是与SQL标准兼容的。支持的查询包括GROUPBY,ORDERBY,IN,JOIN以及非相关子查询。不支持窗口函数和相关子查询。按照主键对数据进行排序,这将帮助ClickHouse以几十毫秒的低延迟对数据进行特定值查找或范围查找。
(7)向量引擎centos
为了高效的使用CPU,数据不只仅按列存储,同时还按向量(列的一部分)进行处理。
(8)实时的数据更新bash
ClickHouse支持在表中定义主键。为了使查询可以快速在主键中进行范围查找,数据老是以增量的方式有序的存储在MergeTree中。所以,数据能够持续不断高效的写入到表中,而且写入的过程当中不会存在任何加锁的行为。
一、下载仓库服务器
curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo os=centos dist=7 bash
二、查看安装包
sudo yum list 'clickhouse*'
三、安装服务
sudo yum install -y clickhouse-server clickhouse-client
四、查看安装列表
sudo yum list installed 'clickhouse*'
控制台输出
Installed Packages clickhouse-client.noarch clickhouse-common-static.x86_64 clickhouse-server.noarch
五、查看配置
数据目录:/var/lib/clickhouse/ 临时目录:/var/lib/clickhouse/tmp/ 日志目录:/var/log/clickhouse-server HTTP端口:8123 TCP 端口:9000
六、配置访问权限
config.xml文件中去掉下面配置的注释。
<listen_host>::</listen_host>
七、启动服务
/etc/rc.d/init.d/clickhouse-server start
八、查看服务
ps -aux |grep clickhouse
CREATE TABLE cs_user_info ( `id` UInt64, `user_name` String, `pass_word` String, `phone` String, `email` String, `create_day` Date DEFAULT CAST(now(),'Date') ) ENGINE = MergeTree(create_day, intHash32(id), 8192)
注意事项:官方推荐引擎,MergeTree
Clickhouse 中最强大的表引擎当属MergeTree(合并树)引擎及该系列(*MergeTree)中的其余引擎。MergeTree引擎系列的基本理念以下。当你有巨量数据要插入到表中,你要高效地一批批写入数据片断,并但愿这些数据片断在后台按照必定规则合并。相比在插入时不断修改(重写)数据进存储,这种策略会高效不少。
INSERT INTO cs_user_info (id,user_name,pass_word,phone,email) VALUES (1,'cicada','123','13923456789','cicada@com'), (2,'smile','234','13922226789','smile@com'), (3,'spring','345','13966666789','spring@com');
SELECT * FROM cs_user_info ; SELECT * FROM cs_user_info WHERE user_name='smile' AND pass_word='234'; SELECT * FROM cs_user_info WHERE id IN (1,2); SELECT * FROM cs_user_info WHERE id=1 OR id=2 OR id=3;
查询语句和操做MySQL数据库极其类似。
GitHub·地址 https://github.com/cicadasmile/linux-system-base GitEE·地址 https://gitee.com/cicadasmile/linux-system-base