Les collections nommées créées par DDL peuvent être activées sur certains services ClickHouse Cloud. Contactez le Support pour confirmer leur disponibilité. Les collections nommées définies dans des fichiers de configuration ne sont pas disponibles, car les utilisateurs ne peuvent pas modifier les fichiers de configuration du serveur dans ClickHouse Cloud.
[NOT] OVERRIDABLE et des attributs XML,
et/ou de l’option de configuration allow_named_collection_override_by_default.
Stocker des collections nommées dans la base de données système
Exemple de DDL
key_1peut toujours être surchargée.key_2ne peut jamais être surchargée.urlpeut être surchargée ou non selon la valeur deallow_named_collection_override_by_default.
Permissions pour créer des collections nommées avec DDL
Pour gérer des collections nommées avec DDL, un utilisateur doit disposer du privilègenamed_collection_control. Ce privilège peut être attribué en ajoutant un fichier à /etc/clickhouse-server/users.d/. Cet exemple accorde à l’utilisateur default les privilèges access_management et named_collection_control :
/etc/clickhouse-server/users.d/user_default.xml
named_collection_control permet à l’utilisateur de créer, modifier et supprimer des collections nommées, mais pas de relire les valeurs qui y sont déjà stockées. Il s’agit d’un privilège distinct, SHOW NAMED COLLECTIONS SECRETS, activé par le paramètre show_named_collections_secrets. Un utilisateur ne peut accorder que les privilèges qu’il possède lui-même : ainsi, tant que show_named_collections_secrets est désactivé, l’utilisateur ne dispose pas de l’ensemble complet des privilèges et GRANT ALL ON *.* TO another_user WITH GRANT OPTION est rejeté avec (Missing permissions: SHOW NAMED COLLECTIONS SECRETS ON *).
Stockage des collections nommées
Les collections nommées peuvent être stockées soit sur un disk local, soit dans ZooKeeper/Keeper. Par défaut, le stockage local est utilisé. Elles peuvent également être stockées de manière chiffrée, avec les mêmes algorithmes que ceux utilisés pour le chiffrement du disque,aes_128_ctr étant utilisé par défaut.
Pour configurer le stockage des collections nommées, vous devez spécifier un type. Il peut s’agir de local ou de keeper/zookeeper. Pour le stockage chiffré,
vous pouvez utiliser local_encrypted ou keeper_encrypted/zookeeper_encrypted.
Pour utiliser ZooKeeper/Keeper, vous devez également définir un path (chemin dans ZooKeeper/Keeper où les collections nommées seront stockées) dans la
section named_collections_storage du fichier de configuration. L’exemple suivant utilise le chiffrement et ZooKeeper/Keeper :
update_timeout_ms vaut 5000 par défaut.
Vous pouvez vérifier le type de stockage actif via system.server_settings et getServerSetting :
SYSTEM RELOAD CONFIG ne modifie pas le backend actif.
Stockage des collections nommées dans des fichiers de configuration
Exemple XML
/etc/clickhouse-server/config.d/named_collections.xml
key_1peut toujours être surchargée.key_2ne peut jamais être surchargée.urlpeut être surchargée ou non selon la valeur deallow_named_collection_override_by_default.
Modification des collections nommées
Les collections nommées créées à l’aide de requêtes DDL peuvent être modifiées ou supprimées via des instructions DDL. Les collections nommées créées à partir de fichiers XML peuvent être gérées en modifiant ou en supprimant le fichier XML correspondant.Modifier une collection nommée DDL
Modifiez ou ajoutez les cléskey1 et key3 de la collection collection2
(cela ne modifiera pas la valeur de la propriété overridable pour ces clés) :
key1 et autorisez sa redéfinition systématique :
key2 de collection2 :
key1 et supprimez la clé key3 dans la collection collection2 :
overridable, vous devez
la supprimer, puis l’ajouter à nouveau.
Supprimez la collection nommée DDL collection2 :
Collections nommées pour accéder à S3
Pour une description des paramètres, voir fonction de table S3.Exemple de DDL
Exemple XML
fonction s3() et exemples de collection nommée pour la table S3
Les deux exemples suivants utilisent la même collection nommées3_mydata :
Fonction s3()
Table S3
Collection nommée pour accéder à une base de données MySQL
Pour une description des paramètres, voir mysql.Exemple de DDL
Exemple XML
Exemples de collection nommée pour la fonction mysql(), une table MySQL, une base de données MySQL et un dictionnaire
Les quatre exemples suivants utilisent la même collection nommée mymysql :
fonction mysql()
La collection nommée ne spécifie pas le paramètre
table ; il est donc indiqué dans l’appel de fonction sous la forme table = 'test'.Table MySQL
Le DDL remplace le paramètre connection_pool_size de la collection nommée.
Base de données MySQL
Dictionnaire MySQL
Collections nommées pour accéder à une base de données PostgreSQL
Pour la description des paramètres, voir postgresql. Il existe également les alias suivants :usernamepouruserdbpourdatabase.
postgresql_connection_pool_size et les autres paramètres postgresql_*) peuvent également être stockés dans la collection ou être transmis sous forme de surcharges key = value. Ils s’appliquent au moteur de table PostgreSQL, à la fonction de table postgresql et au moteur de base de données PostgreSQL ; une clause SETTINGS explicite sur une table a préséance sur les valeurs de la collection.
Le paramètre addresses_expr est utilisé dans une collection à la place de host:port. Ce paramètre est facultatif, car d’autres le sont également : host, hostname, port. Le pseudo-code ci-dessous explique l’ordre de priorité :
Exemple d’utilisation de collections nommées avec la fonction postgresql
Exemple d’utilisation de collections nommées avec une base de données avec moteur PostgreSQL
PostgreSQL copie les données de la collection nommée au moment de la création de la table. Toute modification de la collection n’affecte pas les tables existantes.
Exemple d’utilisation des collections nommées avec une base de données utilisant le moteur PostgreSQL
Exemple d’utilisation de collections nommées avec un dictionnaire dont la source est POSTGRESQL
Collections nommées pour accéder à une base de données ClickHouse distante
Pour la description des paramètres, consultez remote. Exemple de configuration :secure n’est pas nécessaire pour la connexion grâce à remoteSecure, mais peut être utilisé pour les dictionnaires.
Exemple d’utilisation des collections nommées avec les fonctions remote/remoteSecure
Exemple d’utilisation de collections nommées avec un dictionnaire dont la source est ClickHouse
Collections nommées pour accéder à Kafka
Pour une description des paramètres, voir Kafka.Exemple de DDL
Exemple XML
Authentification OAUTHBEARER/OIDC
Les optionsOAUTHBEARER sont des paramètres étendus de librdkafka ; elles doivent donc être imbriquées sous <kafka> dans chaque collection nommée. Les clés kafka_* de premier niveau configurent le table engine Kafka. ClickHouse convertit les underscores des noms d’éléments XML imbriqués en points avant de les transmettre à librdkafka.
L’exemple suivant configure des identifiants client OAuth pour un namespace Azure Event Hubs :
/etc/clickhouse-server/config.d/named_collections.xml
ENGINE = Kafka(eventhub_one) utilise une collection nommée, ClickHouse ne fusionne pas la configuration globale <kafka> du serveur. Créez une collection distincte pour chaque namespace Event Hubs dont l’adresse du broker ou le scope OAuth diffère, et incluez dans cette collection toutes les propriétés OIDC obligatoires.
Dans cet exemple, les attributs from_env s’appliquent aux collections nommées définies en XML et lisent leurs valeurs dans l’environnement du processus serveur ClickHouse. Consultez substitution par des variables d’environnement pour plus de détails sur le déploiement et les valeurs par défaut, ainsi que chiffrement et masquage de la configuration pour protéger les secrets dans les fichiers de configuration prétraités.
Exemple d’utilisation des collections nommées avec une table Kafka
Les deux exemples suivants utilisent la même collection nomméemy_kafka_cluster :
Collections nommées pour les sauvegardes
Pour une description des paramètres, voir Sauvegarde et restauration.Exemple de DDL
Exemple XML
Collections nommées pour accéder aux tables et dictionnaires MongoDB
Pour la description des paramètres, voir mongodb.Exemple de DDL
Exemple XML
Table MongoDB
Le DDL surcharge le paramètre d’options de la collection nommée.
Dictionnaire MongoDB
La collection nommée indique
my_collection comme nom de la collection. Dans l’appel de fonction, ce nom est remplacé par collection = 'my_dict' pour sélectionner une autre collection.