Saltar al contenido principal
Las colecciones con nombre ofrecen una forma de almacenar colecciones de pares clave-valor para configurar integraciones con fuentes externas. Puede usar colecciones con nombre con diccionarios, tablas, funciones de tabla y almacenamiento de objetos. Las colecciones con nombre pueden configurarse mediante DDL o en archivos de configuración, y se aplican cuando se inicia ClickHouse. Simplifican la creación de objetos y permiten ocultar credenciales a usuarios sin acceso administrativo. Las claves de una colección con nombre deben coincidir con los nombres de los parámetros de la función, el motor de tabla, la base de datos, etc. correspondientes. En los ejemplos de abajo, se enlaza la lista de parámetros para cada tipo. Los parámetros establecidos en una colección con nombre pueden sobrescribirse en SQL, como se muestra en los ejemplos de abajo. Esta capacidad puede limitarse mediante las palabras clave [NOT] OVERRIDABLE, atributos XML y/o la opción de configuración allow_named_collection_override_by_default.
Si se permite la sobrescritura, es posible que los usuarios sin acceso administrativo averigüen las credenciales que intenta ocultar. Si está usando colecciones con nombre con ese fin, debería deshabilitar allow_named_collection_override_by_default (que está habilitado de forma predeterminada).

Almacenar colecciones con nombre en la base de datos del sistema

Ejemplo de DDL

En el ejemplo anterior:
  • key_1 siempre puede sobrescribirse.
  • key_2 nunca puede sobrescribirse.
  • url puede sobrescribirse o no, según el valor de allow_named_collection_override_by_default.

Permisos para crear colecciones con nombre con DDL

Para gestionar colecciones con nombre con DDL, un usuario debe tener el privilegio named_collection_control. Esto se puede asignar añadiendo un archivo a /etc/clickhouse-server/users.d/. En el ejemplo, se otorgan al usuario default los privilegios access_management y named_collection_control:
/etc/clickhouse-server/users.d/user_default.xml
En el ejemplo anterior, el valor password_sha256_hex es la representación hexadecimal del hash SHA256 de la contraseña. Esta configuración para el usuario default tiene el atributo replace=true porque, en la configuración predeterminada, se define una password en texto plano, y no es posible tener configuradas a la vez una contraseña en texto plano y una contraseña SHA256 hexadecimal para un usuario.

Almacenamiento de colecciones con nombre

Las colecciones con nombre pueden almacenarse en el disco local o en ZooKeeper/Keeper. De forma predeterminada, se utiliza el almacenamiento local. También pueden almacenarse cifradas con los mismos algoritmos que se usan para el cifrado de disco, donde aes_128_ctr se utiliza de forma predeterminada. Para configurar el almacenamiento de colecciones con nombre, debe especificar un type. Puede ser local o keeper/zookeeper. Para el almacenamiento cifrado, puede usar local_encrypted o keeper_encrypted/zookeeper_encrypted. Para usar ZooKeeper/Keeper, también es necesario configurar un path (la ruta en ZooKeeper/Keeper donde se almacenarán las colecciones con nombre) en la sección named_collections_storage del archivo de configuración. El siguiente ejemplo usa cifrado y ZooKeeper/Keeper:
De forma predeterminada, el parámetro de configuración opcional update_timeout_ms es igual a 5000.

Guardar colecciones con nombre en archivos de configuración

Ejemplo en XML

/etc/clickhouse-server/config.d/named_collections.xml
En el ejemplo anterior:
  • key_1 siempre puede sobrescribirse.
  • key_2 nunca puede sobrescribirse.
  • url puede sobrescribirse o no, según el valor de allow_named_collection_override_by_default.

Modificar colecciones con nombre

Las colecciones con nombre creadas con consultas DDL pueden modificarse o eliminarse mediante DDL. Las colecciones con nombre creadas con archivos XML pueden gestionarse editando o eliminando el archivo XML correspondiente.

Modificar una colección con nombre DDL

Cambie o añada las claves key1 y key3 de la colección collection2 (esto no cambiará el valor de la marca overridable para esas claves):
Cambie o añada la clave key1 y permita sobrescribirla siempre:
Elimine la clave key2 de la colección collection2:
Cambie o añada la clave key1 y elimine la clave key3 de la colección collection2:
Para forzar que una clave use la configuración predeterminada del indicador overridable, debes eliminar y volver a añadir la clave.

Elimine la colección con nombre de DDL collection2:

Colecciones con nombre para acceder a S3

Consulte la descripción de los parámetros en la función de tabla S3.

Ejemplo de DDL

Ejemplo en XML

Ejemplos de colecciones con nombre de la función s3() y la tabla S3

Ambos ejemplos siguientes usan la misma colección con nombre s3_mydata:

Función s3()

El primer argumento de la función s3() anterior es el nombre de la colección, s3_mydata. Sin colecciones con nombre, el ID de la clave de acceso, la clave secreta, el formato y la URL tendrían que pasarse en cada llamada a la función s3().

Tabla de S3

Colecciones con nombre para acceder a una base de datos MySQL

Para consultar la descripción de los parámetros, vea mysql.

Ejemplo de DDL

Ejemplo de XML

Ejemplos de colecciones con nombre para la función mysql(), la tabla MySQL, la base de datos MySQL y el Diccionario

Los cuatro ejemplos siguientes usan la misma colección con nombre mymysql:

función mysql()

La colección con nombre no especifica el parámetro table, por lo que este se indica en la llamada a la función como table = 'test'.

Tabla de MySQL

El DDL anula la configuración connection_pool_size de la colección con nombre.

Base de datos MySQL

Diccionario de MySQL

Colecciones con nombre para acceder a la base de datos PostgreSQL

La descripción de los parámetros puede consultarse en postgresql. Además, existen alias:
  • username para user
  • db para database.
El parámetro addresses_expr se usa en una colección en lugar de host:port. Este parámetro es opcional, ya que hay otros parámetros opcionales: host, hostname, port. El siguiente pseudocódigo explica la prioridad:
Ejemplo de creación:
Ejemplo de configuración:

Ejemplo de uso de colecciones con nombre con la función postgresql

Ejemplo de uso de colecciones con nombre en una base de datos con motor PostgreSQL

PostgreSQL copia los datos de la colección con nombre al crear la tabla. Los cambios en la colección no afectan a las tablas existentes.

Ejemplo de uso de colecciones con nombre con una base de datos con motor PostgreSQL

Ejemplo de uso de colecciones con nombre en un diccionario con fuente POSTGRESQL

Colecciones con nombre para acceder a una base de datos remota de ClickHouse

Consulte la descripción de los parámetros en remote. Ejemplo de configuración:
secure no es necesario para la conexión con remoteSecure, pero puede usarse para diccionarios.

Ejemplo de uso de colecciones con nombre con las funciones remote/remoteSecure

Ejemplo de uso de colecciones con nombre en un diccionario con origen en ClickHouse

Colecciones con nombre para acceder a Kafka

La descripción de los parámetros se encuentra en Kafka.

Ejemplo de DDL

Ejemplo de XML

Ejemplo de uso de colecciones con nombre con una tabla de Kafka

Los dos ejemplos siguientes usan la misma colección con nombre my_kafka_cluster:

Colecciones con nombre para copias de seguridad

Para ver la descripción de los parámetros, consulte Copias de seguridad y restauración.

Ejemplo de DDL

Ejemplo en XML

Colecciones con nombre para acceder a la tabla y al diccionario de MongoDB

Para obtener la descripción de los parámetros, consulte mongodb.

Ejemplo de DDL

Ejemplo de XML

Tabla de MongoDB

El DDL anula la configuración de opciones de la colección con nombre.

Diccionario de MongoDB

La colección con nombre especifica my_collection como nombre de la colección. En la llamada a la función, este valor se sustituye por collection = 'my_dict' para seleccionar otra colección.
Última modificación el 25 de junio de 2026