Vai al contenuto principale
Versione: 3.0.0-alpha (Diátaxis)

FAQ — ClickHouse

Qual e la differenza tra shard e repliche?

Gli shard e le repliche svolgono ruoli diversi nell'architettura ClickHouse:

  • Shard: distribuzione orizzontale dei dati. Ogni shard contiene una parte del dataset totale. Aggiungere shard aumenta la capacità di archiviazione e di elaborazione.
  • Repliche: copie identiche dei dati all'interno di uno stesso shard. Ogni replica contiene gli stessi dati per assicurare l'alta disponibilità.
clickhouse.yaml
spec:
shards: 2 # I dati sono distribuiti su 2 shard
replicas: 3 # Ogni shard ha 3 copie (totale: 6 pod)
suggerimento

In produzione, usate almeno 2 repliche per shard per l'alta disponibilità. Aumentate il numero di shard per elaborare volumi di dati più importanti.

A cosa serve ClickHouse Keeper?

ClickHouse Keeper e il componente di coordinamento del cluster, basato sul protocollo Raft. Sostituisce Apache ZooKeeper e assicura:

  • L'elezione del leader per le tabelle replicate
  • Il coordinamento delle operazioni di replica tra repliche
  • La gestione dei metadati del cluster

Il numero di repliche Keeper deve essere dispari (3 o 5) per garantire il quorum (maggioranza necessaria per l'elezione del leader). Il minimo raccomandato e 3 repliche.

clickhouse.yaml
spec:
clickhouseKeeper:
enabled: true
replicas: 3 # Sempre dispari: 3 o 5
resourcesPreset: micro
size: 2Gi

ClickHouse è adatto alle query transazionali (OLTP)?

No. ClickHouse e un motore di database OLAP (Online Analytical Processing) ottimizzato per l'analisi dei dati:

  • Architettura orientata per colonne: molto performante per aggregazioni e scansioni su grandi volumi di dati
  • Ottimizzato per le letture massive e le query analitiche
  • Non adatto alle operazioni transazionali frequenti (UPDATE, DELETE unitari)

Se avete bisogno di un motore transazionale (OLTP), usate piuttosto PostgreSQL o MySQL su Hikube.

Qual e la differenza tra resourcesPreset e resources?

Il campo resourcesPreset permette di scegliere un profilo di risorse predeterminato per ogni replica ClickHouse. Se il campo resources (CPU/memoria espliciti) e definito, resourcesPreset viene completamente ignorato.

PresetCPUMemoria
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi
clickhouse.yaml
spec:
# Utilizzo di un preset
resourcesPreset: large

# OPPURE configurazione esplicita (il preset viene allora ignorato)
resources:
cpu: 4000m
memory: 8Gi

Come vengono distribuiti i dati tra gli shard?

I dati vengono distribuiti tra gli shard tramite il motore Distributed di ClickHouse:

  • Ogni shard archivia una partizione del dataset totale
  • Il motore Distributed reindirizza le query verso tutti gli shard e fonde i risultati
  • I dati vengono replicati all'interno di ogni shard secondo il numero di repliche configurato

Per beneficiare della distribuzione, create tabelle con il motore ReplicatedMergeTree su ogni shard e una tabella Distributed per le query globali.

Come configurare i backup ClickHouse?

I backup ClickHouse utilizzano Restic per l'invio verso uno storage S3 compatibile. Configurate la sezione backup:

clickhouse.yaml
spec:
backup:
enabled: true
s3Region: eu-central-1
s3Bucket: s3.example.com/clickhouse-backups
schedule: "0 3 * * *"
cleanupStrategy: "--keep-last=7 --keep-daily=7 --keep-weekly=4"
s3AccessKey: your-access-key
s3SecretKey: your-secret-key
resticPassword: your-restic-password
avviso

Conservate il resticPassword in un luogo sicuro. Senza questa password, i backup non potranno essere decifrati.