摄取
路径 A:ClickPipes (托管,且仅限 ClickHouse Cloud)
- **流式:**Apache Kafka (包括 MSK、Confluent Cloud、Redpanda、Azure Event Hubs、WarpStream) 、Amazon Kinesis
- **对象存储:**Amazon S3 (以及兼容 S3 的存储) 、Google Cloud Storage、Azure Blob 存储
- **CDC:**PostgreSQL、MySQL、MongoDB、BigQuery
路径 B:通过官方语言客户端自行摄取
- 官方客户端:Python、Go、Java、JavaScript、Rust、C#、C++
- 两种传输协议:HTTP (所有客户端) 和 native TCP (仅限 Go 和 C++ 客户端)
- 认证:默认通过 TLS 使用用户名和密码;所有主流客户端都支持 mTLS 和 SSL 客户端证书认证
- 数据格式通常属于实现细节。客户端会将运行时类型转换为 ClickHouse Native 或 RowBinary 格式。如果你已经生成了 Arrow、Parquet、JSONEachRow 或其他格式,大多数客户端都提供用于发送预序列化数据的原始字节 API
- 为了获得更高吞吐量,建议按 1 万到 10 万行分批,并将每秒约一次插入作为同步插入的上限目标。如果客户端侧批处理不现实,请使用异步插入,将批处理转移到服务器端
消费
- 应用程序代码: 使用与摄取相同的官方语言客户端
- BI 和 SQL 工具: ClickHouse 提供官方 JDBC v2 驱动 (Java) 和 ODBC 驱动。Tableau、Looker、Power BI、Metabase、Apache Superset 和 Grafana 可通过这些驱动,或通过由 ClickHouse 及其合作伙伴维护的专用连接器进行集成
- 结果格式: 客户端通常自行负责序列化。如果你的产品需要,也可以在传输过程中请求 Arrow、Parquet 或其他列式格式
结果集大小
SELECT * 可能会传输数 TB 数据。**请在应用程序中控制请求的形态:**使用 LIMIT、分页、流式读取以及显式列清单。如果你正在构建面向用户的分析功能,请将无界结果集视为 UX 问题,而不是传输问题。
ClickHouse 拥有丰富的类型系统:数组、Tuple、Map、JSON、Nested、LowCardinality 等。官方客户端会将这些类型映射为符合各语言习惯的类型。如果你的产品会将 ClickHouse 数据展示给最终用户,请尽早规划类型映射策略。
后续步骤
User-Agent 字符串约定
User-Agent 字符串。ClickHouse 会在服务端对其进行解析,以跟踪采用情况、展示使用遥测数据,并为产品路线图提供依据。
格式:
clickhouse-java/0.8.0my-analytics-app/3.1.2 clickhouse-js/1.2.0 (env: staging; region: us-east-1; lv: node/20.10)
- 客户端名称和版本中不得包含空白字符
- 如果包含注释,则必须放在最前面
- 标准元数据键:
lv(语言或框架版本) 、os、arch - TCP 和原生协议客户端通过协议字段上报客户端名称和版本,而不是通过
User-Agent
User-Agent 及相关字段。