Me arutame Zabbixi ja TimescaleDB andmebaasi koostööd taustal. NÀitame, kuidas alustada nullist ja kuidas migreerida PostgreSQL-ilt. Toome ka vÔrdlevad jÔudlustestid kahe konfiguratsiooni kohta.

HighLoad++ Siberia 2019. Saal "Tomsk". 24. juuni, 16:00. Teesid ja . JĂ€rgmine HighLoad++ konverents toimub 6. ja 7. aprillil 2020. aastal Peterburis. Ăksikasjad ja piletid .
Andrei Gushchin (edasi â AG): â Olen ZABBIX-i (edasi â "Zabbix") tehnilise toe insener ning treener. Olen töötanud tehnilises toetuses ĂŒle 6 aasta ja olen otseselt kokku puutunud jĂ”udlusega. TĂ€na rÀÀgin sellest, millist jĂ”udlust TimescaleDB vĂ”ib anda, vĂ”rreldes tavalise PostgreSQL 10-ga. Toomega ka mĂ”ningane sissejuhatus â kuidas see kĂ”ik toimib.
Peamised jÔudlusvÀljakutsed: andmete kogumisest kuni puhastamiseni
Alustame sellest, et olemas on teatud jĂ”udlusvĂ€ljakutsed, millega igas sĂŒsteemis jĂ€lgimine silmitsi seisab. Esimene jĂ”udlusvĂ€ljakutse on kiire andmete kogumine ja töötlemine.

Hea jĂ€lgimissĂŒsteem peab kiiresti ja Ă”igeaegselt saama kĂ”ik andmed, töötlema neid vastavalt alarmeerimise vĂ€ljenditele, see tĂ€hendab töötlema neid teatud kriteeriumide alusel (erinevates sĂŒsteemides on see erinev) ja salvestama andmebaasi, et neid hiljem kasutada.

Teine jÔudlusvÀljakutse on ajaloo salvestamine. Andmeid tuleb salvestada andmebaasis ning millele tuleb tagada kiire ja mugav juurdepÀÀs nendele mÔÔdikutele, mis on kogutud mingil ajavahemikul. KÔige tÀhtsam on, et need andmed oleks mugavalt kÀttesaadavad, et neid kasutada aruannetes, graafikutes, alarmeerimises, mingites lÀvendites, teavitustes jne.

Kolmas jĂ”udlusvĂ€ljakutse on ajaloo puhastamine, st kui tuleb pĂ€ev, mil ei ole tarvis sĂ€ilitada teatud ĂŒksikasjalikke mÔÔdikuid, mis on kogutud 5 aasta jooksul (isegi kuude vĂ”i kahe kuu pĂ€rast). MĂ”ned vĂ”rgu sĂ”lmed on eemaldatud vĂ”i mĂ”ned hostid, mÔÔdikud ei ole enam vajalikud, kuna need on ajale jalgu jÀÀnud ja lĂ”petanud kogumise. KĂ”ik see tuleb puhastada, et teie andmebaas ei kasvaks liiga suureks. Ăldiselt on ajaloo puhastamine sageli tĂ”sine proovikivi andmehoidla jaoks â see mĂ”jutab sageli jĂ”udlust oluliselt.
Kuidas lahendada vahemÀluprobleeme?
Ma rÀÀgin nĂŒĂŒd konkreetselt Zabbixist. Zabbixis on esimese ja teise kutsungiga seotud probleemid lahendatud vahemĂ€lu abil.

Andmete kogumine ja töötlemine â me kasutame kĂ”ikide nende andmete salvestamiseks mĂ€lupilti. NĂŒĂŒd rÀÀgitakse neist andmetest lĂ€hemalt.
Samuti on andmebaasi poolel olemas teatud vahemĂ€lu peamiste valikute jaoks â graafikute ja muu suhtes.
VahemÀlu Zabbix-serveri poolel: meil on ConfigurationCache, ValueCache, HistoryCache, TrendsCache. Mis need on?

ConfigurationCache on peamine vahemÀlu, kus me salvestame mÔÔdikud, hostid, andmeelemendid, triggrid; kÔik, mis on vajalik andmete eeltöötlemiseks, andmete kogumiseks, millistest hostidest andmeid koguda ja kui tihti. KÔik see salvestatakse ConfigurationCache'i, et mitte minna andmebaasi, et mitte luua liigseid pÀringuid. Serveri kÀivitamisel vÀrskendame seda vahemÀlu (loome) ja vÀrskendame seda perioodiliselt (sÔltuvalt konfiguratsiooni seadistustest).

VahemÀlu Zabbixis. Andmete kogumine
Siin on skeem piisavalt suur:

Peamised skeemis on need kogujad:

Need on kogumise protsessid, erinevad pollerid, mis vastutavad erinevate kogumiste tĂŒĂŒpide eest. Need koguvad andmeid icmp, ipmi ja erinevate protokollide kaudu ning edastavad need eeltöötlemiseks.
Eelprotsessimise Ajaloo vahemÀlu
Samuti, kui meil on arvutatud andmeelemendid (kes on Zabbixiga tuttav, see teab), st arvutatud, agregatiivsed andmeelemendid, siis vĂ”tame need otse ValueCache'ist. Kuidas see tĂ€idetakse, rÀÀgin hiljem. KĂ”ik need kogujad kasutavad ConfigurationCache'i, et saada oma ĂŒlesandeid ja edastavad need edasi eeltöötlemiseks.

Eeltöötlemine kasutab samuti ConfigurationCache'i, et saada eeltöötlemise samme, töötleb neid andmeid erinevate meetoditega. Alates versioonist 4.2 on see meil vĂ€lja viidud proksisse. See on vĂ€ga mugav, kuna eeltöötlemine on ĂŒsna töömahukas operatsioon. Ja kui teil on vĂ€ga suur Zabbix, kus on palju andmeelemente ja kĂ”rge kogumise sagedus, siis see hĂ”lbustab tööd oluliselt.
Seega, pÀrast seda, kui me oleme andmeid mingil moel eeltöötlemise abil töötlenud, salvestame need HistoryCache'i, et neid hiljem töödelda. Sellega lÔpeb andmete kogumine. Liigume peamise protsessi juurde.
History syncer töö

Peamine protsess «Zabbixis» (kuna see on monoliitne arhitektuur) on History syncer. See on peamine protsess, mis tegeleb iga andmeelemendi atomaarse töötlemisega, st iga vÀÀrtusega:
- saab vÀÀrtuse (ta vÔtab selle HistoryCache'ist);
- kontrollib Configuration syncer'it: kas on olemas mĂ”ni triggereid arvutamiseks â arvutab need vĂ€lja;
kui on â loob sĂŒndmused, loob eskalatsiooni, et luua teavitamine, kui see on vajalik konfiguratsiooni jĂ€rgi; - salvestab triggereid edasisteks töötlemiseks, aggregatsiooniks; kui aggregaadite viimase tunni jooksul jne, siis see vÀÀrtus talletatakse ValueCache'i, et mitte pöörduda ajaloo tabeli poole; seelĂ€bi tĂ€idetakse ValueCache vajalike andmetega, mis on vajalikud triggereid arvutamiseks, arvutatavate elementide jne;
- edasi kirjutab History syncer kÔik andmed andmebaasi;
- andmebaas kirjutab need kettale â sellega protsess lĂ”petatakse.
Andmebaasid. VahemÀlu
Andmebaasi poolel, kui soovite vaadata diagramme vĂ”i mĂ”nda aruannet sĂŒndmuste kohta, on erinevaid vahemĂ€lusid. Kuid selle ettekande raames ma neist rÀÀkima ei hakka.
MySQL-i jaoks on olemas Innodb_buffer_pool, veel palju erinevaid vahemÀlusid, mida saab ka seadistada.
Aga need on peamised:
- shared_buffers;
- effective_cache_size;
- shared_pool.

Ma olen kÔikide andmebaaside jaoks toonud vÀlja, et on olemas teatud vahemÀlud, mis vÔimaldavad hoida RAM-is andmeid, mida sageli on tulemuste jaoks vaja. Seal on neil oma tehnoloogiad selle jaoks.
Andmebaasi jÔudlusest
Seega on olemas konkurentsikeskkond, st «Zabbix» server kogub andmeid ja salvestab neid. Ta loeb ajaloo jĂ€rgi ka pĂ€rast taaskĂ€ivitamist ValueCache'i tĂ€itmiseks jne. Samuti vĂ”ivad teil olla skriptid ja aruanded, mis kasutavad «Zabbix» API-d, mis pĂ”hineb veebiliidesele. «Zabbix» API siseneb andmebaasi ja saab vajalikud andmed diagrammide, aruannete vĂ”i mingite sĂŒndmuste, viimaste probleemide loendi saamiseks.

Samuti on vÀga populaarne lahendus visualiseerimiseks Grafana, mida meie kasutajad kasutavad. See oskab otse sisse minna nii lÀbi «Zabbix» API kui ka andmebaasi. See loob samuti teatud konkurentsi andmete hankimise osas: on vajalik tÀiendav, hea andmebaasi seadistus, et vastata kiirele tulemuste vÀljastamisele ja testimisele.

Ajaloo puhastamine. Zabbixis on Housekeeper.
Kolmas kĂ€sk, mida kasutatakse «Zabbixis», on ajaloo puhastamine Housekeeperi abil. «Housekeeper» jĂ€rgib kĂ”iki seadistusi, see tĂ€hendab, et meie andmeelementides on nĂ€idatud, kui kaua (pĂ€evades) andmeid sĂ€ilitada, kui kaua sĂ€ilitada trende ja muutuste dĂŒnaamikat.
Ma ei maininud TrendCache'i, mida me reaalajas arvutame: andmed sisenevad, me kogume need tunni kaupa (peamiselt on need arvud viimase tunni kohta), keskmine / minimaalne hulk ja salvestame need ĂŒks kord tunnis muutuste dĂŒnaamikatabelisse («Trendid»). «Housekeeper» kĂ€ivitatakse ja eemaldab tavaliste selektide abil andmed andmebaasist, mis ei ole alati efektiivne.
Kuidas mÔista, et see ei ole efektiivne? VÔite siseprotsesside jÔudluse graafikutel nÀha sellist pilti:

Teie Ajaloo sĂŒnkroniseerija on pidevalt hĂ”ivatud (punane graafik). Ja «oranĆŸÂ» graafik, mis jookseb peal. See on «Housekeeper», mis kĂ€ivitub ja ootab andmebaasist, millal see eemaldab kĂ”ik read, mille ta on mÀÀranud.
VĂ”tame mingi Item ID: viimase 5000 kustutamine; loomulikult indekseid mööda. Kuid tavaliselt on andmekogum piisavalt suur â andmebaas loeb ikkagi selle kettalt vĂ€lja ja tĂ”stab selle vahemĂ€llu, mis on andmebaasile vĂ€ga kulukas operatsioon. SĂ”ltuvalt selle suurusest vĂ”ib see tekitada teatud jĂ”udlusprobleeme.
«Housekeeperi» saab vĂ€lja lĂŒlitada lihtsa viisi kaudu â meil on tuttav veebiliides. Seaded Administration general (seaded «Housekeeperi» jaoks) keelame sisemise hoolduse sisemise ajaloo ja trendide jaoks. Seega «Housekeeper» ei halda enam seda:

Mida edasi teha? Olete selle vĂ€lja lĂŒlitanud, teie graafikud on joondunud... Millised vĂ”ivad olla edasised probleemid? Mis vĂ”iks aidata?
Partitsioneerimine (sektsioonideks jagamine)
Tavaliselt seadistatakse see igal relatsioonilisel andmebaasil, mida ma loetlesin, erinevalt. MySQL-il on oma tehnoloogia. Kuid ĂŒldiselt on need vĂ€ga sarnased, kui rÀÀkida PostgreSQL 10-st ja MySQL-st. Loomulikult on seal palju sisemisi erinevusi selle asja elluviimisel ja sellel, kuidas see mĂ”jutab jĂ”udlust. Kuid ĂŒldiselt toob uue partitsiooni loomine sageli kaasa teatud probleeme.

SĂ”ltuvalt teie seadistusest (kui palju andmeid luuakse ĂŒhe pĂ€eva jooksul) mÀÀratakse tavaliselt minimaalne aeg â 1 pĂ€ev/partitsioon, ning âtrendidâ, muutuste dĂŒnaamika â 1 kuu/uus partitsioon. See vĂ”ib muutuda, kui teil on vĂ€ga suur seadistus.
Las ma ĂŒtlen kohe seadistuse suuruste kohta: kuni 5000 uut vÀÀrtust sekundis (tuntud kui nvps) loetakse vĂ€ikeseks âseadistuseksâ. Keskmine on vahemikus 5 kuni 25 tuhat vÀÀrtust sekundis. KĂ”ik, mis on ĂŒle selle, on suured ja vĂ€ga suured installatsioonid, mis vajavad vĂ€ga hoolikat andmebaasi seadistamist.
VÀga suurtes installatsioonides vÔib 1 pÀev osutuda mitte optimaalseks. Olen isiklikult nÀinud MySQL-s partitsioone, mis on 40 gigabaiti pÀevas (ja rohkemgi). See on vÀga suur andmemaht, mis vÔib pÔhjustada probleeme. Seda tuleb vÀhendada.
Miks on partitsioneerimine vajalik?
Ma arvan, et kĂ”ik teavad, mida partitsioneerimine tĂ€hendab â see on tabelite jagamine. Sageli on need eraldi failid kettal ja span-kĂŒsimused. See valib ĂŒhe partitsiooni optimaalselt, kui see sobib tavalisse partitsioneerimisse.

Zabbixi puhul kasutatakse, nimelt vahemiku jĂ€rgi, st kasutame ajatemplit (tavaline number, aeg alates ajastu algusest). MÀÀrate pĂ€eva alguse/lĂ”pu, ja see on partitsioon. Seega, kui pöördute kahe pĂ€eva taguste andmete poole, valitakse need andmed andmebaasist kiiremini, sest tuleb ainult ĂŒks fail laadida vahemĂ€llu ja esitada (mitte suur tabel).

Paljud andmebaasid kiirendavad ka andmete sisestamist (sisestamine ĂŒhte laps-tabelisse). Kui ma rÀÀgin abstraktselt, siis see on samuti vĂ”imalik. Partitsioneerimine aitab sageli.
Elasticsearch NoSQL jaoks
Hiljuti, versioonis 3.4, tegevusime NoSQL lahenduste rakendamisega. Lisatud on vĂ”imalus kirjutada Elasticsearchi. Saate kirjutada erinevaid tĂŒĂŒpe: valite â kas kirjutada numbreid vĂ”i mingeid mĂ€rke; meil on string-tekst, logisid saate kirjutada Elasticsearchi⊠Seega, veebiliides hakkab samuti pöörduma Elasticsearchi poole. See töötab teatud juhtudel suurepĂ€raselt, kuid hetkel saab seda kasutada.

TimescaleDB. HĂŒppertabelid
4.4.2 jaoks pöörasime tĂ€helepanu ĂŒhele asjale, nimelt TimescaleDB-le. Mis see on? See on laiendus PostgreSQL jaoks, seega omab see natiivset PostgreSQL liidest. Lisaks vĂ”imaldab see laiendus palju tĂ”husamalt töötada ajaseeriandmetega ja omada automaatset partitsioneerimist. Kuidas see vĂ€lja nĂ€eb:

See on hypertable â selline mĂ”isted on Timescaleâis. See on hĂŒpertabel, mille te loote, ja selles on tĂŒkid (chunk). TĂŒkid â need on partitsioonid, need on laps-tabelid, kui ma ei eksi. See on tĂ”eliselt tĂ”hus.

TimescaleDB ja PostgreSQL
TimescaleDB tootjate kinnituste kohaselt kasutavad nad paremat pÀringute töötlemise algoritmi, eriti insert'id, mis vÔimaldab hoida enam-vÀhem stabiilset jÔudlust suureneva andmehulkade sisestamisel. See tÀhendab, et peale 200 miljoni mÀrke hakkab PostgreSQL tavaliselt tugevalt aeglustuma ja kaotab jÔudluse sisuliselt nulli, samas kui Timescale vÔimaldab sisestada insert'e vÔimalikult tÔhusalt, olenemata andmete hulgast.

Kuidas installida TimescaleDB? See on ĂŒsna lihtne!
Dokumentatsioonis on see kirjas â saab paigaldada pakkidena igasugustele⊠See sĂ”ltub ametlikest PostgreSQL pakkidest. VĂ”ib kĂ€sitsi kompileerida. Nii juhtus, et pidin andmebaasi jaoks kompileerima.

Zabbixis aktiveerime lihtsalt laienduse. Arvan, et need, kes on PostgreSQL'is laiendust kasutanud... Lihtsalt aktiveerite laienduse, loote selle Zabbixi andmebaasi jaoks, mida kasutate.
Ja viimane samm...
TimescaleDB. Ajaloo tabelite migratsioon
On vaja luua hypertable. Selleks on olemas spetsiaalne funktsioon â Create hypertable. Esimeseks parameetriks mÀÀrate tabeli, mis on selle andmebaasi jaoks vajalik (mille jaoks tuleb luua hĂŒpertabel).

Kohandage vĂ€li, mille alusel on vaja luua, ja chunk_time_interval (see on partitsioonide (chunkide) vaheline intervall, mida tuleb kasutada). 86 400 â see on ĂŒks pĂ€ev.
Migrate_data parameeter: kui sisestate true, siis see kannab kÔik praegused andmed eelnevalt loodud chunkidesse.
Kasutasin ise migrate_data - see vĂ”tab korralikult aega, olenevalt teie andmebaasi suurusest. Mul oli ĂŒle ĂŒhe terabaiti â loomine kestis kauem kui tund. MĂ”ningatel juhtudel testimise kĂ€igus kustutasin ajaloolisi andmeid (history_text) ja stringi (history_str), et mitte edasi kanda â need ei olnud mulle tegelikult huvitavad.
Ja viimane vĂ€rskendus, mille teeme meie db_extention'is: me paigaldame timescaledb, et andmebaas ja eriti meie «Zabbix» mĂ”istaks, et on olemas db_extention. See aktiveerib ja kasutab Ă”igesti sĂŒntaksit ja pĂ€ringuid andmebaasi, kasutades juba tarvitusele vĂ”etud «funktsioone», mis on vajalikud TimescaleDB jaoks.
Serveri konfiguratsioon
Kasutasin kahte serverit. Esimene server on piisavalt vĂ€ike virtuaalmasin, 20 protsessorit, 16 gigabaiti mĂ€lu. Seadsin sellele ĂŒles «PostgreSQL» 10.8:

SisendoperatsioonisĂŒsteem oli Debian, failisĂŒsteem â xfs. Teostasime minimaalset seadistamist, et kasutada just seda andmebaasi, vĂ€lja arvatud need, mis kasutab «Zabbix». Samal masinal oli installitud «Zabbix» server, PostgreSQL ja koormuse agendid.

Kasutasin 50 aktiivset agenti, mis kasutasid LoadableModule'i, et kiiresti genereerida erinevaid tulemusi. Need genereerisid ridu, numbreid jne. TĂ€itsin andmebaasi suure hulga andmetega. Algne konfiguratsioon sisaldas 5000 andmeelementi iga hosti kohta, kusjuures iga andmeelement sisaldas kĂ€ivituspunkti â et see oleks tĂ”eline seadistus. MĂ”nikord on isegi ĂŒhe kĂ€ivituspunkti kasutamine vajalik.

Uuendamise intervalli, koormust reguleerisin sellega, et kasutasin mitte ainult 50 agenti (lisades veel), vaid ka dĂŒnaamiliste andmeelementide kaudu ja vĂ€hendasin uuendamise intervalli 4 sekundini.
Tulemuslikkuse test. PostgreSQL: 36 tuhat NVP-d
Esimene kĂ€ivitamine, esimene seadistus oli mul puhtal PostgreSQL 10-l selle riistvara peal (35 tuhat vÀÀrtust sekundis). Ăldiselt, nagu ekraanil nĂ€ha, kestab andmete sisestamine murrangulise aja jooksul â kĂ”ik on hea ja kiire, SSD-d (200 gigabaiti). Ainsaks probleemiks on, et 20 GB tĂ€ituvad ĂŒsna kiiresti.

Edasi on piisavalt palju selliseid diagramme. See on standardne «Zabbix» serveri tulemuslikkuse armatuurlaud.

Esimene diagramm â vÀÀrtuste arv sekundis (sinine, ĂŒleval vasakul), 35 tuhat vÀÀrtust antud juhul. See (ĂŒleval keskel) on koormusprotsesside kogumise osas, ja see (ĂŒleval paremal) â on koormus tĂ€pselt sisemiste protsesside osas: history syncers ja housekeeper, mis siin (alumisel keskel) töödelda piisava aja jooksul.
See all available plans for our services
Performance Test. PostgreSQL: 50,000 NVPs
Next, I increased the load to 50,000 values per second on the same hardware. When loading with 'Housekeeper', 10,000 values were already being written in 2-3 seconds with computation. This is shown in the next screenshot:

'Housekeeper' already starts to interfere with operations, but overall the load on the history syncers is still at 60% (the third graph, top right). HistoryCache is actively filling up during the operation of 'Housekeeper' (bottom left). It was about half a gigabyte, filling up to 20%.

Performance Test. PostgreSQL: 80,000 NVPs
I then increased it to 80,000 values per second:

This was approximately 400,000 data items, 280,000 triggers. The insertion, as you can see, based on the load of the history syncers (there were 30 of them) was already quite high. I then adjusted various parameters: history syncers, cache... On this hardware, the load on the history syncers started to approach maximum capacity, virtually 'on the shelf' - accordingly, HistoryCache went into a very high load:

All this time I monitored all system parameters (how the CPU is used, RAM) and found that disk utilization was at maximum - I reached the disk's maximum capability on this hardware, on this virtual machine. 'Postgres' began to actively flush data at such intensity, and the disk could not keep up with writing and reading...

I took another server, which already had 48 processors and 128 gigabytes of RAM:

I also 'tuned it' - installed 60 History syncers and achieved acceptable performance. In fact, we are not 'on the shelf', but this is probably the performance limit where something needs to be done.
Performance Test. TimescaleDB: 80,000 NVPs
My main task was to use TimescaleDB. Each graph shows a drop:

Need kaovad on andmete migreerimine. PĂ€rast seda on Zabbix-serveris ajaloosĂŒnkronisaatorite laadimisprofiil, nagu nĂ€ete, vĂ€ga tugevalt muutunud. See vĂ”imaldab praktiliselt kolm korda kiiremini andmeid sisestada ja kasutada vĂ€hem HistoryCache'i â seega saadetakse teile andmed Ă”igeaegselt. JĂ€lle, 80 tuhat vÀÀrtust sekundis on piisavalt kĂ”rge kiirus (muidugi mitte Yandexi jaoks). Ăldiselt on see piisavalt suur seadistus ĂŒhel serveril.
PostgreSQL jÔudluse test: 120 tuhat NVP-d
SeejÀrel suurendasin andmeelementide arvu poolmiljonini ja sain arvutatud vÀÀrtuseks 125 tuhat sekundis:

Ja sain sellised graafikud:

PĂ”himĂ”tteliselt on see töökorras seadistus, mis saab piisavalt kaua töötada. Kuid kuna mul oli ainult 1,5 terabaidise suurusega kĂ”vaketas, siis kulutasin selle paariga pĂ€evaga. KĂ”ige tĂ€htsam on see, et samal ajal loodi uusi partitsioone TimescaleDB-s ja see ei mĂ”jutanud jĂ”udlust ĂŒldse, mida ei saa öelda MySQL kohta.
Tavaliselt luuakse partitsioonid öösel, kuna see blokeerib tĂ€ielikult sisestamise ja töö tabelitega, mis vĂ”ib viia teenuse halvenemiseni. Sel juhul seda pole! Peamine ĂŒlesanne oli kontrollida TimescaleDB vĂ”imekust. Tuli vĂ€lja selline number: 120 tuhat vÀÀrtust sekundis.
Samuti on kogukonnas nÀiteid:

Inimene lĂŒlitas ka TimescaleDB sisse ja IO kaalumise koormus protsessoris langes; samuti vĂ€henes sisemiste protsesside kasutamine TimescaleDB sisselĂŒlitamise tĂ”ttu. Ja need on tavalised plaadid, st tavaline virtuaalmasin tavalistel ketastel (mitte SSD)!
MÔne vÀikese seadistuse jaoks, mis jÀÀb ketta jÔudluse piiridesse, on TimescaleDB, nagu mulle tundub, vÀga hea lahendus. See vÔimaldab suhteliselt hÀsti jÀtkata töötamist enne, kui migreerite kiiremaks andmebaasi riistvaraks.
Kutsun teid kĂ”iki meie ĂŒritustele: Konverents Moskvasse, Tippkohtumine Riiga. Kasutage meie kanaleid â Telegram, foorum, IRC. Kui teil on kĂŒsimusi â tulge meie stendile, vĂ”ime rÀÀkida kĂ”igest.
KĂŒsimused publikult
KĂŒsimus publikust (edaspidi â A): â Kui TimescaleDB on nii lihtne seadistada ja see pakub sellist jĂ”udluse kasvu, kas siis tasub seda kasutada kui parimat praktikat âZabbixiâ seadistamiseks koos âPostgreSQL-igaâ? Kas sellel lahendusel on mingeid peidetud probleeme vĂ”i miinuseid, vĂ”i vĂ”in ma rahulikult vĂ”tta âPostgreSQL-iâ, paigaldada sinna âTimescale-iâ kohe, kasutada seda ja mitte muretseda probleemide pĂ€rast?

AG: â Jah, ma ĂŒtleksin, et see on hea soovitus: kasutada âPostgreSQL-iâ kohe koos TimescaleDB laiendusega. Nagu ma juba mainisin, on palju hĂ€id arvustusi, vaatamata sellele, et see âfunktsioonâ on eksperimentaalne. Kuid tegelikult nĂ€itavad testid, et see on suurepĂ€rane lahendus (koos TimescaleDB-ga), ja ma arvan, et see areneb edasi! Me jĂ€lgime, kuidas see laiendus areneb ja teeme vajalikud parandused.
Oleme isegi arendamise ajal toetanud ĂŒhte nende tuntud âfunktsiooniâ: seal sai chunk-dega veidi teisiti töötada. Kuid see eemaldati jĂ€rgmistes vĂ€ljaannetes, ja me pidime lĂ”petama selle koodi toetamise. Soovitaksin seda lahendust kasutada paljudes seadistustes. Kui te kasutate MySQL... Keskmiste seadistuste jaoks töötab igasugune lahendus hĂ€sti.
A: â Viimastel graafikutel, mis tulid kogukonnalt, oli graafik âHousekeeper'istâ:

Ta jĂ€tkas tööd. Mida teeb âHousekeeperâ TimescaleDB korral?
AG: â Praegu ei oska ma tĂ€pselt öelda â vaatan koodi ja ĂŒtlen rohkem ĂŒksikasju. Ta kasutab TimescaleDB pĂ€ringuid mitte chunk-de eemaldamiseks, vaid agregatsiooniks. Praegu ei ole ma valmis sellele tehnilisele kĂŒsimusele vastama. TĂ€na vĂ”i homme selgitame seda standil.
A: â Mul on sarnane kĂŒsimus â Timescale-i kustutamise operatsiooni jĂ”udluse kohta.
A (kĂŒsimus publikust): â Kui kustutate andmeid tabelist, kui teete seda delete kaudu, peate te tabeliga lĂ€bi kĂ€ima â kustutama, puhastama, mĂ€rkima kĂ”ik tulevase tĂŒhi. Timescale'is, kuna teil on chunk'id, saate neid kas maha visata. Ătleme nii, et te ĂŒtlete failile, mis asub suurtes andmetes: âKustuta!â
«TimeScale» lihtsalt mĂ”istab, et sellist chunk'i enam ei ole. Ja kuna see integreerub pĂ€ringute ajakavasse, pĂŒĂŒab see teie tingimusi select'is vĂ”i muudes operatsioonides hook'ide kaudu ja mĂ”istab kohe, et seda chunk'i enam ei ole â «Ma sinna enam ei lĂ€he!» (andmed puuduvad). Nii et kĂ”ik â tabeli skaneerimine asendatakse binaarfaili kustutamisega, seega on see kiire.
A: â Oleme juba puudutanud mitte-SQLi teemat. Nii palju kui ma aru saan, ei ole «Zabbixile» vĂ€ga vajalik andmete modifitseerimine, ja kĂ”ik see on midagi sarnast logiga. Kas on vĂ”imalik kasutada spetsialiseeritud andmebaase, mis ei saa oma andmeid muuta, kuid samas salvestavad, koguvad ja annavad palju kiiremini â nĂ€iteks Clickhouse, miski Kafka-taoline?.. Kafka on ju ka log! Kas neid on vĂ”imalik kuidagi integreerida?
AG: â Ekspordi saab teha. Meil on alates versioonist 3.4 teatud «funktsioon»: saate kirjutada kĂ”ik ajaloolised failid, sĂŒndmused ja kĂ”ik muu failidesse; ja seejĂ€rel saata need mĂ”ne töötleja kaudu mis tahes teise andmebaasi. Tegelikult paljud teevad ĂŒmber ja kirjutavad otse andmebaasi. KĂ”ik need ajaloo-sĂŒnkronisaatorid kirjutavad otse failidesse, pööravad neid ja nii edasi, ja selle saate edastada «Clickhouse'i». Ma ei saa planeeringutest rÀÀkida, kuid vĂ”ib-olla jĂ€tkub tulevane toetus NoSQL-lahendustele (nagu «Clickhouse»).
A: â Kas on ĂŒldse vĂ”imalik tĂ€ielikult loobuda Postgresist?
AG: â Loomulikult on «Zabbixis» kĂ”ige keerulisem osa ajaloolised tabelid, mis tekitavad kĂ”ige rohkem probleeme, ja sĂŒndmused. Sel juhul, kui te ei hoia sĂŒndmusi kaua ja hoiate ajaloo trende mĂ”nes muus kiiremas salvestuses, siis ĂŒldiselt ei tohiks probleeme olla.
A: â Kas saaksite hinnata, kui palju kiiremini kĂ”ik töötab, kui lĂ€hete nĂ€iteks «Clickhouse'i»?
AG: â Ma ei ole testinud. Arvan, et vĂ€hemalt samu numbreid on ĂŒsna lihtne saavutada, arvestades, et «Clickhouse'il» on oma liides, kuid ei saa kindlalt öelda. Parim on testida. KĂ”ik sĂ”ltub konfiguratsioonist: kui palju teil on hoste ja nii edasi. Salvestamine on ĂŒks asi, kuid andmete hankimine on veel vajalik â Grafana vĂ”i millegi muu kaudu.
A: â Nii et jutt on vĂ”rdsest vĂ”itlusest, mitte nende kiirete andmebaaside suurest eelisega?
AG: â Arvan, et kui integreerime, siis on tĂ€psemad testid.
A: â Kus jĂ€i vanamoodne RRD? Mis tĂ”i kaasa ĂŒlemineku SQL-andmebaasidele? Alguses koguti kĂ”ik mÔÔdikud ju RRD-s.
AG: â "Zabbixis" oli RRD vĂ”ibolla vĂ€ga vanas versioonis. SQL-andmebaasid on alati olnud - klassikaline lĂ€henemine. Klassikaline lĂ€henemine on MySQL, PostgreSQL (need on juba vĂ€ga kaua olemas). Meil on ĂŒhine kasutajaliides SQL-andmebaaside jaoks ja RRD-d oleme praktiliselt kunagi ei kasutanud.


Veidi reklaami đ
AitÀh, et olete meiega. Kas teile meeldivad meie artiklid? Kas soovite nÀha rohkem huvitavat sisu? Toetage meid, tellides teenuse vÔi soovitades meid tuttavatele. , ainulaadne entry-level serverite analoog, mille oleme teie jaoks vÀlja mÔelnud: (saadaval RAID1 ja RAID10 variandid, kuni 24 tuuma ja kuni 40GB DDR4).
Dell R730xd on Equinixi Tier IV andmekeskuses Amsterdamis kaks korda odavam? Ainult meie juures Hollandis! Dell R420 â 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB â alates $99! Lugege sellest
Allikas: habr.com
