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
defaultgebruikt met het wachtwoord van hetroot-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):
2. Verbinding maken vanaf een externe machine:
3. Een eenvoudige query uitvoeren:
4. De lijst met databases bekijken:
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
Downloadin 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¶
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:
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:
Gebruikers en machtigingen beheren¶
Een gebruiker maken:
Machtigingen toekennen:
Gebruikers bekijken:
Machtigingen bekijken:
De service beheren¶
Service starten:
Service stoppen:
Service herstarten:
Servicestatus:
Logs bekijken:
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:
Of gedetailleerder:
Om geconfigureerde poorten in de configuratie te controleren:
Om een specifieke poort te controleren:
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.