Benotzt Clickhouse als Ersatz fir ELK, Big Query an TimescaleDB

Klickhaus ass en Open Source columnar Datebank Management System fir online analytesch Ufroveraarbechtung (OLAP), erstallt vum Yandex. Et gëtt vun Yandex, CloudFlare, VK.com, Badoo an aner Servicer ronderëm d'Welt benotzt fir wierklech grouss Quantitéiten un Daten ze späicheren (dausende vu Reihen pro Sekonn oder Petabytes vun Daten op der Disk gespäichert).

An enger regulärer "String" DBMS, Beispiller vun deenen MySQL, Postgres, MS SQL Server sinn, ginn Daten an der folgender Uerdnung gespäichert:

Benotzt Clickhouse als Ersatz fir ELK, Big Query an TimescaleDB

An dësem Fall gi Wäerter, déi zu enger Zeil verbonne sinn, kierperlech an der Géigend gelagert. A columnar DBMSs gi Wäerter vu verschiddene Kolonnen getrennt gespäichert, an Daten aus enger Kolonn ginn zesummen gespäichert:

Benotzt Clickhouse als Ersatz fir ELK, Big Query an TimescaleDB

Beispiller vu columnar DBMSs sinn Vertica, Paraccel (Actian Matrix, Amazon Redshift), Sybase IQ, Exasol, Infobright, InfiniDB, MonetDB (VectorWise, Actian Vector), LucidDB, SAP HANA, Google Dremel, Google PowerDrill, Druid, kdb+.

Mail Forwarder Firma Qwintry ugefaang Clickhouse am Joer 2018 fir Berichterstattung ze benotzen a war ganz beandrockt mat senger Einfachheet, Skalierbarkeet, SQL Support a Geschwindegkeet. D'Geschwindegkeet vun dësem DBMS grenzt un Magie.

Liichtegkeet

Clickhouse ass op Ubuntu mat engem eenzege Kommando installéiert. Wann Dir SQL kennt, kënnt Dir direkt Clickhouse fir Är Bedierfnesser benotzen. Wéi och ëmmer, dëst heescht net datt Dir "Tabelle erstellen" an MySQL maache kënnt an d'SQL am Clickhouse kopéieren-paste.

Am Verglach mam MySQL ginn et wichteg Datentyp Differenzen an den Tabellschema Definitiounen, sou datt Dir nach ëmmer e bëssen Zäit brauch fir d'Tabelleschema Definitiounen z'änneren an d'Tabellmotoren ze léieren fir bequem ze ginn.

Clickhouse funktionnéiert super ouni zousätzlech Software, awer wann Dir Replikatioun wëllt benotzen, musst Dir ZooKeeper installéieren. Query Leeschtung Analyse weist excellent Resultater - de System Dëscher enthalen all d'Informatiounen, an all d'Donnéeë kënnen mat al a langweileg SQL zréckgewonne ginn.

Produktivitéit

  • Benchmark Vergläicher vun Clickhouse mat Vertica an MySQL op de Server Configuratioun: zwee Sockets Intel® Xeon® CPU E5-2650 v2 @ 2.60GHz; 128 GiB RAM; md RAID-5 op 8 6TB SATA HDD, ext4.
  • Benchmark Verglach vu Clickhouse mat Amazon RedShift Cloud Storage.
  • Blog Auszich Cloudflare op Clickhouse Leeschtung:

Benotzt Clickhouse als Ersatz fir ELK, Big Query an TimescaleDB

D'ClickHouse Datebank huet e ganz einfachen Design - all Noden am Cluster hunn déiselwecht Funktionalitéit a benotzen nëmmen ZooKeeper fir Koordinatioun. Mir hunn e klenge Cluster vu verschiddene Wirbelen gebaut an hunn Tester gemaach, wärend mir fonnt hunn datt de System zimmlech beandrockend Leeschtung huet, wat mat den uginnene Virdeeler an analyteschen DBMS Benchmarks entsprécht. Mir hu beschloss d'Konzept hannert ClickHouse méi no ze kucken. Den éischten Hindernis fir d'Fuerschung war de Mangel un Tools an déi kleng ClickHouse Gemeinschaft, also hu mir an den Design vun dësem DBMS verdéift fir ze verstoen wéi et funktionnéiert.

ClickHouse ënnerstëtzt net Daten direkt vu Kafka z'empfänken well et just eng Datebank ass, also hu mir eisen eegene Adapterservice a Go geschriwwen. Et huet Cap'n Proto kodéiert Messagen vum Kafka gelies, se an TSV ëmgewandelt an se an de ClickHouse a Chargen iwwer d'HTTP Interface agefouert. Mir hunn dëse Service méi spéit ëmgeschriwwen fir d'Go-Bibliothéik a Verbindung mat der eegener Interface vum ClickHouse ze benotzen fir d'Leeschtung ze verbesseren. Wann Dir d'Performance vun der Empfang vun Pakete evaluéiert, hu mir eng wichteg Saach entdeckt - et huet sech erausgestallt datt fir ClickHouse dës Leeschtung staark vun der Gréisst vum Paket hänkt, dat heescht d'Zuel vun de gläichzäiteg agebaute Reihen. Fir ze verstoen firwat dat geschitt, hu mir gekuckt wéi ClickHouse Daten späichert.

Den Haaptmotor, oder éischter Famill vun Dëschmotoren, benotzt vum ClickHouse fir Daten ze späicheren ass MergeTree. Dëse Motor ass konzeptuell ähnlech mam LSM Algorithmus, deen am Google BigTable oder Apache Cassandra benotzt gëtt, awer vermeit d'Konstruktioun vun enger Zwëschen Erënnerungstabell a schreift Daten direkt op Disk. Dëst gëtt et exzellente Schreifduerchgang, well all agebaute Paket nëmmen nom primäre Schlëssel zortéiert gëtt, kompriméiert a geschriwwe gëtt op Disk fir e Segment ze bilden.

D'Feele vun engem Erënnerungstabell oder all Konzept vun der "Frëschheet" vun Daten bedeit och datt se nëmme kënne bäigefüügt ginn; de System ënnerstëtzt net d'Ännerung oder d'Läschen. De Moment ass deen eenzege Wee fir Daten ze läschen ass se nom Kalennermonat ze läschen, well Segmenter ni eng Mountgrenz iwwerschreiden. D'ClickHouse Team schafft aktiv fir dës Feature personaliséierbar ze maachen. Op der anerer Säit mécht et Schreif- a Fusiounssegmenter Sträitfräi, sou datt d'Duerchsatzskala linear mat der Unzuel vun de concurrenten Inserts kritt bis I/O oder Kär Sättigung geschitt.
Dëst bedeit awer och datt de System net fir kleng Pakete gëeegent ass, sou datt Kafka Servicer an Inserter fir Puffer benotzt ginn. Als nächst gëtt ClickHouse am Hannergrond dauernd Segmentfusioun ausféieren, sou datt vill kleng Informatiounsstécker kombinéiert a méi Mol opgeholl ginn, sou datt d'Opnahmintensitéit erhéicht gëtt. Wéi och ëmmer, ze vill net verbonnen Deeler verursaache aggressiv Drossel vun Inserts soulaang d'Fusioun weider geet. Mir hunn erausfonnt datt de beschte Kompromiss tëscht Echtzäit-Engagement an d'Intakleistung ass eng limitéiert Unzuel vun Inserts pro Sekonn an den Dësch ze huelen.

De Schlëssel fir d'Leeschtung vun der Tabell ass d'Indexéierung an d'Plaz vun den Daten op der Disk. Egal wéi séier d'Veraarbechtung ass, wann de Motor Terabytes vun Daten aus der Disk muss scannen an nëmmen en Deel dovun benotzen, wäert et Zäit huelen. ClickHouse ass e Kolumngeschäft, also enthält all Segment eng Datei fir all Kolonn (Kolonn) mat zortéierte Wäerter fir all Zeil. Op dës Manéier kënnen ganz Spalten, déi aus der Ufro feelen, als éischt iwwersprangen ginn, an da kënne verschidde Zellen parallel mat der vektoriséierter Ausféierung veraarbecht ginn. Fir e komplette Scan ze vermeiden, huet all Segment eng kleng Indexdatei.

Virausgesat datt all Kolonnen nom "Primärschlëssel" zortéiert sinn, enthält d'Indexdatei nëmmen d'Etiketten (gefaange Reihen) vun all N. Zeil fir se och fir ganz grouss Dëscher an Erënnerung ze halen. Zum Beispill kënnt Dir d'Standardastellunge setzen fir "all 8192nd Zeil ze markéieren", dann "meager" Indexéierung vun engem Dësch mat 1 Billioun. Linnen déi einfach an d'Erënnerung passen, huelen nëmmen 122 Zeechen.

System Entwécklung

D'Entwécklung an d'Verbesserung vum Clickhouse ka verfollegt ginn Github repo a gitt sécher datt de Prozess vum "Erwuessen" an engem beandrockende Tempo geschitt.

Benotzt Clickhouse als Ersatz fir ELK, Big Query an TimescaleDB

Popularitéit

D'Popularitéit vum Clickhouse schéngt exponentiell ze wuessen, besonnesch an der russeschsproocheger Gemeinschaft. D'lescht Joer High load 2018 Konferenz (Moskau, 8.-9. November 2018) huet gewisen, datt esou Monstere wéi vk.com a Badoo Clickhouse benotzen, mat deem se Daten aginn (zum Beispill Logbicher) vun zéngdausende Serveren gläichzäiteg. An engem 40 Minutte Video De Yuri Nasretdinov vum VKontakte Team schwätzt iwwer wéi dëst gemaach gëtt. Geschwënn wäerte mir den Transkript op Habr posten fir einfach mam Material ze schaffen.

Applikatiounen

Nodeems ech e bëssen Zäit verbruecht hunn ze recherchéieren, denken ech datt et Beräicher sinn wou ClickHouse nëtzlech ka sinn oder komplett aner, méi traditionell a populär Léisunge wéi MySQL, PostgreSQL, ELK, Google Big Query, Amazon RedShift, TimescaleDB, Hadoop, MapReduce, Pinot an Druid. Déi folgend beschreift d'Detailer fir ClickHouse ze benotzen fir déi uewe genannte DBMS ze moderniséieren oder komplett ze ersetzen.

D'Fähigkeiten vu MySQL a PostgreSQL erweideren

Viru kuerzem hu mir MySQL deelweis duerch ClickHouse fir eis Newsletter Plattform ersat Mautic Newsletter. De Problem war datt MySQL, wéinst engem schlechten Design, all E-Mail geschéckt an all Link an där E-Mail mat engem base64-Hash protokolléiert huet, eng rieseg MySQL-Tabelle erstellt (email_stats). Nodeems Dir nëmmen 10 Milliounen E-Mailen un d'Service Abonnenten geschéckt huet, huet dësen Dësch 150 GB Dateiraum besat, a MySQL huet ugefaang "domm" op einfache Ufroen ze sinn. Fir d'Dateiraumprobleem ze fixéieren, hu mir erfollegräich InnoDB Tabellkompressioun benotzt, déi se mat engem Faktor vu 4 reduzéiert huet. Wéi och ëmmer, et mécht nach ëmmer kee Sënn méi wéi 20-30 Milliounen E-Mailen am MySQL ze späicheren just fir d'Geschicht ze liesen, well all einfach Ufro déi aus iergendengem Grond e komplette Scan muss maachen, resultéiert am Austausch a vill I. /O Laascht, no iwwer déi mir regelméisseg Warnungen aus Zabbix krut.

Benotzt Clickhouse als Ersatz fir ELK, Big Query an TimescaleDB

Clickhouse benotzt zwee Kompressiounsalgorithmen déi den Datevolumen ëm ongeféier reduzéieren 3-4 Mol, awer an dësem bestëmmte Fall waren d'Donnéeën besonnesch "kompressibel".

Benotzt Clickhouse als Ersatz fir ELK, Big Query an TimescaleDB

ELK ersetzen

Baséierend op meng eegen Erfahrung, erfuerdert den ELK Stack (ElasticSearch, Logstash a Kibana, an dësem besonnesche Fall ElasticSearch) vill méi Ressourcen fir ze lafen wéi néideg fir Logbicher ze späicheren. ElasticSearch ass e super Motor wann Dir eng gutt Volltext Log Sich braucht (wat ech net mengen datt Dir wierklech braucht), awer ech froe mech firwat et den de facto Standard Logmotor gouf. Seng Ernärungsleistung kombinéiert mat Logstash huet eis Probleemer och ënner zimlech liichte Lasten ginn an eis erfuerdert méi a méi RAM an Disk Space ze addéieren. Als Datebank ass Clickhouse besser wéi ElasticSearch aus de folgende Grënn:

  • SQL Dialekt Ënnerstëtzung;
  • De beschte Grad vun der Kompressioun vu gespäicherten Donnéeën;
  • Ënnerstëtzung fir Regex reegelméissegen Ausdrock Sichen amplaz Volltext Sich;
  • Verbesserte Ufroeplang a méi héich Gesamtleistung.

De Moment ass de gréisste Problem deen entstinn wann Dir ClickHouse mat ELK vergläicht ass de Mangel u Léisunge fir d'Logbicher eropzelueden, souwéi de Mangel u Dokumentatioun an Tutorials iwwer dëst Thema. Ausserdeem kann all Benotzer ELK mat der Digital Ocean Handbuch konfiguréieren, wat ganz wichteg ass fir déi séier Ëmsetzung vun esou Technologien. Et gëtt eng Datebankmotor, awer et gëtt nach kee Filebeat fir ClickHouse. Jo, et ass do fléissend an e System fir mat Logbicher ze schaffen Loghaus, et gëtt en Tool clicktail fir Logdateien an ClickHouse anzeginn, awer all dat brauch méi Zäit. Wéi och ëmmer, ClickHouse ass ëmmer nach de Leader wéinst senger Einfachheet, sou datt och Ufänger et einfach installéiere kënnen an et an nëmmen 10 Minutten voll funktionell benotzen.

Am léifsten minimalistesch Léisungen, hunn ech probéiert FluentBit ze benotzen, e Tool fir Logbicher mat ganz wéineg Erënnerung ze verschécken, zesumme mam ClickHouse, wärend ech probéiert de Kafka ze vermeiden. Wéi och ëmmer, kleng Inkompatibilitéite mussen ugeschwat ginn, wéi z Datum Format Problemerier dëst ouni d'Proxy Layer gemaach ka ginn, déi d'Donnéeë vu FluentBit op ClickHouse konvertéiert.

Als Alternativ kann Kibana als ClickHouse Backend benotzt ginn grafana. Vu wat ech verstinn, kann dëst Leeschtungsprobleemer verursaachen wann Dir eng grouss Zuel vun Datepunkte mécht, besonnesch mat eelere Versioune vu Grafana. Mir hunn dat nach net bei Qwintry probéiert, awer Reklamatiounen doriwwer schéngen vun Zäit zu Zäit um ClickHouse Support Channel op Telegram.

Ersatz vu Google Big Query an Amazon RedShift (Léisung fir grouss Firmen)

Den ideale Benotzungsfall fir BigQuery ass 1 TB vun JSON Daten ze lueden an analytesch Ufroen drop ze lafen. Big Query ass en exzellent Produkt deem seng Skalierbarkeet net iwwerschätzt ka ginn. Dëst ass vill méi komplex Software wéi ClickHouse, déi op engem internen Cluster leeft, awer aus der Siicht vum Client huet et vill gemeinsam mat ClickHouse. BigQuery ka séier deier ginn wann Dir ufänkt pro SELECT ze bezuelen, also ass et eng richteg SaaS Léisung mat all senge Virdeeler an Nodeeler.

ClickHouse ass déi bescht Wiel wann Dir vill computationally deier Ufroen leeft. Wat méi SELECT Ufroen Dir all Dag laaft, wat et méi Sënn mécht Big Query duerch ClickHouse ze ersetzen, well sou en Ersatz kann Iech Dausende vun Dollar spueren wann et ëm vill Terabytes vun Daten veraarbecht gëtt. Dëst gëllt net fir gespäichert Donnéeën, déi zimmlech bëlleg sinn ze veraarbecht a Big Query.

An engem Artikel vum Altinity Matgrënner Alexander Zaitsev "Schalten op ClickHouse" schwätzt iwwer d'Virdeeler vun esou enger DBMS Migratioun.

TimescaleDB Ersatz

TimescaleDB ass eng PostgreSQL Extensioun déi d'Aarbecht mat Zäitreihe Zäitreihe an enger regulärer Datebank optiméiert (https://docs.timescale.com/v1.0/introduction, https://habr.com/ru/company/zabbix/blog/458530/).

Och wann ClickHouse net e seriöse Konkurrent an der Nisch vun der Zäitreihe ass, awer Kolumnstruktur a Vektor Ufro Ausféierung, ass et vill méi séier wéi TimescaleDB an de meeschte Fäll vun der analytescher Ufroveraarbechtung. Zur selwechter Zäit ass d'Performance fir Batchdaten aus ClickHouse z'empfänken ongeféier 3 Mol méi héich, an et benotzt och 20 Mol manner Disk Space, wat wierklech wichteg ass fir grouss Bänn vun historeschen Donnéeën ze veraarbecht: 
https://www.altinity.com/blog/ClickHouse-for-time-series.

Am Géigesaz zu ClickHouse ass deen eenzege Wee fir e bësse Plaatz an TimescaleDB ze spueren ass ZFS oder ähnlech Dateisystemer ze benotzen.

Upëff Updates fir ClickHouse wäerte méiglecherweis Delta-Kompressioun aféieren, wat et nach méi gëeegent mécht fir d'Veraarbechtung an d'Späichere vun Zäitseriedaten. TimescaleDB kann e bessere Choix sinn wéi Bare ClickHouse an de folgende Fäll:

  • kleng Installatiounen mat ganz wéineg RAM (<3 GB);
  • eng grouss Zuel vu klenge INSERT datt Dir net zu grousse Fragmenter zu Buffer wëllt;
  • besser Konsequenz, Uniformitéit an ACID Ufuerderunge;
  • PostGIS Ënnerstëtzung;
  • bäitrieden mat existente PostgreSQL Dëscher, well Timescale DB am Wesentlechen PostgreSQL ass.

Konkurrenz mat Hadoop a MapReduce Systemer

Hadoop an aner MapReduce Produkter kënne vill komplex Berechnungen ausféieren, awer si tendéieren mat grousse latencies ze lafen. ClickHouse fixéiert dëse Problem andeems d'Terabytes vun Daten veraarbecht a bal direkt Resultater produzéiert. Also ass ClickHouse vill méi effektiv fir séier, interaktiv analytesch Fuerschung ze maachen, wat fir Datewëssenschaftler interessant sollt sinn.

Konkurrenz mat Pinot an Druid

ClickHouse's nootste Konkurrenten si kolumnär, linear skalierbar Open Source Produkter Pinot an Druid. Eng exzellent Aarbecht fir dës Systemer ze vergläichen ass am Artikel publizéiert Romana Leventova vum 1. Februar 2018

Benotzt Clickhouse als Ersatz fir ELK, Big Query an TimescaleDB

Dësen Artikel brauch Aktualiséierung - et seet datt ClickHouse net UPDATE an DELETE Operatiounen ënnerstëtzt, wat net ganz richteg ass fir déi lescht Versiounen.

Mir hunn net vill Erfarung mat dësen Datenbanken, awer ech hunn d'Komplexitéit vun der Infrastruktur net gär, déi erfuerderlech ass fir Druid a Pinot ze lafen - et ass eng ganz Rëtsch vu bewegt Deeler ëmgi vu Java op alle Säiten.

Druid a Pinot sinn Apache Inkubator Projeten, de Fortschrëtt vun deenen ass am Detail vun Apache op seng GitHub Projet Säiten ofgedeckt. Pinot erschéngt am Inkubator am Oktober 2018, an Druid gouf 8 Méint virdrun gebuer - am Februar.

De Mangel un Informatioun iwwer wéi d'AFS funktionnéiert stellt mech e puer, a vläicht domm, Froen op. Ech froe mech ob d'Pinot Autoren gemierkt hunn datt d'Apache Foundation méi favorabel géint Druid ass, an ob dës Haltung zum Konkurrent e Gefill vu Näid verursaacht huet? Wäert dem Druid seng Entwécklung verlangsamen an dem Pinot seng Entwécklung beschleunegen, wann d'Backer vun der fréierer op eemol fir déi lescht interesséiert ginn?

Nodeeler vun ClickHouse

Immaturitéit: Selbstverständlech ass dëst nach ëmmer keng langweileg Technologie, awer op jidde Fall gëtt näischt wéi dëst an anere columnar DBMSs observéiert.

Kleng Inserts funktionnéieren net gutt mat héijer Geschwindegkeet: Inserts mussen a méi grouss Stécker opgedeelt ginn, well d'Leeschtung vu klenge Inserts degradéiert proportional zu der Unzuel vun de Sailen an all Zeil. Dëst ass wéi ClickHouse Daten op Disk späichert - all Kolonn stellt 1 Datei oder méi duer, also fir 1 Zeil mat 100 Kolonnen anzeginn, musst Dir op d'mannst 100 Dateien opmaachen a schreiwen. Dofir erfuerdert Puffer-Inserts e Mëttelmann (ausser wann de Client selwer Puffering ubitt) - normalerweis Kafka oder eng Aart vu Schlaangmanagementsystem. Dir kënnt och de Buffer Table Engine benotze fir spéider grouss Stécker vun Daten an MergeTree Dëscher ze kopéieren.

Dësch Bäiträg sinn duerch Server d'RAM limitéiert, mä op d'mannst si do! Zum Beispill, Druid a Pinot hu guer net sou Verbindungen, well se schwéier sinn direkt an verdeelt Systemer ëmzesetzen, déi net ënnerstëtzen grouss Stécker vun Daten tëscht Wirbelen.

Conclusiounen

Mir plangen d'ClickHouse an de kommende Joren wäit an Qwintry ze benotzen, well dës DBMS en exzellente Gläichgewiicht vu Leeschtung, nidderegen Overhead, Skalierbarkeet an Einfachheet bitt. Ech sinn zimlech sécher datt et séier ufänkt ze verbreeden wann d'ClickHouse Gemeinschaft mat méi Weeër kënnt fir et a kleng bis mëttelgrouss Installatiounen ze benotzen.

Puer Annoncen 🙂

Merci datt Dir bei eis bleift. Hutt Dir eis Artikelen gär? Wëllt Dir méi interessant Inhalt gesinn? Ënnerstëtzt eis andeems Dir eng Bestellung maacht oder Frënn empfeelt, Cloud VPS fir Entwéckler vun $ 4.99, en eenzegaartegen Analog vun Entry-Level Serveren, dee vun eis fir Iech erfonnt gouf: Déi ganz Wourecht iwwer VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps vun $19 oder wéi een e Server deelt? (verfügbar mat RAID1 an RAID10, bis zu 24 Kären a bis zu 40GB DDR4).

Dell R730xd 2 Mol méi bëlleg an Equinix Tier IV Daten Zentrum zu Amsterdam? Nëmmen hei 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV vun $199 an Holland! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - vun $99! Liest iwwer Wéi bauen ech Infrastructure Corp. Klass mat der Benotzung vun Dell R730xd E5-2650 v4 Serveren Wäert 9000 Euro fir e Penny?

Source: will.com

Setzt e Commentaire