Skip to main content

Introducción

Esta biblioteca proporciona extensiones de PostgreSQL para ejecutar consultas chDB en Postgres y para copiar datos desde y hacia diversos formatos y almacenes de objetos.

Extensión chdb

La extensión chdb ejecuta consultas de chDB. La función chdb_query() ejecuta una única consulta. Por ejemplo, esta consulta:
Salida:
Consulta la documentación de chdb para obtener más detalles.

Módulo chdb_hook

El módulo chdb_hook se engancha al comando COPY para copiar datos hacia o desde S3, GCS, Azure Blob, un archivo o una URL http. Este ejemplo carga registros de varios archivos CSV en S3 con un solo comando COPY:
Tras lo cual, la tabla times contiene los registros de cada archivo que cargó:
Un CREATE TABLE también puede derivar sus columnas y cargar sus filas desde una URL de este tipo:
Consulta la documentación de chdb_hook para más detalles.

Benchmarking de formatos

Un benchmark compara el rendimiento de COPY de [chdb_hook] con el de [aws_s3], [pg_duckdb] y [pg_lake] para aprox. 1 M de filas del NYC Taxi dataset en diversos formatos. NYC Taxi Data Benchmark De las cuatro extensiones, chdb es la que muestra un rendimiento más consistente. [pg_duckdb] y [pg_lake], ambos basados en DuckDB, tardan entre 2 y 3 veces más en importar datos desde CSV, JSON y Parquet. Solo [aws_s3] se acerca al rendimiento de [chdb_hook], pero admite un conjunto de formatos de datos mucho más limitado: Otras pruebas de benchmarking demuestran un rendimiento relativamente consistente al importar el NYC Taxi dataset en diversos formatos: Import Benchmark El benchmark utiliza el formato JSONCompact por compatibilidad con las demás extensiones; otros formatos JSON, como JSONCompactEachRow, se aproximan más al rendimiento de los otros formatos.

Architecture

Las extensiones chdb y chdb_hook dependen de un proceso chdb_helper para ejecutar consultas de chDB. El helper mantiene el consumo de recursos de chDB separado del proceso principal de Postgres, lo que supone una ventaja en flujos de trabajo de uso ocasional, como la carga de datos desde un lago de datos.
A diferencia de un worker en segundo plano, el helper no retiene memoria compartida de Postgres ni es gestionado por el postmaster. Esto aísla los crashes, de modo que no afecten a Postgres. Si un helper muere, el error solo se produce en el backend que lo inició, y las demás sessions no se ven afectadas.

Dependencias

La extensión chdb requiere PostgreSQL 15 o superior y la biblioteca chDB v26.7.0 o superior (actualmente disponible solo para Linux y macOS). La forma más sencilla de instalarla es mediante el script de shell lib.chdb.io:
Para compilar estáticamente chDB en la aplicación auxiliar, define las siguientes variables antes de ejecutar los comandos make de la Instalación.
El Makefile descargará la biblioteca estática libchdb y la compilará en la aplicación. En Linux, también puede hacer que el proceso de instalación descargue e instale la biblioteca dinámica libchdb definiendo export BUNDLE_LIBCHDB=1 antes de ejecutar los comandos make de la Instalación.

Compilar desde el código fuente

Para compilar chdb, basta con ejecutar lo siguiente:
Si aparece un error como el siguiente:
Debe usar GNU make, que es muy posible que ya esté instalado en su sistema como gmake:
Si encuentra un error como el siguiente:
Asegúrese de tener pg_config instalado y disponible en su path. Si utilizó un sistema de gestión de paquetes como RPM para instalar PostgreSQL, asegúrese de que también esté instalado el paquete -devel. Si es necesario, indique al proceso de build dónde encontrarlo:
Si aparece un error como el siguiente:
Debe instalar chDB o indicarle al compilador dónde encontrarlo. Si, por ejemplo, lo instaló mediante el script de shell lib.chdb.io, apunte a /usr/local:
Si encuentra un error como el siguiente:
Debe ejecutar la suite de pruebas con un super user, como el super user “postgres” predeterminado:
Para instalar la extensión en un prefix personalizado en PostgreSQL 18 o versiones posteriores, pase el argumento prefix a install (pero no a ningún otro objetivo de make):
A continuación, asegúrese de que el prefijo esté incluido en los siguientes [parámetros de postgresql.conf]:

Autores

Copyright (c) 2026, ClickHouse
Última modificación el 26 de septiembre de 2026