ClickHouse

Motivation

Fast alle betrieblichen Informationssysteme müssen auf Daten zugreifen und diese verändern und speichern können. Je nach Anwendungsfall und Unternehmensgröße kann sowohl die Menge, als auch die Struktur der vorhandenen Daten variieren. So kann es beispielsweise in Großunternehmen sehr viele verschiedene Datenquellen geben, wodurch die Informationsverwaltung schnell sehr komplex und unübersichtlich werden kann. Um einen effizienten Unternehmensprozess garantieren zu können, ist jedoch ein performanter Zugang zu relevanten Daten erforderlich. Um dieser Anforderung gerecht werden zu können, werden oftmals Database Management Systeme (DBMS) eingesetzt. DBMS bezeichnet Software, welche zur Erstellung und Verwaltung von Datenbank verwendet wird. Sie dient gleichzeitig als Schnittstelle zwischen den End-Nutzern und den Daten. Clickhouse ist ein OLAP DBMS, welches sehr hohe Performance vor allem für analytische Berichterstattung verspricht.

Was ist OLAP?

OLAP steht für “Online Analytical Processing” und bezeichnet DBMS, welche auf die Analyse von großen vorhandenen Datenmengen spezialisiert sind. Solche Systeme sind sehr gut geeignet, um Daten von verschiedenen Quellen zusammenzuführen und anschließend analytische Berichte zu erstellen. Dies ermöglicht z.B. Unternehmen, ihre Geschäftsdaten umfassend zu untersuchen und strategische Entscheidungen zu treffen.
Das Gegenstück zu OLAP bildet OLTP, was für “Online Transactional Processing” steht. Bei OLTP-Systemen liegt der Fokus auf der effizienten Abwicklung von einer großen Anzahl an Transaktionen und damit einer kontinuierlichen Anpassung der Daten. DMBS können grundlegend zu einer der beiden Kategorien zugeordnet werden, jedoch ist es häufig erforderlich, dass ein System Anforderungen beider Kategorien erfüllen kann. Solche Systeme werden HTAP (“Hybrid Transactional / Analytical Processing”) genannt.

Besondere Eigenschaften von Clickhouse

Im Gegensatz zu zeilen-orientierten DBMS wie z.B. MySQL oder MS SQL Server handelt es sich bei Clickhouse um ein spalten-orientiertes DBMS. Der Unterschied liegt darin, wie die einzelnen Daten einer Tabelle in der Datenbank gespeichert werden. Zeilenorientierte DBMS speichern immer alle Daten einer Zeile zusammen, wie in folgendem Beispiel von der Clickhouse-Website:

 

Row WatchID JavaEnable Title GoodEvent EventTime
#0 89354350662 1 Investor Relations 1 2016-05-18 05:19:20
#1 90329509958 0 Contact us 1 2016-05-18 08:10:20
#2 89953706054 1 Mission 1 2016-05-18 07:38:00
#N

Ein spalten-orientiertes DBMS wie Clickhouse speichert hingegen immer alle Daten einer Spalte, also eines Attributes zusammen. Die gleichen Daten würden also folgendermaßen gespeichert werden:

Row: #0 #1 #2 #N
WatchID: 89354350662 90329509958 89953706054
JavaEnable: 1 0 1
Title: Investor Relations Contact us Mission
GoodEvent: 1 1 1
EventTime: 2016-05-18 05:19:20 2016-05-18 08:10:20 2016-05-18 07:38:00

Je nach Anwendungsfall bietet jedes System Vor- und Nachteile. Ein spalten-orientiertes System wie Clickhouse kann Daten unter Umständen kompakter und damit effizienter speichern, da die Werte einer Spalte immer den gleichen Typ haben. Die Werte werden zusätzlich mit konstanter Länge gespeichert, wodurch auf einen zusätzlichen Wert für die Darstellung der Länge verzichtet werden kann.
Außerdem verwenden Analyseberichte von den vielen vorhandenen Attributen (Spalten) oftmals nur einige wenige. Bei einem spalten-orientierten System können nur die relevanten Spalten ausgelesen werden, bei einem zeilen-orientierten System muss immer die gesamte Zeile ausgelesen und die relevanten Werte dann nochmal herausgefiltert werden. Dadurch kann Clickhouse in einem solchen Fall einen deutlich bessere Performance erreichen.

Zusätzlich bietet Clickhouse verschiedene Codecs zur Datenkomprimierung an, wodurch eine sehr gute Anpassung an den jeweiligen Anwendungsfall möglich ist. Da die Daten einer Spalte immer vom gleichen Typ sind und sich oftmals nur geringfügig unterscheiden, kann der benötigte Speicher durch eine geeignete Komprimierung deutlich reduziert werden. Clickhouse ermöglicht, für jede einzelne Spalte in einer Tabelle einen individuellen Komprimierungs-Codec anzuwenden. Dadurch kann auch die CPU-Auslastung beim Auslesen dieser Daten verringert werden.
Weiterhin ist Clickhouse in der Lage, die vorhandene Hardware effektiv zu nutzen, indem selbst für eine einzelne Query mehrere CPU-Kerne des Servers oder sogar des Server-Clusters genutzt werden. Dadurch ergibt sich auch eine sehr gute Skalierbarkeit des gesamten Systems. Neue Ressourcen oder auch bereits vorhandene Systeme können flexibel integriert werden und dadurch die Leistungsfähigkeit erhöhen.

Um noch besser mit großen Datenmengen umgehen zu können, verwendet Clickhouse sogenanntes “sparse indexing”. In traditionellen relationalen DBMS gibt es pro Tabelle einen Primärschlüssel mit einem Eintrag pro Tabellenzeile. Der Vorteil dabei ist, dass auf einzelne Zeilen sehr schnell zugegriffen werden kann, jedoch wird bei vielen Tabellenzeilen mehr Speicherplatz benötigt und das Hinzufügen neuer Einträge ist aufwändiger. Im Gegensatz dazu steht das “sparse indexing”, bei dem nur jede 8192te Zeile mit einem Indexeintrag versehen wird. Dadurch entstehen Teile in der Tabelle, sogenannte “granules”. Werden nun Queries ausgeführt, ermitteln diese zunächst nur potentiell relevante granules, und nicht einzelne Zeilen. Diese granules werden anschließend weiterverarbeitet und die relevanten Zeilen werden ermittelt. Dies ist oft effizienter, da analytische Queries normalerweise nicht nur eine, sondern mehrere Zeilen als Ergebnis haben. Der Primärschlüssel kann beliebig konfiguriert werden und auch aus mehreren Spalten bestehen. Die Granularität kann angepasst werden, wobei 8192 Zeilen der Standard ist.

(Quelle: https://clickhouse.com/docs/en/optimize/sparse-primary-indexes)
(Quelle: https://clickhouse.com/docs/en/optimize/sparse-primary-indexes)

Voraussetzungen für eine gute Performance

OLAP DBMS sind nicht zwingend für alle Anwendungsfälle die beste Lösung. Um abwägen zu können, ob ein OLAP System zielführend ist, müssen die individuellen Gegebenheiten analysiert werden. Folgende Bedingungen sind für ein effizientes OLAP DBMS förderlich:

  • Die Datenbank-Tabellen beinhalten viele Spalten
  • Die Datensätze sind sehr groß
  • Die Werte einzelner Spalten beanspruchen wenig Speicherplatz, z.B. Zahlen oder kurze Strings
  • Queries extrahieren eine große Anzahl an Zeilen, aber nur eine geringe Anzahl an Spalten
  • Inserts erfolgen auf eine große Anzahl an Zeilen gleichzeitig (> 1000 Zeilen)
  • Die Ergebnisse der Queries sind deutlich kleiner als die Quelldaten, sodass das Ergebnis in den RAM eines Servers passt
  • Keine große Anzahl an Transaktionen notwendig

 

Setup

Es bieten sich verschiedene Möglichkeiten an, eine Instanz von ClickHouse aufzusetzen. Je nach Nutzungszweck sollten diese differenziert und anwendungsgerecht betrachtet werden.

Möglichkeiten

ClickHouse bietet selbst Dokumentation für 3 mögliche Setups an. Hier wird zwischen folgenden Optionen unterschieden:

1. ClickHouse Cloud

Mit Hilfe von Amazon AWS, Google Cloud (und zukünftig auch Microsoft Azure) können Nutzer Instanzen implementieren. Dies bringt klassische Vorteile von Cloud Hosting mit sich – Skalierbarkeit, Verlässlichkeit, Preiseffizienz.

Darüber hinaus bietet ClickHouse hier speziell vorgefertigte Interaktive Konsolen und Pipeline-Integrations mit an.

2. Production Deployments

Für Anwendungsfälle, in welchen eine ClickHouse Instanz auf dedizierten Systemen (hier vor allem Server) laufen soll, bietet es sich an, Server sowie Client selbständig aufzusetzen. Hiermit kann der Endnutzer einen höheren Grad an Autonomie erreichen – schließlich ist das System so hoch konfigurierbar.

ClickHouse bietet hierfür eine umfangreiche Dokumentation an, welche verschiedene Systeme sowie Server-Konfigurationen umfasst.

3. Docker Image

Diese Option umfasst praktisch gesehen dieselben Ziele und Vorteile von Punkt 2. Allerdings können hier ebenfalls praktische Vorteile von Docker Container genutzt werden – Setups sind ressourcensparender, skalierbar, flexibel und lassen sich schneller bereitstellen im Vergleich zu einem händischen Server Setup.

Zu diesem Zweck stellt ClickHouse ein Server Docker Image sowie Dokumentation bereit.

Nach einem Vergleich der uns angebotenen Optionen haben wir entschieden, im Rahmen dieses Papers ein Docker Image aufzusetzen. Dies bietet sich aufgrund des unkomplizierten Setups besonders an.

 

 

Docker Setup

Für ein relativ einfaches Setup bietet es sich an, der ClickHouse Dokumentation zu folgen. Hierfür haben wir uns entschieden, eine Docker Instanz auf einem dedizierten Cloud Server zu hosten. Hierbei handelt es sich um einen einfachen Ubuntu basierten WebServer. 

Es gibt verschiedene Möglichkeiten, eine ClickHouse Instanz mit Docker aufzusetzen. Für dieses Setup haben wir uns entschieden, dass der Container seine Ports selber nutzen darf. Dies hat den entscheidenden Vorteil, dass weniger Parameter benötigt werden, aber auch, dass ClickHouse hier eine bessere Netzwerk Performance verspricht.

docker run -d –network=host –name some-clickhouse-server —ulimit nofile=262144:262144 clickhouse/clickhouse-server

Der Container sollte hiermit nun laufen, allerdings müssen wir für unseren Server auch relevante Ports öffnen. Unter Anleitung der Dokumentation sollten also mindestens Port 9000 (ClickHouse TCP) und Port 8123 (HTTP Interface) geöffnet werden. Weitere relevante Ports sollten je nach Nutzen geöffnet / geschlossen werden.

Nach einem erfolgreichem Setup sollte so das HTTP Interface erreichbar sein:

Beispiel für eine laufende Clickhouse Instanz

Management

Um einen reibungslosen Betrieb zu gewährleisten, sollten Administratoren verschiedene Vorkehrungen treffen. Neben klassischen Fällen wie Cyber Security, Backup Management sowie Monitoring Utilities, bietet Clickhouse ein Access Control Management System an, welches einen RBAC (Role-based Access Control) Ansatz verfolgt.

Gelinde gesagt – Für den Zugriff auf die Datenbank sollten Nutzerdaten (Name, Passwort) erforderlich sein. Von Haus aus kann dies mit Hilfe von Config Dateien erreicht werden. Tatsächlich bietet ClickHouse aber ein SQL-gesteuertes Rechte System an. Mit Hilfe dieses Systems ist es möglich, Nutzer “on the fly” via SQL Commands zu erstellen.

Performance

Eines der wohl wichtigsten Merkmal von Clickhouse ist die versprochene Performance. Um diese genauer einordnen zu können, bietet sich ein Benchmark zwischen verschiedenen DBMS Systemen an.

Hierzu stellt Clickhouse selbst ein Repository zur Verfügung, welches verschiedene DBMS auf ihre Performance unter bestimmten Szenarien misst. Dabei wurde auf folgende Faktoren augenmerk gelegt:

1. Reproduzierbarkeit
(Der Benchmark kann selbstständig auf eigenen Systeme reproduziert werden)

2. Kompatibilität
(Datensätze und Queries haben minimale Unterschiede zwischen verschiedenen SQL DBMS)

3. Diversität
(Verschiedene DBMS Systeme werden verglichen, unter anderem OLAP DBMS oder NoSQL DBMS)

4. Realismus
(Genutzte Datensätze bestehen aus akkuraten echten Daten statt nur zufällig generiert zu werden)

Dabei sollte allerdings klar sein, dass ein solcher Benchmark nie 100% akkurat sein kann; Stattdessen wird ein Testsystem, welches mit vereinheitlichten Daten arbeitet, immer dafür sorgen, dass bestimmte DBMS einen Vorteil gegenüber anderen haben. Außerdem können nicht alle relevanten Parameter für ein DBMS getestet werden, z.B. Speichereffizienz.

Dennoch wollen wir aus diesem Benchmark ein paar Ergebnisse in Verhältnis setzen. Dazu betrachten wir neben Clickhouse 4 andere bekannte DBMS: MongoDB, Druid, PostgreSQL und MySQL. Der Einfachheit halber betrachten wir hier nur Benchmarks die von einer einzelnen Maschine kommen:

Relativer Performance Benchmark (Quelle: https://benchmark.clickhouse.com/)

Schnell sollte ersichtlich sein, dass Clickhouse eine vielfach geringere Laufzeit hat als alle anderen betrachteten Systeme. Diese Tatsache untermalt weiterhin den bereits angeführten Punkt der Performance von Clickhouse. Selbst im Vergleich zu anderen OLAP DBMS führt Clickhouse hier die Performance Benchmarks an.

Alternativen

Datenbanksysteme gehören mit zu den wichtigsten Komponenten von betrieblichen Informationssystemen. Aus diesem Grund existieren viele Alternativen zu Clickhouse, die ebenfalls für analytische Datenverarbeitung und Echtzeitanalysen verwendet werden können. Nachfolgend wird eine Auswahl beliebter Alternativen mit ihren Vor- und Nachteilen beschrieben.

Apache Cassandra ist eine verteilte NoSQL-Datenbank, die für ihre hohe Skalierbarkeit und Ausfallsicherheit bekannt ist und besonders in Big-Data-Umgebungen eingesetzt wird. Das DBMS verwendet ein dezentrales und partitioniertes Datenbankmodell, bei dem Daten auf mehreren Knoten verteilt werden. Die Software wird unter anderem von Netflix verwendet, um dessen Daten in einem verteilten Content-Delivery-System zu verwalten. Apache Cassandra bietet dabei Vorteile wie Skalierbarkeit, hohe Ausfallsicherheit, schnelle Schreib- und Leseleistung, flexible Datenmodellierung für verteilte Systeme. Jedoch hat es Nachteile wie eingeschränkte Unterstützung für komplexe Abfragen, begrenzte Transaktionsunterstützung und erfordert einen hohen Verwaltungsaufwand. Apache Cassandra ist für verteilte, skalierbare Systeme mit Fokus auf hoher Verfügbarkeit und Ausfallsicherheit optimiert. ClickHouse ist hingegen auf schnelle Datenanalytik und Abfragen in großen Datenmengen mit einem spaltenorientierten Datenmodell ausgerichtet.

Apache Druid ist ein verteiltes Open-Source-Analysesystem für Big Data, das speziell für die Echtzeit-Analyse von großen Datenmengen konzipiert ist. Es arbeitet als spaltenorientiertes Datenbanksystem, welches in der Lage ist, große Mengen von Ereignisdaten in Echtzeit zu verarbeiten. Beispielsweise verwendet Airbnb Druid, um Echtzeit-Analysen für das Monitoring und die Optimierung von Geschäftsprozessen durchzuführen. Es bietet dabei eine gute Skalierbarkeit, die Möglichkeit zur Echtzeitdatenverarbeitung und eine gute Unterstützung für komplexe Abfragen. Nachteilig ist, dass die Software eher für große Datensätze ausgelegt ist und komplexere Systeme einen erhöhten Verwaltungsaufwand mit sich bringen können. Im Gegensatz zu ClickHouse spezialisiert sich Apache Druid auf die Echtzeitanalyse von großen Datenmengen, während ClickHouse als spaltenorientierte Datenbank auf effiziente Speicherung und Analyse von großen Datenmengen ausgerichtet ist. Leicht verzögerte Antwortzeiten werden dabei in Kauf genommen.

Amazon Redshift ist ein vollständig cloud-verwalteter Data Warehouse-Service, der für die Analyse großer Datenmengen optimiert ist. Die Daten werden, ähnlich wie bei Clickhouse, in Spalten gespeichert und parallel auf dem Cloud Server verarbeitet. Nasdaq als multinationaler Finanzdienstleister beherbergt weltweit fast 4.000 börsennotierte Unternehmen und nutzt Redshift-Cluster, um große Mengen von Börsendaten effizient zu verarbeiten. Amazon Redshift zeichnet sich durch seine gute Skalierbarkeit und umfangreiche Funktionalitäten für die Datenanalyse aus. Jedoch gibt es gewisse Einschränkungen in Bezug auf die Flexibilität bei der Datenmodellierung. Zusätzlich bietet das System nur begrenzte Unterstützung für Echtzeitanalysen, was in dynamischen Umgebungen eine Herausforderung darstellen kann.

Bei der korrekten Auswahl des Datenbank-Managementsystems ist in erster Linie zu beachten, dass die Wahl der richtigen Software von den spezifischen Anforderungen abhängt.

Clickhouse Einsatzgebiete

ClickHouse ist eine leistungsstarke Open-Source-Datenbank. Im Folgenden werden die wichtigsten Einsatzgebiete des DBMS erläutert.Mit Hilfe des Datenbanksystems ist eine Echtzeitanalyse großer Datenmengen mit verhältnismäßig wenig Aufwand möglich. Somit sind auch interaktive Anwendungen und Dashboards realisierbar und selbst komplexe Analysen werden in Millisekunden durchgeführt.Weiterhin ermöglicht ClickHouse eine zuverlässige Überwachung von Protokollen, Ereignissen und weiteren Zeitreihendaten. Anomalien und Probleme können damit zuverlässig und zeitnah entdeckt werden.Das Datenbanksystem bietet eine Reihe von Funktionen zur interaktiven Erstellung von Analysen und Berichten, um aus Daten Information machen zu können.Machine Learning & GenAI unterstützt bei der Analyse und sorgt für eine schnelle und effiziente Vektor Suche. KI-Modelle von beliebigen Anbietern sind Plug-and-Play-fähig, wodurch ClickHouse als ein zentraler Datenspeicher für Machine Learning Workloads dienen kann.

Das nachfolgende BPMN bildet zwei exemplarische Abläufe in ClickHouse ab. Beide Prozesse sind im Pool „ClickHouse“ mit den Swimlanes „Nutzer“, „DBMS“, „Data Warehouse“ und „Datenquelle“ modelliert. Im Workflow zur Nutzerabfrage wird die Query zunächst vom Nutzer an das DBMS gesendet. Dieses erhält die relevanten Datensätze vom Data Warehouse über eine entsprechende Daten Anfrage zurück. Schlussendlich wird dem Nutzer das Ergebnis übermittelt. Im Workflow zur Erfassung der Daten, werden diese von der Datenquelle hin zu den Data Sources übermittelt und abgespeichert. Über entsprechende Transaktionen greift das Data Warehouse auf die Data Sources zu, um die Informationen später weiter zu verarbeiten.

BPMN zu zwei möglichen Prozessen in ClickHouse

ClickHouse User-Stories

ClickHouse hat sich als leistungsfähige Lösung für mehrere namhafte Unternehmen bewährt.

Bei dem Dienstleistungsunternehmen Uber führte die Verlagerung der Protokollierungsplattform zu ClickHouse zu einer höheren Produktivität und Zuverlässigkeit. Durch die 3-fache Datenkompression konnte eine 10-fache Leistungssteigerung bei gleichzeitig halbierten Hardwarekosten realisiert werden.

Weiterhin profitierte der Online-Marktplatz eBay von der ClickHouse-Architektur, die zu einer Verringerung von DevOps-Aktivitäten führte. Mit 10-mal weniger Hardwareaufwand und einer stärkeren Integration mit Grafana erleichterte das DBMS den Betrieb der Website erheblich.

Der digitale Musikdienst Spotify bewältigt mit dem Einsatz von ClickHouse tausende von Anfragen im Sekundenbereich auf Petabyte-Datensätzen und erzielt zugleich eine Verringerung des Arbeitsaufwands bei geringer Varianz.

Schließlich unterstützt ClickHouse die Deutsche Bank bei der Bereitstellung ihrer Client-Analytics-Plattform für Berichte und tiefgehende Datenanalysen. Die fortschrittliche Datenanalyse und ein klarer Überblick über die Aktivitäten und Rentabilität der Kunden machen das Datenbanksystem zu einer Schlüsselkomponente für den Finanzdienstleister.

Grenzen von ClickHouse

ClickHouse zeichnet sich durch hohe Geschwindigkeit aus, wodurch es in Echtzeit große Datenmengen verarbeiten kann. Die horizontale Skalierbarkeit ermöglicht es, auf mehreren Servern ausgeführt zu werden, um mit der Verarbeitung großer Datensätze umzugehen. Die einfache Integration in bestehende Daten-Infrastrukturen, Unterstützung verschiedener Dateiformate und Schnittstellen machen ClickHouse zu einer flexiblen Lösung. Durch seine Open-Source-Implementation fallen keine Lizenzkosten an, und die effiziente Hardwarenutzung kann zu erheblichen Kostenersparnissen führen. Zusätzlich bietet ClickHouse effiziente Komprimierungs-Algorithmen, die die Speicheranforderungen reduzieren und die Gesamtleistung verbessern können.

Trotz der genannten Vorteile hat das Datenbank Management System auch gewisse Grenzen, auf die im Folgenden eingegangen wird. Wie bereits ausführlich beschrieben, nutzt ClickHouse den OLAP (Online Analytical Processing) Ansatz zur Datenverarbeitung. Ein gänzlich anderes Konzept wird mit OLTP (Online Transaction Processing) verfolgt. Während sich der in ClickHouse verwendete Ansatz auf die Analyse und Auswertung von großen Datenmengen konzentriert, liegt der Fokus des Alternativkonzepts auf der Gewährleistung einer effizienten und zuverlässigen Datenverarbeitung. Im Mittelpunkt steht die Erfassung und Verarbeitung von Transaktionen. Diese Systeme sind optimiert für den häufigen Zugriff auf Datensätze und die Unterstützung in operativen Geschäftsanwendungen, wie z.B. in Buchführungssystemen oder Point-of-Sale-Programmen. Zusammenfassend lässt sich sagen, dass OLAP die Analyse von Daten erleichtert, während OLTP auf die effiziente Verarbeitung von Transaktionen im täglichen Geschäftsbetrieb abzielt.

Neben der bei ClickHouse eingeschränkten Unterstützung von Transaktionen, existieren weitere Grenzen der leistungsstarken Datenbanklösung. Zum einen erfordert die Einrichtung und Verwaltung ein gewisses Maß an technischem Know-how, was die Komplexität für weniger erfahrene Benutzer erhöhen kann. Das horizontale Skalieren von ClickHouse ist ebenfalls komplex und zusätzliche Ressourcen sowie spezifische Kenntnisse könnten erforderlich sein. Im Vergleich zu einigen anderen Datenbanken bietet ClickHouse nicht die gleiche Vielfalt an erweiterten Funktionen und Möglichkeiten, was die Anpassung an spezifische Anforderungen einschränken könnte. Hierzu sei erwähnt, dass das DBMS noch aktiv weiterentwickelt wird und potentiell neue Funktionen mit der Zeit hinzukommen können. Schließlich ist die Community-Unterstützung nicht so umfangreich wie bei einigen anderen Datenbanklösungen. Doch auch hier steckt Verbesserungspotential aufgrund einer stetig wachsenden Benutzerbasis.

Quellen

https://cassandra.apache.org/_/cassandra-basics.html

https://cassandra.apache.org/_/index.html

https://netflixtechblog.com/building-netflixs-distributed-tracing-infrastructure-bb856c319304

https://druid.apache.org/technology

https://druid.apache.org/use-cases

https://medium.com/airbnb-engineering/druid-airbnb-data-platform-601c312f2a4c

https://aws.amazon.com/de/redshift/

https://aws.amazon.com/de/solutions/case-studies/nasdaq-case-study/

https://clickhouse.com/user-stories

https://clickhouse.com/use-cases

https://clickhouse.com/docs/en/intro

https://clickhouse.com/docs/en/about-us/distinctive-features

https://clickhouse.com/docs/en/concepts/olap

https://clickhouse.com/docs/en/optimize/sparse-primary-indexes

https://clickhouse.com/docs/en/concepts/why-clickhouse-is-so-fast

https://www.ibm.com/blog/olap-vs-oltp/