ClickHouse - ClickHouse

Clickhouse
Clickhouse.png
Entwickler Yandex
ClickHouse, Inc.
Erstveröffentlichung 15. Juni 2016 ; vor 5 Jahren ( 2016-06-15 )
Stabile Version
v20.11.3.3-stabil / 13. November 2020 ; vor 10 Monaten ( 2020-11-13 )
Vorschauversion
v20.7.1.4310 / 8. August 2020 ; vor 14 Monaten ( 2020-08-08 )
Repository github .com /ClickHouse /ClickHouse /
Geschrieben in C++
Betriebssystem Linux , FreeBSD , macOS
Lizenz Apache-Lizenz 2.0
Webseite clickhouse .com

ClickHouse ist ein spaltenorientiertes Open-Source -DBMS (Columnar Database Management System) für die Online-Analyseverarbeitung (OLAP).

ClickHouse wurde vom russischen IT-Unternehmen Yandex für den Webanalysedienst Yandex.Metrica entwickelt . ClickHouse ermöglicht die Analyse von Daten, die in Echtzeit aktualisiert werden. Das System wird für hohe Leistung vermarktet.

Das Projekt wurde im Juni 2016 als Open-Source-Software unter der Apache-2-Lizenz veröffentlicht .

ClickHouse wird vom Lasttesttool Yandex.Tank verwendet. Yandex.Market verwendet ClickHouse, um die Zugänglichkeit und KPIs der Website zu überwachen. ClickHouse wurde auch beim LHCb-Experiment des CERN implementiert , um Metadaten zu 10 Milliarden Ereignissen mit über 1000 Attributen pro Ereignis zu speichern und zu verarbeiten , und die Tinkoff Bank verwendet ClickHouse als Datenspeicher für ein Projekt.

Geschichte

Yandex.Metrica verwendete zuvor einen klassischen Ansatz, bei dem Rohdaten in aggregierter Form gespeichert wurden. Dieser Ansatz kann dazu beitragen, die Menge der gespeicherten Daten zu reduzieren. Es hat jedoch mehrere Einschränkungen und Nachteile:

  • Die Liste der verfügbaren Berichte muss vorab festgelegt werden, und es gibt keine Möglichkeit, einen benutzerdefinierten Bericht zu erstellen.
  • Das Datenvolumen kann nach der Aggregation zunehmen. Dies geschieht, wenn Daten durch eine große Anzahl von Schlüsseln aggregiert werden oder Schlüssel mit hoher Kardinalität (z. B. URLs ) verwendet werden.
  • Es ist schwierig, logische Konsistenz bei Berichten mit unterschiedlichen Aggregationen zu unterstützen.

Ein anderer Ansatz besteht darin, nicht aggregierte Daten zu speichern. Die Verarbeitung von Rohdaten erfordert ein leistungsfähiges System, da alle Berechnungen in Echtzeit erfolgen. Um dieses Problem zu lösen, wird ein spaltenorientiertes DBMS benötigt, das analytische Daten im Ausmaß des gesamten Internets verarbeiten kann . Yandex begann mit der Entwicklung eines eigenen. Der erste ClickHouse-Prototyp erschien 2009. Ende 2014 wurde Yandex.Metrica Version 2.0 veröffentlicht. Die neue Version verfügt über eine Schnittstelle zum Erstellen benutzerdefinierter Berichte und verwendet ClickHouse zum Speichern und Verarbeiten von Daten. Im September 2021 wurde die Technologie von Yandex in ein neues Unternehmen ausgegliedert, mit einer Investition von 50 Millionen US-Dollar, die Index Ventures und Benchmark Capital umfasste .

Merkmale

Die Hauptmerkmale des ClickHouse-DBMS sind:

  • Echtes spaltenorientiertes DBMS . Mit den Werten wird nichts gespeichert. Beispielsweise werden Werte mit konstanter Länge unterstützt, um zu vermeiden, dass ihre Längen-"Zahl" neben den Werten gespeichert wird.
  • Lineare Skalierbarkeit. Es ist möglich, einen Cluster durch das Hinzufügen von Servern zu erweitern.
  • Fehlertoleranz. Das System ist ein Shard-Cluster, wobei jeder Shard eine Gruppe von Replikaten ist. ClickHouse verwendet asynchrone Multi-Master-Replikation. Die Daten werden in jedes verfügbare Replikat geschrieben und dann an alle verbleibenden Replikate verteilt. ZooKeeper wird zum Koordinieren von Prozessen verwendet, ist jedoch nicht an der Verarbeitung und Ausführung von Abfragen beteiligt.
  • Fähigkeit, Petabyte an Daten zu speichern und zu verarbeiten.
  • SQL- Unterstützung. ClickHouse unterstützt eine erweiterte SQL- ähnliche Sprache, die Arrays und verschachtelte Datenstrukturen, Näherungs- und URI- Funktionen sowie die Verfügbarkeit zum Anschließen eines externen Schlüsselwertspeichers umfasst.
  • Hochleistung.
    • Es werden Vektorberechnungen verwendet. Daten werden nicht nur spaltenweise gespeichert, sondern auch von Vektoren (Teilen von Spalten) verarbeitet. Dieser Ansatz ermöglicht es, eine hohe CPU- Leistung zu erreichen .
    • Stichproben- und Näherungsberechnungen werden unterstützt.
    • Parallele und verteilte Abfrageverarbeitung ist verfügbar (einschließlich JOINs ).
  • Datenkompression.
  • Optimierung des Festplattenlaufwerks (HDD). Das System kann Daten verarbeiten, die nicht in den Arbeitsspeicher (RAM)passen.
  • Clients für Datenbank (DB)-Konnektivität. Zu den Datenbankverbindungsoptionen gehören der Konsolen-Client, die HTTP- API oder einer der Wrapper (Wrapper sind für Python , PHP , NodeJS , Perl , Ruby und R verfügbar ). ODBC-Treiber und JDBC-Treiber sind auch für ClickHouse verfügbar.

Einschränkungen

ClickHouse hat einige Funktionen, die als Nachteile angesehen werden können:

  • Es gibt keine Unterstützung für Transaktionen .
  • Fehlende vollwertige UPDATE/DELETE-Implementierung.


Anwendungsfälle

ClickHouse wurde für OLAP- Abfragen entwickelt.

  • Es funktioniert mit einer kleinen Anzahl von Tabellen, die eine große Anzahl von Spalten enthalten.
  • Abfragen können eine große Anzahl von Zeilen verwenden, die aus der DB extrahiert wurden , aber nur eine kleine Teilmenge von Spalten.
  • Abfragen sind relativ selten (normalerweise etwa 100 RPS pro Server).
  • Für einfache Abfragen sind Latenzen von ca. 50 ms erlaubt.
  • Spaltenwerte sind ziemlich klein und bestehen normalerweise aus Zahlen und kurzen Zeichenfolgen (z. B. 60 Byte pro URL ).
  • Bei der Verarbeitung einer einzelnen Abfrage ist ein hoher Durchsatz erforderlich (bis zu Milliarden Zeilen pro Sekunde pro Server).
  • Ein Abfrageergebnis wird meistens gefiltert oder aggregiert.
  • Die Datenaktualisierung verwendet ein einfaches Szenario (normalerweise nur Batch, ohne komplizierte Transaktionen).

Einer der häufigsten Fälle für ClickHouse ist die Serverprotokollanalyse. Nachdem regelmäßige Daten-Uploads in ClickHouse festgelegt wurden (es wird empfohlen, Daten in relativ großen Batches mit mehr als 1000 Zeilen einzufügen), ist es möglich, Vorfälle mit Sofortabfragen zu analysieren oder die Metriken eines Dienstes wie Fehlerraten, Antwortzeiten usw. zu überwachen.

ClickHouse kann auch als internes Data Warehouse für interne Analysten verwendet werden. ClickHouse kann Daten aus verschiedenen Systemen (wie Hadoop oder bestimmte Protokolle) speichern und Analysten können interne Dashboards mit den Daten erstellen oder Echtzeitanalysen für Geschäftszwecke durchführen.

Benchmark-Ergebnisse

Laut Benchmark- Tests, die von Entwicklern durchgeführt wurden, ist ClickHouse für OLAP- Abfragen mehr als 100-mal schneller als Hive (ein DBMS basierend auf dem Hadoop- Technologie-Stack) oder MySQL (ein gängiges RDBMS ).

Siehe auch

Verweise

Externe Links