Clickhouse是俄罗斯yandex公司于2016年开源的一个列式存储数据库管理系统,是流行的OLAP数据库之一,使用MPP架构,以其超高的查询性能受到业界的青睐。
Clickhouse数据压缩性能很好,相比PostgreSQL,所需磁盘空间减少70%;社区活跃,支持TTL(过期数据定期删除),适配多种操作语言(Java、Go、Python、Nodejs)。
它支持标准的SQL语言,包括SELECT、INSERT、UPDATE、DELETE等常见操作,还支持窗口函数、聚合函数、JOIN等复杂的查询和分析功能。易用性也比较不错。
--创建表格
CREATE TABLE student (
id UInt16,
name String,
age UInt8
) ENGINE = Memory;
--插入数据
INSERT INTO student VALUES
(1, 'Alice', 20),
(2, 'Bob', 22),
(3, 'Charlie', 19);
--查询数据
SELECT * FROM student;
--聚合查询
SELECT AVG(age) AS avg_age FROM student;
--join查询
SELECT s.name, c.course_name
FROM student s
LEFT JOIN course c ON s.id = c.student_id;
支持从多种数据源进行数据接入,用于OLAP分析。
--接入MySQL数据
SELECT *
FROM
mysql(
'localhost:3306',
'my_database',
'my_table',
'postgresql_user',
'password')
;
但Clickhouse也有其缺点,它主要关注单表优化,不能很好地处理复杂表达式和多表join的场景,而且在需要落盘的场景clickhouse也没有做过很好的优化。更新与删除的支持并不好。