Der Autor hat den Free and Open Source Fund dazu ausgewählt, eine Spende im Rahmen des Programms Write for DOnations zu erhalten.

Einführung

ClickHouse ist eine Open-Source-basierte, spaltenorientierte Analysedatenbank, die von Yandex für OLAP- und Big-Data-Anwendungsfälle erstellt wurde. Unterstützung von ClickHouse für eine echtzeitbasierte Verarbeitung von Abfragen sorgt dafür, dass sich ClickHouse für Anwendungen eignet, die in Sekundenbruchteilen Ergebnisse erfordern. Die Abfragesprache von ClickHouse ist ein SQL-Dialekt, der leistungsfähige deklarative Abfragefunktionen bietet, während Endbenutzer von Vertrautheit und einer flacheren Lernkurve profitieren.

Spaltenorientierte Datenbanken speichern Einträge in nach Spalten (und nicht nach Zeilen) gruppierten Blöcken. Da Daten für Spalten, die in der Abfrage fehlen, nicht geladen werden, brauchen spaltenorientierte Datenbanken beim Ausführen von Abfragen weniger Zeit zum Lesen von Daten. Dadurch können diese Datenbanken bei bestimmten Workloads (wie z.B. OLAP) Ergebnisse wesentlich schneller berechnen als herkömmliche zeilenbasierte Systeme.

Online Analytics Processing (OLAP)-Systeme ermöglichen es, große Mengen von Daten zu organisieren und komplexe Abfragen durchzuführen. Sie können Petabytes von Daten verwalten und Abfrageergebnisse schnell zurückgeben. Somit eignet sich OLAP gut für Bereiche wie Datenwissenschaft und geschäftliche Analysen.

In diesem Tutorial installieren Sie den ClickHouse-Datenbankserver sowie den Client auf Ihrem Rechner. Sie verwenden das DBMS für typische Aufgaben und aktivieren optional den Remotezugriff von einem anderen Server, damit Sie sich von einem anderen Rechner aus mit der Datenbank verbinden können. Dann testen Sie ClickHouse, indem Sie Beispieldaten von Websitebesuchen modellieren und abfragen.

Voraussetzungen

  • Ein Debian 10-Betriebssystem mit einem sudo-aktivierten non-root user und mit eingerichteter Firewall. Folgen Sie dem Tutorial zur Ersteinrichtung des Servers, um den Benutzer zu erstellen und die Firewall einzurichten.
  • (Optional) Ein sekundäres Debian 10-Betriebssystem mit einem sudo-aktivierten non-root user und mit eingerichteter Firewall. Folgen Sie dem Tutorial zur Ersteinrichtung des Servers.

Schritt 1 — Installieren von ClickHouse

In diesem Abschnitt installieren Sie die ClickHouse-Server- und Client-Programme mit apt.

Stellen Sie zunächst eine SSH-Verbindung mit Ihrem Server her durch Ausführung von:

  • ssh sammy@your_server_ip

dirmngr ist ein Server für die Verwaltung von Zertifikaten und Schlüsseln. Er wird benötigt, um Remote-Repository-Schlüssel zu aktivieren und zu verifizieren. Installieren Sie den Server durch Ausführung von:

  • sudo apt install dirmngr

Yandex pflegt ein APT-Repository, das über die neueste Version von ClickHouse verfügt. Fügen Sie den GPG-Schlüssel des Repository hinzu, damit Sie validierte ClickHouse-Pakete sicher herunterladen können:

  • sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4

Sie werden eine Ausgabe sehen, die der folgenden ähnelt:

Output
Executing: /tmp/apt-key-gpghome.JkkcKnBAFY/gpg.1.sh --keyserver keyserver.ubuntu.com --recv E0C56BD4 gpg: key C8F1E19FE0C56BD4: public key "ClickHouse Repository Key <milovidov@yandex-team.ru>" imported gpg: Total number processed: 1 gpg: imported: 1

Die Ausgabe bestätigt, dass die Verifizierung erfolgreich war und der Schlüssel hinzugefügt wurde.

Fügen Sie das Repository Ihrer Liste mit APT-Repositorys hinzu, indem Sie Folgendes ausführen:

  • echo "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" | sudo tee /etc/apt/sources.list.d/clickhouse.list

Hier haben Sie die Ausgabe von echo an sudo tee weitergeleitet, damit sich diese Ausgabe in einer Datei mit Root-Besitz ausgeben lässt.

Führen Sie nun apt update aus, um Ihre Pakete zu aktualisieren:

  • sudo apt update

Die Pakete clickhouse-server und clickhouse-client stehen nun für die Installation bereit.

Ab ClickHouse-Version 19.13.3 werden einige OpenSSL 1.1.1-Konfigurationen wie MinProtocol und CipherVersion nicht richtig gelesen. Um das Problem der fehlenden Kompatibilität zu umgehen, ändern Sie die OpenSSL-Konfigurationsdatei und kommentieren Sie die Zeile ssl_conf = ssl_sect in /etc/ssl/openssl.cnf aus.

Bearbeiten Sie die Konfigurationsdatei, indem Sie Folgendes ausführen:

  • sudo nano /etc/ssl/openssl.cnf

Kommentieren Sie dann die Zeile mit ssl_conf = ssl_sect aus, damit sie wie die folgende Datei aussieht:

/etc/ssl/openssl.cnf
...

tsa_name        = yes   # Must the TSA name be included in the reply?
                # (optional, default: no)
ess_cert_id_chain   = no    # Must the ESS cert id chain be included?
                # (optional, default: no)
ess_cert_id_alg     = sha1  # algorithm to compute certificate
                # identifier (optional, default: sha1)
[default_conf]
#ssl_conf = ssl_sect

[ssl_sect]
...

Nachdem Sie die OpenSSL-Konfigurationsdatei gepatcht haben, können Sie nun die ClickHouse-Server- und Client-Pakete installieren. Installieren Sie sie mit:

  • sudo apt install clickhouse-server clickhouse-client

Bei der Installation werden Sie auch dazu aufgefordert, ein Passwort für den standardmäßigen ClickHouse-Benutzer festzulegen.

Sie haben den ClickHouse-Server und- Client erfolgreich installiert. Sie können den Datenbankdienst nun starten und überprüfen, ob er richtig ausgeführt wird.

Schritt 2 — Starten des Dienstes

Das im vorherigen Abschnitt installierte Paket clickhouse-server erstellt einen systemd-Dienst, der Aktionen wie Starten, Anhalten und Neustart des Datenbankservers ausführt. systemd ist ein init-System für Linux, das der Initialisierung und Verwaltung von Diensten dient. In diesem Abschnitt starten Sie den Dienst und überprüfen, ob er richtig ausgeführt wird.

Starten Sie den Dienst clickhouse-server, indem Sie Folgendes ausführen:

  • sudo service clickhouse-server start

Der vorherige Befehl wird keine Ausgabe anzeigen. Um zu überprüfen, ob der Dienst erfolgreich ausgeführt wird, führen Sie Folgendes aus:

  • sudo service clickhouse-server status

Sie werden eine Ausgabe ähnlich der folgenden sehen:

Output
● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data) Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2018-12-22 07:23:20 UTC; 1h 9min ago Main PID: 27101 (ClickHouse-serv) Tasks: 34 (limit: 1152) CGroup: /system.slice/ClickHouse-server.service └─27101 /usr/bin/ClickHouse-server --config=/etc/ClickHouse-server/config.xml

Die Ausgabe gibt an, dass der Server ausgeführt wird.

Sie haben den ClickHouse-Server erfolgreich gestartet und können nun das CLI-Programm clickhouse-client verwenden, um eine Verbindung zum Server herzustellen.

Schritt 3 — Erstellen von Datenbanken und Tabellen

In ClickHouse können Sie Datenbanken erstellen und löschen, indem Sie SQL-Anweisungen direkt in der interaktiven Datenbankaufforderung ausführen. Anweisungen bestehen aus Befehlen, die einer bestimmten Syntax folgen, und den Datenbankserver dazu bringen, eine angeforderte Operation mit allen erforderlichen Daten auszuführen. Erstellen Sie Datenbanken, indem Sie die Syntax CREATE DATABASE table_name verwenden. Um eine Datenbank zu erstellen, starten Sie zunächst eine Client-Sitzung, indem Sie folgenden Befehl ausführen:

  • clickhouse-client --password

Sie werden dazu aufgefordert, das Passwort einzugeben, das Sie bei der Installation festgelegt haben – geben Sie es ein, um die Client-Sitzung erfolgreich zu starten.

Mit dem vorherigen Befehl können Sie sich in der Eingabeaufforderung des Clients anmelden, wo Sie ClickHouse SQL-Anweisungen ausführen können, um beispielsweise folgende Aktionen auszuführen:

  • Erstellen, Aktualisieren und Löschen von Datenbanken, Tabellen, Indizes, Partitionen und Ansichten.

  • Ausführen von Abfragen zum Abrufen von Daten, die optional mit verschiedenen Bedingungen gefiltert und gruppiert werden.

In diesem Schritt erstellen Sie mit dem ClickHouse-Client, der bereit für die Eingabe von Daten ist, eine Datenbank und eine Tabelle. Für die Zwecke dieses Tutorials erstellen Sie eine Datenbank namens test und erzeugen darin eine Tabelle namens visits, die die Länge von Websitebesuchen verfolgt.

Da Sie sich in der Eingabeaufforderung von ClickHouse befinden, erstellen Sie nun Ihre Datenbank test durch Ausführung von:

  • CREATE DATABASE test;

Sie sehen die folgende Ausgabe, die zeigt, dass Sie die Datenbank erstellt haben:

Output
CREATE DATABASE test Ok. 0 rows in set. Elapsed: 0.003 sec.

Eine ClickHouse-Tabelle ähnelt Tabellen in anderen relationalen Datenbanken; sie enthält eine Sammlung verwandter Daten in einem strukturierten Format. Sie können Spalten zusammen mit ihren Typen festlegen, Datenzeilen hinzufügen und verschiedene Arten von Abfragen in Tabellen ausführen.

Die Syntax zur Erstellung von Tabellen in ClickHouse folgt dieser Beispielstruktur:

CREATE TABLE table_name
(
    column_name1 column_type [options],
    column_name2 column_type [options],
    ...
) ENGINE = engine

Die Werte table_name und column_name können beliebige gültige ASCII-Bezeichner sein. ClickHouse unterstützt eine breite Palette von Spaltentypen; einige der beliebtesten sind:

  • UInt64: dient der Speicherung von ganzzahligen Werten im Bereich 0 bis 18446744073709551615.

  • Float64: dient der Speicherung von Gleitkommazahlen wie 2039,23, 10,5 etc.

  • String: dient der Speicherung von Zeichen mit variabler Länge. Der Wert benötigt kein Attribut für maximale Länge, da er beliebige Längen speichern kann.

  • Date: dient der Speicherung von Daten, die dem Format YYYY-MM-DD folgen.

  • DateTime: dient der Speicherung von Daten, die die Uhrzeit umfassen und dem Format YYYY-MM-DD HH:MM:SS folgen.

Nach den Spaltendefinitionen geben Sie die für die Tabelle verwendete Engine an. In ClickHouse bestimmen Engines über die physikalische Struktur der zugrunde liegenden Daten, die Abfragefunktionen der Tabelle, die gleichzeitigen Zugriffsmodi und die Unterstützung von Indizes. Verschiedene Engine-Typen eignen sich für verschiedene Anwendungsanforderungen. Der am häufigsten verwendete und weit verbreitete Engine-Typ ist MergeTree.

Nachdem Sie sich einen Überblick über die Tabellenerstellung verschafft haben, erstellen Sie nun eine Tabelle. Beginnen Sie mit der Auswahl der Datenbank, die Sie ändern möchten:

  • USE test;

Sie sehen die folgende Ausgabe, die zeigt, dass Sie von der Datenbank default zur Datenbank test gewechselt sind:

Output
USE test Ok. 0 rows in set. Elapsed: 0.001 sec.

Im Rest dieses Leitfadens wird davon ausgegangen, dass Sie Anweisungen im Kontext dieser Datenbank ausführen.

Erstellen Sie Ihre Tabelle visits, indem Sie den folgenden Befehl ausführen:

  • CREATE TABLE visits (
  • id UInt64,
  • duration Float64,
  • url String,
  • created DateTime
  • ) ENGINE = MergeTree()
  • PRIMARY KEY id
  • ORDER BY id;

Hier ist eine Aufstellung dessen, was der Befehl tut. Sie erstellen eine Tabelle namens visits, die vier Spalten aufweist:

  • id: Die Primärschlüsselspalte. Ähnlich wie bei anderen RDBMS-Systemen identifiziert eine Primärschlüsselspalte in ClickHouse eine Zeile eindeutig; jede Zeile muss einen eindeutigen Wert für diese Spalte aufweisen.

  • duration: Eine Gleitkommaspalte zur Speicherung der Dauer einzelner Besuche (in Sekunden). float-Spalten können Dezimalwerte wie 12,50 speichern.

  • url: Eine Zeichnfolgenspalte, die die besuchte URL speichert, wie z.B. http://example.com.

  • created: Eine Datums- und Uhrzeitspalte, die vefolgt, wann der Besuch stattgefunden hat.

Nach den Spaltendefinitionen geben Sie MergeTree als Speicher-Engine für die Tabelle an. Die MergeTree-Familie von Engines wird aufgrund ihrer optimierten Unterstützung für große echtzeitbasierte Einfügungen, die allgemeine Stabilität sowie Unterstützung von Abfragen für Datenbanken empfohlen. Außerdem unterstützen MergeTree-Engines eine Sortierung von Zeilen nach Primärschlüssel, Partitionierung von Zeilen sowie Replikation und Abfrage von Daten.

Wenn Sie ClickHouse zur Archivierung von Daten, die nicht oft abgefragt werden, oder zur Speicherung von temporären Daten verwenden möchten, können Sie die Log-Familie von Engines verwenden, um eine Optimierung für diesen Anwendungsfall vorzunehmen.

Nach den Spaltendefinitionen definieren Sie andere Optionen auf der Tabellenebene. Die Klausel PRIMARY KEY legt id als Primärschlüsselspalte fest; die Klausel ORDER BY speichert anhand der Spalte id sortierte Werte. Ein Primärschlüssel identifiziert eine Zeile eindeutig und dient zum effizienten Zugreifen auf eine einzelne Zeile und ein effizientes Zuordnen von Zeilen.

Bei Ausführung der Anweisung create sehen Sie folgende Ausgabe:

Output
CREATE TABLE visits ( id UInt64, duration Float64, url String, created DateTime ) ENGINE = MergeTree() PRIMARY KEY id ORDER BY id Ok. 0 rows in set. Elapsed: 0.010 sec.

In diesem Abschnitt haben Sie eine Datenbank und eine Tabelle erstellt, um Daten zu Websitebesuchen zu verfolgen. Im nächsten Schritt fügen Sie Daten in die Tabelle ein, aktualisieren vorhandene Daten und löschen diese Daten.

Schritt 4 — Einfügen, Aktualisieren und Löschen von Daten und Spalten

In diesem Schritt verwenden Sie Ihre Tabelle namens visits, um Daten einzufügen, zu aktualisieren und zu löschen. Folgender Befehl ist ein Beispiel für die Syntax zur Eingabe von Zeilen in eine ClickHouse-Tabelle:

INSERT INTO table_name VALUES (column_1_value, column_2_value, ....);

Fügen Sie nun einige Zeilen von Beispieldaten zu Websitebesuchen in Ihre Tabelle visits ein, indem Sie nacheinander die folgenden Anweisungen ausführen:

  • INSERT INTO visits VALUES (1, 10.5, 'http://example.com', '2019-01-01 00:01:01');
  • INSERT INTO visits VALUES (2, 40.2, 'http://example1.com', '2019-01-03 10:01:01');
  • INSERT INTO visits VALUES (3, 13, 'http://example2.com', '2019-01-03 12:01:01');
  • INSERT INTO visits VALUES (4, 2, 'http://example3.com', '2019-01-04 02:01:01');

Sie sehen die folgende Ausgabe, die für jede Einfügeanweisung wiederholt wird.

Output
INSERT INTO visits VALUES Ok. 1 rows in set. Elapsed: 0.004 sec.

Die Ausgabe für die einzelnen Zeilen zeigt, dass Sie sie erfolgreich in die Tabelle visits eingefügt haben.

Nun fügen Sie der Tabelle visits eine zusätzliche Spalte hinzu. Wenn Sie Spalten von bestehenden Tabellen hinzufügen oder löschen, unterstützt ClickHouse die Syntax ALTER.

Die grundlegende Syntax für das Hinzufügen einer Spalte zu einer Tabelle lautet beispielsweise:

ALTER TABLE table_name ADD COLUMN column_name column_type;

Fügen Sie eine Spalte namens location hinzu, in der der Speicherort der Besuche auf einer Website gespeichert wird. Führen Sie dazu folgende Anweisung aus:

  • ALTER TABLE visits ADD COLUMN location String;

Sie werden eine Ausgabe sehen, die der folgenden ähnelt:

Output
ALTER TABLE visits ADD COLUMN location String Ok. 0 rows in set. Elapsed: 0.014 sec.

Die Ausgabe zeigt, dass Sie die Spalte location erfolgreich hinzugefügt haben.

Ab Version 19.13.3 unterstützt ClickHouse aufgrund von Implementierungsbeschränkungen nicht mehr das Aktualisieren und Löschen einzelner Datenzeilen. ClickHouse unterstützt jedoch Massenaktualisierungen und -löschvorgänge und bietet eine eigene SQL-Syntax für diese Operationen, um ihre nicht standardmäßige Nutzung hervorzuheben.

Die folgende Syntax ist ein Beispiel für eine Massenaktualisierung von Zeilen:

ALTER TABLE table_name UPDATE  column_1 = value_1, column_2 = value_2 ...  WHERE  filter_conditions;

Sie führen die folgende Anweisung aus, um die Spalte url aller Zeilen zu aktualisieren, die eine duration (Dauer) von weniger als 15 aufweisen. Geben Sie sie zur Ausführung in die Datenbankaufforderung ein:

  • ALTER TABLE visits UPDATE url = 'http://example2.com' WHERE duration < 15;

Die Ausgabe der Anweisung zur Massenaktualisierung wird wie folgt aussehen:

Output
ALTER TABLE visits UPDATE url = 'http://example2.com' WHERE duration < 15 Ok. 0 rows in set. Elapsed: 0.003 sec.

Die Ausgabe zeigt, dass Ihre Aktualisierungsanfrage erfolgreich abgeschlossen wurde. 0 rows in set in der Ausgabe weist darauf hin, dass die Abfrage keine Zeilen zurückgegeben hat; dies wird bei allen Aktualisierungs- und Löschabfragen der Fall sein.

Die Beispielsyntax für das Massenlöschen von Zeilen ähnelt der Aktualisierung von Zeilen und weist die folgende Struktur auf:

ALTER TABLE table_name DELETE WHERE filter_conditions;

Um das Löschen von Daten zu testen, führen Sie folgende Anweisung aus, um alle Zeilen zu entfernen, die eine duration (Dauer) von weniger als 5 haben:

  • ALTER TABLE visits DELETE WHERE duration < 5;

Die Ausgabe der Anweisung zur Massenlöschung wird in etwa folgendermaßen aussehen:

Output
ALTER TABLE visits DELETE WHERE duration < 5 Ok. 0 rows in set. Elapsed: 0.003 sec.

Die Ausgabe bestätigt, dass Sie die Zeilen mit einer Dauer von weniger als fünf Sekunden gelöscht haben.

Um Spalten aus Ihrer Tabelle zu löschen, würde die Syntax dieser Beispielstruktur folgen:

ALTER TABLE table_name DROP COLUMN column_name;

Löschen Sie die zuvor hinzugefügte Spalte location durch Ausführung von Folgendem:

  • ALTER TABLE visits DROP COLUMN location;

Die Ausgabe von DROP COLUMN, die bestätigt, dass die Spalte gelöscht wurde, sieht wie folgt aus:

Output
ALTER TABLE visits DROP COLUMN location String Ok. 0 rows in set. Elapsed: 0.010 sec.

Nachdem Sie Zeilen und Spalten in Ihrer Tabelle visits erfolgreich eingefügt, aktualisiert und gelöscht haben, fahren Sie nun im nächsten Schritt mit der Abfrage von Daten fort.

Schritt 5 — Abfragen von Daten

Die Abfragesprache von ClickHouse ist ein benutzerdefinierter SQL-Dialekt mit Erweiterungen und Funktionen, die für Analytics-Workloads geeignet sind. In diesem Schritt führen Sie Auswahl- und Aggregationsanfragen zum Abrufen von Daten und Ergebnissen aus Ihrer Tabelle namens visits aus.

Auswahlabfragen ermöglichen es Ihnen, Zeilen und Spalten mit Daten, die nach den von Ihnen angegebenen Bedingungen gefiltert werden, zusammen mit Optionen wie Anzahl der zurückzugebenden Zeilen abzurufen. Mit der Syntax SELECT können Sie Zeilen und Spalten mit Daten auswählen. Die grundlegende Syntax für SELECT-Abfragen lautet:

SELECT func_1(column_1), func_2(column_2) FROM table_name WHERE filter_conditions row_options;

Führen Sie die folgende Anweisung aus, um url- und duration-Werte für Zeilen abzurufen, bei denen die URL http://example.com lautet.

  • SELECT url, duration FROM visits WHERE url = 'http://example2.com' LIMIT 2;

Sie sehen den folgenden Output:

Output
SELECT url, duration FROM visits WHERE url = 'http://example2.com' LIMIT 2 ┌─url─────────────────┬─duration─┐ │ http://example2.com │ 10.5 │ └─────────────────────┴──────────┘ ┌─url─────────────────┬─duration─┐ │ http://example2.com │ 13 │ └─────────────────────┴──────────┘ 2 rows in set. Elapsed: 0.013 sec.

Die Ausgabe hat zwei Zeilen zurückgegeben, die den von Ihnen angegebenen Bedingungen entsprechen. Nachdem Sie Werte ausgewählt haben, können Sie nun mit der Ausführung von Aggregationsabfragen fortfahren.

Aggregationsabfragen stellen Abfragen dar, die auf einen Satz von Werten angewendet werden und einzelne Ausgabewerte zurückgeben. In Analysedatenbanken werden diese Abfragen häufig ausgeführt und von der Datenbank umfassend optimiert. Zu den Aggregatfunktionen, die von ClickHouse unterstützt werden, gehören:

  • count: gibt die Zahl der Zeilen zurück, die den angegebenen Bedingungen entsprechen.

  • sum: gibt die Summe der ausgewählten Spaltenwerte zurück.

  • avg: gibt den Durchschnitt der ausgewählten Spaltenwerte zurück.

Zu ClickHouse-spezifischen Aggregatfunktionen gehören:

  • uniq: gibt eine ungefähre Zahl eindeutiger Zeilen zurück, die abgeglichen wurden.

  • topK: gibt mit einem Approximationsalgorithmus ein Array der häufigsten Werte einer bestimmten Spalte zurück.

Um die Ausführung von Aggregationsabfragen zu testen, berechnen Sie die Gesamtdauer von Besuchen durch Ausführung der Abfrage sum:

  • SELECT SUM(duration) FROM visits;

Sie werden eine Ausgabe ähnlich der Folgenden sehen:

Output
SELECT SUM(duration) FROM visits ┌─SUM(duration)─┐ │ 63.7 │ └───────────────┘ 1 rows in set. Elapsed: 0.010 sec.

Berechnen Sie nun die führenden zwei URLs durch Ausführung von:

  • SELECT topK(2)(url) FROM visits;

Sie werden eine Ausgabe ähnlich der Folgenden sehen:

Output
SELECT topK(2)(url) FROM visits ┌─topK(2)(url)──────────────────────────────────┐ │ ['http://example2.com','http://example1.com'] │ └───────────────────────────────────────────────┘ 1 rows in set. Elapsed: 0.010 sec.

Nachdem Sie Ihre Tabelle visits erfolgreich abgefragt haben, löschen Sie nun im nächsten Schritt Tabellen und Datenbanken.

Schritt 6 — Löschen von Tabellen und Datenbanken

In diesem Abschnitt löschen Sie die Tabelle visits sowie die Datenbank test.

Die Syntax zur Löschung von Tabellen folgt diesem Beispiel:

DROP TABLE table_name;

Um die Tabelle visits zu löschen, führen Sie folgende Anweisung aus:

  • DROP TABLE visits;

Die folgende Ausgabe zeigt an, dass die Tabelle erfolgreich gelöscht wurde:

output
DROP TABLE visits Ok. 0 rows in set. Elapsed: 0.005 sec.

Mit der Syntax DROP database table_name können Sie Datenbanken löschen. Um die Datenbank namens test zu löschen, führen Sie folgende Anweisung aus:

  • DROP DATABASE test;

Die resultierende Ausgabe zeigt, dass die Datenbank erfolgreich gelöscht wurde.

Output
DROP DATABASE test Ok. 0 rows in set. Elapsed: 0.003 sec.

In diesem Schritt haben Sie Tabellen und Datenbanken gelöscht. Nachdem Sie Datenbanken, Tabellen und Daten in Ihrer ClickHouse-Instanz erstellt, aktualisiert und gelöscht haben, aktivieren Sie nun im nächsten Abschnitt den Remotezugriff auf Ihren Datenbankserver.

Schritt 7 — Einrichten von Firewall-Regeln (optional)

Wenn Sie ClickHouse nur lokal verwenden möchten (mit auf dem gleichen Server ausgeführten Anwendungen) oder auf Ihrem Server keine Firewall aktiviert haben, müssen Sie diesen Abschnitt nicht beachten. Wenn Sie hingegen eine Remoteverbindung mit dem ClickHouse-Datenbankserver herstellen möchten, sollten Sie diesen Schritt durchführen.

Auf Ihrem Server ist derzeit eine Firewall aktiviert, die es Ihrer öffentlichen IP-Adresse verbietet, auf alle Ports zuzugreifen. Führen Sie die folgenden beiden Schritte durch, um Remotezugriff zu aktivieren:

  • Ändern Sie die Konfiguration von ClickHouse und erlauben Sie es der Software, alle Schnittstellen abzuhören.

  • Fügen Sie eine Firewall-Regel hinzu, die eingehende Verbindungen zu Port 8123 zulässt. Dabei handelt es sich um den HTTP-Port, an dem der ClickHouse-Server ausgeführt wird.

Wenn Sie sich in der Datenbankaufforderung befinden, beenden Sie sie durch Eingabe von Strg+D.

Bearbeiten Sie die Konfigurationsdatei, indem Sie Folgendes ausführen:

  • sudo nano /etc/clickhouse-server/config.xml

Heben Sie dann die Auskommentierung der Zeile mit <!-- <listen_host>0.0.0.0</listen_host> --> auf, wie in der folgenden Datei dargestellt:

/etc/clickhouse-server/config.xml
...
 <interserver_http_host>example.yandex.ru</interserver_http_host>
    -->

    <!-- Listen specified host. use :: (wildcard IPv6 address), if you want to accept connections both with IPv4 and IPv6 from everywhere. -->
    <!-- <listen_host>::</listen_host> -->
    <!-- Same for hosts with disabled ipv6: -->
    <listen_host>0.0.0.0</listen_host>

    <!-- Default values - try listen localhost on ipv4 and ipv6: -->
    <!--
    <listen_host>::1</listen_host>
    <listen_host>127.0.0.1</listen_host>
    -->
...

Speichern Sie die Datei und schließen Sie sie. Starten Sie zum Anwenden der neuen Konfiguration den Dienst neu, indem Sie Folgendes ausführen:

  • sudo service clickhouse-server restart

Bei diesem Befehl werden Sie keine Ausgabe sehen. Der ClickHouse-Server lauscht an Port 8123 nach HTTP-Verbindungen und an Port 9000 nach Verbindungen von clickhouse-client. Aktivieren Sie mit dem folgenden Befehl Zugriff an beiden Ports für die IP-Adresse Ihres zweiten Servers:

  • sudo ufw allow from second_server_ip/32 to any port 8123
  • sudo ufw allow from second_server_ip/32 to any port 9000

Für beide Befehle wird die folgende Ausgabe angezeigt, die bestätigt, dass Sie den Zugriff auf beide Ports aktiviert haben:

Output
Rule added

ClickHouse wird nun über die von Ihnen hinzugefügte IP-Adresse zugänglich sein. Fügen Sie bei Bedarf zusätzliche IP-Adressen hinzu, z. B. die Adresse Ihres lokalen Rechners.

Um zu überprüfen, ob Sie sich über den Remotecomputer mit dem ClickHouse-Server verbinden können, führen Sie zunächst die Schritte in Schritt 1 dieses Tutorials auf dem zweiten Server aus und stellen Sie sicher, dass Sie den clickhouse-client installiert haben.

Nachdem Sie sich beim zweiten Server angemeldet haben, starten Sie nun eine Client-Sitzung, indem Sie Folgendes ausführen:

  • clickhouse-client --host your_server_ip --password

Ihnen wird die folgende Ausgabe angezeigt, die bestätigt, dass Sie erfolgreich eine Verbindung zum Server hergestellt haben:

Output
ClickHouse client version 19.13.3.26 (official build). Password for user (default): Connecting to your_server_ip:9000 as user default. Connected to ClickHouse server version 19.13.3 revision 54425. hostname :)

In diesem Schritt haben Sie Remotezugriff auf Ihren ClickHouse-Datenbankserver aktiviert, indem Sie Ihre Firewall-Regeln angepasst haben.

Zusammenfassung

Sie haben auf Ihrem Server erfolgreich eine ClickHouse-Datenbank eingerichtet sowie eine Datenbank und Tabelle erstellt, Daten hinzugefügt, Abfragen ausgeführt und die Datenbank gelöscht. In der Dokumentation von ClickHouse können Sie mehr über die Benchmarks der Software im Vergleich zu anderen Open-Source- und kommerziellen Analysedatenbanken erfahren sowie allgemeine Referenzdokumente lesen.

Zu weiteren Funktionen von ClickHouse gehört eine auf mehrere Server verteilte Abfrageverarbeitung, die für mehr Leistung und Schutz vor Datenverlusten sorgt, indem Daten in verschiedenen Shards gespeichert werden.

0 Comments

Creative Commons License