KÀime lÀbi Zabbixi toimimist TimescaleDB andmebaasiga tagaplaanina. NÀitame, kuidas alustada nullist ja kuidas migreerida PostgreSQLilt. Samuti toome vÀlja kahte konfiguratsiooni vÔrdlevad jÔudlustestid.

HighLoad++ Siberia 2019. Saal "Tomsk". 24. juuni, 16:00. Teemad ja . JĂ€rgmine HighLoad++ konverents toimub 6. ja 7. aprillil 2020 Peterburis. Ăksikasjad ja piletid .
Andrei Gushchin (edasi â AG): â Olen ZABBIXi (edasi â "Zabbix") tehnilise toe insener, koolitaja. Olen töötanud tehnilises toestuses ĂŒle 6 aasta ja olen otseselt tegelenud jĂ”udluse kĂŒsimustega. TĂ€na rÀÀgin, millist jĂ”udlust TimescaleDB suudab pakkuda vĂ”rreldes tavalise PostgreSQL 10-ga. Samuti annan natuke sissejuhatavat teavet selle kohta, kuidas see ĂŒldse toimib.
Peamised jÔudluse vÀljakutsed: andmete kogumisest kuni nende puhastamiseni
Alustame sellega, et igas jĂ€lgimisse sĂŒsteemis esineb teatud jĂ”udluse vĂ€ljakutseid. Esimene jĂ”udluse vĂ€ljakutse on kiire andmete kogumine ja töötlemine.

Hea jĂ€lgimissĂŒsteem peab kĂ”ik andmed Ă”igeaegselt ja kiiresti kĂ€tte saama, töötlema need vastavalt triggereile, st töötlema neid mingite kriteeriumide alusel (erinevates sĂŒsteemides on see erinev) ja salvestama andmebaasi, et neid hiljem kasutada.

Teine jĂ”udluse vĂ€ljakutse on ajaloo sĂ€ilitamine. Andmete salvestamine andmebaasis ja kiire ning mugav ligipÀÀs nendele mÔÔdikutele, mis on kogutud teatud ajavahemiku jooksul. KĂ”ige olulisem on see, et nendest andmetest oleks lihtne vĂ€lja vĂ”tta ja kasutada neid raportites, graafikutes, triggereites, vĂ€hemalt mĂ”nede kĂŒnniste vÀÀrtuste jaoks, teavitusteks jne.

Kolmas jĂ”udluse vĂ€ljakutse on ajaloo puhastamine, ehk siis pĂ€ev, mil te ei vaja enam sĂ€ilitada ĂŒksikasjalikke mÔÔdikuid, mis on kogutud 5 aasta jooksul (isegi kuude vĂ”i kahe kuu jooksul). MĂ”ned vĂ”rgu sĂ”lmed on eemaldatud vĂ”i mĂ”ned hostid, mÔÔdikud ei ole enam vajalikud, kuna need on juba aegunud ja lĂ”petanud kogumise. KĂ”ik see tuleb eemaldada, et teie andmebaas ei kasvaks liiga suureks. Ja ĂŒldiselt on ajaloo puhastamine enamasti tĂ”sine proovikivi salvestusruumile â see mĂ”jutab sageli jĂ”udlust.
Kuidas lahendada vahemÀlu probleeme?
RÀÀgin nĂŒĂŒd konkreetselt "Zabbixist". "Zabbixis" on esimesed ja teised vĂ€ljakutsed lahendatud vahemĂ€lu abil.

Andmete kogumine ja töötlemine â me kasutame nende andmete salvestamiseks töömĂ€lu. NĂŒĂŒdsest rÀÀgin sellest tulenevatest andmetest lĂ€hemalt.
Samuti on andmebaaside pooles spetsiifiline vahemĂ€lu peamiste pĂ€ringute jaoks â graafikute ja muude asjade jaoks.
VahemÀlu Zabbix serveri poolel: meil on olemas ConfigurationCache, ValueCache, HistoryCache, TrendsCache. Mis need on?

ConfigurationCache â see on peamine vahemĂ€lu, kus salvestame mÔÔdikud, hostid, andmeelemendid, triggereid; kĂ”ik, mis on vajalik andmete ettevalmistamiseks, kogumiseks, millistelt hostidelt andmeid koguda ja kui tihti. KĂ”ik see salvestatakse ConfigurationCacheâi, et mitte minna andmebaasi ja luua liigseid pĂ€ringuid. PĂ€rast serveri kĂ€ivitamist uuendame (loome) selle vahemĂ€lu ja uuendame seda perioodiliselt (vastavalt konfiguratsiooniseadetele).

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

Kesksetes skeemides on need andmete kogujad:

Need on ise kogumise protsessid, erinevad "pollerâid", mis vastutavad erinevate kogumise liikide eest. Nad koguvad andmeid icmp, ipmi, erinevate protokollide kaudu ja edastavad need kĂ”ik ettevalmistamiseks.
PreProcessing HistoryCache
Kui meil on ka arvutuslikud andmeelemendid (kes tunneb "Zabbixit" â teab), siis korjame need otse ValueCacheâst. RÀÀgin hiljem, kuidas see tĂ€itub. KĂ”ik need kogujad kasutavad ConfigurationCacheâi oma ĂŒlesannete saamiseks ja edastavad need edasi ettevalmistamiseks.

Ettevalmistamine kasutab samuti ConfigurationCacheâi ettevalmistamise sammude saamiseks, töötleb neid andmeid erinevatel viisidel. Alates versioonist 4.2 on see meil vĂ€lja viidud proksi peale. See on vĂ€ga mugav, kuna ettevalmistamine on piisavalt keeruline operatsioon. Ja kui teil on vĂ€ga suur "Zabbix", koos suure hulga andmeelementidega ja suure kogumise sagedusega, siis see lihtsustab tööd oluliselt.
Seega, pĂ€rast seda, kui oleme neid andmeid mingil moel ettevalmistuse abil töötlenud, salvestame need HistoryCacheâi, et neid hiljem töödelda. Sellega lĂ”peb andmete kogumine. Liigume peamise protsessi juurde.
Ajalugu synceri töö

Zabbixi peamine protsess (kuna see on monoliitne arhitektuur) on History syncer. See on pÔhiprotsess, mis tegeleb iga andmeelementi, st iga vÀÀrtuse aatomaarse töötlemisega.
- Saab vÀÀrtuse (vÔtab selle HistoryCache'ist);
- kontrollib Configuration syncer'is: kas on olemas teatud kĂ€ivitajad arvutamiseks â arvutab need vĂ€lja;
kui neid on â loob sĂŒndmusi, teeb eskaleerimise, et luua teade, kui see on konfigureerimise kohaselt vajalik; - salvestab kĂ€ivitajad jĂ€rgnevalt töötlemiseks, aggregeerimiseks; kui te aggregeerite viimase tunni jooksul jne, salvestab selle vÀÀrtuse ValueCache, et mitte pöörduda ajaloo tabeli poole; seega tĂ€idetakse ValueCache vajalike andmetega, mis on vajalikud kĂ€ivitajate, arvutatavate elementide jms arvutamiseks;
- edasi History syncer salvestab kÔik andmed andmebaasi;
- andmebaas salvestab need kettale â sellega protsessi töötlemine lĂ”peb.
Andmebaasid. VahemÀlu
Andmebaasi kĂŒljel, kui soovite vaadata graafikuid vĂ”i teatud aruandeid sĂŒndmuste kohta, on erinevad vahemĂ€lud. Kuid selles ettekandes ei rÀÀgi ma neist.
MySQL jaoks on olemas Innodb_buffer_pool, ning rida erinevaid vahemÀlusid, mida saab ka seadistada.
Kuid need on peamised:
- shared_buffers;
- effective_cache_size;
- shared_pool.

Ma toomasin kÔikide andmebaaside jaoks, et on olemas teatud vahemÀlud, mis vÔimaldavad hoida RAM-is andmeid, mis on sageli vajalikud pÀringute jaoks. Seal on nende jaoks oma tehnoloogiad.
Andmebaasi jÔudlusest
Seega on olemas konkurentsikeskkond, st Zabbixi server kogub andmeid ja salvestab need. Ta loeb ka ajaloo andmeid ValueCache'i tĂ€itmiseks jne. Samuti vĂ”ivad teil olla skriptid ja aruanded, mis kasutavad Zabbixi API-d, mis on ehitatud veebiliidese pĂ”hjal. Zabbixi API pÀÀseb andmebaasi ja saab vajalikud andmed graafikute, aruannete vĂ”i mingite sĂŒndmuste, viimaste probleemide loendite jaoks.

Samuti on vÀga populaarne lahendus visualiseerimiseks Grafana, mida meie kasutajad kasutavad. See oskab otse siseneda nii Zabbixi API kaudu kui ka andmebaasi kaudu. See loob ka teatud konkurentsi andmete saamiseks: on vajalik peen, hea andmebaasi seadistus, et tagada kiire tulemuste vÀljund ja testimine.

Ajaloo puhastamine. Zabbixis on Housekeeper
Kolmas kutse, mida Zabbixis kasutatakse â on ajaloo puhastamine Housekeeperi abil. Housekeeper jĂ€rgib kĂ”iki seadeid, st meie andmeelementides on mĂ€rgitud, kui kaua andmeid hoida (pĂ€evades), kui kaua hoida trende, muutuste dĂŒnaamikat.
Ma ei rÀÀkinud TrendCache'ist, mida me arvutame kohapeal: andmed saabuvad, me aggregeerime need tunni jooksul (peamiselt need on numbrid viimase tunni jooksul), keskmine/minimaalne kogus ja salvestame selle tunni ajal muutuste dĂŒnaamika tabelisse (Trends). Housekeeper kĂ€ivitatakse ja kustutab andmed andmebaasist tavaliste valikutega, mis ei ole alati tĂ”husad.
Kuidas mÔista, et see ei ole tÔhus? Te nÀete sisemiste protsesside jÔudluse graafikutelt sellist pilti:

Teie History syncer on pidevalt hĂ”ivatud (punane graafik). Ja ĂŒlevalt liigub 'oranĆŸ' graafik. See on Housekeeper, mis kĂ€ivitatakse ja ootab andmebaasist, millal ta kustutab kĂ”ik read, mis ta mÀÀras.
VĂ”tame mĂ”ne Item ID: tuleb kustutada viimased 5000; loomulikult indeksite pĂ”hjal. Kuid ĂŒldiselt on andmehulk piisavalt suur â andmebaas loeb selle ikkagi kettalt ja tĂ”stab see mĂ€llu, mis on andmebaasi jaoks vĂ€ga kulukas operatsioon. SĂ”ltuvalt selle suurusest vĂ”ib see tekitada teatud jĂ”udlusprobleeme.
Housekeeper'i saab vĂ€lja lĂŒlitada lihtsal viisil â meil on tuttav veebiliides. Seadistus Administration general'is (seaded Housekeeper'i jaoks), lĂŒlitame vĂ€lja sisemise housekeeping'i sisemiste ajaloo ja trendide jaoks. Seega, Housekeeper ei halda enam seda:

Kuidas edasi minna? Olete vĂ€lja lĂŒlitanud, teie graafikud on tasakaalustunud... Millised vĂ”ivad olla jĂ€rgmised probleemid? Mis vĂ”iks abiks olla?
Partitsioneerimine (sektsioneerimine)
Tavaliselt seadistatakse see iga rikkaandmebaasi puhul, mida olen nimetunud, erineval viisil. MySQL-l on oma tehnoloogia. Kuid ĂŒldiselt on need vĂ€ga sarnased, kui rÀÀkida PostgreSQL 10 ja MySQL-st. Loomulikult on seal palju sisemisi erinevusi, kuidas kĂ”ik see on rakendatud ja kuidas see kĂ”ik mĂ”jutab jĂ”udlust. Kuid ĂŒldiselt toob uue partitsiooni loomine sageli ka teatud probleeme.

SĂ”ltuvalt teie seadistusest (kui palju andmeid luuakse pĂ€evas) on tavaliselt mÀÀratud kĂ”ige minimaalne â 1 pĂ€ev/partei, ning âtrendideâ, muutuste dĂŒnaamika jaoks â 1 kuu/uue partei. See vĂ”ib muutuda, kui teil on vĂ€ga suur seadistus.
Las ma ĂŒtlen kohe seadise suuruste kohta: kuni 5000 uut vÀÀrtust sekundis (nn nvps) - seda peetakse vĂ€ikseks seadiseks. Keskmine - 5 kuni 25 tuhat vÀÀrtust sekundis. KĂ”ik, mis on ĂŒle - on juba suured ja vĂ€ga suured installatsioonid, mis vajavad andmebaasi eriti hoolikat seadistamist.
VĂ€ga suurtes installatsioonides vĂ”ib 1 pĂ€ev olla mitteoptimaalne. Olen isiklikult nĂ€inud MySQLâis parteisid 40 gigabaiti pĂ€evas (ja rohkem vĂ”ib olla). See on vĂ€ga suur andmemahu, mis vĂ”ib tekitada probleeme. Seda tuleb vĂ€hendada.
Miks on vajalik partitsioneerimine?
Mida annab partitsioneerimine, arvan ma, et kĂ”ik teavad - see on tabelite sektsioneerimine. Sageli on need eraldi failid kettal ja span-pĂ€ringud. See valib ĂŒhe partei optimaalsemalt, kui see kuulub tavalisse partitsioneerimisse.

Zabbix'i puhul kasutatakse eriti vahemikku, st kasutame ajatemplit (tavalis number, aeg alates ajaloost). MÀÀrate pĂ€eva alguse/lĂ”pu ja see on partei. Seega, kui te kĂŒsite kahe pĂ€eva taguste andmete jĂ€rele, valitakse see kĂ”ik andmebaasist kiiremini, sest tuleb alla laadida vaid ĂŒks fail vahemĂ€lu ja anda vĂ€lja (mitte suur tabel).

Paljud andmebaasid kiirendavad ka sisestamist (ĂŒhe lapse-tabelisse). Kuigi ma rÀÀgin abstraktselt, on see samuti vĂ”imalik. Partitsioneerimine aitab sageli.
Elasticsearch NoSQL jaoks
Hiljuti, versioonis 3.4, kĂ€ivitasime lahenduse NoSQL. Lisatud on vĂ”imalus kirjutada Elasticsearch'i. Saate kirjutada erinevaid tĂŒĂŒpe: valite - kas kirjutate numbreid vĂ”i mingeid mĂ€rke; meil on string-tekst, logisid saate kirjutada Elasticsearch'i... Seega, veebiliides hakkab samuti pöörduma Elasticsearch'i poole. See töötab mĂ”nel juhul suurepĂ€raselt, kuid praegu on seda vĂ”imalik kasutada.

TimescaleDB. HĂŒper tabelid
Versioonis 4.4.2 pöörasime tĂ€helepanu ĂŒhele asjale, nimelt TimescaleDB-le. Mis see on? See on laiendus PostgreSQLâile, st see omab natiivset PostgreSQL liidest. Pluss, see laiendus vĂ”imaldab palju efektiivsemalt töötada ajaseeriate andmetega ja omada automaatset partitsioneerimist. Kuidas see vĂ€lja nĂ€eb:

See on hĂŒper tabel - selline mĂ”isted on Timescaleâis. See on hĂŒper tabel, mille loote, ja seal asuvad tĂŒkid (chunk). TĂŒkid - need on parteid, need on lapse tabelid, kui ma ei eksi. See on tĂ”eliselt efektiivne.

TimescaleDB ja PostgreSQL
TimescaleDB tootjad kinnitavad, et nad kasutavad Ôiget pÀringute töötlemise algoritmi, eriti insertide puhul, mis vÔimaldab omada enam-vÀhem konstantset jÔudlust andmestiku sisestamise suuruse suurenedes. See tÀhendab, et pÀrast 200 miljonit rida tavalisel PostgreSQL'il hakkab jÔudlus vÀga kiiresti langema ning see kaob peaaegu nullini, samas kui Timescale vÔimaldab sisestada insertid vÔimalikult efektiivselt olenemata andmete hulgast.

Kuidas installida TimescaleDB? KÔik on lihtne!
Dokumentatsioonis on see kirjas - saate installida ĂŒkskĂ”ik millistelt⊠see sĂ”ltub ametlikest PostgreSQL paketidest. Saate kompileerida kĂ€sitsi. Nii juhtus, et ma pidin andmebaasi jaoks kompileerima.

Zabbix'is aktiveerime lihtsalt laiendi. Ma arvan, et need, kes on kasutanud PostgreSQLâi laiendit... Lihtsalt aktiveerite laiendi, loote selle Zabbixâi andmebaasile, mida kasutate.
Ja viimane sammâŠ
TimescaleDB. Ajalooliste tabelite migreerimine
Teil on vaja luua hĂŒper tabel. Selle jaoks on eriline funktsioon â Create hypertable. Esimeses parameetris mÀÀrate tabeli, mis on selles andmebaasis vajalik (mille jaoks tuleb luua hĂŒper tabel).

VĂ€li, mille alusel tuleb luua, ja chunk_time_interval (see on tĂŒkkide (parteide, mida tuleb kasutada) intervall). 86 400 â see on ĂŒks pĂ€ev.
Parameeter migrate_data: kui sisestate true, siis see kolib kÔik olemasolevad andmed eelnevalt loodud chunkidesse.
Ma ise kasutasin migrate_data â see vĂ”tab mĂ€rkimisvÀÀrselt aega, sĂ”ltuvalt teie andmebaasi suurusest. Mul oli ĂŒle terabaiti â loomine vĂ”ttis rohkem kui tunni. MĂ”nes olukorras, testimise kĂ€igus, kustutasin ajaloolised andmed tekstide (history_text) ja stringide (history_str) kohta, et mitte migreerida â need ei olnud mulle tegelikult huvitavad.
Ja viimane uuendus, mille me teeme meie db_extentionis: seadistame timescaledb, et andmebaas ja eriti meie "Zabbix" mĂ”istaks, et on olemas db_extention. See aktiveerib selle ja kasutab Ă”igesti sĂŒntaksi ja pĂ€ringuid andmebaasi, kasutades juba neid "funktsioone", mis on vajalikud TimescaleDB jaoks.
Serveri konfiguratsioon
Kasutasin kahte serverit. Esimene server on piisavalt vĂ€ike virtuaalmasin, 20 protsessorit, 16 gigabaiti operatiivmĂ€lu. Seadsin sellel ĂŒles "PostgreSQL" 10.8:

OperatsioonisĂŒsteem oli Debian, failisĂŒsteem â xfs. Tehtud olid minimaalne seadistused, et kasutada just seda andmebaasi, arvestamata, et kasutab ka "Zabbix". Samas masinas töötas "Zabbix" server, PostgreSQL ja koormuseagentid.

Kasutasin 50 aktiivset agenti, kes kasutavad LoadableModule, et kiiresti genereerida erinevaid tulemusi. Need genereerisid ridu, numbreid ja nii edasi. TĂ€itsin andmebaasi suure hulga andmetega. Esialgne konfiguratsioon sisaldas 5000 andmeelementi iga hosti jaoks ning igal andmeelemendil oli ligikaudu ĂŒks triger â et see oleks tĂ”eline seadistus. MĂ”nikord on kasutamise jaoks isegi vajalik rohkem kui ĂŒks triger.

Uuendamise intervalli, koormust reguleerisin sellega, et kasutasin mitte ainult 50 agenti (lisades veel), vaid ka dĂŒnaamiliste andmeelementide abil ning alandasin uuendamisintervalli 4 sekundini.
JÔudluse test. PostgreSQL: 36 tuhat NVP-d
Esimene kĂ€ivitamine, esimene seadistus oli mul puhtal PostgreSQL 10 sellel riistvaral (35 tuhat vÀÀrtust sekundis). Kuidas nĂ€ha ekraanilt, andmete sisestamine kestab murdosa sekundist â kĂ”ik on hĂ€sti ja kiiresti, SSD-d (200 gigabaiti). Ainus probleem on see, et 20 GB tĂ€ituvad piisavalt kiiresti.

Edasi on piisavalt palju selliseid graafikuid. See on Zabbixi serveri standardne jÔudluse armatuurlaud.

Esimene graafik â vÀÀrtuste arv sekundis (sinine, vasakul ĂŒlal), 35 tuhat vÀÀrtust antud juhul. See (ĂŒleval keskel) on kogumise protsesside koormus, ja see (ĂŒleval paremal) â sisemiste protsesside koormus: ajaloosĂŒnergid ja housekeeper, mis siin (alumisel keskel) tegutses piisavalt pikka aega.
See graafik (alumisel keskel) nĂ€itab ValueCache kasutust â kui palju ValueCache hitte triggereid (mitu tuhat vÀÀrtust sekundis). Veel oluline graafik â neljas (alumisel vasakul), mis nĂ€itab HistoryCache kasutust, millest rÀÀkisin, mis on bufer enne andmebaasi sisestamist.
JÔudluse test. PostgreSQL: 50 tuhat NVP-d
SeejÀrel suurendasin koormust 50 tuhande vÀÀrtuseni sekundis sellel samal riistvaral. Koormuse all "Housekeeper" 10 tuhat vÀÀrtust salvestati juba 2-3 sekundiga koos arvutamisega. See on tegelikult nÀidatud jÀrgmises ekraanipildis:

"Housekeeper" hakkab juba tööle segama, kuid ĂŒldiselt jÀÀb trapperite ajaloosĂŒnergite koormus ikka 60 % tasemele (kolmas graafik, paremal ĂŒlal). HistoryCache hakkab juba "Housekeeperi" töö ajal aktiivselt tĂ€ituma (alumisel vasakul). See oli umbes pool gigabaiti, tĂ€itus 20%.

JÔudluse test. PostgreSQL: 80 tuhat NVP-d
Edasi suurendasin 80 tuhande vÀÀrtuseni sekundis:

See oli umbes 400 tuhat andmeelementi, 280 tuhat triggereid. Sisestamise, nagu nĂ€ete, pĂ”hjal on ajaloosĂŒngerite koormus (neid oli 30) juba piisavalt kĂ”rge. Hiljem suurendasin erinevaid parameetreid: ajaloosĂŒngerid, cache⊠Selles olekus ajaloosĂŒngerite koormus hakkas maksimaalset taset saavutama, praktiliselt "sellel kohal" â vastavalt, HistoryCache lĂ€ks vĂ€ga kĂ”rge koormuse alla:

Kogu selle aja jĂ€lgisin kĂ”iki sĂŒsteemi parameetreid (kuidas protsessorit kasutatakse, operatiivmĂ€lu) ja avastasin, et ketaste utiliteerimine oli maksimaalne â saavutasin selle kettaseadmest maksimaalse vĂ”imaluse, sellel riistvaral, sellel virtuaalses masinas. "PostgreSQL" hakkas selle intensiivsuse juures aktiivselt andmeid koormama ja ketas ei jĂ”udnud enam kirjutada, lugeda...

VÔtsin teise serveri, millel oli juba 48 protsessorit ja 128 gigabaiti operatiivmÀlu:

Samuti "tuunisin" selle â panin ajaloosĂŒngerite (60 tk) ja saavutasin vastuvĂ”etava jĂ”udluse. Tegelikult me ei ole "sellel kohal", aga see on ilmselt juba jĂ”udluse piir, kus tuleb midagi ette vĂ”tta.
JÔudluse test. TimescaleDB: 80 tuhat NVP-d
Minu peamine ĂŒlesanne oli kasutada TimescaleDB. Iga graafiku pealt on nĂ€ha langus:

Need-to-know data migrations are crucial. After this, as you can see, the profile of the history syncers in the 'Zabbix' server changed significantly. It now allows data insertion nearly three times faster while using less HistoryCache, ensuring timely data delivery. Again, 80 thousand values per second is a fairly high rate (of course, not for 'Yandex'). Overall, this is quite a large setup with one server.
PostgreSQL performance test: 120 thousand NVPs
Next, I increased the number of data elements to half a million and achieved a calculated value of 125 thousand per second:

I obtained these graphs:

Essentially, this is a working setup and can operate effectively for a significant duration. However, since I only had a 1.5 terabyte disk, I exhausted it within a few days. Importantly, as new partitions were created in TimescaleDB, the performance impact went unnoticed, unlike MySQL.
Usually, partitions are created overnight since it blocks any insertions and operations with tables, potentially leading to service degradation. In this case, that was not an issue! The main task was to test TimescaleDB's capabilities. The resulting figure: 120 thousand values per second.
There are examples in the community:

Another individual also implemented TimescaleDB, and the load on io.weight decreased on the processor; the usage of internal process elements also dropped thanks to TimescaleDB. And this was on ordinary spinning disks, meaning a standard virtual machine on traditional disks (not SSD)!
For smaller setups that are limited by disk performance, TimescaleDB seems to be an excellent solution. It allows you to continue operation before upgrading to faster database hardware.
I invite all of you to our events: Conference in Moscow, Summit in Riga. Use our channels â Telegram, forum, IRC. If you have any questions, come visit us at our booth; we can discuss everything.
Audience Questions
Audience question (A): â If TimescaleDB is so easy to set up and provides such performance boosts, perhaps it should be used as best practice for configuring 'Zabbix' with 'Postgres'? Are there any hidden pitfalls or downsides to this solution, or can I confidently use 'Postgres' with 'Timescale' right from the start?

AG: â Yes, I would say that it's a good recommendation to use 'Postgres' right along with the TimescaleDB extension. As I mentioned, there are many positive reviews even though this 'feature' is experimental. But tests show that itâs an excellent solution (with TimescaleDB), and I believe it will continue to evolve! We're monitoring the development of this extension and will address necessary adjustments.
During development, we relied on one of its well-known 'features': where chunk handling was slightly different. However, they removed that in the next release, and we had to discard that code. I would recommend this solution for many setups. If you're using MySQL... it works well for medium setups regardless.
A: â In the latest graphs shared by the community, there was one with 'Housekeeper':

It continued to operate. What does 'Housekeeper' do with TimescaleDB?
AG: â I canât say for certain right now â I'll check the code and provide more details. It uses TimescaleDB queries not for chunk deletion but perhaps for aggregation. For now, Iâm not prepared to answer this technical question. We will clarify at the booth today or tomorrow.
A: â I have a similar question regarding the performance of deletion operations in 'Timescale'.
A (audience response): â When you delete data from a table, if you do it via delete, you have to scan through the table â remove, clean, and mark everything for future vacuuming. In 'Timescale', as you have chunks, you can simply drop them. Basically, you just tell the file in big data: 'Delete!'
'Timescale' simply understands that such a chunk no longer exists. And since it integrates into the query planner, it catches your conditions in the select or other operations and immediately realizes that this chunk is no longer available â 'I wonât go there!' (the data is absent). Thatâs it! So, scanning the table is replaced by deleting a binary file, making it fast.
A: â Oleme juba puudutanud teemat, mis ei ole SQL. Nagu ma aru saan, ei vajada âZabbixâ andmete muutmist vĂ€ga, vaid see on pigem midagi nagu logi. Kas on vĂ”imalik kasutada spetsialiseeritud andmebaase, mis ei suuda oma andmeid muuta, kuid on samas palju kiirem andmete salvestamisel, kogumisel ja edastamisel â nĂ€iteks Clickhouse, midagi Kafka sarnast?.. Kafka on ju samuti logi! Kas on vĂ”imalik neid kuidagi integreerida?
AG: â Andmeid saab eksportida. Meil on versioonis 3.4 teatav âfunktsioonâ: saate kirjutada kĂ”iki ajaloolisi faile, sĂŒndmusi ja muud failidesse ning seejĂ€rel saata need mĂ”ne töötlejaga teise andmebaasi. Tegelikult palju inimesi kirjutab ja kuvab andmed otse andmebaasi. âLive history-sinkersâ kirjutavad kĂ”ik need andmed failidesse, roteerivad need failid ja nii edasi, ja need saab seejĂ€rel saata âClickhouse'iâ. Ei oska tulevikuperspektiivide kohta midagi öelda, kuid vĂ”ib-olla jĂ€tkub edaspidine toetus NoSQL-lahendustele (nĂ€iteks âClickhouseâ) ka edaspidi.
A: â Kas on vĂ”imalik tĂ€iesti loobuda PostgreSQL-ist?
AG: â Muidugi, kĂ”ige keerulisem osa âZabbixisâ on ajaloolised tabelid, mis tekitavad kĂ”ige rohkem probleeme, ja sĂŒndmused. Sel juhul, kui te ei hoia sĂŒndmusi kaua ja hoidate ajalugu trendidega mĂ”nes muus kiiremas salvestis, ei tohiks ĂŒldiselt mingeid probleeme tekkida.
A: â Kas saate hinnata, kui palju kiirem kĂ”ik töötab, kui nĂ€iteks minna ĂŒle âClickhouseâileâ?
AG: â Ma ei ole testinud. Arvan, et minimaalselt samu numbreid on suhteliselt lihtne saavutada, arvestades, et âClickhouseâ omab oma liidest, kuid ei saa kindlalt öelda. Parim on testida. KĂ”ik sĂ”ltub konfiguratsioonist: kui palju teil on hoste ja nii edasi. Andmete sisestamine on ĂŒks asi, aga neid andmeid tuleb ka vĂ€lja vĂ”tta â nĂ€iteks Grafana vĂ”i muu tarkvaraga.
A: â Kas rÀÀgime seega tasavĂ€gisest vĂ”itlusest, mitte nendest kiiretest andmebaasidest tulenevast suurest eelisest?
AG: â Arvan, et kui integreerime, siis saavad tĂ€psemad testid.
A: â Kuhu jĂ€i vana hea RRD? Mis sundis liikuma SQL andmebaaside poole? Alguses koguti kĂ”ik meetmed RRD-sse.
AG: â âZabbixisâ oli RRD, vĂ”ib-olla vĂ€ga vanas versioonis. Alati on olnud SQL andmebaasid â klassikaline lĂ€henemine. Klassikaline lĂ€henemine on MySQL ja PostgreSQL (on juba vĂ€ga kaua olemas). Meil on ĂŒhine liides SQL andmebaaside jaoks ja RRD-d oleme praktiliselt kunagi kasutanud.


Veidi reklaami đ
AitĂ€h, et olete meiega. Kas teile meeldivad meie artiklid? Kas soovite nĂ€ha rohkem huvitavaid materjale? Toetage meid, tehes tellimuse vĂ”i soovitades meid tuttavatele. , ainulaadne sisenemise taseme serverite analoog, mille oleme teie jaoks vĂ€lja mĂ”elnud: (saadaval on RAID1 ja RAID10 variandid, kuni 24 sĂŒdamikku ja kuni 40GB DDR4).
Kas Dell R730xd on kaks korda odavam Equinixi Tier IV andmete keskuses Amsterdamis? Ainult meie juures Hollandi turul! Dell R420 â 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB â alates $99! Lugege, kuidas
Allikas: habr.com
