ClickHouse is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).
ClickHouses是一个面向行的OLAP型DBMS
ClickHouse最初是为为全球第二大网络分析平台Yandex.Metrica提供动力而开发的,并且仍然是这个系统的核心组件。
ClickHouse的优势是使用了面向列的DBMS,比MySQL等面向行的数据库有查询优势,同时又比同样属于面向列DBMS的更有效的节省空间(不适用固定大小存储数据),使用数据压缩后,可以传输更多,延迟小等。
官网:https://clickhouse.yandex/
实际测试系统:ubuntu18.04 server
系统需求:Linux, x86_64 with SSE 4.2.
检测系统是否支持SSE4.2:
grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
添加源,并安装
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4 # optional
echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" | sudo tee /etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client
sudo service clickhouse-server start
clickhouse-client
ClickHouse的配置文件是在/etc/clickhouse-server下的config.xml中。
ClickHouse是推荐你更改path便签的路径的,我改成自己的/data
路径,
然后更改拥有者,让ClickHouse用户组能访问和使用这个文件夹
chown -c clickhouse:clickhouse /data/
除了使用service命令访问ClickHouse服务,还可以用
/etc/init.d/clickhouse-server这二进制文件进行操作。
/etc/init.d/clickhouse-server start //启动服务
/etc/init.d/clickhouse-server status //查看服务状态,我查询status的时候,总是stoped的,其实已经启动了
直接输入clickhouse-client进行本地访问。
clickhouse-client -m是多行命令行输入,遇到分号才会执行,没加-m默认认第一个分号之前的内容。
退出命令行:”exit”, “quit”, “logout”, “exit;”, “quit;”, “logout;”, “q”, “Q”, “:q”,输入这些字符其中之一就可以了。
我是在clickhouse-client下测试的,是否大小写敏感自己辨别。
查看数据库表:show tables;
查看建表语句:show create table 数据库表;
上面语句的语法与MySql的一模一样
建表语句:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
...
) ENGINE = engine
其中engine的语法规则:
ENGINE [=] MergeTree() [PARTITION BY expr] [ORDER BY expr] [SAMPLE BY expr] [SETTINGS name=value, ...]
新写法,官网推荐使用,MergeTree直接使用空参数。
还有一种写法是:
ENGINE [=] MergeTree(date-column [, sampling_expression], (primary, key), index_granularity)
官方不推荐这种老式写法
参数:
CREATE TABLE user ( id Int32, name String, password String, dth Date) ENGINE = MergeTree() PARTITION BY toYYYYMMDD(dth) ORDER BY id SETTINGS index_granularity = 8192
增改查方面不做赘述。基本跟mysql一致,查询方面有有些有特殊限制。
删除方面,ClickHouse只有某些engine支持删除。