前言

事件流是按时间顺序持续产生的行为数据,如接口请求、系统日志、监控指标、部署记录等。

ClickHouse专为这类高吞吐、海量时序数据的实时聚合分析设计。

ClickHouse 专为列式存储、高速聚合设计,能在亿级数据上实现秒级多维统计,是运维、SRE 做可观测性与数据分析的首选引擎。

例如:Pingmesh这种全网探测数据,天生就是给ClickHouse存储的。

      A  B  C  D ← 这是【列】:目标节点
   A  1  1  1  0
   B  1  1  1  0
   C  1  1  1  0
   D  0  0  0  1
   ↑
   这是【行】:从谁出发

一、ClickHouse是什么?

ClickHouse的核心定位就是对大数据进行近实时地进行分析型查询,而不是展示和实时全文搜索。

使用ClickHouse

image

Python

安装依赖包

pip install clickhouse-connect

开始使用

import clickhouse_connect

client = clickhouse_connect.get_client(
    host='172.16.128.208',
    port=8123,
    username='default',
    password='',
    database="flumesinkNew"
)
#查询
result = client.query("SELECT * FROM http_log LIMIT 5")
# 结果行
print(result.result_rows)
# 列名
print(result.column_names)
# 或者一行一行遍历
for row in result.result_rows:
    print(row)

client.close()
Python调用ClickHouse

Java

安装依赖包

<dependency>
    <groupId>ru.yandex.clickhouse</groupId>
    <artifactId>clickhouse-jdbc</artifactId>
    <version>0.3.2</version>
</dependency>

 

二、ClickHouse 数据类型

1. 基础标量

  • 整数:Int/UInt系列
  • 浮点:Float32/Float64;定点:Decimal(P,S)
  • 字符串:String / FixedString(N)
  • 时间:Date、DateTime、DateTime64(精度)(纳秒用 9)
  • 专用:IPv4/IPv6、UUID、Enum

无 bool,用UInt8 0/1 代替

2. 复合类型(多值打包)

  • Array(T):同类型数组,arrayJoin展开多行
  • Tuple(T1,T2...):固定个数多类型组合
  • Map(K,V):KV 键值对(otel 标签首选,col['key']取值)
  • Nested:嵌套数组结构,旧方案

3. 动态半结构化

  • JSON:任意嵌套 json 文档
  • Variant/Dynamic:一行支持多种类型

4. 类型包装器(不是独立类型)

  • LowCardinality(T):低基数,压缩 + 加速分组(标签常用)
  • Nullable(T):允许 null,有性能损耗

 

 

 

 

 

 

 

参考

posted on 2025-08-28 22:08  运维体系建设之路  阅读(41)  评论(0)    收藏  举报