Der Autor hat dieFree and Open Source Fundausgewählt, um eine Spende im Rahmen desWrite for DOnations-Programms zu erhalten.
Einführung
ClickHouse ist eine spaltenorientierte Open-Source-Analysedatenbank, die vonYandex fürOLAP und Big-Data-Anwendungsfälle erstellt wurde. Durch die Unterstützung von ClickHouse für die Echtzeit-Abfrageverarbeitung eignet es sich für Anwendungen, die Analyseergebnisse in Sekundenbruchteilen erfordern. Die Abfragesprache von ClickHouse ist ein SQL-Dialekt, der leistungsstarke deklarative Abfragefunktionen ermöglicht und dem Endbenutzer Vertrautheit und einen geringeren Lernaufwand bietet.
Column-oriented Datenbanken speichern Datensätze in Blöcken, die nach Spalten anstatt nach Zeilen gruppiert sind. Durch das Nichtladen von Daten für Spalten, die in der Abfrage nicht vorhanden sind, verbringen spaltenorientierte Datenbanken weniger Zeit mit dem Lesen von Daten, während Abfragen ausgeführt werden. Infolgedessen können diese Datenbanken Ergebnisse für bestimmte Workloads wie OLAP viel schneller berechnen und zurückgeben als herkömmliche zeilenbasierte Systeme.
Online Analytics Processing (OLAP) -Systeme ermöglichen das Organisieren großer Datenmengen und das Ausführen komplexer Abfragen. Sie können Petabytes an Daten verwalten und Abfrageergebnisse schnell zurückgeben. Auf diese Weise eignet sich OLAP für Arbeiten in Bereichen wie Data Science und Business Analytics.
In diesem Lernprogramm installieren Sie den ClickHouse-Datenbankserver und -Client auf Ihrem Computer. Sie verwenden das DBMS für typische Aufgaben und aktivieren optional den Remotezugriff von einem anderen Server aus, damit Sie von einem anderen Computer aus eine Verbindung zur Datenbank herstellen können. Anschließend testen Sie ClickHouse, indem Sie Beispieldaten für Website-Besuche modellieren und abfragen.
Voraussetzungen
-
Ein CentOS 7-Server mit einem
sudo
-fähigen Nicht-Root-Benutzer- und Firewall-Setup. Sie können dem anfänglichen Server-Setuptutorial folgen, um den Benutzer zu erstellen, und diesemtutorial, um die Firewall einzurichten. -
(Optional) Ein sekundärer CentOS 7-Server mit einem
sudo
-fähigen Nicht-Root-Benutzer- und Firewall-Setup. Sie können das anfängliche Server-Setuptutorial und das zusätzliche Setuptutorial für die Firewall verfolgen.
[[Schritt-1 - Installation von Clickhouse]] == Schritt 1 - Installation von ClickHouse
In diesem Abschnitt installieren Sie die ClickHouse-Server- und Clientprogramme mityum
.
Zuerst führen Sie SSH auf Ihrem Server aus:
ssh sammy@your_server_ip
Installieren Sie die Basisabhängigkeiten, indem Sie Folgendes ausführen:
sudo yum install -y pygpgme yum-utils
Diepygpgme
-Pakete werden zum Hinzufügen und Überprüfen von GPG-Signaturen verwendet, während dieyum-utils
die einfache Verwaltung von Quell-RPMs ermöglichen.
Altinity, ein ClickHouse-Beratungsunternehmen, unterhält ein YUM-Repository mit der neuesten Version von ClickHouse. Sie fügen die Repository-Details hinzu, um validierte ClickHouse-Pakete sicher herunterzuladen, indem Sie die Datei erstellen. Um den Paketinhalt zu überprüfen, können Sie die Quellen überprüfen, aus denen sie bei diesenGithub project erstellt wurden.
Erstellen Sie die Repository-Detaildatei, indem Sie Folgendes ausführen:
sudo vi /etc/yum.repos.d/altinity_clickhouse.repo
Fügen Sie als Nächstes den folgenden Inhalt zur Datei hinzu:
/etc/yum.repos.d/altinity_clickhouse.repo
[altinity_clickhouse]
name=altinity_clickhouse
baseurl=https://packagecloud.io/altinity/clickhouse/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/altinity/clickhouse/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[altinity_clickhouse-source]
name=altinity_clickhouse-source
baseurl=https://packagecloud.io/altinity/clickhouse/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/altinity/clickhouse/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
Nachdem Sie die Repositorys hinzugefügt haben, aktivieren Sie sie mit dem folgenden Befehl:
sudo yum -q makecache -y --disablerepo='*' --enablerepo='altinity_clickhouse'
Das-q
-Flag weist den Befehl an, im stillen Modus ausgeführt zu werden. Der Befehlmakecache
stellt die im Flag--enablerepo
angegebenen Pakete zur Verfügung.
Bei der Ausführung wird eine Ausgabe ähnlich der folgenden angezeigt:
OutputImporting GPG key 0x0F6E36F6:
Userid : "https://packagecloud.io/altinity/clickhouse (https://packagecloud.io/docs#gpg_signing) "
Fingerprint: 7001 38a9 6a20 6b22 bf28 3c06 ed26 58f3 0f6e 36f6
From : https://packagecloud.io/altinity/clickhouse/gpgkey
Die Ausgabe bestätigt, dass der GPG-Schlüssel erfolgreich verifiziert und hinzugefügt wurde.
Die Paketeclickhouse-server
undclickhouse-client
können jetzt installiert werden. Installiere sie mit:
sudo yum install -y clickhouse-server clickhouse-client
Sie haben den ClickHouse-Server und -Client erfolgreich installiert. Jetzt können Sie den Datenbankdienst starten und sicherstellen, dass er ordnungsgemäß ausgeführt wird.
[[Schritt-2 - Starten des Dienstes]] == Schritt 2 - Starten des Dienstes
Das Paketclickhouse-server
, das Sie im vorherigen Abschnitt installiert haben, erstellt einen Dienstsystemd
, der Aktionen wie das Starten, Stoppen und Neustarten des Datenbankservers ausführt. systemd
ist ein Init-System für Linux zum Initialisieren und Verwalten von Diensten. In diesem Abschnitt starten Sie den Dienst und stellen sicher, dass er erfolgreich ausgeführt wird.
Starten Sie den Dienstclickhouse-server
, indem Sie Folgendes ausführen:
sudo service clickhouse-server start
Sie sehen eine Ausgabe ähnlich der folgenden:
OutputStart clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
DONE
Führen Sie Folgendes aus, um zu überprüfen, ob der Dienst erfolgreich ausgeführt wird:
sudo service clickhouse-server status
Es wird eine Ausgabe ähnlich der folgenden ausgegeben, die angibt, dass der Server ordnungsgemäß ausgeführt wird:
Outputclickhouse-server service is running
Sie haben den ClickHouse-Server erfolgreich gestartet und können nun das CLI-Programmclickhouse-client
verwenden, um eine Verbindung zum Server herzustellen.
[[Schritt 3 - Erstellen von Datenbanken und Tabellen]] == Schritt 3 - Erstellen von Datenbanken und Tabellen
In ClickHouse können Sie Datenbanken erstellen und löschen, indem Sie SQL-Anweisungen direkt in der Eingabeaufforderung für interaktive Datenbanken ausführen. Anweisungen bestehen aus Befehlen, die einer bestimmten Syntax folgen und den Datenbankserver anweisen, eine angeforderte Operation zusammen mit den erforderlichen Daten auszuführen. Sie erstellen Datenbanken mit der Syntax vonCREATE DATABASE table_name
. Um eine Datenbank zu erstellen, starten Sie zuerst eine Client-Sitzung, indem Sie den folgenden Befehl ausführen:
clickhouse-client --multiline
Dieser Befehl meldet Sie an der Client-Eingabeaufforderung an, auf der Sie ClickHouse-SQL-Anweisungen ausführen können, um 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 unter verschiedenen Bedingungen optional gefiltert und gruppiert werden.
Das--multiline
-Flag weist die CLI an, die Eingabe von Abfragen zuzulassen, die mehrere Zeilen umfassen.
In diesem Schritt erstellen Sie mit dem ClickHouse-Client, der zum Einfügen von Daten bereit ist, eine Datenbank und eine Tabelle. Für die Zwecke dieses Lernprogramms erstellen Sie eine Datenbank mit dem Namentest
und darin eine Tabelle mit dem Namenvisits
, in der die Dauer des Website-Besuchs aufgezeichnet wird.
Nachdem Sie sich in der ClickHouse-Eingabeaufforderung befinden, erstellen Sie dietest
-Datenbank, indem Sie Folgendes ausführen:
CREATE DATABASE test;
Die folgende Ausgabe 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. Es enthält eine Sammlung verwandter Daten in einem strukturierten Format. Sie können Spalten mit ihren Typen angeben, Datenzeilen hinzufügen und verschiedene Arten von Abfragen für Tabellen ausführen.
Die Syntax zum Erstellen von Tabellen in ClickHouse folgt dieser Beispielstruktur:
CREATE TABLE table_name
(
column_name1 column_type [options],
column_name2 column_type [options],
...
) ENGINE = engine
Die Wertetable_name
undcolumn_name
können beliebige gültige ASCII-Bezeichner sein. ClickHouse unterstützt eine Vielzahl von Spaltentypen. einige der beliebtesten sind:
-
UInt64
: Wird zum Speichern von Ganzzahlwerten im Bereich von 0 bis 18446744073709551615 verwendet. -
Float64
: Wird zum Speichern von Gleitkommazahlen wie 2039,23, 10,5 usw. verwendet. -
String
: Wird zum Speichern von Zeichen variabler Länge verwendet. Es ist kein Attribut für die maximale Länge erforderlich, da beliebige Längen gespeichert werden können. -
Date
: Wird zum Speichern von Daten verwendet, die dem Format vonYYYY-MM-DD
folgen. -
DateTime
: Wird zum Speichern von Datumsangaben in Verbindung mit der Uhrzeit verwendet und folgt dem FormatYYYY-MM-DD HH:MM:SS
.
Nach den Spaltendefinitionen geben Sie die Engine an, die für die Tabelle verwendet wird. In ClickHouse bestimmenEnginesdie physische Struktur der zugrunde liegenden Daten, die Abfragefunktionen der Tabelle, die gleichzeitigen Zugriffsmodi und die Unterstützung für Indizes. Unterschiedliche Motortypen eignen sich für unterschiedliche Anwendungsanforderungen. Der am häufigsten verwendete und am weitesten verbreitete Motortyp istMergeTree
.
Nachdem Sie einen Überblick über die Tabellenerstellung haben, erstellen Sie eine Tabelle. Bestätigen Sie zunächst die zu ändernde Datenbank:
USE test;
Die folgende Ausgabe zeigt, dass Sie von derdefault
-Datenbank zur Datenbanktest
gewechselt haben:
Output
USE test
Ok.
0 rows in set. Elapsed: 0.001 sec.
Für den Rest dieses Handbuchs wird davon ausgegangen, dass Sie Anweisungen im Kontext dieser Datenbank ausführen.
Erstellen Sie Ihrevisits
-Tabelle, indem Sie diesen Befehl ausführen:
CREATE TABLE visits (
id UInt64,
duration Float64,
url String,
created DateTime
) ENGINE = MergeTree()
PRIMARY KEY id
ORDER BY id;
Hier finden Sie eine Aufschlüsselung der Funktionen des Befehls. Sie erstellen eine Tabelle mit dem Namenvisits
mit vier Spalten:
-
id
: Die Primärschlüsselspalte. Ähnlich wie bei anderen RDBMS-Systemen identifiziert eine Primärschlüsselspalte in ClickHouse eine Zeile eindeutig. Jede Zeile sollte einen eindeutigen Wert für diese Spalte haben. -
duration
: Eine Float-Spalte, in der die Dauer jedes Besuchs in Sekunden gespeichert wird. In den Spalten vonfloat
können Dezimalwerte wie 12,50 gespeichert werden. -
url
: Eine Zeichenfolgenspalte, in der die besuchte URL gespeichert ist, z. B.http://example.com
. -
created
: Eine Datums- und Uhrzeitspalte, in der aufgezeichnet wird, wann der Besuch stattgefunden hat.
Nach den Spaltendefinitionen geben SieMergeTree
als Speichermodul für die Tabelle an. DieMergeTree family von Engines werden für Produktionsdatenbanken empfohlen, da sie große Echtzeit-Einfügungen, allgemeine Robustheit und Abfrageunterstützung optimieren. Darüber hinaus unterstützen MergeTree-Module das Sortieren von Zeilen nach Primärschlüssel, das Partitionieren von Zeilen sowie das Replizieren und Abtasten von Daten.
Wenn Sie ClickHouse zum Archivieren von Daten verwenden möchten, die nicht häufig abgefragt werden, oder zum Speichern temporärer Daten, können Sie dieLog family von Engines verwenden, um für diesen Anwendungsfall zu optimieren.
Nach den Spaltendefinitionen definieren Sie andere Optionen auf Tabellenebene. In der KlauselPRIMARY KEY
wirdid
als Primärschlüsselspalte festgelegt, und in der KlauselORDER BY
werden Werte gespeichert, die nach der Spalteid
sortiert sind. Ein Primärschlüssel identifiziert eine Zeile eindeutig und wird für den effizienten Zugriff auf eine einzelne Zeile und die effiziente Anordnung von Zeilen verwendet.
Wenn Sie die create-Anweisung ausführen, sehen Sie die folgende Ausgabe:
OutputCREATE 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 die Daten von Website-Besuchen 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]] == Schritt 4 - Einfügen, Aktualisieren und Löschen von Daten und Spalten
In diesem Schritt verwenden Sie die Tabellevisits
, um Daten einzufügen, zu aktualisieren und zu löschen. Der folgende Befehl ist ein Beispiel für die Syntax zum Einfügen von Zeilen in eine ClickHouse-Tabelle:
INSERT INTO table_name VALUES (column_1_value, column_2_value, ....);
Fügen Sie nun einige Zeilen mit Beispieldaten für Website-Besuche in die Tabellevisits
ein, indem Sie 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');
Die folgende Ausgabe wird für jede Einfügeanweisung wiederholt:
Output
INSERT INTO visits VALUES
Ok.
1 rows in set. Elapsed: 0.004 sec.
Die Ausgabe für jede Zeile zeigt, dass Sie sie erfolgreich in die Tabellevisits
eingefügt haben.
Jetzt fügen Sie dervisits
-Tabelle eine zusätzliche Spalte hinzu. Beim Hinzufügen oder Löschen von Spalten aus vorhandenen Tabellen unterstützt ClickHouse die Syntax vonALTER
.
Die grundlegende Syntax zum Hinzufügen einer Spalte zu einer Tabelle lautet beispielsweise wie folgt:
ALTER TABLE table_name ADD COLUMN column_name column_type;
Fügen Sie eine Spalte mit dem Namenlocation
hinzu, in der der Ort der Besuche auf einer Website gespeichert wird, indem Sie die folgende Anweisung ausführen:
ALTER TABLE visits ADD COLUMN location String;
Es wird eine Ausgabe ähnlich der folgenden angezeigt:
OutputALTER TABLE visits
ADD COLUMN
location String
Ok.
0 rows in set. Elapsed: 0.014 sec.
Die Ausgabe zeigt, dass Sie die Spaltelocation
erfolgreich hinzugefügt haben.
Ab Version 19.4.3 unterstützt ClickHouse das Aktualisieren und Löschen einzelner Datenzeilen aufgrund von Implementierungsbeschränkungen nicht. ClickHouse unterstützt jedoch Massenaktualisierungen und -löschvorgänge und verfügt über eine eindeutige SQL-Syntax für diese Vorgänge, um ihre nicht standardmäßige Verwendung hervorzuheben.
Die folgende Syntax ist ein Beispiel für die 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 Spalteurl
aller Zeilen mit einemduration
von weniger als 15 zu aktualisieren. Geben Sie es in die Datenbank-Eingabeaufforderung ein, um Folgendes auszuführen:
ALTER TABLE visits UPDATE url = 'http://example2.com' WHERE duration < 15;
Die Ausgabe der Bulk-Update-Anweisung lautet wie folgt:
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 Aktualisierungsabfrage erfolgreich abgeschlossen wurde. Das0 rows in set
in der Ausgabe gibt an, dass die Abfrage keine Zeilen zurückgegeben hat. Dies ist bei allen Aktualisierungs- und Löschabfragen der Fall.
Die Beispielsyntax für das Löschen von Zeilen in großen Mengen ähnelt dem Aktualisieren von Zeilen und hat die folgende Struktur:
ALTER TABLE table_name DELETE WHERE filter_conditions;
Führen Sie zum Testen des Löschens von Daten die folgende Anweisung aus, um alle Zeilen mit einemduration
von weniger als 5 zu entfernen:
ALTER TABLE visits DELETE WHERE duration < 5;
Die Ausgabe der Bulk-Löschanweisung sieht ungefähr so aus:
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 Spaltelocation
, indem Sie Folgendes ausführen:
ALTER TABLE visits DROP COLUMN location;
Die Ausgabe vonDROP COLUMN
, die bestätigt, dass Sie die Spalte gelöscht haben, lautet wie folgt:
OutputALTER TABLE visits
DROP COLUMN
location String
Ok.
0 rows in set. Elapsed: 0.010 sec.
Nachdem Sie erfolgreich Zeilen und Spalten in die Tabellevisits
eingefügt, aktualisiert und gelöscht haben, fahren Sie im nächsten Schritt mit der Abfrage von Daten fort.
[[Schritt-5 - Daten abfragen]] == Schritt 5 - Daten abfragen
Die Abfragesprache von ClickHouse ist ein benutzerdefinierter SQL-Dialekt mit Erweiterungen und Funktionen, die für Analyse-Workloads geeignet sind. In diesem Schritt führen Sie Auswahl- und Aggregationsabfragen aus, um Daten und Ergebnisse aus der Tabellevisits
abzurufen.
Mit Auswahlabfragen können Sie Datenzeilen und -spalten abrufen, die nach von Ihnen angegebenen Bedingungen gefiltert sind, sowie Optionen wie die Anzahl der zurückzugebenden Zeilen. Sie können Datenzeilen und -spalten mithilfe der Syntax vonSELECT
auswählen. Die grundlegende Syntax fürSELECT
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 die Werte vonurl
undduration
für Zeilen abzurufen, in denenurl
http://example.com
ist:
SELECT url, duration FROM visits WHERE url = 'http://example2.com' LIMIT 2;
Sie werden die folgende Ausgabe sehen:
OutputSELECT
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 die gewünschten Werte ausgewählt haben, können Sie Aggregationsabfragen ausführen.
Aggregationsabfragen sind Abfragen, die eine Reihe von Werten verarbeiten und einzelne Ausgabewerte zurückgeben. In Analysedatenbanken werden diese Abfragen häufig ausgeführt und von der Datenbank gut optimiert. Einige von ClickHouse unterstützte Aggregatfunktionen sind:
-
count
: Gibt die Anzahl 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.
Einige ClickHouse-spezifische Aggregatfunktionen umfassen:
-
uniq
: Gibt eine ungefähre Anzahl übereinstimmender Zeilen zurück. -
topK
: Gibt ein Array der häufigsten Werte einer bestimmten Spalte unter Verwendung eines Approximationsalgorithmus zurück.
Um die Ausführung von Aggregationsabfragen zu demonstrieren, berechnen Sie die Gesamtdauer der Besuche, indem Sie die Abfragesum
ausführen:
SELECT SUM(duration) FROM visits;
Sie sehen eine Ausgabe ähnlich der folgenden:
Output
SELECT SUM(duration)
FROM visits
┌─SUM(duration)─┐
│ 63.7 │
└───────────────┘
1 rows in set. Elapsed: 0.010 sec.
Berechnen Sie nun die ersten beiden URLs, indem Sie Folgendes ausführen:
SELECT topK(2)(url) FROM visits;
Sie sehen eine Ausgabe ähnlich der folgenden:
OutputSELECT topK(2)(url)
FROM visits
┌─topK(2)(url)──────────────────────────────────┐
│ ['http://example2.com','http://example1.com'] │
└───────────────────────────────────────────────┘
1 rows in set. Elapsed: 0.010 sec.
Nachdem Sie dievisits
-Tabelle erfolgreich abgefragt haben, werden Sie im nächsten Schritt Tabellen und Datenbanken löschen.
[[Schritt 6 - Löschen von Tabellen und Datenbanken] == Schritt 6 - Löschen von Tabellen und Datenbanken
In diesem Abschnitt löschen Sie die Tabellevisits
und die Datenbanktest
.
Die Syntax zum Löschen von Tabellen folgt diesem Beispiel:
DROP TABLE table_name;
Führen Sie die folgende Anweisung aus, um die Tabellevisits
zu löschen:
DROP TABLE visits;
In der folgenden Ausgabe wird angezeigt, dass Sie die Tabelle erfolgreich gelöscht haben:
OutputDROP TABLE visits
Ok.
0 rows in set. Elapsed: 0.005 sec.
Sie können Datenbanken mit der Syntax vonDROP database table_name
löschen. Führen Sie die folgende Anweisung aus, um die Datenbanktest
zu löschen:
DROP DATABASE test;
Die resultierende Ausgabe zeigt, dass Sie die Datenbank erfolgreich gelöscht haben:
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 in Ihrer ClickHouse-Instanz Datenbanken, Tabellen und Daten erstellt, aktualisiert und gelöscht haben, aktivieren Sie im nächsten Abschnitt den Remotezugriff auf Ihren Datenbankserver.
[[Schritt-7 -—- Einrichten von Firewall-Regeln-optional]] == Schritt 7 - Einrichten von Firewall-Regeln (optional)
Wenn Sie ClickHouse nur lokal mit Anwendungen verwenden möchten, die auf demselben Server ausgeführt werden, oder auf Ihrem Server keine Firewall aktiviert ist, müssen Sie diesen Abschnitt nicht ausfüllen. Wenn Sie stattdessen eine Remoteverbindung zum ClickHouse-Datenbankserver herstellen, sollten Sie diesen Schritt ausführen.
Gegenwärtig ist auf Ihrem Server eine Firewall aktiviert, die den Zugriff Ihrer öffentlichen IP-Adresse auf alle Ports deaktiviert. Sie führen die folgenden zwei Schritte aus, um den Remotezugriff zuzulassen:
-
Fügen Sie eine Firewall-Regel hinzu, die eingehende Verbindungen zu Port
8123
zulässt. Dies ist der HTTP-Port, den der ClickHouse-Server ausführt.
Wenn Sie sich in der Datenbankaufforderung befinden, beenden Sie sie, indem SieCTRL+D
eingeben.
Bearbeiten Sie die Konfigurationsdatei, indem Sie Folgendes ausführen:
sudo vi /etc/clickhouse-server/config.xml
Kommentieren Sie dann die Zeile mit<!-- <listen_host>0.0.0.0</listen_host> -->
wie in der folgenden Datei aus:
/etc/clickhouse-server/config.xml
...
example.yandex.ru
-->
0.0.0.0
...
Speichern Sie die Datei und beenden Sievi
. Starten Sie den Dienst neu, damit die neue Konfiguration angewendet wird, indem Sie Folgendes ausführen:
sudo service clickhouse-server restart
Sie sehen die folgende Ausgabe dieses Befehls:
OutputStop clickhouse-server service:
DONE
Start clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
DONE
Fügen Sie die IP des Remote-Servers der Zone public hinzu:
sudo firewall-cmd --permanent --zone=public --add-source=second_server_ip/32
Der Server von ClickHouse überwacht Port8123
für HTTP-Verbindungen und Port9000
für Verbindungen vonclickhouse-client
. Ermöglichen Sie den Zugriff auf beide Ports für die IP-Adresse Ihres zweiten Servers mit dem folgenden Befehl:
sudo firewall-cmd --permanent --zone=public --add-port=8123/tcp
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
Die folgende Ausgabe für beide Befehle zeigt, dass Sie den Zugriff auf beide Ports aktiviert haben:
Outputsuccess
Nachdem Sie die Regeln hinzugefügt haben, laden Sie die Firewall neu, damit die Änderungen wirksam werden:
sudo firewall-cmd --reload
Dieser Befehl gibt auch einesuccess
-Nachricht aus. Auf ClickHouse kann jetzt über die von Ihnen hinzugefügte IP zugegriffen werden. Sie können bei Bedarf weitere IP-Adressen wie die Adresse Ihres lokalen Computers hinzufügen.
Um zu überprüfen, ob Sie vom Remotecomputer aus eine Verbindung zum ClickHouse-Server herstellen können, führen Sie zunächst die Schritte in Schritt 1 dieses Lernprogramms auf dem zweiten Server aus und stellen Sie sicher, dassclickhouse-client
darauf installiert sind.
Nachdem Sie sich auf dem zweiten Server angemeldet haben, starten Sie eine Client-Sitzung, indem Sie Folgendes ausführen:
clickhouse-client --host your_server_ip --multiline
Sie sehen die folgende Ausgabe, die anzeigt, dass Sie erfolgreich eine Verbindung zum Server hergestellt haben:
OutputClickHouse client version 19.4.3.
Connecting to your_server_ip:9000 as user default.
Connected to ClickHouse server version 19.4.3 revision 54416.
hostname :)
In diesem Schritt haben Sie den Remotezugriff auf Ihren ClickHouse-Datenbankserver aktiviert, indem Sie Ihre Firewall-Regeln angepasst haben.
Fazit
Sie haben erfolgreich eine ClickHouse-Datenbankinstanz auf Ihrem Server eingerichtet, eine Datenbank und eine Tabelle erstellt, Daten hinzugefügt, Abfragen durchgeführt und die Datenbank gelöscht. In der Dokumentation von ClickHouse finden Sie Informationen zubenchmarks gegenüber anderen Open-Source- und kommerziellen Analysedatenbanken sowie zu allgemeinen Referenzdocuments. Weiterefeatures ClickHouse-Angebote umfassen die verteilte Abfrageverarbeitung auf mehrere Server, um die Leistung zu verbessern und vor Datenverlust zu schützen, indem Daten über verschiedeneshards gespeichert werden.