更新时间:2024-08-03 GMT+08:00

ClickHouse应用开发简介

ClickHouse简介

ClickHouse是面向联机分析处理的列式数据库,支持SQL查询,且查询性能好,特别是基于大宽表的聚合分析查询性能非常优异,比其他分析型数据库速度快一个数量级。

ClickHouse的设计优点:

  • 数据压缩比高
  • 多核并行计算
  • 向量化计算引擎
  • 支持嵌套数据结构
  • 支持稀疏索引
  • 支持数据Insert和Update

ClickHouse的应用场景:

  • 实时数仓场景

    使用流式计算引擎(如Flink)把实时数据写入ClickHouse,借助ClickHouse的优异查询性能,在亚秒级内响应多维度、多模式的实时查询分析请求。

  • 离线查询场景

    把规模庞大的业务数据导入到ClickHouse,构造数亿至数百亿记录规模、数百以上的维度的大宽表,随时进行个性化统计和持续探索式查询分析,辅助商业决策,具有非常好的查询体验。

ClickHouse开发接口简介

ClickHouse由C++语言开发,定位为DBMS,支持HTTP和Native TCP两种网络接口协议,支持JDBC、ODBC等多种驱动方式,推荐使用社区版本的clickhouse-jdbc来进行应用程序开发。

基本概念

  • cluster

    cluster(集群)在ClickHouse里是一种逻辑的概念,它可以由用户根据需要自由的定义,与通常理解的集群有一定的差异。多个ClickHouse节点之间是一种松耦合的关系,各自独立存在。

  • shards

    shard(分片)是对cluster的横向切分,1个cluster可以由多个shard组成。

  • replicas

    replica(副本),1个shard可以有多个replica组成。

  • partition

    partition(分区),针对的是本地replica而言的,可以理解为是一种纵向切分。

  • MergeTree

    ClickHouse拥有非常庞大的表引擎体系,MergeTree作为家族系统最基础的表引擎,提供了数据分区、一级索引和二级索引等功能。在创建表的时候需要指定表引擎,不同的表引擎会决定一张数据表的最终“性格”,比如数据表拥有何种特性、数据以何种形式被存储以及如何被加载。