Ga naar inhoud

ClickHouse

In dit artikel

Informatie

ClickHouse is een hoogwaardig kolomgeoriënteerd databasebeheersysteem (DBMS) dat is ontworpen voor het uitvoeren van analytische queries van de OLAP-klasse. Het DBMS is gericht op het analyseren van grote hoeveelheden gegevens met lage latentie en wordt veel gebruikt voor taken op het gebied van analytics, monitoring, logging en telemetrieverwerking.

ClickHouse. Kernfuncties

  • Kolomopslag: gegevens worden opgeslagen per kolom in plaats van per rij, wat de uitvoering van analytische queries aanzienlijk versnelt en het volume van verwerkte gegevens vermindert.
  • Hoge prestaties: geoptimaliseerd voor het verwerken van enorme datasets en in staat om queries uit te voeren op miljarden rijen dankzij vectorbewerking en efficiënt CPU-gebruik.
  • Gegevenscompressie: maakt gebruik van gespecialiseerde compressiealgoritmen die de hoeveelheid opgeslagen gegevens drastisch kunnen verminderen (vaak veel kleiner dan rijgebaseerde DBMS), vooral bij analytische werklasten.
  • SQL-compatibiliteit: ondersteunt uitgebreide SQL-syntaxis met aanvullende analytische functies, wat de migratie van bestaande toepassingen vereenvoudigt.
  • Gedistribueerde verwerking: maakt het mogelijk clusters te maken voor horizontale schaalbaarheid en gegevensverwerking over meerdere servers.
  • Gegevensreplicatie: ingebouwde ondersteuning voor replicatie zorgt voor fouttolerantie en hoge beschikbaarheid van gegevens.
  • Ondersteuning voor meerdere gegevensformaten: kan gegevens importeren en exporteren in CSV, JSON, Parquet, Avro en andere formaten.
  • Gematerialiseerde weergaven: voert automatisch aggregaties van gegevens uit op de achtergrond om terugkerende queries te versnellen.
  • Integratie met externe bronnen: ondersteunt direct lezen van gegevens uit MySQL, PostgreSQL, MongoDB, Kafka, S3 en andere systemen.

Implementatiefuncties

ID Softwarenaam Compatibel OS VM BM VGPU GPU Min CPU (Kernen) Min RAM (GB) Min HDD/SSD (GB) Aangepast Domein Actief
492 ClickHouse Ubuntu 24.04, Ubuntu 22.04 + + + + 4 8 120 Nee BESTELLEN
  • Geïnstalleerde software:

    • ClickHouse Server >= 26.1.1
    • ClickHouse Client >= 26.1.1
  • Installatiespecifieke kenmerken:

    • Software geïnstalleerd via het officiële ontwikkelaarsscript;
    • Installatietijd: 5-10 minuten;
    • Database is beschikbaar voor netwerkverbindingen via diverse SQL-clients;
    • Standaard wordt de gebruiker default gebruikt met het wachtwoord van het root-account.

Locaties van configuratie- en gegevensbestanden:

  • Hoofdserverconfiguratie: /etc/clickhouse-server/config.xml
  • Gebruikersinstellingen: /etc/clickhouse-server/users.xml
  • Serverlogs:
    • /var/log/clickhouse-server/clickhouse-server.log
    • /var/log/clickhouse-server/clickhouse-server.err.log
  • Gegevens: /var/lib/clickhouse/
  • PID-bestand: /run/clickhouse-server/clickhouse-server.pid
  • Systeemlimieten: /etc/security/limits.d/clickhouse.conf

Beschikbare poorten voor verbindingen:

Poort Protocol Doel Status Clients/Gebruik
8123 HTTP HTTP-interface Active DBeaver, DataGrip, Tableau, webinterface, JDBC/ODBC
9000 TCP Native ClickHouse-native protocol Active clickhouse-client, Python/Go-drivers
9004 MySQL MySQL-protocol-emulatie Active MySQL Workbench, mysql-client
9005 PostgreSQL PostgreSQL-protocol-emulatie Active pgAdmin, psql-client
9009 Interserver HTTP Replicatie tussen servers Active Communicatie binnen het cluster
8443 HTTPS HTTP-interface met SSL Optional Vereist configuratie van SSL-certificaat
9100 gRPC gRPC-interface Optional gRPC-clients

Opmerking

Poorten 8443 en 9100 zijn standaard uitgeschakeld en vereisen aanvullende configuratie in /etc/clickhouse-server/config.xml.

Opmerking

Tenzij anders vermeld, installeren we de nieuwste releaseversie van de software van de officiële website van de ontwikkelaar.

Aan de slag na het implementeren van ClickHouse

Er wordt een melding verzonden naar het e-mailadres dat tijdens de registratie is opgegeven dat de server klaar is voor gebruik nadat de bestelling is betaald. Deze bevat het IP-adres van de VPS, evenals de inloggegevens en het wachtwoord voor de verbinding. Klanten van ons bedrijf beheren de hardware in de server- en API-beheerpanelen - Invapi.

Inloggegevens:

  • Server-IP-adres: verstrekt in de e-mail en in het beheerpaneel;
  • Gebruikersnaam: default;
  • Wachtwoord: komt overeen met het wachtwoord van het root-account en wordt naar het e-mailadres verzonden.

Belangrijk

Voor GUI-clients (DBeaver, DataGrip en anderen) gebruikt u poort 8123 (HTTP-interface). Poort 9000 is gereserveerd voor de native clickhouse-client.

Verbinding maken met ClickHouse

Verbindingsmethoden

In deze sectie worden de meest voorkomende manieren beschreven om verbinding te maken met ClickHouse via clickhouse-client (commandoregelclient) en DBeaver (grafische interface). ClickHouse ondersteunt ook verbindingen via andere clients: DataGrip, Tableau, MySQL Workbench (via poort 9004), pgAdmin (via poort 9005), evenals programmeerbibliotheken voor Python, Go, Java en andere talen.

Verbinding maken via clickhouse-client

ClickHouse bevat een native commandoregelclient voor databasebewerkingen.

1. Verbinding maken vanaf de server (lokaal):

clickhouse-client

2. Verbinding maken vanaf een externe machine:

clickhouse-client --host <IP-adres> --port 9000 --user default --password <wachtwoord>

3. Een eenvoudige query uitvoeren:

SELECT version();

4. De lijst met databases bekijken:

SHOW DATABASES;

Verbinding maken via DBeaver

DBeaver is een universele GUI-client voor het werken met diverse databases, waaronder ClickHouse.

1. DBeaver installeren

Download en installeer DBeaver vanaf de officiële website.

2. Een nieuwe verbinding maken

  • Start DBeaver
  • Selecteer Database >> New Database Connection (of druk op Ctrl+Shift+N)

  • Zoek en selecteer ClickHouse in de lijst met databases

  • Klik op Next

3. Verbindingsparameters configureren

Geef in het instellingenvenster de volgende parameters op:

Host: <IP-adres van uw server>
Port: 8123
Database/Schema: (laat leeg of geef default op)
Username: default
Password: <root_wachtwoord>

Uiterst belangrijk

Gebruik voor DBeaver-verbindingen poort 8123.

4. De JDBC-driver downloaden

Bij de eerste verbindingspoging vraagt DBeaver u om de JDBC-driver voor ClickHouse te downloaden:

  • Klik op Download in het pop-upvenster:

  • Wacht tot het downloaden van de driver is voltooid:

  • Klik op OK

5. De verbinding testen

  • Klik op Test Connection;
  • Als alles correct is geconfigureerd, verschijnt er een bericht: Connected (XXX ms):

  • Het bericht bevat:
  • Server: ClickHouse X.X.X.XXX
  • Driver: ClickHouse JDBC Driver X.X.X

6. Configuratie afronden

  • Klik op Finish;
  • De verbinding verschijnt in de Database Navigator;
  • Vouw de verbindingstructuur uit om databases, tabellen en andere objecten te bekijken.

Veelvoorkomende problemen:

Fout Oorzaak Oplossing
transport error: 400 Poort 9000 gebruikt in plaats van 8123 Wijzig naar poort 8123
Connection refused Verkeerd IP-adres of firewall blokkeert poort Verifieer IP-adres en firewallregels
Authentication failed Verkeerde inloggegevens of wachtwoord Verifieer inloggegevens
Hostname is not specified SSH-tunnel per ongeluk ingeschakeld zonder configuratie Sluit het SSH tab in de verbindingsinstellingen

Kernbewerkingen in ClickHouse

Een database maken

CREATE DATABASE IF NOT EXISTS my_database;

Een tabel maken

CREATE TABLE my_database.events
(
    event_date Date,
    event_time DateTime,
    user_id UInt32,
    event_type String,
    value Float64
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_date, user_id);

Gegevens invoegen

INSERT INTO my_database.events VALUES
    ('2024-12-25', '2024-12-25 10:00:00', 1, 'click', 1.5),
    ('2024-12-25', '2024-12-25 10:05:00', 2, 'view', 2.3),
    ('2024-12-25', '2024-12-25 10:10:00', 1, 'purchase', 99.99);

Gegevens selecteren

Eenvoudige query:

SELECT * FROM my_database.events LIMIT 10;

Gegevens aggregeren:

SELECT 
    event_type,
    count() as events_count,
    avg(value) as avg_value
FROM my_database.events
WHERE event_date = '2024-12-25'
GROUP BY event_type;

Tijdsreeksen:

SELECT 
    toStartOfHour(event_time) as hour,
    count() as events_per_hour
FROM my_database.events
WHERE event_date >= '2024-12-01'
GROUP BY hour
ORDER BY hour;

Gegevens importeren uit CSV

Een tabel maken:

CREATE TABLE my_database.logs
(
    timestamp DateTime,
    level String,
    message String
)
ENGINE = MergeTree()
ORDER BY timestamp;

Gegevens importeren:

INSERT INTO my_database.logs
FROM INFILE '/path/to/file.csv'
FORMAT CSV;

Gebruikers en machtigingen beheren

Een gebruiker maken:

CREATE USER analyst IDENTIFIED BY 'secure_password';

Machtigingen toekennen:

GRANT SELECT ON my_database.* TO analyst;

Gebruikers bekijken:

SHOW USERS;

Machtigingen bekijken:

SHOW GRANTS FOR analyst;

De service beheren

Service starten:

clickhouse start

Service stoppen:

clickhouse stop

Service herstarten:

clickhouse restart

Servicestatus:

clickhouse status

Logs bekijken:

tail -f /var/log/clickhouse-server/clickhouse-server.log

Opmerking

Als u niet als root werkt, voegt u sudo toe aan de opdrachten: sudo clickhouse start

Actieve poorten controleren

Om te zien op welke poorten ClickHouse luistert:

ss -tlnp | grep clickhouse

Of gedetailleerder:

ss -tlnp | grep $(pidof clickhouse-server)

Om geconfigureerde poorten in de configuratie te controleren:

cat /etc/clickhouse-server/config.xml | grep -E "port>" | head -20

Om een specifieke poort te controleren:

ss -tlnp | grep :8123

Verwachte uitvoer van poortcontrole:

LISTEN  *:8123  clickhouse-serv  (HTTP)
LISTEN  *:9000  clickhouse-serv  (Native TCP)
LISTEN  *:9004  clickhouse-serv  (MySQL)
LISTEN  *:9005  clickhouse-serv  (PostgreSQL)
LISTEN  *:9009  clickhouse-serv  (Interserver)

Opmerking

Gedetailleerde informatie over ClickHouse-configuratie en optimalisatie is beschikbaar in de officiële ontwikkelaarsdocumentatie.

Een server met ClickHouse bestellen

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×