Ga naar inhoud

ClickHouse

In dit artikel

Informatie

ClickHouse is een high-performance kolomgebaseerd databeheersysteem (DBMS) ontworpen voor het uitvoeren van analytische queries van OLAP-klasse. Het DBMS is gericht op het analyseren van grote hoeveelheden gegevens met lage latentie en wordt veelvuldig gebruikt bij taken voor analytics, monitoring, logging en telemetrieverwerking.

ClickHouse. Kernfuncties

  • Kolomgebaseerde opslag: gegevens worden per kolom in plaats van per rij opgeslagen, wat de uitvoering van analytische queries aanzienlijk versnelt en het volume aan verwerkte gegevens vermindert.
  • Hoge prestaties: geoptimaliseerd voor het verwerken van enorme datasets en in staat om queries uit te voeren op miljarden rijen dankzij vectorized processing en efficiënt CPU-gebruik.
  • Gegevenscompressie: maakt gebruik van gespecialiseerde compressie-algoritmen die de hoeveelheid opgeslagen gegevens drastisch kunnen verminderen (vaak vele malen kleiner dan bij rijgebaseerde DBMS), vooral bij analytische workloads.
  • SQL-compatibiliteit: ondersteunt uitgebreide SQL-syntax met extra analytische functies, wat de migratie van bestaande applicaties vereenvoudigt.
  • Gedistribueerde verwerking: maakt het creëren van clusters mogelijk voor horizontale schaalbaarheid en gegevensverwerking over meerdere servers.
  • Gegevensreplicatie: ingebouwde ondersteuning voor replicatie zorgt voor fouttolerantie en een hoge beschikbaarheid van gegevens.
  • Ondersteuning voor meerdere gegevensformaten: kan gegevens importeren en exporteren in CSV, JSON, Parquet, Avro en andere formaten.
  • Materialized views: aggregeert automatisch gegevens 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

Informatie

Voor informatie over de implementatiefuncties van deze software, zie deze link

Opmerking

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

Opmerking

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

Aan de slag na het implementeren van ClickHouse

Er wordt een melding gestuurd naar het e-mailadres dat tijdens de registratie is opgegeven zodra de server klaar is voor gebruik nadat er voor de bestelling is betaald. Deze bevat het IP-adres van de VPS, even wel de login en het wachtwoord voor de verbinding. Klanten van ons bedrijf beheren de hardware in het Invapi control panel.

Autorisatiedetails:

  • Server IP address: verstrekt in de e-mail en in het control panel;
  • Login: default;
  • Password: komt overeen met het wachtwoord van het root account en wordt naar het e-mailadres gestuurd.

Let op

Gebruik voor GUI-clients (DBeaver, DataGrip en anderen) port 8123 (HTTP interface). Poort 9000 is uitsluitend gereserveerd voor de native clickhouse-client.

Verbinding maken met ClickHouse

Verbindingsmethoden

Dit gedeelte beschrijft de meest gebruikelijke manieren om verbinding te maken met ClickHouse via clickhouse-client (command-line client) 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 command-line client voor database-operaties.

1. Verbinding maken vanaf de server (lokaal):

clickhouse-client

2. Verbinding maken vanaf een externe machine:

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

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 verschillende 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 in de database-lijst en selecteer ClickHouse

  • Klik op Next

3. Verbindingsparameters configureren

Geef in het instellingenvenster de volgende parameters op:

Host: <IP-address of your server>
Port: 8123
Database/Schema: (leeg laten of default opgeven)
Username: default
Password: <root_password>

Cruciaal belangrijk

Gebruik voor DBeaver-verbindingen port 8123.

4. De JDBC-driver downloaden

Wanneer u voor het eerst verbinding maakt, 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 melding: Connected (XXX ms):

  • De melding bevat:
  • Server: ClickHouse X.X.X.XXX
  • Driver: ClickHouse JDBC Driver X.X.X

6. Installatie afronden

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

Veelvoorkomende problemen:

Error Cause Fix
transport error: 400 Poort 9000 gebruikt in plaats van 8123 Wijzigen naar poort 8123
Connection refused Verkeerde IP of firewall blokkeert poort Controleer het IP-adres en de firewall-regels
Authentication failed Verkeerde login of wachtwoord Controleer de inloggegevens
Hostname is not specified SSH-tunnel per ongeluk ingeschakeld zonder configuratie Sluit het SSH-tabblad in de verbindingsinstellingen

Kernoperaties 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;

Tijdreeks:

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 privileges beheren

Een gebruiker maken:

CREATE USER analyst IDENTIFIED BY 'secure_password';

Rechten verlenen:

GRANT SELECT ON my_database.* TO analyst;

Gebruikers bekijken:

SHOW USERS;

Privileges bekijken:

SHOW GRANTS FOR analyst;

De service beheren

De service starten:

clickhouse start

De service stoppen:

clickhouse stop

De service herstarten:

clickhouse restart

Service status:

clickhouse status

Logs bekijken:

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

Opmerking

Als u niet als root werkt, voeg dan sudo toe aan de commando's: 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 output van de 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 documentatie van de ontwikkelaar.

Een server met ClickHouse bestellen

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