一、clickhouse,說白了還是數據庫,不一樣的是clickhouse是列式存儲,和傳統的MySQL行式存儲不同的地方在於,查詢和所儲。
1)查詢,行式和列式的區別,圖形說明
說明:理解上來說,行式對於一條數據的完整性索引會更快。而列式對於統計和查詢指定數據會更加塊。
2)數據存儲方式
從數據上面來看,數據索引和查詢肯定存在不同的地方。
二、優缺點
a、優點
1)列式存儲,適用聚合計算
2)數據壓縮,減少IO成本
3)並行查詢,提升效率,橫向拓展等
4)寫入速度快
b、缺點
1)不支持事務
2)不支持高併發,官方qps100
3)避免小數據寫入,儘量使用批量寫入
4)clickhouse採用並行查詢,一個簡單的數據查詢也需要並行,消耗過大。
三、部署(docker方式)
1)單機
docker run -itd --name=xbd-clickhouse -p 8123:8123 -v /var/lib/clickhouse/:/var/lib/clickhouse/ clickhouse/clickhouse-server:22.12.6.22
2)集羣 TODO
四、springboot適用mybatis對接應用clickhouse
1)pom.xml
<dependencies> <dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.3.2</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.2</version> </dependency> </dependencies>
2)application.yml配置
spring: datasource: driver-class-name: ru.yandex.clickhouse.ClickHouseDriver url: jdbc:clickhouse://192.168.5.14:8123/ch username: default password: mybatis-plus: mapper-locations: classpath:/mapper/*.xml
是不是感覺和mysql沒有差異?no!no!no!
3)查詢和添加語法基本上和mysql差不多,創建語句還是很多不一樣的。舉個例子
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="com.xbd.clickhouse.mapper.TestMapper"> <update id="create"> CREATE TABLE test ( id Int64, name String ) ENGINE = MergeTree() ORDER BY id </update> </mapper>