Un dictionnaire est une correspondance (key -> attributes) pratique pour différents types de listes de référence.
ClickHouse prend en charge des fonctions spéciales pour utiliser les dictionnaires dans les requêtes. Il est plus simple et plus efficace d’utiliser des dictionnaires avec ces fonctions que d’effectuer un JOIN avec des tables de référence.
Les dictionnaires peuvent être créés de deux façons :
- Avec une requête DDL (recommandé)
- Avec un fichier de configuration
Création d’un dictionnaire avec une requête DDL
Compatible avec ClickHouse Cloud
Les dictionnaires peuvent être créés à l’aide de requêtes DDL. Il s’agit de la méthode recommandée, car avec les dictionnaires créés via DDL :
- Aucun enregistrement supplémentaire n’est ajouté aux fichiers de configuration du serveur.
- Les dictionnaires peuvent être utilisés comme des entités à part entière, telles que des tables ou des vues.
- Les données peuvent être lues directement, en utilisant la syntaxe
SELECThabituelle plutôt que des fonctions de table de dictionnaire. Notez que, lors d’un accès direct à un dictionnaire via une instructionSELECT, un dictionnaire mis en cache ne renvoie que les données en cache, tandis qu’un dictionnaire non mis en cache renvoie toutes les données qu’il stocke. - Les dictionnaires peuvent être renommés facilement.
Syntaxe
CREATE [OR REPLACE] DICTIONARY [IF NOT EXISTS] [db.]dictionary_name [ON CLUSTER cluster]
(
key1 type1 [DEFAULT | EXPRESSION expr1] [IS_OBJECT_ID],
key2 type2 [DEFAULT | EXPRESSION expr2],
attr1 type2 [DEFAULT | EXPRESSION expr3] [HIERARCHICAL|INJECTIVE],
attr2 type2 [DEFAULT | EXPRESSION expr4] [HIERARCHICAL|INJECTIVE]
)
PRIMARY KEY key1, key2
SOURCE(SOURCE_NAME([param1 value1 ... paramN valueN]))
LAYOUT(LAYOUT_NAME([param_name param_value]))
LIFETIME({MIN min_val MAX max_val | max_val})
SETTINGS(setting_name = setting_value, setting_name = setting_value, ...)
COMMENT 'Comment'| Clause | Description |
|---|---|
| Attributs | Les attributs du dictionnaire sont définis de manière similaire aux colonnes d'une table. La seule propriété obligatoire est le type ; toutes les autres peuvent avoir des valeurs par défaut. |
| PRIMARY KEY | Définit la ou les colonnes clés pour les recherches dans le dictionnaire. Selon le layout, un ou plusieurs attributs peuvent être définis comme clés. |
SOURCE |
Définit la source de données du dictionnaire (par ex. table ClickHouse, HTTP, PostgreSQL). |
LAYOUT |
Contrôle la façon dont le dictionnaire est stocké en mémoire (par ex. FLAT, HASHED, CACHE). |
LIFETIME |
Définit l'intervalle de rafraîchissement du dictionnaire. |
ON CLUSTER |
Crée le dictionnaire sur un cluster. Facultatif. |
SETTINGS |
Paramètres supplémentaires du dictionnaire. Facultatif. |
COMMENT |
Ajoute un commentaire au dictionnaire. Facultatif. |
Créer un dictionnaire avec un fichier de configuration
Le fichier de configuration du dictionnaire se présente au format suivant :
<clickhouse>
<comment>An optional element with any content. Ignored by the ClickHouse server.</comment>
<!--Optional element. File name with substitutions-->
<include_from>/etc/clickhouse-server/substitutions.xml</include_from>
<dictionary>
<!-- Dictionary configuration. -->
<!-- There can be any number of dictionary sections in a configuration file. -->
</dictionary>
</clickhouse>Vous pouvez configurer autant de dictionnaires que vous le souhaitez dans le même fichier.
- layout — Comment les dictionnaires sont stockés en mémoire
- Sources — Connexion aux sources de données
- Durée de vie — Configuration de l’actualisation automatique
- Attributs — Configuration des clés et des attributs
- Dictionnaires intégrés — Dictionnaires geobase intégrés
- system.dictionaries — Table système contenant des informations sur les dictionnaires