Introduction
- JSON s’est imposé comme le format standard pour traiter les données semi-structurées et non structurées dans les systèmes de données modernes.
- ClickHouse reconnaît l’importance de JSON et a relevé plusieurs défis liés à son utilisation efficace à grande échelle.
Défis
-
Défi 1 : un véritable stockage orienté colonnes
Pour traiter efficacement les données JSON comme les autres types de colonnes, il faut stocker les chemins JSON selon une approche orientée colonnes. -
Défi 2 : intégration des données dynamiques et des types
Il faut pouvoir stocker différents types de données pour un même chemin JSON afin de préserver l’intégrité des données. -
Défi 3 : éviter l’explosion du nombre de fichiers de colonnes sur disque
En présence d’un grand nombre de clés JSON uniques, il faut limiter la création de colonnes pour éviter la prolifération des fichiers de colonnes. -
Défi 4 : stockage dense
Lorsqu’il existe de nombreuses clés JSON uniques mais rares, il faut éviter de stocker de manière redondante des valeurs NULL ou des valeurs par défaut.
Nouveau type de données JSON
- ClickHouse introduit un nouveau type de données JSON pour un traitement JSON haute performance.
- Ce type prend en charge les données dynamiques tout en conservant une forte compression des données et de bonnes performances de requête.
- Les performances peuvent être ajustées en fournissant des indications pour le parsing JSON.
Bloc de construction 1 - type Variant
- Le type Variant permet de stocker efficacement des valeurs de types de données différents dans une même colonne de table.
- Il utilise une sous-colonne distincte pour chaque type de données afin de préserver l’intégrité des données.
Bloc de construction 2 - type Dynamic
- Le type Dynamic étend le type Variant pour permettre le stockage de différents types de données sans définir les types à l’avance.
- Il limite le nombre de types stockés afin d’éviter l’explosion des fichiers de colonnes.
Type JSON de ClickHouse
- En s’appuyant sur les types Variant et Dynamic, ClickHouse implémente un nouveau type JSON qui répond à tous ces défis.
- Il peut stocker des objets JSON quelle que soit leur structure, et permet de lire les valeurs en utilisant les chemins JSON comme sous-colonnes.
Le récapitulatif de GN⁺
- Le nouveau type de données JSON de ClickHouse vise à résoudre les problèmes de performance de JSON dans l’analyse de données à grande échelle.
- Ce type prend en charge divers types de données et offre de hautes performances ainsi qu’une bonne extensibilité.
- Il pose les bases de la prise en charge d’autres types semi-structurés comme XML et YAML, au-delà de JSON.
- Il sera utile aux développeurs utilisant ClickHouse, avec des avantages en matière de compression des données et de performances de requête.
1 commentaires
Commentaires sur Hacker News
Chez PostHog, le choix d’utiliser ClickHouse a été l’une de leurs meilleures décisions. Cela leur a permis de faire monter les performances en charge tout en construisant davantage de produits à partir du même jeu de données
Je me demande si ajouter des types de données à JSON lui permet encore de rester du JSON
C’est bien de voir cette fonctionnalité arriver dans ClickHouse
Lorsqu’on évalue ClickHouse, Apache Pinot mérite aussi d’être pris en compte
Je trouve cela intéressant pour les données qui changent dynamiquement
J’attendais le support JSON de ClickHouse, et le nouveau type ainsi que les colonnes dynamiques seront particulièrement utiles
ClickHouse est un excellent outil
Quand j’ai essayé ClickHouse il y a quelques semaines, il nommait les fichiers à partir des noms de colonnes, ce qui provoquait des erreurs du système de fichiers à cause de noms trop longs et de slashs
ClickHouse est sous-utilisé
clickhouse-localest excellent pour traiter des CSV avec SQL, et je le recommande vivement à ceux qui en ont assez de Google Sheets ou d’Excel