David Wheeler:介绍 chdb Postgres 扩展:从云存储高性能导入

David Wheeler:介绍 chdb Postgres 扩展:从云存储高性能导入

💡 原文英文,约1600词,阅读约需6分钟。
📝

内容提要

ClickHouse 发布新 Postgres 扩展 chdb,基于 chDB 库,支持多种数据格式(如 CSV、JSON、Parquet 等)及云存储导入导出。基准测试显示其性能优于 pg_duckdb 和 pg_lake,接近 aws_s3。扩展提供 chdb_query 函数和 COPY 钩子,采用独立辅助进程架构,避免资源浪费。未来计划完善类型映射和访问控制。

🔎

延伸解读

性能优势与适用场景

chdb 在导入 CSV、JSON、Parquet 等格式时,性能比 pg_duckdb 和 pg_lake 快 2-3 倍,接近 aws_s3。但 aws_s3 仅支持文本格式和 AWS S3,而 chdb 支持更多格式和云存储。因此,若需从多种格式或云平台导入数据,chdb 是更高效的选择。

架构设计亮点

chdb 采用独立辅助进程架构,按需启动,任务完成后即退出,避免常驻资源占用。相比 pg_duckdb 嵌入引擎和 pg_lake 常驻服务,chdb 更节省资源,且隔离了内存问题,降低了对 PostgreSQL 集群的影响。

使用注意事项

当前版本中,访问对象存储需显式传递凭证,未来计划支持服务器配置的凭证链。类型映射虽覆盖大部分,但特殊类型(如 JSON)可能需用 structure 选项手动指定。此外,chdb_hook 支持通配符批量导入,但需注意文件命名规则。

Q&A

chdb Postgres 扩展是什么?它基于什么库?

chdb 是一个新的 Postgres 扩展,用于扩展 Postgres 的导入导出功能。它基于 chDB 库,chDB 是 ClickHouse 引擎的进程内版本。

chdb 扩展支持哪些数据格式和压缩算法?

chdb 支持 ClickHouse 支持的所有格式,包括 TSV、CSV、JSON、BSON、Prometheus、Protobuf、Avro、Parquet、Arrow、XML、CapnProto、Markdown、MsgPack、ORC 等。压缩算法支持 gzip、zstd、lz4、bz2、snappy、brotli。

chdb 扩展与 pg_duckdb、pg_lake 和 aws_s3 相比性能如何?

在导入 NYC Taxi 数据集(100万行)的基准测试中,chdb 性能最稳定。pg_duckdb 和 pg_lake 导入 CSV、JSON、Parquet 的时间约为 chdb 的 2-3 倍。aws_s3 性能接近 chdb,但支持的数据格式有限。

如何使用 chdb_query 函数从 S3 导入数据?

首先创建 chdb 扩展,然后使用 chdb_query 函数执行 chDB 查询。例如:SELECT * FROM chdb_query($$ SELECT * FROM s3('s3://bucket/path/file.csv') $$) AS (id int, months int, days int);

chdb_hook 模块如何工作?它支持哪些存储目标?

chdb_hook 模块通过挂钩 COPY 命令,支持从 AWS S3、Google Cloud Storage、Azure Blob Storage、文件或 HTTP URL 复制数据。它根据 URL 方案自动选择协议,例如 s3:// 对应 AWS S3,gs:// 对应 Google Cloud Storage,az:// 对应 Azure Blob Storage。

chdb 扩展的架构有什么特点?

chdb 扩展将 chDB 库嵌入到一个独立的辅助进程中,扩展本身不链接 chDB。它按需启动辅助进程,并通过文件描述符(STDIN、STDOUT、STDERR 等)进行通信。这种设计避免了资源浪费,并隔离了 PostgreSQL 集群免受内存问题影响。

chdb 扩展的未来计划有哪些?

未来计划包括:完善类型映射、通过凭证链实现对象存储的访问控制、支持 COPY (query) TO、支持 COPY 的 WHERE 条件、支持所有现有 COPY 选项、支持 Iceberg 格式、直接从存储查询文件。

🏷️

标签

➡️

继续阅读