Kā mēs pārbaudījām vairākas laikrindu datu bāzes

Kā mēs pārbaudījām vairākas laikrindu datu bāzes

Dažu pēdējo gadu laikā laikrindu datu bāzes no neparastas lietas (ļoti specializētas, ko izmanto vai nu atvērtās uzraudzÄ«bas sistēmās (un piesaistÄ«tas konkrētiem risinājumiem) vai lielo datu projektos) ir kļuvuÅ”as par "patēriņa produktu". Krievijas Federācijas teritorijā par to Ä«paÅ”s paldies jāsaka Yandex un ClickHouse. LÄ«dz Å”im brÄ«dim, ja jums bija jāuzglabā liels daudzums laikrindu datu, jums vai nu bija jāsamierinās ar nepiecieÅ”amÄ«bu izveidot milzÄ«gu Hadoop steku un to uzturēt, vai arÄ« sazināties ar katrai sistēmai atseviŔķiem protokoliem.

Var Ŕķist, ka 2019. gadā raksts, par kuru ir vērts izmantot TSDB, sastāvēs tikai no viena teikuma: "vienkārÅ”i izmantojiet ClickHouse". Bet... ir nianses.

PatieŔām, ClickHouse aktÄ«vi attÄ«stās, lietotāju bāze aug, un atbalsts ir ļoti aktÄ«vs, bet vai esam kļuvuÅ”i par ClickHouse publisko panākumu Ä·Ä«lniekiem, kas ir aizēnojuÅ”i citus, iespējams, efektÄ«vākus/uzticamākus risinājumus?

PagājuŔā gada sākumā sākām pārstrādāt savu monitoringa sistēmu, kuras laikā radās jautājums par datu glabāŔanai piemērotas datu bāzes izvēli. Es gribu Å”eit runāt par Ŕīs izvēles vēsturi.

Problēmas paziņojums

Pirmkārt, nepiecieÅ”ams priekÅ”vārds. Kāpēc mums vispār ir vajadzÄ«ga sava uzraudzÄ«bas sistēma un kā tā tika izveidota?

Atbalsta pakalpojumus sākām sniegt 2008. gadā, un līdz 2010. gadam kļuva skaidrs, ka ir grūti apkopot datus par klientu infrastruktūrā notiekoŔajiem procesiem ar tobrīd pastāvoŔajiem risinājumiem (runa ir par Dievs piedod, Kaktusi, Zabbix un topoŔais grafīts).

Mūsu galvenās prasības bija:

  • atbalsts (tolaik - desmitiem, bet nākotnē - simtiem) klientu vienas sistēmas ietvaros un vienlaikus centralizētas brÄ«dinājumu pārvaldÄ«bas sistēmas klātbÅ«tne;
  • brÄ«dinājuma sistēmas pārvaldÄ«bas elastÄ«ba (brÄ«dinājumu eskalācija starp dežurantiem, grafiks, zināŔanu bāze);
  • spēja dziļi detalizēt grafikus (Zabbix tolaik grafikus renderēja attēlu veidā);
  • liela datu apjoma ilgstoÅ”a uzglabāŔana (gadu vai ilgāk) un iespēja tos ātri izgÅ«t.

Šajā rakstā mūs interesē pēdējais punkts.

Runājot par uzglabāŔanu, prasības bija Ŕādas:

  • sistēmai jādarbojas ātri;
  • vēlams, lai sistēmai bÅ«tu SQL interfeiss;
  • sistēmai jābÅ«t stabilai, un tai ir jābÅ«t aktÄ«vai lietotāju bāzei un atbalstam (kad mēs saskārāmies ar nepiecieÅ”amÄ«bu atbalstÄ«t tādas sistēmas kā MemcacheDB, kas vairs netika izstrādāta, vai MooseFS izplatÄ«tā krātuve, kuras kļūdu izsekotājs tika glabāts Ä·Ä«nieÅ”u valodā: mēs atkārtojam Å”o stāstu mÅ«su projektam nevēlējās);
  • atbilstÄ«ba KLP teorēmai: Konsekvence (obligāti) - datiem jābÅ«t aktuāliem, nevēlamies, lai brÄ«dinājumu vadÄ«bas sistēma nesaņem jaunus datus un izspļauj brÄ«dinājumus par datu neienākÅ”anu visiem projektiem; Partition Tolerance (obligāts) - mēs nevēlamies iegÅ«t Split Brain sistēmu; PieejamÄ«ba (nav kritiska, ja ir aktÄ«va replika) - varam paÅ”i pārslēgties uz rezerves sistēmu avārijas gadÄ«jumā, izmantojot kodu.

Savādi, bet tajā laikā MySQL mums izrādÄ«jās ideāls risinājums. MÅ«su datu struktÅ«ra bija ārkārtÄ«gi vienkārÅ”a: servera ID, skaitÄ«tāja ID, laikspiedols un vērtÄ«ba; ātru karsto datu iztverÅ”anu nodroÅ”ināja liels bufera baseins, bet vēsturisko datu iztverÅ”anu nodroÅ”ināja SSD.

Kā mēs pārbaudījām vairākas laikrindu datu bāzes

Tādējādi mēs panācām jaunu divu nedēļu datu paraugu ar detalizētu informāciju lÄ«dz sekundēm 200 ms pirms datu pilnÄ«gas renderÄ“Å”anas, un mēs dzÄ«vojām Å”ajā sistēmā diezgan ilgu laiku.

Tikmēr pagāja laiks un pieauga datu apjoms. Līdz 2016. gadam datu apjomi sasniedza desmitiem terabaitu, kas bija ievērojami izdevumi saistībā ar īrētu SSD krātuvi.

LÄ«dz tam laikam jau bija aktÄ«vi izplatÄ«juŔās kolonnu datu bāzes, par kurām sākām aktÄ«vi domāt: kolonnu datubāzēs dati tiek glabāti, kā noprotat, kolonnās, un, aplÅ«kojot mÅ«su datus, ir viegli redzēt lielu dublikātu skaits, kas varētu bÅ«t Ja izmantojat kolonnu datu bāzi, saspiest to, izmantojot saspieÅ”anu.

Kā mēs pārbaudījām vairākas laikrindu datu bāzes

Tomēr uzņēmuma atslēgas sistēma turpināja darboties stabili, un es negribēju eksperimentēt ar pāreju uz kaut ko citu.

2017. gadā Percona Live konferencē Sanhosē Clickhouse izstrādātāji, iespējams, pirmo reizi paziņoja par sevi. No pirmā acu uzmetiena sistēma bija gatava ražoÅ”anai (labi, Yandex.Metrica ir skarba ražoÅ”anas sistēma), atbalsts bija ātrs un vienkārÅ”s, un, pats galvenais, darbÄ«ba bija vienkārÅ”a. KopÅ” 2018. gada esam sākuÅ”i pārejas procesu. Taču lÄ«dz tam laikam bija daudz ā€œpieauguÅ”oā€ un laika pārbaudÄ«tu TSDB sistēmu, un mēs nolēmām veltÄ«t ievērojamu laiku un salÄ«dzināt alternatÄ«vas, lai pārliecinātos, ka Clickhouse nav alternatÄ«vu risinājumu atbilstoÅ”i mÅ«su prasÄ«bām.

Papildus jau noteiktajām uzglabāŔanas prasībām ir parādījuŔās jaunas:

  • jaunajai sistēmai ir jānodroÅ”ina vismaz tāda pati veiktspēja kā MySQL ar tādu paÅ”u aparatÅ«ras daudzumu;
  • jaunās sistēmas glabāŔanai vajadzētu aizņemt ievērojami mazāk vietas;
  • DBVS joprojām ir jābÅ«t viegli pārvaldāmai;
  • Mainot DBVS gribēju aplikāciju mainÄ«t minimāli.

Kādas sistēmas mēs sākām apsvērt?

Apache Hive/Apache Impala
Vecs, kaujās pārbaudÄ«ts Hadoop steks. BÅ«tÄ«bā tas ir SQL interfeiss, kura pamatā ir datu glabāŔana vietējos formātos HDFS.

Plusi.

  • Ar stabilu darbÄ«bu datu mērogoÅ”ana ir ļoti vienkārÅ”a.
  • Ir kolonnu risinājumi datu glabāŔanai (mazāk vietas).
  • Ä»oti ātra paralēlu uzdevumu izpilde, kad ir pieejami resursi.

MÄ«nusi

  • Tas ir Hadoop, un to ir grÅ«ti izmantot. Ja mēs neesam gatavi uzņemt gatavu risinājumu mākonÄ« (un mēs neesam gatavi izmaksu ziņā), visa kaudze bÅ«s jāsaliek un jāatbalsta ar administratoru rokām, un mēs patieŔām nevēlamies Å”is.
  • Dati tiek apkopoti tieŔām ātri.

Tomēr:

Kā mēs pārbaudījām vairākas laikrindu datu bāzes

Ātrums tiek sasniegts, mērogojot skaitļoÅ”anas serveru skaitu. VienkārÅ”i sakot, ja mēs esam liels uzņēmums, kas nodarbojas ar analÄ«zi, un uzņēmumam ir ļoti svarÄ«gi apkopot informāciju pēc iespējas ātrāk (pat par lielu skaitļoÅ”anas resursu izmantoÅ”anu), tā var bÅ«t mÅ«su izvēle. Taču mēs nebijām gatavi pavairot aparatÅ«ras parku, lai paātrinātu uzdevumu izpildi.

Druīds/Pinot

Konkrēti ir daudz vairāk par TSDB, bet atkal par Hadoop steku.

Ir lielisks raksts, kurā tiek salīdzināti Druid un Pinot plusi un mīnusi pret ClickHouse .

Dažos vārdos: Druīds/Pinot izskatās labāk nekā Clickhouse gadījumos, kad:

  • Jums ir neviendabÄ«gs datu raksturs (mÅ«su gadÄ«jumā mēs ierakstām tikai servera metrikas laikrindas, un patiesÄ«bā Ŕī ir viena tabula. Bet var bÅ«t arÄ« citi gadÄ«jumi: aprÄ«kojuma laikrindas, ekonomiskās laikrindas utt. ā€” katra ar sava struktÅ«ra, kas jāapkopo un jāapstrādā).
  • Turklāt Å”o datu ir daudz.
  • Parādās un pazÅ«d tabulas un dati ar laikrindām (tas ir, daži datu kopumi tika saņemti, tika analizēti un izdzēsti).
  • Nav skaidru kritēriju, pēc kuriem datus var sadalÄ«t.

Pretējā gadījumā ClickHouse darbojas labāk, un tas ir mūsu gadījums.

NoklikŔķiniet uz Māja

  • SQL lÄ«dzÄ«gi
  • Viegli pārvaldÄ«t.
  • Cilvēki saka, ka tas darbojas.

Tiek iekļauts testÄ“Å”anas sarakstā.

InfluxDB

Ārzemju alternatīva ClickHouse. No mīnusiem: Augsta pieejamība ir tikai komerciālajā versijā, taču tā ir jāsalīdzina.

Tiek iekļauts testÄ“Å”anas sarakstā.

Cassandra

No vienas puses, mēs zinām, ka to izmanto, lai saglabātu metrikas laikrindas tādās uzraudzības sistēmās kā, piemēram, SignalFX vai OkMeter. Tomēr ir specifika.

Cassandra nav kolonnu datubāze tradicionālajā izpratnē. Tas vairāk izskatās pēc rindas skata, taču katrā rindā var bÅ«t atŔķirÄ«gs kolonnu skaits, tādējādi atvieglojot kolonnu skata organizÄ“Å”anu. Å ajā ziņā ir skaidrs, ka ar 2 miljardu kolonnu ierobežojumu ir iespējams saglabāt dažus datus kolonnās (un tajās paŔās laikrindās). Piemēram, MySQL ir 4096 kolonnu ierobežojums, un, mēģinot darÄ«t to paÅ”u, ir viegli paklupt uz kļūdu ar kodu 1117.

Cassandra dzinējs ir vērsts uz lielu datu apjomu glabāŔanu sadalÄ«tā sistēmā bez galvenā, un iepriekÅ” minētā Cassandra CAP teorēma ir vairāk par AP, tas ir, par datu pieejamÄ«bu un izturÄ«bu pret sadalÄ«Å”anu. Tādējādi Å”is rÄ«ks var bÅ«t lielisks, ja jums ir nepiecieÅ”ams tikai rakstÄ«t Å”ajā datubāzē un reti lasÄ«t no tās. Un Å”eit ir loÄ£iski izmantot Cassandra kā ā€œaukstoā€ krātuvi. Tas ir, kā ilgtermiņa, uzticama vieta liela apjoma vēsturisko datu glabāŔanai, kas ir reti nepiecieÅ”ami, bet vajadzÄ«bas gadÄ«jumā tos var izgÅ«t. Tomēr pilnÄ«bas labad mēs arÄ« to pārbaudÄ«sim. Bet, kā jau teicu iepriekÅ”, nav vēlmes aktÄ«vi pārrakstÄ«t izvēlētā datu bāzes risinājuma kodu, tāpēc mēs to testēsim nedaudz ierobežoti - nepielāgojot datu bāzes struktÅ«ru Cassandra specifikai.

Prometejs

Nu, ziņkārÄ«bas pēc nolēmām pārbaudÄ«t Prometheus krātuves veiktspēju ā€“ lai saprastu, vai esam ātrāki vai lēnāki par paÅ”reizējiem risinājumiem un par cik.

TestÄ“Å”anas metodika un rezultāti

Tātad, mēs pārbaudÄ«jām 5 datu bāzes Ŕādās 6 konfigurācijās: ClickHouse (1 mezgls), ClickHouse (izplatÄ«ta tabula 3 mezgliem), InfluxDB, Mysql 8, Cassandra (3 mezgli) un Prometheus. Pārbaudes plāns ir Ŕāds:

  1. augÅ”upielādēt vēsturiskos datus par nedēļu (840 miljoni vērtÄ«bu dienā; 208 tÅ«kstoÅ”i metrikas);
  2. mēs Ä£enerējam ierakstÄ«Å”anas slodzi (tika ņemti vērā 6 slodzes režīmi, skatÄ«t zemāk);
  3. Paralēli ierakstÄ«Å”anai mēs periodiski veicam atlasi, atdarinot ar diagrammām strādājoÅ”a lietotāja pieprasÄ«jumus. Lai lietas pārāk nesarežģītu, mēs atlasÄ«jām datus 10 metrikām (tieÅ”i tik daudz ir CPU diagrammā) uz nedēļu.

Mēs ielādējam, atdarinot mÅ«su uzraudzÄ«bas aÄ£enta darbÄ«bu, kas nosÅ«ta vērtÄ«bas katram rādÄ«tājam reizi 15 sekundēs. Tajā paŔā laikā mēs esam ieinteresēti dažādos veidos:

  • kopējais metriku skaits, kurās tiek ierakstÄ«ti dati;
  • intervāls vērtÄ«bu nosÅ«tÄ«Å”anai uz vienu metriku;
  • partijas lielums.

Par partijas lielumu. Tā kā nav ieteicams gandrÄ«z visas mÅ«su eksperimentālās datu bāzes ielādēt ar atseviŔķiem ieliktņiem, mums bÅ«s nepiecieÅ”ams relejs, kas apkopo ienākoÅ”os rādÄ«tājus un sagrupē tos grupās un ieraksta datu bāzē kā pakeÅ”u ievietojumu.

Turklāt, lai labāk saprastu, kā pēc tam interpretēt saņemtos datus, iedomāsimies, ka mēs ne tikai nosÅ«tām virkni metrikas, bet arÄ« metrika ir sakārtota serveros ā€” 125 metrika uz serveri. Å eit serveris ir vienkārÅ”i virtuāla entÄ«tija ā€“ lai saprastu, ka, piemēram, 10000 80 metrikas atbilst aptuveni XNUMX serveriem.

Un Å”eit, ņemot vērā to visu, ir mÅ«su 6 datu bāzes rakstÄ«Å”anas ielādes režīmi:

Kā mēs pārbaudījām vairākas laikrindu datu bāzes

Å eit ir divi punkti. Pirmkārt, Cassandra Å”ie partiju izmēri izrādÄ«jās pārāk lieli, tur mēs izmantojām vērtÄ«bas 50 vai 100. Un, otrkārt, tā kā Prometheus darbojas stingri vilkÅ”anas režīmā, t.i. tas pats iet un apkopo datus no metrikas avotiem (un pat pushgateway, neskatoties uz nosaukumu, bÅ«tiski nemaina situāciju), atbilstoŔās slodzes tika ieviestas, izmantojot statisko konfigurāciju kombināciju.

Pārbaudes rezultāti ir Ŕādi:

Kā mēs pārbaudījām vairākas laikrindu datu bāzes

Kā mēs pārbaudījām vairākas laikrindu datu bāzes

Kā mēs pārbaudījām vairākas laikrindu datu bāzes

Kas ir vērts atzÄ«mēt: fantastiski ātri paraugi no Prometheus, Å”ausmÄ«gi lēni sempli no Cassandra, nepieņemami lēni paraugi no InfluxDB; Ieraksta ātruma ziņā ClickHouse uzvarēja visus, un Prometheus konkursā nepiedalās, jo pats taisa ieliktņus un mēs neko nemērām.

Kā rezultātā,: ClickHouse un InfluxDB sevi parādīja kā labākos, bet klasteru no Influx var uzbūvēt tikai uz Enterprise versijas bāzes, kas maksā naudu, savukārt ClickHouse neko nemaksā un tiek ražots Krievijā. Loģiski, ka ASV izvēle, iespējams, ir par labu inInfluxDB, un pie mums tā ir par labu ClickHouse.

Avots: www.habr.com

Pievieno komentāru