So installieren und verwenden Sie ClickHouse unter Debian 9

Der Autor hat den Free and Open Source Fund ausgewählt, um eine Spende als Teil des Write for DOnations zu erhalten. Programm.

Einführung

https://clickhouse.yandex [ClickHouse] ist eine spaltenorientierte Open-Source-Analysedatenbank, die von https://yandex.com [Yandex] für OLAP erstellt wurde. und Big Data Use Cases. 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.

Spaltenorientierte 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.

OLAP-Systeme (Online Analytical Processing) ermöglichen die Organisation großer Datenmengen und die Ausführung 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 Debian 9-Server mit einem sudo-fähigen Nicht-Root-Benutzer- und Firewall-Setup. Sie können das anfängliche Server-Setup unter tutorial ausführen, um den Benutzer zu erstellen und die Firewall einzurichten.

  • (Optional) Ein sekundärer Debian 9-Server mit einem + sudo + aktivierten Nicht-Root-Benutzer- und Firewall-Setup. Sie können die Ersteinrichtung des Servers unter tutorial verfolgen.

Schritt 1 - ClickHouse installieren

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

Zuerst führen Sie SSH auf Ihrem Server aus:

ssh @

+ dirmngr + ist ein Server zum Verwalten von Zertifikaten und Schlüsseln. Es ist erforderlich, um Remote-Repository-Schlüssel hinzuzufügen und zu überprüfen. Installieren Sie es, indem Sie Folgendes ausführen:

sudo apt-get install -y dirmngr

Yandex unterhält ein APT-Repository mit der neuesten Version von ClickHouse. 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 sehen eine Ausgabe ähnlich der folgenden:

Output
Executing: /tmp/apt-key-gpghome.JkkcKnBAFY/gpg.1.sh --keyserver keyserver.ubuntu.com --recv E0C56BD4

gpg: key C8F1E19FE0C56BD4: public key "ClickHouse Repository Key <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1

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

Fügen Sie das Repository Ihrer APT-Repository-Liste 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 diese Ausgabe in eine Root-Datei gedruckt werden kann.

Führen Sie nun "+ apt-get update" aus, um Ihre Pakete zu aktualisieren:

sudo apt-get update

Die Pakete + clickhouse-server und` + clickhouse-client` stehen jetzt zur Installation zur Verfügung. Installiere sie mit:

sudo apt-get 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

Das im vorherigen Abschnitt installierte Paket "+ clickhouse-server " erstellt einen " systemd " - Dienst, der Aktionen wie das Starten, Stoppen und Neustarten des Datenbankservers ausführt. https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files [` 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 Dienst + clickhouse-server +, indem Sie Folgendes ausführen:

sudo service clickhouse-server start

Der vorherige Befehl zeigt keine Ausgabe an. 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 angezeigt:

Output
●  - ClickHouse Server (analytic DBMS for big data)
  Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled)
  Active:  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 zeigt an, dass der Server ausgeführt wird.

Sie haben den ClickHouse-Server erfolgreich gestartet und können nun mit dem CLI-Programm + clickhouse-client + eine Verbindung zum Server herstellen.

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 "+ CREATE DATABASE +". Um eine Datenbank zu erstellen, starten Sie zuerst eine Client-Sitzung, indem Sie den folgenden Befehl ausführen:

clickhouse-client

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.

In diesem Schritt erstellen Sie mit dem ClickHouse-Client, der zum Einfügen von Daten bereit ist, eine Datenbank und eine Tabelle. In diesem Lernprogramm erstellen Sie eine Datenbank mit dem Namen "" und darin eine Tabelle mit dem Namen "", in der die Besuchsdauer der Website aufgezeichnet wird.

Nachdem Sie sich in der ClickHouse-Eingabeaufforderung befinden, erstellen Sie Ihre ++ - Datenbank, indem Sie Folgendes ausführen:

CREATE DATABASE ;

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

Output
CREATE DATABASE

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
(
    ,
    ,
   ...
) ENGINE =

Die Werte "+ table_name " und " column_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 +: Zum Speichern von Zeichen variabler Länge. Es ist kein Attribut für die maximale Länge erforderlich, da beliebige Längen gespeichert werden können.

  • + Datum +: Zum Speichern von Datumsangaben im Format + JJJJ-MM-TT +.

  • + DateTime +: Dient zum Speichern von Datumsangaben in Verbindung mit der Uhrzeit und folgt dem Format + JJJJ-MM-TT HH: MM: SS +.

Nach den Spaltendefinitionen geben Sie die Engine an, die für die Tabelle verwendet wird. In ClickHouse bestimmen Engines die physische Struktur der zugrunde liegenden Daten, die Abfragemöglichkeiten der Tabelle, ihre 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 ist "+ MergeTree +".

Nachdem Sie einen Überblick über die Tabellenerstellung haben, erstellen Sie eine Tabelle. Bestätigen Sie zunächst die zu ändernde Datenbank:

USE ;

Sie werden die folgende Ausgabe sehen, die zeigt, dass Sie von der "+ default " - Datenbank zur "+" - Datenbank gewechselt sind:

Output
USE

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 Ihre ++ - Tabelle, indem Sie diesen Befehl ausführen:

CREATE TABLE  (
,
,
,

) ENGINE =
PRIMARY KEY
ORDER BY ;

Hier finden Sie eine Aufschlüsselung der Funktionen des Befehls. Sie erstellen eine Tabelle mit dem Namen "++", die vier Spalten enthält:

  • + 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. + float + - Spalten können Dezimalwerte wie 12.50 speichern.

  • + url: Eine Zeichenfolgenspalte, in der die besuchte URL gespeichert ist, z. B.` + http: // example.com`.

  • + created +: Eine Datums- und Zeitspalte, die den Zeitpunkt des Besuchs protokolliert.

Nach den Spaltendefinitionen geben Sie "+ MergeTree +" als Speicher-Engine für die Tabelle an. Die Produktfamilie MergeTree von Engines wird für Produktionsdatenbanken empfohlen, da sie große Echtzeit-Einfügungen, allgemeine Robustheit und Unterstützung für Abfragen unterstützt. 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 um temporäre Daten zu speichern, können Sie die Log family von Engines zur Optimierung verwenden für diesen Anwendungsfall.

Nach den Spaltendefinitionen definieren Sie andere Optionen auf Tabellenebene. Die + PRIMARY KEY -Klausel setzt` + id + als Primärschlüsselspalte und die + ORDER BY` -Klausel speichert Werte sortiert nach der + id + -Spalte. 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

In diesem Schritt verwenden Sie Ihre "++" - Tabelle, 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  VALUES (, );

Fügen Sie nun einige Zeilen mit Beispieldaten für Website-Besuche in Ihre ++ - Tabelle ein, indem Sie die folgenden Anweisungen ausführen:

INSERT INTO  VALUES ();
INSERT INTO  VALUES ();
INSERT INTO  VALUES ();
INSERT INTO  VALUES ();

Die folgende Ausgabe wird für jede Einfügeanweisung wiederholt.

Output
INSERT INTO  VALUES

Ok.

1 rows in set. Elapsed: 0.004 sec.

Die Ausgabe für jede Zeile zeigt, dass Sie sie erfolgreich in die ++ - Tabelle eingefügt haben.

Jetzt fügen Sie der "+" - Tabelle eine zusätzliche Spalte hinzu. Beim Hinzufügen oder Löschen von Spalten aus vorhandenen Tabellen unterstützt ClickHouse die Syntax " ALTER +".

Die grundlegende Syntax zum Hinzufügen einer Spalte zu einer Tabelle lautet beispielsweise wie folgt:

ALTER TABLE  ADD COLUMN ;

Fügen Sie eine Spalte mit dem Namen "++" hinzu, in der der Ort der Besuche auf einer Website gespeichert wird, indem Sie die folgende Anweisung ausführen:

ALTER TABLE  ADD COLUMN ;

Es wird eine Ausgabe ähnlich der folgenden angezeigt:

OutputALTER TABLE
   ADD COLUMN
   location String


Ok.

0 rows in set. Elapsed: 0.014 sec.

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

Ab Version 19.3.6 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  UPDATE  WHERE ;

Sie führen die folgende Anweisung aus, um die Spalte "+ url " aller Zeilen mit einer " duration +" von weniger als 15 zu aktualisieren. Geben Sie es in die Datenbank-Eingabeaufforderung ein, um Folgendes auszuführen:

ALTER TABLE  UPDATE url = '' WHERE ;

Die Ausgabe der Bulk-Update-Anweisung lautet wie folgt:

Output
ALTER TABLE
   UPDATE url = '' WHERE duration < 15


Ok.

0 rows in set. Elapsed: 0.003 sec.

Die Ausgabe zeigt, dass Ihre Aktualisierungsabfrage erfolgreich abgeschlossen wurde. Die +0 Zeilen in set + in der Ausgabe geben an, dass die Abfrage keine Zeilen zurückgegeben hat. Dies gilt für alle Aktualisierungs- und Löschanfragen.

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  DELETE WHERE ;

Führen Sie zum Testen des Löschens von Daten die folgende Anweisung aus, um alle Zeilen zu entfernen, deren + Duration + weniger als 5 beträgt:

ALTER TABLE  DELETE WHERE ;

Die Ausgabe der Bulk-Löschanweisung sieht ungefähr so ​​aus:

Output
ALTER TABLE
   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  DROP COLUMN ;

Löschen Sie die zuvor hinzugefügte Spalte "+ location +", indem Sie Folgendes ausführen:

ALTER TABLE  DROP COLUMN ;

Die Ausgabe von + DROP COLUMN +, die bestätigt, dass Sie die Spalte gelöscht haben, sieht folgendermaßen aus:

OutputALTER TABLE
   DROP COLUMN
   location String


Ok.

0 rows in set. Elapsed: 0.010 sec.

Nachdem Sie nun erfolgreich Zeilen und Spalten in Ihre "++" - Tabelle eingefügt, aktualisiert und gelöscht haben, werden Sie im nächsten Schritt 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 Ihrer ++ - Tabelle 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 mit der Syntax "+ SELECT +" auswählen. Die grundlegende Syntax für SELECT-Abfragen lautet:

SELECT  FROM  WHERE ;

Führen Sie die folgende Anweisung aus, um die Werte "+ url" und "+ duration of" für Zeilen abzurufen, bei denen "+ url " " http: // example.com +" ist.

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

Sie werden die folgende Ausgabe sehen:

OutputSELECT
   url,
   duration
FROM
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 unterschiedlicher ü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 veranschaulichen, berechnen Sie die Gesamtdauer der Besuche, indem Sie die Abfrage "+ sum +" ausführen:

SELECT  FROM ;

Sie sehen eine Ausgabe ähnlich der folgenden:

Output
SELECT
FROM

┌─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  FROM ;

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 Ihre "++" - Tabelle erfolgreich abgefragt haben, werden Sie im nächsten Schritt Tabellen und Datenbanken löschen.

Schritt 6 - Löschen von Tabellen und Datenbanken

In diesem Abschnitt löschen Sie Ihre "" - Tabelle und Ihre "" - Datenbank.

Die Syntax zum Löschen von Tabellen folgt diesem Beispiel:

DROP TABLE ;

Führen Sie die folgende Anweisung aus, um die ++ - Tabelle zu löschen:

DROP TABLE ;

In der folgenden Ausgabe wird angezeigt, dass Sie die Tabelle erfolgreich gelöscht haben:

outputDROP TABLE

Ok.

0 rows in set. Elapsed: 0.005 sec.

Sie können Datenbanken mit der Syntax "+ DROP database " löschen. Führen Sie die folgende Anweisung aus, um die `+` - Datenbank zu löschen:

DROP DATABASE ;

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

Output
DROP DATABASE

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 - Firewall-Regeln einrichten (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:

  • Ändern Sie die ClickHouse-Konfiguration, und lassen Sie zu, dass alle Schnittstellen überwacht werden.

  • 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 Datenbank-Eingabeaufforderung befinden, beenden Sie diese, indem Sie "+ STRG + D +" eingeben.

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

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

Dann kommentieren Sie die Zeile mit + <! - <listen_host> 0.0.0.0 </ listen_host> → + wie folgt aus:

/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: -->


   <!-- 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 beenden Sie + nano +. Starten Sie den Dienst neu, damit die neue Konfiguration angewendet wird, indem Sie Folgendes ausführen:

sudo service clickhouse-server restart

Von diesem Befehl wird keine Ausgabe angezeigt. Der ClickHouse-Server überwacht den Port "+ 8123 " für HTTP-Verbindungen und den Port " 9000 " für Verbindungen von " clickhouse-client +". Ermöglichen Sie den Zugriff auf beide Ports für die IP-Adresse Ihres zweiten Servers mit dem folgenden Befehl:

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

Die folgende Ausgabe für beide Befehle zeigt, dass Sie den Zugriff auf beide Ports aktiviert haben:

OutputRule added

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, dass auf Ihrem Computer der ClickHouse-Client installiert ist.

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

clickhouse-client --host

Sie sehen die folgende Ausgabe, die anzeigt, dass Sie erfolgreich eine Verbindung zum Server hergestellt haben:

OutputClickHouse client version 19.3.6.
Connecting to :9000 as user default.
Connected to ClickHouse server version 19.3.6 revision 54415.

:)

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 ClickHouse-Dokumentation finden Sie Informationen zu den benchmarks in Bezug auf andere Open Source- und kommerzielle Analysedatenbanken sowie eine allgemeine Referenz documents. Weitere features ClickHouse-Angebote umfassen die verteilte Abfrageverarbeitung auf mehreren Servern, um die Leistung zu verbessern und den Schutz vor Datenverlust zu gewährleisten, indem Daten über verschiedene https: //www.digitalocean gespeichert werden. com / community / tutorials / verständnis-datenbank-sharding [shards].