Las colecciones con nombre creadas mediante DDL pueden habilitarse en determinados servicios de ClickHouse Cloud. Póngase en contacto con Support para confirmar la disponibilidad. Las colecciones con nombre definidas en archivos de configuración no están disponibles porque los usuarios no pueden modificar los archivos de configuración del servidor en ClickHouse Cloud.
[NOT] OVERRIDABLE, atributos XML
y/o la opción de configuración allow_named_collection_override_by_default.
Almacenar colecciones con nombre en la base de datos del sistema
Ejemplo de DDL
key_1siempre puede sobrescribirse.key_2nunca puede sobrescribirse.urlpuede sobrescribirse o no, según el valor deallow_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 privilegionamed_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
named_collection_control permite al usuario crear, modificar y eliminar colecciones con nombre, pero no leer los valores que ya están almacenados en ellas. Ese es un privilegio independiente, SHOW NAMED COLLECTIONS SECRETS, habilitado mediante la configuración show_named_collections_secrets. Un usuario solo puede otorgar los privilegios que él mismo posee, por lo que, mientras show_named_collections_secrets esté deshabilitado, el usuario no dispone del conjunto completo de privilegios y GRANT ALL ON *.* TO another_user WITH GRANT OPTION se rechaza con (Missing permissions: SHOW NAMED COLLECTIONS SECRETS ON *).
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, dondeaes_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:
update_timeout_ms es igual a 5000.
Puede inspeccionar el tipo de almacenamiento activo mediante system.server_settings y getServerSetting:
SYSTEM RELOAD CONFIG no cambia el backend activo.
Guardar colecciones con nombre en archivos de configuración
Ejemplo en XML
/etc/clickhouse-server/config.d/named_collections.xml
key_1siempre puede sobrescribirse.key_2nunca puede sobrescribirse.urlpuede sobrescribirse o no, según el valor deallow_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 claveskey1 y key3 de la colección collection2
(esto no cambiará el valor de la marca overridable para esas claves):
key1 y permita sobrescribirla siempre:
key2 de la colección collection2:
key1 y elimine la clave key3 de la colección collection2:
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 nombres3_mydata:
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 nombremymysql:
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:usernameparauserdbparadatabase.
postgresql_connection_pool_size y los demás ajustes postgresql_*) también puede almacenarse en la colección o pasarse como sobrescrituras key = value. Se aplican al motor de tabla PostgreSQL, a la función de tabla postgresql y al motor de base de datos PostgreSQL; una cláusula SETTINGS explícita en una tabla tiene prioridad sobre los valores de la colección.
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 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
Autenticación OAUTHBEARER/OIDC
Las opciones deOAUTHBEARER son configuraciones extendidas de librdkafka, por lo que deben anidarse dentro de <kafka> en cada colección con nombre. Las claves kafka_* de nivel superior configuran el motor de tabla Kafka. ClickHouse convierte los guiones bajos de los nombres de los elementos XML anidados en puntos antes de pasarlos a librdkafka.
En el siguiente ejemplo se configuran credenciales de cliente OAuth para un espacio de nombres de Azure Event Hubs:
/etc/clickhouse-server/config.d/named_collections.xml
ENGINE = Kafka(eventhub_one) utiliza una colección con nombre, ClickHouse no fusiona la configuración global <kafka> del servidor. Cree una colección por cada espacio de nombres de Event Hubs si la dirección del broker o el ámbito de OAuth son distintos, e incluya en esa colección todas las propiedades OIDC obligatorias.
Los atributos from_env de este ejemplo se aplican a las colecciones con nombre definidas en XML y obtienen sus valores del entorno del proceso del servidor de ClickHouse. Consulte sustitución mediante variables de entorno para obtener más información sobre el despliegue y los valores predeterminados, y cifrado y ocultación de la configuración para proteger los secretos en los archivos de configuración preprocesados.
Ejemplo de uso de colecciones con nombre con una tabla de Kafka
Los dos ejemplos siguientes usan la misma colección con nombremy_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.