One place for hosting & domains

      ClickHouse

      How To Install and Use ClickHouse on Ubuntu 20.04


      The author selected the Free and Open Source Fund to receive a donation as part of the Write for DOnations program.

      Introduction

      ClickHouse is an open source, column-oriented analytics database created by Yandex for OLAP and big data use cases. ClickHouse’s support for real-time query processing makes it suitable for applications that require sub-second analytical results. ClickHouse’s query language is a dialect of SQL that enables powerful declarative querying capabilities while offering familiarity and a smaller learning curve for the end user.

      Column-oriented databases store records in blocks grouped by columns instead of rows. By not loading data for columns absent in the query, column-oriented databases spend less time reading data while completing queries. As a result, these databases can compute and return results much faster than traditional row-based systems for certain workloads, such as OLAP.

      Online Analytics Processing (OLAP) systems allow for organizing large amounts of data and performing complex queries. They are capable of managing petabytes of data and returning query results quickly. In this way, OLAP is useful for work in areas like data science and business analytics.

      In this tutorial, you’ll install the ClickHouse database server and client on your machine. You’ll use the DBMS for typical tasks and optionally enable remote access from another server so that you’ll be able to connect to the database from another machine. Then you’ll test ClickHouse by modeling and querying example website-visit data.

      Prerequisites

      • One Ubuntu 20.04 server with a sudo enabled non-root user and firewall setup. The server should have at least 2GB of RAM. You can follow the Initial Server Setup tutorial to create the user and set up the firewall.

      • (Optional) A secondary Ubuntu 20.04 server with a sudo enabled non-root user and firewall setup.

      Step 1 — Installing ClickHouse

      In this section, you will install the ClickHouse server and client programs using apt.

      First, SSH into your server by running:

      Yandex maintains an APT repository that has the latest version of ClickHouse. Add the repository’s GPG key so that you’ll be able to securely download validated ClickHouse packages:

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

      You will see output similar to the following:

      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

      The output confirms it has successfully verified and added the key.

      Add the repository to your APT repositories list by executing:

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

      Here you’ve piped the output of echo to sudo tee so that this output can print to a root-owned file.

      Now, update your packages:

      The clickhouse-server and clickhouse-client packages will now be available for installation. Install them with:

      • sudo apt install clickhouse-server clickhouse-client

      During the installation, you will be asked to set a password for the default ClickHouse user.

      You’ve installed the ClickHouse server and client successfully. You’re now ready to start the database service and ensure that it’s running correctly.

      Step 2 — Starting the Service

      The clickhouse-server package that you installed in the previous section creates a systemd service, which performs actions such as starting, stopping, and restarting the database server. systemd is an init system for Linux to initialize and manage services. In this section you’ll start the service and verify that it is running successfully.

      Start the clickhouse-server service by running:

      • sudo service clickhouse-server start

      The previous command will not display any output. To verify that the service is running successfully, execute:

      • sudo service clickhouse-server status

      You’ll see output similar to the following:

      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 Wed 2020-09-16 05:18:54 UTC; 5s ago Main PID: 2697 (clickhouse-serv) Tasks: 46 (limit: 1137) Memory: 459.7M CGroup: /system.slice/clickhouse-server.service └─2697 /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid

      The output notes that the server is running.

      You have successfully started the ClickHouse server and will now be able to use the clickhouse-client CLI program to connect to the server.

      Step 3 — Creating Databases and Tables

      In ClickHouse, you can create and delete databases by executing SQL statements directly in the interactive database prompt. Statements consist of commands following a particular syntax that tell the database server to perform a requested operation along with any data required. You create databases by using the CREATE DATABASE table_name syntax. To create a database, first start a client session by running the following command:

      • clickhouse-client --password

      You will be asked to enter the password you had set during the installation—enter it to successfully to start the client session.

      The previous command will log you in to the client prompt where you can run ClickHouse SQL statements to perform actions such as:

      • Creating, updating, and deleting databases, tables, indexes, partitions, and views.

      • Executing queries to retrieve data that is optionally filtered and grouped using various conditions.

      In this step, with the ClickHouse client ready for inserting data, you’re going to create a database and table. For the purposes of this tutorial, you’ll create a database named test, and inside that you’ll create a table named visits that tracks website-visit durations.

      Now that you’re inside the ClickHouse command prompt, create your test database by executing:

      You’ll see the following output that shows that you have created the database:

      Output

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

      A ClickHouse table is similar to tables in other relational databases; it holds a collection of related data in a structured format. You can specify columns along with their types, add rows of data, and execute different kinds of queries on tables.

      The syntax for creating tables in ClickHouse follows this example structure:

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

      The table_name and column_name values can be any valid ASCII identifiers. ClickHouse supports a wide range of column types; some of the most popular are:

      • UInt64: used for storing integer values in the range 0 to 18446744073709551615.

      • Float64: used for storing floating point numbers such as 2039.23, 10.5, etc.

      • String: used for storing variable length characters. It does not require a max-length attribute since it can store arbitrary lengths.

      • Date: used for storing dates that follow the YYYY-MM-DD format.

      • DateTime: used for storing dates coupled with time and follows the YYYY-MM-DD HH:MM:SS format.

      After the column definitions, you specify the engine used for the table. In ClickHouse, Engines determine the physical structure of the underlying data, the table’s querying capabilities, its concurrent access modes, and support for indexes. Different engine types are suitable for different application requirements. The most commonly used and widely applicable engine type is MergeTree.

      Now that you have an overview of table creation, you’ll create a table. Start by confirming the database you’ll be modifying:

      You will see the following output showing that you have switched to the test database from the default database:

      Output

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

      The remainder of this guide will assume that you are executing statements within this database’s context.

      Create your visits table by running this command:

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

      Here’s a breakdown of what the command does. You create a table named visits that has four columns:

      • id: The primary key column. Similarly to other RDBMS systems, a primary key column in ClickHouse uniquely identifies a row; each row should have a unique value for this column.

      • duration: A float column used to store the duration of each visit in seconds. float columns can store decimal values such as 12.50.

      • url: A string column that stores the URL visited, such as http://example.com.

      • created: A date and time column that tracks when the visit occurred.

      After the column definitions, you specify MergeTree as the storage engine for the table. The MergeTree family of engines is recommended for production databases due to its optimized support for large real-time inserts, overall robustness, and query support. Additionally, MergeTree engines support sorting of rows by primary key, partitioning of rows, and replicating and sampling data.

      If you intend to use ClickHouse for archiving data that is not queried often or for storing temporary data, you can use the Log family of engines to optimize for that use-case.

      After the column definitions, you’ll define other table-level options. The PRIMARY KEY clause sets id as the primary key column and the ORDER BY clause will store values sorted by the id column. A primary key uniquely identifies a row and is used for efficiently accessing a single row and efficient colocation of rows.

      On executing the create statement, you will see the following output:

      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 this section, you’ve created a database and a table to track website-visit data. In the next step, you’ll insert data into the table, update existing data, and delete that data.

      Step 4 — Inserting, Updating, and Deleting Data and Columns

      In this step, you’ll use your visits table to insert, update, and delete data. The following command is an example of the syntax for inserting rows into a ClickHouse table:

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

      Now, insert a few rows of example website-visit data into your visits table by running each of the following statements:

      • 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');

      You’ll see the following output repeated for each insert statement.

      Output

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

      The output for each row shows that you’ve inserted it successfully into the visits table.

      Now you’ll add an additional column to the visits table. When adding or deleting columns from existing tables, ClickHouse supports the ALTER syntax.

      For example, the basic syntax for adding a column to a table is as follows:

      ALTER TABLE table_name ADD COLUMN column_name column_type;
      

      Add a column named location that will store the location of the visits to a website by running the following statement:

      • ALTER TABLE visits ADD COLUMN location String;

      You’ll see output similar to the following:

      Output

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

      The output shows that you have added the location column successfully.

      As of version 19.13.3, ClickHouse doesn’t support updating and deleting individual rows of data due to implementation constraints. ClickHouse has support for bulk updates and deletes, however, and has a distinct SQL syntax for these operations to highlight their non-standard usage.

      The following syntax is an example for bulk updating rows:

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

      You’ll run the following statement to update the url column of all rows that have a duration of less than 15. Enter it into the database prompt to execute:

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

      The output of the bulk update statement will be as follows:

      Output

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

      The output shows that your update query completed successfully. The 0 rows in set in the output denotes that the query did not return any rows; this will be the case for any update and delete queries.

      The example syntax for bulk deleting rows is similar to updating rows and has the following structure:

      ALTER TABLE table_name DELETE WHERE filter_conditions;
      

      To test deleting data, run the following statement to remove all rows that have a duration of less than 5:

      • ALTER TABLE visits DELETE WHERE duration < 5;

      The output of the bulk delete statement will be similar to:

      Output

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

      The output confirms that you have deleted the rows with a duration of less than five seconds.

      To delete columns from your table, the syntax would follow this example structure:

      ALTER TABLE table_name DROP COLUMN column_name;
      

      Delete the location column you added previously by running the following:

      • ALTER TABLE visits DROP COLUMN location;

      The DROP COLUMN output confirming that you have deleted the column will be as follows:

      Output

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

      Now that you’ve successfully inserted, updated, and deleted rows and columns in your visits table, you’ll move on to query data in the next step.

      Step 5 — Querying Data

      ClickHouse’s query language is a custom dialect of SQL with extensions and functions suited for analytics workloads. In this step, you’ll run selection and aggregation queries to retrieve data and results from your visits table.

      Selection queries allow you to retrieve rows and columns of data filtered by conditions that you specify, along with options such as the number of rows to return. You can select rows and columns of data using the SELECT syntax. The basic syntax for SELECT queries is:

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

      Execute the following statement to retrieve url and duration values for rows where the url is http://example.com.

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

      You will see the following 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.

      The output has returned two rows that match the conditions you specified. Now that you’ve selected values, you can move on to executing aggregation queries.

      Aggregation queries are queries that operate on a set of values and return single output values. In analytics databases, these queries are run frequently and are well optimized by the database. Some aggregate functions supported by ClickHouse are:

      • count: returns the count of rows matching the conditions specified.

      • sum: returns the sum of selected column values.

      • avg: returns the average of selected column values.

      Some ClickHouse-specific aggregate functions include:

      • uniq: returns an approximate number of distinct rows matched.

      • topK: returns an array of the most frequent values of a specific column using an approximation algorithm.

      To demonstrate the execution of aggregation queries, you’ll calculate the total duration of visits by running the sum query:

      • SELECT SUM(duration) FROM visits;

      You will see output similar to the following:

      Output

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

      Now, calculate the top two URLs by executing:

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

      You will see output similar to the following:

      Output

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

      Now that you have successfully queried your visits table, you’ll delete tables and databases in the next step.

      Step 6 — Deleting Tables and Databases

      In this section, you’ll delete your visits table and test database.

      The syntax for deleting tables follows this example:

      DROP TABLE table_name;
      

      To delete the visits table, run the following statement:

      You will see the following output declaring that you’ve deleted the table successfully:

      output

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

      You can delete databases using the DROP database table_name syntax. To delete the test database, execute the following statement:

      The resulting output shows that you’ve deleted the database successfully.

      Output

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

      You’ve deleted tables and databases in this step. Now that you’ve created, updated, and deleted databases, tables, and data in your ClickHouse instance, you’ll enable remote access to your database server in the next section.

      Step 7 — Setting Up Firewall Rules (Optional)

      If you intend to only use ClickHouse locally with applications running on the same server, or do not have a firewall enabled on your server, you don’t need to complete this section. If instead, you’ll be connecting to the ClickHouse database server remotely, you should follow this step.

      Currently your server has a firewall enabled that disables your public IP address accessing all ports. You’ll complete the following two steps to allow remote access:

      • Modify ClickHouse’s configuration and allow it to listen on all interfaces.

      • Add a firewall rule allowing incoming connections to port 8123, which is the HTTP port that the ClickHouse server runs.

      If you are inside the database prompt, exit it by typing CTRL+D.

      Edit the configuration file by executing:

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

      Then uncomment the line containing <!-- <listen_host>0.0.0.0</listen_host> -->, like the following file:

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

      Save the file and exit. For the new configuration to apply restart the service by running:

      • sudo service clickhouse-server restart

      You won’t see any output from this command. ClickHouse’s server listens on port 8123 for HTTP connections and port 9000 for connections from clickhouse-client. Allow access to both ports for your second server’s IP address with the following command:

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

      You will see the following output for both commands that shows that you’ve enabled access to both ports:

      Output

      Rule added

      ClickHouse will now be accessible from the IP that you added. Feel free to add additional IPs such as your local machine’s address if required.

      To verify that you can connect to the ClickHouse server from the remote machine, first follow the steps in Step 1 of this tutorial on the second server and ensure that you have the clickhouse-client installed on it.

      Now that you have logged in to the second server, start a client session by executing:

      • clickhouse-client --host your_server_ip --password

      You will see the following output that shows that you have connected successfully to the server:

      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 this step, you’ve enabled remote access to your ClickHouse database server by adjusting your firewall rules.

      Conclusion

      You have successfully set up a ClickHouse database instance on your server and created a database and table, added data, performed queries, and deleted the database. Within ClickHouse’s documentation you can read about their benchmarks against other open-source and commercial analytics databases and general reference documents.

      Further features ClickHouse offers include distributed query processing across multiple servers to improve performance and protect against data loss by storing data over different shards.



      Source link

      Installieren und Verwenden von ClickHouse auf Debian 10


      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:

      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:

      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:

      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:

      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:

      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:

      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:

      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.



      Source link

      Comment installer et utiliser Clickhouse sur Debian 10


      L’auteur a choisi le Free and Open Source Fund pour recevoir une donation dans le cadre du programme Write for DOnations.

      Introduction

      ClickHouse est une base de données analytique open-source, orientée colonne, créée par Yandex pour les cas d’utilisation de données OLAP et de mégadonnées. Le support de ClickHouse pour le traitement des requêtes en temps réel le rend approprié aux applications qui nécessitent des résultats d’analyse en moins d’une seconde. Le langage de requêtes de ClickHouse est un dialecte de SQL qui offre de puissantes capacités de requête déclarative tout en offrant une familiarité et une courbe d’apprentissage plus courte à l’utilisateur final.

      Les bases de données orientées colonnes stockent les enregistrements en blocs groupés par colonnes au lieu de lignes. En ne chargement pas de données pour les colonnes absentes de la requête, les bases de données orientées colonnes passent moins de temps à lire des données tout en complétant les requêtes. Par conséquent, ces bases de données peuvent calculer et retourner des résultats beaucoup plus vite que les systèmes traditionnels basés sur les lignes pour certaines charges de travail (opérations de type OLAP, par exemple).

      Les systèmes de traitement analogique en ligne OnLine Analytics Processing (OLAP) permettent d’organiser de grandes quantités de données et d’effectuer des requêtes complexes. Ils sont capables de gérer des pétaoctets de données et de retourner rapidement les résultats des requêtes. De cette manière, l’OLAP est utile pour travailler dans des domaines tels que la science des données et les analyses d’entreprise.

      Dans ce tutoriel, vous allez installer le serveur de base de données et le client ClickHouse sur votre machine. Vous utiliserez le SGBD pour des tâches typiques et autoriserez éventuellement l’accès à distance depuis un autre serveur, afin de pouvoir vous connecter à la base de données depuis une autre machine. Ensuite, vous testerez ClickHouse en modélisant et en interrogeant des exemples de données de visites de sites web.

      Conditions préalables

      • Un Debian 10 avec un utilisateur non root avec sudo activé et une configuration de pare-feu. Vous pouvez suivre le tutoriel de configuration initiale du serveur pour créer l’utilisateur et configurer le pare-feu.
      • (Facultatif) Un Debian 10 secondaire, un utilisateur non root avec sudo activé et une configuration de pare-feu. Vous pouvez suivre le tutoriel de configuration initiale du serveur.

      Étape 1 – Installation de ClickHouse

      Dans cette section, vous allez installer le serveur et les programmes clients ClickHouse en utilisant apt.

      Tout d’abord, lancez SSH sur votre serveur en exécutant :

      dirmngr est un serveur de gestion de certificats et de clés. Il est requis pour l’ajout et la vérification des clés de dépôt à distance. Installez-le en l’exécutant :

      Yandex gère un référentiel APT qui dispopse de la dernière version de ClickHouse. Ajoutez la clé GPG du référentiel afin de pouvoir télécharger en toute sécurité les paquets ClickHouse validés :

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

      Vous verrez un résultat similaire à celui qui suit :

      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

      La sortie confirme que la vérification et l’ajout de clé ont bien été effectués.

      Ajoutez le référentiel à votre liste de référentiels APT en exécutant :

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

      Ici, vous avez extrait la sortie echo du sudo tee pour que cette sortie puisse être imprimée dans un fichier détenu par l’utilisateur root.

      Maintenant, exécutez apt update pour mettre à jour vos packages :

      Les packages clickhouse-server et clickhouse-client sont maintenant disponibles pour l’installation.

      Depuis la version 19.13.3 de ClickHouse, certaines configurations d’OpenSSL 1.1.1 telles que MinProtocol et CipherVersion ne sont pas lues correctement. Pour remédier à cette incompatibilité, modifiez le fichier de configuration OpenSSL et commentez la ligne ssl_conf = ssl_sect dans /etc/ssl/openssl.cnf.

      Modifiez le fichier de configuration en exécutant :

      • sudo nano /etc/ssl/openssl.cnf

      Ensuite, commentez la ligne contenant ssl_conf = ssl_sect, de sorte qu’elle ressemble au fichier suivant :

      /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]
      ...
      

      Maintenant que la configuration OpenSSL a été patchée, vous êtes prêt à installer les packages serveur et client de ClickHouse. Installez-les avec :

      • sudo apt install clickhouse-server clickhouse-client

      Lors de l’installation, il vous sera également demandé de définir un mot de passe pour l’utilisateur par défaut de ClickHouse.

      Vous avez installé avec succès le serveur et le client ClickHouse. Vous êtes maintenant prêt à démarrer le service de base de données et à vous assurer qu’il fonctionne correctement.

      Étape 2 – Démarrage du service

      Le package clickhouse-server que vous avez installé dans la section précédente crée un service systemd, qui effectue des actions telles que le démarrage, l’arrêt et le redémarrage du serveur de base de données. systemd est un système init pour Linux qui permet d’initialiser et de gérer des services. Dans cette section, vous allez démarrer le service et vérifier qu’il fonctionne correctement.

      Lancez le service clickhouse-server en exécutant :

      • sudo service clickhouse-server start

      La commande précédente n’affichera aucune sortie. Pour vérifier que le service fonctionne correctement, exécutez :

      • sudo service clickhouse-server status

      Vous verrez une sortie semblable à ce qui suit :

      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

      La sortie indique que le serveur est en cours d’exécution.

      Vous avez réussi à démarrer le serveur ClickHouse et vous pourrez maintenant utiliser le programme CLI clickhouse-client pour vous connecter au serveur.

      Étape 3 – Création de bases de données et de tables

      Dans ClickHouse, vous pouvez créer et supprimer des bases de données en exécutant des déclarations SQL directement dans l’invite de la base de données interactive. Les instructions consistent en des commandes qui suivent une syntaxe particulière et qui ordonnent au serveur de la base de données d’effectuer une opération demandée en même temps que les données requises. Vous créez des bases de données en utilisant la syntaxe CREATE DATABASE table_name. Pour créer une base de données, commencez une session client en exécutant la commande suivante :

      • clickhouse-client --password

      Il vous sera demandé d’entrer le mot de passe que vous avez défini pendant l’installation. Entrez-le pour démarrer correctement la session client.

      La commande précédente vous connectera à l’invite du client où vous pouvez exécuter des instructions SQL ClickHouse pour effectuer des actions telles que :

      • Créer, mettre à jour et supprimer des bases de données, des tables, des index, des partitions et des vues.

      • Exécuter des requêtes pour récupérer des données qui sont éventuellement filtrées et regroupées selon diverses conditions.

      Dans cette étape, avec le client ClickHouse prêt à l’insertion de données, vous allez créer une base de données et une table. Aux fins de ce tutoriel, vous allez créer une base de données nommée test, et à l’intérieur de celle-ci vous allez créer une table nommée <^>visits<^> qui effectue le suivi de la durée des visites sur le site web.

      Maintenant que vous êtes à l’intérieur de l’invite de commande ClickHouse, créez votre base de données test en exécutant :

      Vous verrez la sortie suivante qui montre que vous avez créé la base de données :

      Output

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

      Une table ClickHouse est semblable aux tables d’autres bases de données relationnelles ; elle contient une collection de données connexes dans un format structuré. Vous pouvez spécifier des colonnes avec leurs types, ajouter des lignes de données et exécuter différentes sortes de requêtes sur des tables.

      La syntaxe de création de tables dans ClickHouse suit cette structure :

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

      Les valeurs table_name et column_name peuvent être n’importe quel identifiant ASCII valide. ClickHouse prend en charge un large éventail de types de colonnes, dont les plus courants sont :

      • UIntra64 : utilisé pour le stockage de valeurs entières dans la plage 0 à 1844674407709551615.

      • Float64 : utilisé pour le stockage des nombres à virgule flottante tels que 2039.23, 10.5, etc.

      • Ring : utilisé pour le stockage de caractères de longueur variable. Il ne nécessite pas d’attribut de longueur maximale puisqu’il peut stocker des longueurs arbitraires.

      • Date : utilisé pour le stockage des dates au format YYYY-MM-DD

      • DateTime : utilisé pour le stockage de dates couplées avec les heures et suit le format YYYY-MM-DD HH:MM:SS.

      Après les définitions de la colonne, vous spécifiez le moteur utilisé pour le tableau. Dans ClickHouse, les moteurs déterminent la structure physique des données sous-jacentes, les capacités d’interrogation de la table, ses modes d’accès simultanés et la prise en charge des index.  Différents types de moteurs sont adaptés à différentes exigences d’application. Le type de moteur le plus couramment utilisé et le plus applicable est MergeTree.

      Maintenant que vous avez un bon aperçu de la création de table, vous allez créer une table. Commencez par confirmer la base de données que vous allez modifier :

      Vous verrez la sortie suivante montrant que vous avez passé à la base de données test à partir de la base de données par défaut :

      Output

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

      La suite de ce guide vous permettra d’exécuter des instructions dans le contexte de cette base de données.

      Créez votre table visits en exécutant cette commande :

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

      Voici une ventilation de ce que fait la commande. Vous créez un table nommé visits qui comporte quatre colonnes :

      • id : la colonne de la clé primaire. De même que les autres systèmes RDBMS, une colonne de clés primaire de ClickHouse identifie une ligne ; chaque ligne devrait avoir une valeur unique pour cette colonne.

      • duration : colonne float utilisée pour enregistrer la durée de chaque visite en secondes. Les colonnes float peuvent stocker des valeurs décimales telles que 12.50.

      • url : colonne string qui stocke l’URL visite, comme http://example.com.

      • created : colonne date and time qui suit quand une visite a eu lieu.

      Après les définitions de colonne, vous spécifiez MergeTree comme moteur de stockage pour la table. La famille de moteurs MergeTree est recommandée pour les bases de données de production en raison de sa prise en charge optimisée des grandes insertions en temps réel, de sa robustesse globale et de sa prise en charge des requêtes. En outre, les moteurs MergeTree prennent en charge le tri des lignes par clé primaire, le partitionnement des lignes, ainsi que la réplication et l’échantillonnage des données.

      Si vous avez l’intention d’utiliser ClickHouse pour archiver des données qui ne sont pas souvent interrogées ou pour stocker des données temporaires, vous pouvez utiliser la famille de moteurs Log pour une optimisation dans ce cas d’utilisation.

      Après avoir défini les colonnes, vous définirez d’autres options au niveau de la table. La clause PRIMARY KEY définit id comme la colonne clé primaire et la clause ORDER BY stockera les valeurs triées selon la colonne id. Une clé primaire identifie de manière unique une ligne et est utilisée pour accéder efficacement à une seule ligne et pour colocaliser efficacement les lignes.

      Lorsque vous exécuterez l’instruction create, vous verrez la sortie suivante :

      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.

      Dans cette section, vous avez créé une base de données et une table pour suivre les données de visite de site web. Dans l’étape suivante, vous allez insérer des données dans la table, mettre à jour les données existantes et supprimer ces données.

      Étape 4 — Insertion, mise à jour et suppression des données et des colonnes

      Dans cette étape, vous utiliserez votre table visits pour insérer, mettre à jour et supprimer des données. La commande suivante est un exemple de syntaxe permettant d’insérer des lignes dans une table ClickHouse :

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

      Maintenant, insérez quelques lignes d’exemple de données de visite de site web dans votre table visits en exécutant chacune des instructions suivantes :

      • 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');

      Vous verrez la sortie suivante pour chaque instruction d’insertion.

      Output

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

      La sortie de chaque ligne montre que vous l’avez insérée avec succès dans la table visits.

      Vous allez maintenant ajouter une colonne supplémentaire à la table visits. Lorsque vous ajoutez ou supprimez des colonnes de tables existantes, ClickHouse prend en charge la syntaxe ALTER.

      Par exemple, la syntaxe basique pour ajouter une colonne à une table est la suivante :

      ALTER TABLE table_name ADD COLUMN column_name column_type;
      

      Ajoutez une colonne nommée location qui va enregistrer l’emplacement des visites d’un site web en exécutant l’instruction suivante :

      • ALTER TABLE visits ADD COLUMN location String;

      Vous verrez une sortie semblable à ce qui suit :

      Output

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

      La sortie montre que vous avez bien ajouté la colonne location.

      À partir de la version 19.13.3, ClickHouse ne permet pas de mettre à jour et de supprimer des lignes individuelles de données, en raison de contraintes de mise en œuvre. Toutefois, ClickHouse prend en charge les mises à jour et les suppressions en vrac et dispose d’une syntaxe SQL distincte pour ces opérations, afin de mettre en évidence leur utilisation non standard.

      La syntaxe suivante est un exemple de mise à jour en vrac des lignes :

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

      Vous allez exécuter l’instruction suivante pour mettre à jour la colonne url de toutes les lignes qui ont une durée inférieure à 15. Saisissez-la dans l’invite d’exécution de la base de données :

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

      La sortie de l’instruction de mise à jour en bloc sera la suivante :

      Output

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

      La sortie montre que votre requête de mise à jour a bien été effectuée. Le 0 rows in set dans la sortie indique que la requête n’a renvoyé aucune ligne ; ce sera le cas pour toute requête de mise à jour et de suppression.

      L’exemple de syntaxe pour la suppression en bloc de lignes est similaire à la mise à jour des lignes et présente la structure suivante :

      ALTER TABLE table_name DELETE WHERE filter_conditions;
      

      Pour tester la suppression de données, exécutez l’instruction suivante pour supprimer toutes les lignes qui ont une durée inférieure à 5 :

      • ALTER TABLE visits DELETE WHERE duration < 5;

      La sortie de l’instruction de suppression en bloc sera similaire à :

      Output

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

      La sortie confirme que vous avez supprimé les lignes avec une durée inférieure à cinq secondes.

      Pour supprimer des colonnes de votre table, la syntaxe devrait suivre cet exemple de structure :

      ALTER TABLE table_name DROP COLUMN column_name;
      

      Supprimez la colonne location que vous avez précédemment ajoutée en exécutant ce qui suit :

      • ALTER TABLE visits DROP COLUMN location;

      La sortie DROP COLUMN confirmant que vous avez supprimé la colonne sera la suivante :

      Output

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

      Maintenant que vous avez bien inséré, mis à jour et supprimé des lignes et des colonnes dans votre table visits, vous allez passer à l’interrogation de données dans la prochaine étape.

      Étape 5 – Interrogation de données

      Le langage de requête de ClickHouse est un dialecte SQL personnalisé avec des extensions et des fonctions adaptées aux charges de travail d’analyse. Dans cette étape, vous allez exécuter des requêtes de sélection et d’agrégation pour récupérer des données et des résultats de votre table visits.

      Les requêtes de sélection vous permettent de récupérer des lignes et des colonnes de données filtrées par des conditions que vous spécifiez, ainsi que des options telles que le nombre de lignes à retourner. Vous pouvez sélectionner des lignes et des colonnes de données en utilisant la syntaxe SELECT. La syntaxe de base pour les requêtes SELECT est :

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

      Exécutez l’instruction suivante pour récupérer des valeurs url et de durée pour les lignes où l’url est http://example.com.

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

      Vous verrez le résultat suivant :

      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.

      La sortie a renvoyé deux lignes qui correspondent aux conditions que vous avez spécifiées. Maintenant que vous avez sélectionné des valeurs, vous pouvez passer à l’exécution des requêtes d’agrégation.

      Les requêtes d’agrégation sont des requêtes qui opèrent sur un ensemble de valeurs et renvoient des valeurs de sortie uniques. Dans les bases de données analytiques, ces requêtes sont fréquemment exécutées et sont bien optimisées par la base de données. Certaines fonctions agrégées prises en charge par ClickHouse sont :

      • count : renvoie le nombre de lignes correspondant aux conditions spécifiées.

      • sum : renvoie la somme des valeurs des colonnes sélectionnées.

      • avg : renvoie la moyenne des valeurs des colonnes sélectionnées.

      Certaines fonctions agrégées spécifiques à ClickHouse-specific comprennent :

      • uniq : renvoie un nombre approximatif de lignes distinctes assorties.

      • topK : renvoie un tableau des valeurs les plus fréquentes d’une colonne spécifique en utilisant un algorithme d’approximation.

      Pour démontrer l’exécution des requêtes d’agrégation, vous calculerez la durée totale des visites en exécutant la requête sum :

      • SELECT SUM(duration) FROM visits;

      Vous verrez un résultat similaire à celui qui suit :

      Output

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

      Maintenant, calculez les deux premières URL en exécutant :

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

      Vous verrez un résultat similaire à celui qui suit :

      Output

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

      Maintenant que vous avez interrogé avec succès votre table visits, vous allez supprimer des tables et des bases de données lors de la prochaine étape.

      Étape 6 — Suppression de tables et de bases de données

      Dans cette section, vous allez supprimer votre table visits et la base de données test.

      La syntaxe de suppression de table suit cet exemple :

      DROP TABLE table_name;
      

      Pour supprimer la table <^>visits<^>, exécutez l’instruction suivante :

      Vous verrez la sortie suivante déclarant que vous avez bien supprimé la table :

      output

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

      Vous pouvez supprimer des bases de données en utilisant la syntaxe DROP database table_name. Pour supprimer la base de données test, exécutez l’instruction suivante :

      La sortie obtenue montre que vous avez bien supprimé la base de données.

      Output

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

      Vous avez supprimé des tables et des bases de données lors de cette étape. Maintenant que vous avez créé, mis à jour et supprimé des bases de données, des tables et des données dans votre instance ClickHouse, vous allez activer l’accès à distance à votre serveur de base de données dans la section suivante.

      Étape 7 — Configuration des règles de pare-feu (facultatif)

      Si vous avez l’intention de n’utiliser ClickHouse que localement avec des applications fonctionnant sur le même serveur, ou si vous n’avez pas de pare-feu activé sur votre serveur, vous n’avez pas besoin de suivre cette section. Si, au contraire, vous vous connectez à distance au serveur de base de données ClickHouse, vous devez suivre cette étape.

      Actuellement, votre serveur est doté d’un pare-feu qui désactive l’accès de votre adresse IP publique à tous les ports. Vous allez exécuter les deux étapes suivantes pour autoriser l’accès à distance :

      • Modifiez la configuration de ClickHouse et autorisez-le à écouter toutes les interfaces.

      • Ajoutez une règle de pare-feu autorisant les connexions entrantes au port 8123 (qui est le port HTTP exécuté par le serveur ClickHouse).

      Si vous vous trouvez dans l’invite de la base de données, quittez-la en tapant CTRL+D.

      Modifiez le fichier de configuration en exécutant :

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

      Ensuite, décommentez la ligne contenant <!-- <listen_host>0.0.0</listen_host> -->, comme dans le fichier suivant :

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

      Sauvegardez le fichier et quittez. Pour que la nouvelle configuration soit appliquée, redémarrez le service en exécutant :

      • sudo service clickhouse-server restart

      Vous ne verrez aucune sortie de cette commande. Le serveur de ClickHouse écoute sur le port 8123 pour les connexions HTTP et sur le port 9000 pour les connexions du client-clickhouse. Autorisez l’accès aux deux ports pour l’adresse IP de votre deuxième serveur avec la commande suivante :

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

      Vous verrez la sortie suivante pour les deux commandes, qui montre que vous avez activé l’accès aux deux ports :

      Output

      Rule added

      ClickHouse sera maintenant accessible depuis l’IP que vous avez ajoutée. N’hésitez pas à ajouter des IP supplémentaires tels que l’adresse de votre machine locale, si nécessaire.

      Pour vérifier que vous pouvez vous connecter au serveur ClickHouse depuis la machine distante, suivez d’abord les étapes de l’Étape 1 de ce tutoriel sur le deuxième serveur et assurez-vous que le clickhouse-client y est installé.

      Maintenant que vous vous êtes connecté au deuxième serveur, lancez une session client en exécutant :

      • clickhouse-client --host your_server_ip --password

      Vous verrez la sortie suivante qui montre que vous vous êtes bien connecté au serveur :

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

      Dans cette étape, vous avez activé l’accès à distance à votre serveur de base de données ClickHouse en ajustant vos règles de pare-feu.

      Conclusion

      Vous avez mis en place avec succès une instance de base de données ClickHouse sur votre serveur et vous avez créé une base de données et une table, ajouté des données, effectué des requêtes et supprimé la base de données. Dans la documentation de ClickHouse, vous pouvez lire leurs analyses comparatives par rapport à d’autres bases de données analytiques commerciales et open-source, ainsi que des documents de référence généraux.

      Les autres caractéristiques offertes par ClickHouse comprennent le traitement distribué des requêtes sur plusieurs serveurs pour améliorer les performances et protéger contre la perte de données en stockant les données sur différentes partitions.



      Source link