Installieren und Verwenden von ClickHouse unter CentOS 7

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 einemsudo-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 einemsudo-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-clientverwenden, 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-DDfolgen.

  • 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 Datenbanktestgewechselt 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 vonfloatkö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 Tabellevisitsein, 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 Tabellevisitseingefü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 Spaltelocationerfolgreich 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 Spalteurlaller Zeilen mit einemdurationvon 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 Tabellevisitseingefü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 Tabellevisitsabzurufen.

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 vonSELECTauswä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 denenurlhttp://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 Abfragesumausfü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 Tabellevisitsund 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 Tabellevisitszu 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_namelöschen. Führen Sie die folgende Anweisung aus, um die Datenbanktestzu 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 Port8123 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.