Einführung
- JSON hat sich in modernen Datensystemen als Standardformat für die Verarbeitung semistrukturierter und unstrukturierter Daten etabliert.
- ClickHouse erkennt die Bedeutung von JSON und hat einige Herausforderungen gelöst, um JSON effizient im großen Maßstab zu nutzen.
Herausforderungen
-
Herausforderung 1: Echter spaltenorientierter Speicher
Um JSON-Daten so effizient wie andere Spaltentypen zu verarbeiten, müssen JSON-Pfade spaltenorientiert gespeichert werden. -
Herausforderung 2: Dynamisch wechselnde Daten und Probleme bei der Typintegration
Es muss möglich sein, für JSON-Pfade unterschiedliche Datentypen zu speichern, um die Datenintegrität zu erhalten. -
Herausforderung 3: Verhinderung einer Explosion von Spaltendatendateien auf der Festplatte
Bei vielen eindeutigen JSON-Schlüsseln müssen Grenzen für die Spaltenerzeugung gesetzt werden, um eine Explosion von Spaltendateien zu verhindern. -
Herausforderung 4: Dichte Speicherung
Wenn es viele eindeutige, aber selten vorkommende JSON-Schlüssel gibt, muss verhindert werden, dass NULL oder Standardwerte redundant gespeichert werden.
Neuer JSON-Datentyp
- ClickHouse führt einen neuen JSON-Datentyp für die leistungsstarke Verarbeitung von JSON-Daten ein.
- Dieser Typ unterstützt dynamisch wechselnde Daten und bewahrt gleichzeitig hohe Datenkompression und Query-Performance.
- Durch das Bereitstellen von Hinweisen für das JSON-Parsing lässt sich die Performance anpassen.
Baustein 1 - Variant-Typ
- Der Variant-Typ ermöglicht es, Werte unterschiedlicher Datentypen effizient in derselben Tabellenspalte zu speichern.
- Für jeden Datentyp wird eine separate Unterspalte verwendet, um die Datenintegrität zu wahren.
Baustein 2 - Dynamic-Typ
- Der Dynamic-Typ erweitert den Variant-Typ, sodass verschiedene Datentypen gespeichert werden können, ohne Typen im Voraus festzulegen.
- Die Anzahl der gespeicherten Typen wird begrenzt, um eine Explosion von Spaltendateien zu verhindern.
ClickHouse-JSON-Typ
- Auf Basis der Typen Variant und Dynamic wird ein neuer JSON-Typ implementiert, der alle Herausforderungen löst.
- Er kann unabhängig von der Struktur eines JSON-Objekts gespeichert werden, und Werte lassen sich über JSON-Pfade als Unterspalten lesen.
Zusammenfassung von GN⁺
- Der neue JSON-Datentyp von ClickHouse konzentriert sich darauf, Performance-Probleme von JSON bei der Analyse großer Datenmengen zu lösen.
- Dieser Typ unterstützt verschiedene Datentypen und bietet hohe Performance und Skalierbarkeit.
- Er schafft außerdem die Grundlage dafür, neben JSON auch andere semistrukturierte Typen wie XML oder YAML zu unterstützen.
- Für Entwickler, die ClickHouse verwenden, ist er nützlich und bietet Vorteile bei Datenkompression und Query-Performance.
1 Kommentare
Hacker-News-Kommentare
Die Entscheidung, bei PostHog ClickHouse einzusetzen, war eine der besten überhaupt. Damit konnten wir die Performance skalieren und gleichzeitig mehr Produkte auf demselben Datensatz aufbauen.
Ich frage mich, ob das Hinzufügen von Datentypen zu JSON noch als JSON durchgeht.
Schön, diese Funktion in ClickHouse zu sehen.
Wenn man ClickHouse evaluiert, ist Apache Pinot ebenfalls einen Blick wert.
Finde das für dynamisch veränderliche Daten interessant.
Ich habe auf die JSON-Unterstützung in ClickHouse gewartet, und der neue Typ sowie dynamische Spalten werden besonders nützlich sein.
ClickHouse ist ein hervorragendes Tool.
Als ich ClickHouse vor ein paar Wochen ausprobiert habe, wurden Dateien anhand der Spaltennamen benannt, was wegen der langen Dateinamen und Slashes zu Fehlern im Dateisystem führte.
ClickHouse wird nicht genug genutzt.
clickhouse-localist hervorragend für die Verarbeitung von CSV mit SQL und sehr zu empfehlen, wenn man Google Sheets oder Excel leid ist.