{"id":3129,"date":"2024-01-03T16:55:17","date_gmt":"2024-01-03T15:55:17","guid":{"rendered":"https:\/\/informatik.htwk-leipzig.de\/seminar\/?p=3129"},"modified":"2024-03-19T17:39:48","modified_gmt":"2024-03-19T16:39:48","slug":"clickhouse","status":"publish","type":"post","link":"https:\/\/informatik.htwk-leipzig.de\/seminar\/lehrveranstaltungen\/betriebliche-informationssysteme\/2024\/clickhouse\/","title":{"rendered":"ClickHouse"},"content":{"rendered":"<h1>Motivation<\/h1>\n<p>Fast alle betrieblichen Informationssysteme m\u00fcssen auf Daten zugreifen und diese ver\u00e4ndern und speichern k\u00f6nnen. Je nach Anwendungsfall und Unternehmensgr\u00f6\u00dfe kann sowohl die Menge, als auch die Struktur der vorhandenen Daten variieren. So kann es beispielsweise in Gro\u00dfunternehmen sehr viele verschiedene Datenquellen geben, wodurch die Informationsverwaltung schnell sehr komplex und un\u00fcbersichtlich werden kann. Um einen effizienten Unternehmensprozess garantieren zu k\u00f6nnen, ist jedoch ein performanter Zugang zu relevanten Daten erforderlich. Um dieser Anforderung gerecht werden zu k\u00f6nnen, 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\u00fcr analytische Berichterstattung verspricht.<\/p>\n<h1>Was ist OLAP?<\/h1>\n<p>OLAP steht f\u00fcr \u201cOnline Analytical Processing\u201d und bezeichnet DBMS, welche auf die Analyse von gro\u00dfen vorhandenen Datenmengen spezialisiert sind. Solche Systeme sind sehr gut geeignet, um Daten von verschiedenen Quellen zusammenzuf\u00fchren und anschlie\u00dfend analytische Berichte zu erstellen. Dies erm\u00f6glicht z.B. Unternehmen, ihre Gesch\u00e4ftsdaten umfassend zu untersuchen und strategische Entscheidungen zu treffen.<br \/>\nDas Gegenst\u00fcck zu OLAP bildet OLTP, was f\u00fcr \u201cOnline Transactional Processing\u201d steht. Bei OLTP-Systemen liegt der Fokus auf der effizienten Abwicklung von einer gro\u00dfen Anzahl an Transaktionen und damit einer kontinuierlichen Anpassung der Daten. DMBS k\u00f6nnen grundlegend zu einer der beiden Kategorien zugeordnet werden, jedoch ist es h\u00e4ufig erforderlich, dass ein System Anforderungen beider Kategorien erf\u00fcllen kann. Solche Systeme werden HTAP (\u201cHybrid Transactional \/ Analytical Processing\u201d) genannt.<\/p>\n<h1>Besondere Eigenschaften von Clickhouse<\/h1>\n<p>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 <a href=\"https:\/\/clickhouse.com\/docs\/en\/intro\">Clickhouse-Website:<\/a><\/p>\n<p>&nbsp;<\/p>\n<table>\n<thead>\n<tr>\n<th>Row<\/th>\n<th>WatchID<\/th>\n<th>JavaEnable<\/th>\n<th>Title<\/th>\n<th>GoodEvent<\/th>\n<th>EventTime<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>#0<\/td>\n<td>89354350662<\/td>\n<td>1<\/td>\n<td>Investor Relations<\/td>\n<td>1<\/td>\n<td>2016-05-18 05:19:20<\/td>\n<\/tr>\n<tr>\n<td>#1<\/td>\n<td>90329509958<\/td>\n<td>0<\/td>\n<td>Contact us<\/td>\n<td>1<\/td>\n<td>2016-05-18 08:10:20<\/td>\n<\/tr>\n<tr>\n<td>#2<\/td>\n<td>89953706054<\/td>\n<td>1<\/td>\n<td>Mission<\/td>\n<td>1<\/td>\n<td>2016-05-18 07:38:00<\/td>\n<\/tr>\n<tr>\n<td>#N<\/td>\n<td>\u2026<\/td>\n<td>\u2026<\/td>\n<td>\u2026<\/td>\n<td>\u2026<\/td>\n<td>\u2026<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ein spalten-orientiertes DBMS wie Clickhouse speichert hingegen immer alle Daten einer Spalte, also eines Attributes zusammen. Die gleichen Daten w\u00fcrden also folgenderma\u00dfen gespeichert werden:<\/p>\n<table>\n<thead>\n<tr>\n<th>Row:<\/th>\n<th>#0<\/th>\n<th>#1<\/th>\n<th>#2<\/th>\n<th>#N<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>WatchID:<\/td>\n<td>89354350662<\/td>\n<td>90329509958<\/td>\n<td>89953706054<\/td>\n<td>\u2026<\/td>\n<\/tr>\n<tr>\n<td>JavaEnable:<\/td>\n<td>1<\/td>\n<td>0<\/td>\n<td>1<\/td>\n<td>\u2026<\/td>\n<\/tr>\n<tr>\n<td>Title:<\/td>\n<td>Investor Relations<\/td>\n<td>Contact us<\/td>\n<td>Mission<\/td>\n<td>\u2026<\/td>\n<\/tr>\n<tr>\n<td>GoodEvent:<\/td>\n<td>1<\/td>\n<td>1<\/td>\n<td>1<\/td>\n<td>\u2026<\/td>\n<\/tr>\n<tr>\n<td>EventTime:<\/td>\n<td>2016-05-18 05:19:20<\/td>\n<td>2016-05-18 08:10:20<\/td>\n<td>2016-05-18 07:38:00<\/td>\n<td>\u2026<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Je nach Anwendungsfall bietet jedes System Vor- und Nachteile. Ein spalten-orientiertes System wie Clickhouse kann Daten unter Umst\u00e4nden kompakter und damit effizienter speichern, da die Werte einer Spalte immer den gleichen Typ haben. Die Werte werden zus\u00e4tzlich mit konstanter L\u00e4nge gespeichert, wodurch auf einen zus\u00e4tzlichen Wert f\u00fcr die Darstellung der L\u00e4nge verzichtet werden kann.<br \/>\nAu\u00dferdem verwenden Analyseberichte von den vielen vorhandenen Attributen (Spalten) oftmals nur einige wenige. Bei einem spalten-orientierten System k\u00f6nnen 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.<\/p>\n<p>Zus\u00e4tzlich bietet Clickhouse verschiedene Codecs zur Datenkomprimierung an, wodurch eine sehr gute Anpassung an den jeweiligen Anwendungsfall m\u00f6glich ist. Da die Daten einer Spalte immer vom gleichen Typ sind und sich oftmals nur geringf\u00fcgig unterscheiden, kann der ben\u00f6tigte Speicher durch eine geeignete Komprimierung deutlich reduziert werden. Clickhouse erm\u00f6glicht, f\u00fcr jede einzelne Spalte in einer Tabelle einen individuellen Komprimierungs-Codec anzuwenden. Dadurch kann auch die CPU-Auslastung beim Auslesen dieser Daten verringert werden.<br \/>\nWeiterhin ist Clickhouse in der Lage, die vorhandene Hardware effektiv zu nutzen, indem selbst f\u00fcr 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\u00f6nnen flexibel integriert werden und dadurch die Leistungsf\u00e4higkeit erh\u00f6hen.<\/p>\n<p>Um noch besser mit gro\u00dfen Datenmengen umgehen zu k\u00f6nnen, verwendet Clickhouse sogenanntes \u201csparse indexing\u201d. In traditionellen relationalen DBMS gibt es pro Tabelle einen Prim\u00e4rschl\u00fcssel 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\u00f6tigt und das Hinzuf\u00fcgen neuer Eintr\u00e4ge ist aufw\u00e4ndiger. Im Gegensatz dazu steht das \u201csparse indexing\u201d, bei dem nur jede 8192te Zeile mit einem Indexeintrag versehen wird. Dadurch entstehen Teile in der Tabelle, sogenannte \u201cgranules\u201d. Werden nun Queries ausgef\u00fchrt, ermitteln diese zun\u00e4chst nur potentiell relevante granules, und nicht einzelne Zeilen. Diese granules werden anschlie\u00dfend 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\u00e4rschl\u00fcssel kann beliebig konfiguriert werden und auch aus mehreren Spalten bestehen. Die Granularit\u00e4t kann angepasst werden, wobei 8192 Zeilen der Standard ist.<\/p>\n<figure id=\"attachment_3360\" aria-describedby=\"caption-attachment-3360\" style=\"width: 3677px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3360 size-full\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2024\/01\/sparse-primary-indexes-03a-4d999529304bd55849b8621823b64105.png\" alt=\"(Quelle: https:\/\/clickhouse.com\/docs\/en\/optimize\/sparse-primary-indexes)\" width=\"3677\" height=\"1232\" \/><figcaption id=\"caption-attachment-3360\" class=\"wp-caption-text\">(Quelle: https:\/\/clickhouse.com\/docs\/en\/optimize\/sparse-primary-indexes)<\/figcaption><\/figure>\n<h1>Voraussetzungen f\u00fcr eine gute Performance<\/h1>\n<p>OLAP DBMS sind nicht zwingend f\u00fcr alle Anwendungsf\u00e4lle die beste L\u00f6sung. Um abw\u00e4gen zu k\u00f6nnen, ob ein OLAP System zielf\u00fchrend ist, m\u00fcssen die individuellen Gegebenheiten analysiert werden. Folgende Bedingungen sind f\u00fcr ein effizientes OLAP DBMS f\u00f6rderlich:<\/p>\n<ul>\n<li>Die Datenbank-Tabellen beinhalten viele Spalten<\/li>\n<li>Die Datens\u00e4tze sind sehr gro\u00df<\/li>\n<li>Die Werte einzelner Spalten beanspruchen wenig Speicherplatz, z.B. Zahlen oder kurze Strings<\/li>\n<li>Queries extrahieren eine gro\u00dfe Anzahl an Zeilen, aber nur eine geringe Anzahl an Spalten<\/li>\n<li>Inserts erfolgen auf eine gro\u00dfe Anzahl an Zeilen gleichzeitig (&gt; 1000 Zeilen)<\/li>\n<li>Die Ergebnisse der Queries sind deutlich kleiner als die Quelldaten, sodass das Ergebnis in den RAM eines Servers passt<\/li>\n<li>Keine gro\u00dfe Anzahl an Transaktionen notwendig<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h1>Setup<\/h1>\n<p>Es bieten sich verschiedene M\u00f6glichkeiten an, eine Instanz von ClickHouse aufzusetzen. Je nach Nutzungszweck sollten diese differenziert und anwendungsgerecht betrachtet werden.<\/p>\n<h2>M\u00f6glichkeiten<\/h2>\n<p><span style=\"font-weight: 400\">ClickHouse bietet selbst Dokumentation f\u00fcr 3 m\u00f6gliche Setups an. Hier wird zwischen folgenden Optionen unterschieden:<\/span><\/p>\n<h3 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">1. ClickHouse Cloud<\/span><\/h3>\n<p style=\"padding-left: 40px\">Mit Hilfe von Amazon AWS, Google Cloud (und zuk\u00fcnftig auch Microsoft Azure) k\u00f6nnen Nutzer Instanzen implementieren. Dies bringt klassische Vorteile von Cloud Hosting mit sich &#8211; Skalierbarkeit, Verl\u00e4sslichkeit, Preiseffizienz.<\/p>\n<p style=\"padding-left: 40px\">Dar\u00fc<span style=\"font-weight: 400\">ber hinaus bietet ClickHouse hier speziell vorgefertigte Interaktive Konsolen und Pipeline-Integrations mit an.<\/span><\/p>\n<h3 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">2. Production Deployments<\/span><\/h3>\n<p style=\"padding-left: 40px\">F\u00fcr Anwendungsf\u00e4lle, in welchen eine ClickHouse Instanz auf dedizierten Systemen (hier vor allem Server) laufen soll, bietet es sich an, Server sowie Client selbst\u00e4ndig aufzusetzen. Hiermit kann der Endnutzer einen h\u00f6heren Grad an Autonomie erreichen &#8211; schlie\u00dflich ist das System so hoch konfigurierbar.<\/p>\n<p style=\"padding-left: 40px\">ClickHouse bietet hierf\u00fcr eine umfangreiche Dokumentation an, welche verschiedene Systeme sowie Server-Konfigurationen umfasst.<\/p>\n<h3 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">3. Docker Image<\/span><\/h3>\n<p style=\"padding-left: 40px\">Diese Option umfasst praktisch gesehen dieselben Ziele und Vorteile von Punkt 2. Allerdings k\u00f6nnen hier ebenfalls praktische Vorteile von Docker Container genutzt werden &#8211; Setups sind ressourcensparender, skalierbar, flexibel und lassen sich schneller bereitstellen im Vergleich zu einem h\u00e4ndischen Server Setup.<\/p>\n<p style=\"padding-left: 40px\">Zu diesem Zweck stellt ClickHouse ein Server Docker Image sowie Dokumentation bereit.<\/p>\n<p><span style=\"font-weight: 400\">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.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Docker Setup<\/h2>\n<p><span style=\"font-weight: 400\">F\u00fcr ein relativ einfaches Setup bietet es sich an, der ClickHouse Dokumentation zu folgen. Hierf\u00fcr haben wir uns entschieden, eine Docker Instanz auf einem dedizierten Cloud Server zu hosten. Hierbei handelt es sich um einen einfachen Ubuntu basierten WebServer.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Es gibt verschiedene M\u00f6glichkeiten, eine ClickHouse Instanz mit Docker aufzusetzen. F\u00fcr dieses Setup haben wir uns entschieden, dass der Container seine Ports selber nutzen darf. Dies hat den entscheidenden Vorteil, dass weniger Parameter ben\u00f6tigt werden, aber auch, dass ClickHouse hier eine bessere Netzwerk Performance verspricht.<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">docker run -d &#8211;network=host &#8211;name some-clickhouse-server &#8212;<\/span><span style=\"font-weight: 400\">ulimit<\/span><span style=\"font-weight: 400\"> nofile=262144:262144 clickhouse\/clickhouse-server<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400\">Der Container sollte hiermit nun laufen, allerdings m\u00fcssen wir f\u00fcr unseren Server auch relevante Ports \u00f6ffnen. Unter Anleitung der Dokumentation sollten also mindestens Port 9000 (ClickHouse TCP) und Port 8123 (HTTP Interface) ge\u00f6ffnet werden. Weitere relevante Ports sollten je nach Nutzen ge\u00f6ffnet \/ geschlossen werden.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Nach einem erfolgreichem Setup sollte so das HTTP Interface erreichbar sein:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3374 aligncenter\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2024\/01\/Screenshot-2024-01-22-164528.png\" alt=\"\" width=\"645\" height=\"345\" \/><\/p>\n<p style=\"text-align: center\">Beispiel f\u00fcr eine laufende Clickhouse Instanz<\/p>\n<h2>Management<\/h2>\n<p><span style=\"font-weight: 400\">Um einen reibungslosen Betrieb zu gew\u00e4hrleisten, sollten Administratoren verschiedene Vorkehrungen treffen. Neben klassischen F\u00e4llen 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.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Gelinde gesagt &#8211; F\u00fcr den Zugriff auf die Datenbank sollten Nutzerdaten (Name, Passwort) erforderlich sein. Von Haus aus kann dies mit Hilfe von Config Dateien erreicht werden. Tats\u00e4chlich bietet ClickHouse aber ein SQL-gesteuertes Rechte System an. Mit Hilfe dieses Systems ist es m\u00f6glich, Nutzer \u201con the fly\u201d via SQL Commands zu erstellen.<\/span><\/p>\n<h1>Performance<\/h1>\n<p><span style=\"font-weight: 400\">Eines der wohl wichtigsten Merkmal von Clickhouse ist die versprochene Performance. Um diese genauer einordnen zu k\u00f6nnen, bietet sich ein Benchmark zwischen verschiedenen DBMS Systemen an.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Hierzu stellt Clickhouse selbst ein Repository zur Verf\u00fcgung, welches verschiedene DBMS auf ihre Performance unter bestimmten Szenarien misst. Dabei wurde auf folgende Faktoren augenmerk gelegt:<\/span><\/p>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">1. Reproduzierbarkeit<br \/>\n<\/span>(Der Benchmark kann selbstst\u00e4ndig auf eigenen Systeme reproduziert werden)<\/p>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">2. Kompatibilit\u00e4t<br \/>\n<\/span><span style=\"font-weight: 400\">(Datens\u00e4tze und Queries haben minimale Unterschiede zwischen verschiedenen SQL DBMS)<\/span><\/p>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">3. Diversit\u00e4t<br \/>\n<\/span><span style=\"font-weight: 400\">(Verschiedene DBMS Systeme werden verglichen, unter anderem OLAP DBMS oder NoSQL DBMS)<\/span><\/p>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">4. Realismus<br \/>\n<\/span><span style=\"font-weight: 400\">(Genutzte Datens\u00e4tze bestehen aus akkuraten echten Daten statt nur zuf\u00e4llig generiert zu werden)<\/span><\/p>\n<p><span style=\"font-weight: 400\">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\u00fcr sorgen, dass bestimmte DBMS einen Vorteil gegen\u00fcber anderen haben. Au\u00dferdem k\u00f6nnen nicht alle relevanten Parameter f\u00fcr ein DBMS getestet werden, z.B. Speichereffizienz.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Dennoch wollen wir aus diesem Benchmark ein paar Ergebnisse in Verh\u00e4ltnis 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:<\/span><\/p>\n<figure id=\"attachment_3376\" aria-describedby=\"caption-attachment-3376\" style=\"width: 585px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-3376\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2024\/01\/performance.png\" alt=\"\" width=\"585\" height=\"123\" \/><figcaption id=\"caption-attachment-3376\" class=\"wp-caption-text\">Relativer Performance Benchmark (Quelle: <a href=\"https:\/\/benchmark.clickhouse.com\/\">https:\/\/benchmark.clickhouse.com\/<\/a>)<\/figcaption><\/figure>\n<p><span style=\"font-weight: 400\">Schnell sollte ersichtlich sein, dass Clickhouse eine vielfach geringere Laufzeit hat als alle anderen betrachteten Systeme. Diese Tatsache untermalt weiterhin den bereits angef\u00fchrten Punkt der Performance von Clickhouse. Selbst im Vergleich zu anderen OLAP DBMS f\u00fchrt Clickhouse hier die Performance Benchmarks an.<\/span><\/p>\n<h1>Alternativen<\/h1>\n<p>Datenbanksysteme geh\u00f6ren mit zu den wichtigsten Komponenten von betrieblichen Informationssystemen. Aus diesem Grund existieren viele Alternativen zu Clickhouse, die ebenfalls f\u00fcr analytische Datenverarbeitung und Echtzeitanalysen verwendet werden k\u00f6nnen. Nachfolgend wird eine Auswahl beliebter Alternativen mit ihren Vor- und Nachteilen beschrieben.<\/p>\n<p>Apache Cassandra ist eine verteilte NoSQL-Datenbank, die f\u00fcr 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\u00fcr verteilte Systeme. Jedoch hat es Nachteile wie eingeschr\u00e4nkte Unterst\u00fctzung f\u00fcr komplexe Abfragen, begrenzte Transaktionsunterst\u00fctzung und erfordert einen hohen Verwaltungsaufwand. Apache Cassandra ist f\u00fcr verteilte, skalierbare Systeme mit Fokus auf hoher Verf\u00fcgbarkeit und Ausfallsicherheit optimiert. ClickHouse ist hingegen auf schnelle Datenanalytik und Abfragen in gro\u00dfen Datenmengen mit einem spaltenorientierten Datenmodell ausgerichtet.<\/p>\n<p>Apache Druid ist ein verteiltes Open-Source-Analysesystem f\u00fcr Big Data, das speziell f\u00fcr die Echtzeit-Analyse von gro\u00dfen Datenmengen konzipiert ist. Es arbeitet als spaltenorientiertes Datenbanksystem, welches in der Lage ist, gro\u00dfe Mengen von Ereignisdaten in Echtzeit zu verarbeiten. Beispielsweise verwendet Airbnb Druid, um Echtzeit-Analysen f\u00fcr das Monitoring und die Optimierung von Gesch\u00e4ftsprozessen durchzuf\u00fchren. Es bietet dabei eine gute Skalierbarkeit, die M\u00f6glichkeit zur Echtzeitdatenverarbeitung und eine gute Unterst\u00fctzung f\u00fcr komplexe Abfragen. Nachteilig ist, dass die Software eher f\u00fcr gro\u00dfe Datens\u00e4tze ausgelegt ist und komplexere Systeme einen erh\u00f6hten Verwaltungsaufwand mit sich bringen k\u00f6nnen. Im Gegensatz zu ClickHouse spezialisiert sich Apache Druid auf die Echtzeitanalyse von gro\u00dfen Datenmengen, w\u00e4hrend ClickHouse als spaltenorientierte Datenbank auf effiziente Speicherung und Analyse von gro\u00dfen Datenmengen ausgerichtet ist. Leicht verz\u00f6gerte Antwortzeiten werden dabei in Kauf genommen.<\/p>\n<p>Amazon Redshift ist ein vollst\u00e4ndig cloud-verwalteter Data Warehouse-Service, der f\u00fcr die Analyse gro\u00dfer Datenmengen optimiert ist. Die Daten werden, \u00e4hnlich wie bei Clickhouse, in Spalten gespeichert und parallel auf dem Cloud Server verarbeitet. Nasdaq als multinationaler Finanzdienstleister beherbergt weltweit fast 4.000 b\u00f6rsennotierte Unternehmen und nutzt Redshift-Cluster, um gro\u00dfe Mengen von B\u00f6rsendaten effizient zu verarbeiten. Amazon Redshift zeichnet sich durch seine gute Skalierbarkeit und umfangreiche Funktionalit\u00e4ten f\u00fcr die Datenanalyse aus. Jedoch gibt es gewisse Einschr\u00e4nkungen in Bezug auf die Flexibilit\u00e4t bei der Datenmodellierung. Zus\u00e4tzlich bietet das System nur begrenzte Unterst\u00fctzung f\u00fcr Echtzeitanalysen, was in dynamischen Umgebungen eine Herausforderung darstellen kann.<\/p>\n<p>Bei der korrekten Auswahl des Datenbank-Managementsystems ist in erster Linie zu beachten, dass die Wahl der richtigen Software von den spezifischen Anforderungen abh\u00e4ngt.<\/p>\n<h1>Clickhouse Einsatzgebiete<\/h1>\n<p>ClickHouse ist eine leistungsstarke Open-Source-Datenbank. Im Folgenden werden die wichtigsten Einsatzgebiete des DBMS erl\u00e4utert.Mit Hilfe des Datenbanksystems ist eine Echtzeitanalyse gro\u00dfer Datenmengen mit verh\u00e4ltnism\u00e4\u00dfig wenig Aufwand m\u00f6glich. Somit sind auch interaktive Anwendungen und Dashboards realisierbar und selbst komplexe Analysen werden in Millisekunden durchgef\u00fchrt.Weiterhin erm\u00f6glicht ClickHouse eine zuverl\u00e4ssige \u00dcberwachung von Protokollen, Ereignissen und weiteren Zeitreihendaten. Anomalien und Probleme k\u00f6nnen damit zuverl\u00e4ssig 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\u00f6nnen.Machine Learning &amp; GenAI unterst\u00fctzt bei der Analyse und sorgt f\u00fcr eine schnelle und effiziente Vektor Suche. KI-Modelle von beliebigen Anbietern sind Plug-and-Play-f\u00e4hig, wodurch ClickHouse als ein zentraler Datenspeicher f\u00fcr Machine Learning Workloads dienen kann.<\/p>\n<p>Das nachfolgende BPMN bildet zwei exemplarische Abl\u00e4ufe in ClickHouse ab. Beide Prozesse sind im Pool &#8222;ClickHouse&#8220; mit den Swimlanes &#8222;Nutzer&#8220;, &#8222;DBMS&#8220;, &#8222;Data Warehouse&#8220; und &#8222;Datenquelle&#8220; modelliert. Im Workflow zur Nutzerabfrage wird die Query zun\u00e4chst vom Nutzer an das DBMS gesendet. Dieses erh\u00e4lt die relevanten Datens\u00e4tze vom Data Warehouse \u00fcber eine entsprechende Daten Anfrage zur\u00fcck. Schlussendlich wird dem Nutzer das Ergebnis \u00fcbermittelt. Im Workflow zur Erfassung der Daten, werden diese von der Datenquelle hin zu den Data Sources \u00fcbermittelt und abgespeichert. \u00dcber entsprechende Transaktionen greift das Data Warehouse auf die Data Sources zu, um die Informationen sp\u00e4ter weiter zu verarbeiten.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3448 aligncenter\" src=\"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-content\/uploads\/2024\/01\/BIS_Projekt.drawio-1.png\" alt=\"\" width=\"881\" height=\"501\" \/><\/p>\n<p style=\"text-align: center\">BPMN zu zwei m\u00f6glichen Prozessen in ClickHouse<\/p>\n<h1>ClickHouse User-Stories<\/h1>\n<p>ClickHouse hat sich als leistungsf\u00e4hige L\u00f6sung f\u00fcr mehrere namhafte Unternehmen bew\u00e4hrt.<\/p>\n<p>Bei dem Dienstleistungsunternehmen Uber f\u00fchrte die Verlagerung der Protokollierungsplattform zu ClickHouse zu einer h\u00f6heren Produktivit\u00e4t und Zuverl\u00e4ssigkeit. Durch die 3-fache Datenkompression konnte eine 10-fache Leistungssteigerung bei gleichzeitig halbierten Hardwarekosten realisiert werden.<\/p>\n<p>Weiterhin profitierte der Online-Marktplatz eBay von der ClickHouse-Architektur, die zu einer Verringerung von DevOps-Aktivit\u00e4ten f\u00fchrte. Mit 10-mal weniger Hardwareaufwand und einer st\u00e4rkeren Integration mit Grafana erleichterte das DBMS den Betrieb der Website erheblich.<\/p>\n<p>Der digitale Musikdienst Spotify bew\u00e4ltigt mit dem Einsatz von ClickHouse tausende von Anfragen im Sekundenbereich auf Petabyte-Datens\u00e4tzen und erzielt zugleich eine Verringerung des Arbeitsaufwands bei geringer Varianz.<\/p>\n<p>Schlie\u00dflich unterst\u00fctzt ClickHouse die Deutsche Bank bei der Bereitstellung ihrer Client-Analytics-Plattform f\u00fcr Berichte und tiefgehende Datenanalysen. Die fortschrittliche Datenanalyse und ein klarer \u00dcberblick \u00fcber die Aktivit\u00e4ten und Rentabilit\u00e4t der Kunden machen das Datenbanksystem zu einer Schl\u00fcsselkomponente f\u00fcr den Finanzdienstleister.<\/p>\n<h1>Grenzen von ClickHouse<\/h1>\n<p>ClickHouse zeichnet sich durch hohe Geschwindigkeit aus, wodurch es in Echtzeit gro\u00dfe Datenmengen verarbeiten kann. Die horizontale Skalierbarkeit erm\u00f6glicht es, auf mehreren Servern ausgef\u00fchrt zu werden, um mit der Verarbeitung gro\u00dfer Datens\u00e4tze umzugehen. Die einfache Integration in bestehende Daten-Infrastrukturen, Unterst\u00fctzung verschiedener Dateiformate und Schnittstellen machen ClickHouse zu einer flexiblen L\u00f6sung. Durch seine Open-Source-Implementation fallen keine Lizenzkosten an, und die effiziente Hardwarenutzung kann zu erheblichen Kostenersparnissen f\u00fchren. Zus\u00e4tzlich bietet ClickHouse effiziente Komprimierungs-Algorithmen, die die Speicheranforderungen reduzieren und die Gesamtleistung verbessern k\u00f6nnen.<\/p>\n<p>Trotz der genannten Vorteile hat das Datenbank Management System auch gewisse Grenzen, auf die im Folgenden eingegangen wird. Wie bereits ausf\u00fchrlich beschrieben, nutzt ClickHouse den OLAP (Online Analytical Processing) Ansatz zur Datenverarbeitung. Ein g\u00e4nzlich anderes Konzept wird mit OLTP (Online Transaction Processing) verfolgt. W\u00e4hrend sich der in ClickHouse verwendete Ansatz auf die Analyse und Auswertung von gro\u00dfen Datenmengen konzentriert, liegt der Fokus des Alternativkonzepts auf der Gew\u00e4hrleistung einer effizienten und zuverl\u00e4ssigen Datenverarbeitung. Im Mittelpunkt steht die Erfassung und Verarbeitung von Transaktionen. Diese Systeme sind optimiert f\u00fcr den h\u00e4ufigen Zugriff auf Datens\u00e4tze und die Unterst\u00fctzung in operativen Gesch\u00e4ftsanwendungen, wie z.B. in Buchf\u00fchrungssystemen oder Point-of-Sale-Programmen. Zusammenfassend l\u00e4sst sich sagen, dass OLAP die Analyse von Daten erleichtert, w\u00e4hrend OLTP auf die effiziente Verarbeitung von Transaktionen im t\u00e4glichen Gesch\u00e4ftsbetrieb abzielt.<\/p>\n<p>Neben der bei ClickHouse eingeschr\u00e4nkten Unterst\u00fctzung von Transaktionen, existieren weitere Grenzen der leistungsstarken Datenbankl\u00f6sung. Zum einen erfordert die Einrichtung und Verwaltung ein gewisses Ma\u00df an technischem Know-how, was die Komplexit\u00e4t f\u00fcr weniger erfahrene Benutzer erh\u00f6hen kann. Das horizontale Skalieren von ClickHouse ist ebenfalls komplex und zus\u00e4tzliche Ressourcen sowie spezifische Kenntnisse k\u00f6nnten erforderlich sein. Im Vergleich zu einigen anderen Datenbanken bietet ClickHouse nicht die gleiche Vielfalt an erweiterten Funktionen und M\u00f6glichkeiten, was die Anpassung an spezifische Anforderungen einschr\u00e4nken k\u00f6nnte. Hierzu sei erw\u00e4hnt, dass das DBMS noch aktiv weiterentwickelt wird und potentiell neue Funktionen mit der Zeit hinzukommen k\u00f6nnen. Schlie\u00dflich ist die Community-Unterst\u00fctzung nicht so umfangreich wie bei einigen anderen Datenbankl\u00f6sungen. Doch auch hier steckt Verbesserungspotential aufgrund einer stetig wachsenden Benutzerbasis.<\/p>\n<h1>Quellen<\/h1>\n<p><a href=\"https:\/\/cassandra.apache.org\/_\/cassandra-basics.html\">https:\/\/cassandra.apache.org\/_\/cassandra-basics.html<\/a><\/p>\n<p><a href=\"https:\/\/cassandra.apache.org\/_\/index.html\">https:\/\/cassandra.apache.org\/_\/index.html<\/a><\/p>\n<p><a href=\"https:\/\/netflixtechblog.com\/building-netflixs-distributed-tracing-infrastructure-bb856c319304\">https:\/\/netflixtechblog.com\/building-netflixs-distributed-tracing-infrastructure-bb856c319304<\/a><\/p>\n<p><a href=\"https:\/\/druid.apache.org\/technology\">https:\/\/druid.apache.org\/technology<\/a><\/p>\n<p><a href=\"https:\/\/druid.apache.org\/use-cases\">https:\/\/druid.apache.org\/use-cases<\/a><\/p>\n<p><a href=\"https:\/\/medium.com\/airbnb-engineering\/druid-airbnb-data-platform-601c312f2a4c\">https:\/\/medium.com\/airbnb-engineering\/druid-airbnb-data-platform-601c312f2a4c<\/a><\/p>\n<p><a href=\"https:\/\/aws.amazon.com\/de\/redshift\/\">https:\/\/aws.amazon.com\/de\/redshift\/<\/a><\/p>\n<p><a href=\"https:\/\/aws.amazon.com\/de\/solutions\/case-studies\/nasdaq-case-study\/\">https:\/\/aws.amazon.com\/de\/solutions\/case-studies\/nasdaq-case-study\/<\/a><\/p>\n<p><a href=\"https:\/\/clickhouse.com\/user-stories\">https:\/\/clickhouse.com\/user-stories<\/a><\/p>\n<p><a href=\"https:\/\/clickhouse.com\/use-cases\">https:\/\/clickhouse.com\/use-cases<\/a><\/p>\n<p><a href=\"https:\/\/clickhouse.com\/docs\/en\/intro\">https:\/\/clickhouse.com\/docs\/en\/intro<\/a><\/p>\n<p><a href=\"https:\/\/clickhouse.com\/docs\/en\/about-us\/distinctive-features\">https:\/\/clickhouse.com\/docs\/en\/about-us\/distinctive-features<\/a><\/p>\n<p><a href=\"https:\/\/clickhouse.com\/docs\/en\/concepts\/olap\">https:\/\/clickhouse.com\/docs\/en\/concepts\/olap<\/a><\/p>\n<p><a href=\"https:\/\/clickhouse.com\/docs\/en\/optimize\/sparse-primary-indexes\">https:\/\/clickhouse.com\/docs\/en\/optimize\/sparse-primary-indexes<\/a><\/p>\n<p><a href=\"https:\/\/clickhouse.com\/docs\/en\/concepts\/why-clickhouse-is-so-fast\">https:\/\/clickhouse.com\/docs\/en\/concepts\/why-clickhouse-is-so-fast<\/a><\/p>\n<p><a href=\"https:\/\/www.ibm.com\/blog\/olap-vs-oltp\/\">https:\/\/www.ibm.com\/blog\/olap-vs-oltp\/<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Motivation Fast alle betrieblichen Informationssysteme m\u00fcssen auf Daten zugreifen und diese ver\u00e4ndern und speichern k\u00f6nnen. Je nach Anwendungsfall und Unternehmensgr\u00f6\u00dfe<\/p>\n","protected":false},"author":148,"featured_media":3363,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-3129","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-betriebliche-informationssysteme"],"_links":{"self":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/3129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/users\/148"}],"replies":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/comments?post=3129"}],"version-history":[{"count":18,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/3129\/revisions"}],"predecessor-version":[{"id":3451,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/posts\/3129\/revisions\/3451"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media\/3363"}],"wp:attachment":[{"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/media?parent=3129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/categories?post=3129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/informatik.htwk-leipzig.de\/seminar\/wp-json\/wp\/v2\/tags?post=3129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}