ClickHouse
2019

ClickHouse e' un Columnar Database SQL, distribuito ed Open Source con ottime prestazioni sulle attivita' OLAP (On-Line Analytical Processing).
ClickHouse e' incredibilmente veloce nell'elaborazione di query con grandi quantita' di dati... ma e' veloce anche nei rilasci di nuove versioni con nuove funzionalita!
In questa paginetta vederemo le novita' piu' importanti del 2019.

I contenuti di questa pagina sono: Introduzione, Versioni e rilasci, Novita' 2019, Varie ed eventuali.

Il documento si riferisce alle versioni 19.X di ClickHouse ed e' ovviamente aggiornato al 2019-12-31 23:59:59 :)

Introduzione

ClickHouse e' un recente database colonnare Open Source (licenza Apache 2.0 dal 2016-06). ClickHouse e' molto veloce, semplice da utilizzare ed ha un'architettura estensibile.

ClickHouse memorizza i dati per colonna, quindi ogni colonna e' fisicamente contenuta in un file differente.
Per ogni tabella e' possibile scegliere un tipo di memorizzazione dei dati: l'Engine. Vi sono diverse tipologie di Engine, il piu' importante e' il MergeTree ed i suoi derivati. Con il MergeTree i dati sono ordinati per Primary Key e viene eseguito il pruning delle query sulla partitioning key. In fase di inserimento i dati vengono scritti velocemente in parti e quindi uniti (merge) successivamente da un thread asincrono, questo da il nome all'Engine.

Oltre all'organizzazione per colonne, alla compressione ed al partizionamento ClickHouse utilizza efficienti algoritmi di calcolo parallelo.
Quando si effettua una query ClickHouse suddivide il lavoro in piu' thread ed effettua le operazioni in memoria, utilizzando tutte le CPU disponibili e tutta la RAM necessaria. Questo rende incredibilmente piu' veloci le ricerche rispetto ad un DB tradizionale sopratutto quando vanno analizzati tutti i dati o una parte notevole di questo come avviene tipicamente per query di tipo analitico.

L'installazione si esegue con un paio di comandi e praticamente non c'e' bisogno di tuning. L'interfaccia l'SQL rende facilmente utilizzabile ClickHouse a chiunque ed il dialetto SQL utilizzato e' molto simile a quello di MySQL (eg. SHOW CREATE TABLE).
Le prestazioni sono eccezionali: come altri DB column-oriented ClickHouse e' migliaia di volte piu' veloce nelle query OLAP rispetto ad un database relazionale tradizionale. Inoltre ClickHouse non presenta la latenza tipica di molti DB NoSQL rispondendo in modo quasi real time alle richieste.

ClickHouse puo' essere utilizzato su server singolo (e' disponibile anche come immagine Docker su container) oppure configurato in cluster su differenti nodi fisici con shards e/o repliche delle tabelle. Grazie alla particolare struttura di memorizzazione dei dati le query eseguite in cluster scalano le prestazioni in modo lineare sul numero di shard utilizzati. Le repliche sono di tipo asincrono ed aggiornate in modalita' multimaster. La replica opera a livello di singola tabella, utilizza come repository ZooKeeper ed e' indipendente dallo sharding.

Riassumendo ClickHouse trova la sua applicazione sia quando siano necessarie ottime prestazioni con query analitiche, grazie alle sue prestazioni quasi realtime, sia quando sia necessario mantenere grandi quantita' di dati, grazie alla notevole velocita' nell'ingestion ed alla compressione dei dati.

Versioni e rilasci in ClickHouse

Dal 2018 e' stato introdotto un nuovo standard per la numerazione delle versioni: la prima cifra indica l'anno, la seconda la versione, i due numeri successivi sono i rilasci; viene poi indicato se la release e' stable ovvero adatta per essere utilizzata in produzione o testing ovvero ancora in test [NdA sono anche presenti rilasci prestable ed lts: long term support]. Le funzionalita' sono legate alla versione, eventuali ulteriori rilasci sono per il bug fixing. A volte e' presente qualche regressione... e' sempre opportuno provare le nuove versioni anche se sono indicate come stable.

I rilasci di ClickHouse sono molto frequenti, anche piu' di un rilascio al giorno su GitHub! Anche l'uscita di nuove versioni e' piuttosto frequente: piu' di una volta al mese in media.
Una descrizione dettagliata del contenuto delle versioni e' riportato nel Changelog che e' il riferimento piu' completo per tutte le funzionalita' presenti in ClickHouse.

Nel documento Your Server Stinks! sono riassunti i principali rilasci:

Version
Status
Features
Last release
Date (from)
Date (last)
Notes
19 Production (19.1.3 2019-02) ALTER compression codec, Delta codec, CatBoost, HDFS tables, ... (19.3.3 2019-02) KILL MUTATION, toStartOfInterval(), LowCardinality, Protobuf output format, ... (19.4.0.49 2019-03) Multiple JOINS. (19.6.2.11 2019-05) TTL. (19.11.3.11 2019-07) DoubleDelta and Gorilla codecs, H3. (19.14.3.3, 2019-09) WITH FILL in ORDER BY, table constraints, ORC input format, INSERT in Kafka, _timestamp in Kafka, system.metric_log, system.text_log. Experimental: LIVE VIEW, Template format (19.15.2.2 2019-10) Tiered storage. (19.17.4.11 2019-11) Create Dictionary, full S3 integration. (19.14.8.9, 2019-12) LTS 19.17.6.36
19.14.10.16 LTS
2019-012019-12
18Production New version numbering: year+version. JOIN syntax, ... (18.1.0 2018-07) ALTER DELETE. (18.12.14 2018-09) ALTER UPDATE. 18.16.12018-072018-12
1Production (1.1.54245 2017-07) pubblic release. Dictionary, distribuited DDL, HTTP interface. (1.1.54310 2017-11) custom partitioning, Kafka Engine, arithmetic with time intervals. (1.1.54337 2018-01) MySQL tables, ODBC support. (1.1.54388 2018-06) ALTER DELETE on replicated tables. 1.1.543942017-072018-07
0Production Developed intitially for internal use for Yandex.Metrica, Open sourced on 2016-06 (Apache license 2.0). 2016-06

Nel seguito vederemo in dettaglio come si e' evoluto ClickHouse nel 2019.

Novita' 2019

Sono molte le nuove funzionalita' introdotte nel 2019. Vediamole organizzate per argomento:

Questo elenco e' un estratto delle funzionalita' piu' significative introdotte in ClickHouse nel 2019. L'elenco completo e' riportato nel Changelog ufficiale.

2020?

Per il prossimo anno cosa dobbiamo aspettarci?
Sicuramente alcune funzionalita' gia' previste per il 2019 ma che non sono arrivate in tempo [NdA in particolare la versione v19.19.1.2035 che e' testing e non ancora stable]:

2020? Rimanete sintonizzati!

Varie ed eventuali

Altinity, la principale azienda di supporto di ClickHouse, certifica alcune release come Altinity Stable ClickHouse [NdA https://www.altinity.com/blog/tag/Releases]. Le versioni Altinity Stable ClickHouse del 2019 sono: 19.11.8, 19.13.7.57.
Da quest'anno ClickHouse battezza come LTS alcune versioni per gli utenti che vogliono eseguire un numero minore di aggiornamenti rispetto all'installazione dell'ultima STABLE [NdA https://repo.yandex.ru/clickhouse/rpm/lts/x86_64/]. La versione ClickHouse LTS e' la 19.14 ed in particolare sono stati rilasciati gli aggiornamenti: 19.14.10.16, 19.14.8.9.

Altri documenti utili su ClickHouse sono: Introduzione a ClickHouse, Architettura di ClickHouse, ClickHouse DBA scripts, ...


Titolo: ClickHouse 2019
Livello: Medio (2/5)
Data: 31 Dicembre 2019
Versione: 1.0.0 - 31 Dicembre 2019
© Autore: mail [AT] meo.bogliolo.name