Umsindo, uthethathethwano kunye nokudakumba xa usebenza ne-InfluxDB

Umsindo, uthethathethwano kunye nokudakumba xa usebenza ne-InfluxDB

Ukuba usebenzisa uthotho lwedatha yedatha (timeseries db, wiki) njengeyona ndawo yokugcina indawo enezibalo, ngoko endaweni yokusombulula ingxaki unokufumana iintloko ezininzi. Ndisebenza kwiprojekthi esebenzisa isiseko sedatha, kwaye ngamanye amaxesha i-InfluxDB, eya kuxoxwa ngayo, ibonise izinto ezimangalisayo ezingalindelekanga.

isikhanyeli: Imiba edwelisiweyo iyasebenza kuHlelo lwe-InfluxDB 1.7.4.

Kutheni uchungechunge lwexesha?

Iprojekthi kukulandelela ukuthengiselana kwiibhloko ezahlukeneyo kunye nokubonisa izibalo. Ngokukodwa, sijonga ukukhutshwa kunye nokutshiswa kweenkozo ezizinzileyo (wiki). Ngokusekelwe kwezi ntengiselwano, kufuneka wakhe iigrafu kwaye ubonise iitheyibhile zesishwankathelo.

Ngelixa uhlalutya ukuthengiselana, kwavela umbono: ukusebenzisa i-database ye-InfluxDB yexesha ledatha njengendawo yokugcina. Iintengiselwano ngamanqaku ngexesha kwaye zingena kakuhle kwimodeli yothotho lwexesha.

Imisebenzi yodibaniso nayo ibonakale ilungile kakhulu - ilungele ukusetyenzwa kweetshathi kunye nexesha elide. Umsebenzisi udinga itshathi yonyaka, kwaye i-database iqulethe isethi yedatha kunye nexesha lemizuzu emihlanu. Akunamsebenzi ukumthumela onke amachaphaza alikhulu lamawaka-ngaphandle kokusetyenzwa ixesha elide, awazukulingana nescreen. Ungabhala owakho uphumezo lokunyusa ixesha elibekiweyo, okanye usebenzise imisebenzi edityanisiweyo eyakhiwe kwiInflux. Ngoncedo lwabo, unokuqokelela idatha ngosuku kwaye uthumele amanqaku afunekayo angama-365.

Kwakubhideka kancinane ukuba oovimba beenkcukacha abanjalo badla ngokusetyenziselwa injongo yokuqokelela iimetriki. Ukubeka iliso kwiiseva, izixhobo ze-iot, yonke into apho izigidi zamanqaku efom "flow": [ - ]. Kodwa ukuba i-database isebenza kakuhle kunye nokuhamba kwedatha enkulu, ngoko kutheni umthamo omncinci kufuneka ubangele iingxaki? Ngale nto engqondweni, sithathe i-InfluxDB ukuba sisebenze.

Yintoni enye efanelekileyo kwi-InfluxDB

Ngaphandle kwemisebenzi ekhankanyiweyo yokudibanisa, kukho enye into enkulu - imibuzo eqhubekayo (doc). Lo ngumcwangcisi owakhelwe kwisiseko sedatha ekwazi ukuqhubekekisa idatha kwishedyuli. Umzekelo, rhoqo kwiiyure ezingama-24 ungaqokelela zonke iirekhodi zosuku, ubale umyinge kwaye urekhode inqaku elitsha kwenye itafile ngaphandle kokubhala iibhayisekile zakho.

Kananjalo babe imigaqo-nkqubo yokugcina (doc)β€”ukumisela ukucinywa kwedatha emva kwexesha elithile. Kuluncedo xa, umzekelo, kufuneka ugcine umthwalo we-CPU kangangeveki kunye nemilinganiselo kanye ngesekhondi, kodwa kumgama weenyanga ezimbalwa ukuchaneka okunjalo akufuneki. Kwimeko enjalo, unokwenza oku:

  1. yenza umbuzo oqhubekayo wokudibanisa idatha kwenye itafile;
  2. kwitheyibhile yokuqala, chaza umgaqo-nkqubo wokucima iimethrikhi ezindala kunaloo veki inye.

Kwaye i-Influx iya kunciphisa ngokuzimeleyo ubungakanani bedatha kwaye isuse izinto ezingeyomfuneko.

Malunga nedatha egciniweyo

Akukho datha eninzi egciniweyo: malunga neentengiselwano ezingamawaka angama-70 kunye nenye isigidi seengongoma ngolwazi lwemarike. Ukongeza amangeno amatsha - akukho ngaphezulu kwamanqaku angama-3000 ngosuku. Kukho neemetrics zesayithi, kodwa kukho idatha encinci apho kwaye, ngokomgaqo-nkqubo wokugcinwa, zigcinwa ixesha elingekho ngaphezu kwenyanga.

Iingxaki

Ngexesha lophuhliso kunye novavanyo olulandelayo lwenkonzo, kuye kwavela iingxaki ezininzi ngakumbi ekusebenzeni kwe-InfluxDB.

1. Ukucima idatha

Kukho uluhlu lwedatha enentengiselwano:

SELECT time, amount, block, symbol FROM transactions WHERE symbol='USDT'

Isiphumo:

Umsindo, uthethathethwano kunye nokudakumba xa usebenza ne-InfluxDB

Ndithumela umyalelo wokucima idatha:

DELETE FROM transactions WHERE symbol=’USDT’

Okulandelayo ndenza isicelo sokufumana idatha esele icinyiwe. Kwaye endaweni yempendulo engenanto, i-Influx ibuyisela inxalenye yedatha ekufuneka isusiwe.

Ndizama ukucima yonke itafile:

DROP MEASUREMENT transactions

Ndijonga ukucinywa kwetafile:

SHOW MEASUREMENTS

Andiyiboni itafile kuluhlu, kodwa umbuzo omtsha wedatha usabuyisela iseti efanayo yentengiselwano.

Ingxaki yenzeka kum kube kanye, kuba ityala lokucinywa yayilityala elilodwa. Kodwa le ndlela yokuziphatha yesiseko sedatha ngokucacileyo ayihambelani nesakhelo sokusebenza "okuchanekileyo". Kamva ndayifumana ivuliwe kwi-github itikiti phantse unyaka odlulileyo kwesi sihloko.

Ngenxa yoko, ukucima nokubuyisela yonke isiseko sedatha kwanceda.

2. Amanani amanqaku adadayo

Ubalo lwezibalo xa usebenzisa imisebenzi eyakhelwe-ngaphakathi kwi-InfluxDB ineempazamo zokuchaneka. Ayikuko ukuba le yinto engaqhelekanga, kodwa ayimnandanga.

Kwimeko yam, idatha inecandelo lezemali kwaye ndingathanda ukuyicubungula ngokuchaneka okuphezulu. Ngenxa yoko, siceba ukushiya imibuzo eqhubekayo.

3. Imibuzo eqhubekayo ayinakulungiswa kwiizowuni zamaxesha ezahlukeneyo

Inkonzo inetafile enezibalo zentengiselwano yemihla ngemihla. Kusuku ngalunye, kufuneka uqokelele zonke iintengiselwano zolo suku. Kodwa usuku lomsebenzisi ngamnye luya kuqala ngexesha elahlukileyo, kwaye ke isethi yentengiselwano iya kwahluka. Nge-UTC ewe 37 ezahlukeneyo iishifti ofuna ukuhlanganisa idatha yazo.

Kwi-InfluxDB, xa udibanisa ngexesha, ungakhankanya ukutshintshwa, umzekelo ixesha laseMoscow (UTC+3):

SELECT MEAN("supply") FROM transactions GROUP BY symbol, time(1d, 3h) fill(previous)

Kodwa isiphumo sombuzo siya kuba asichanekanga. Ngesizathu esithile, idatha ehlanganiswe ngemini iya kuqala yonke indlela ukubuyela kwi-1677 (i-InfluxDB ixhasa ngokusemthethweni ixesha elisusela kulo nyaka):

Umsindo, uthethathethwano kunye nokudakumba xa usebenza ne-InfluxDB

Ukulungisa le ngxaki, sitshintshele inkonzo okwethutyana kwi-UTC+0.

4. Ukusebenza

Zininzi iibenchmarks kwi-Intanethi ezithelekisa i-InfluxDB kunye nezinye iidatabase. Ekuboneni kokuqala, zazibukeka njengezinto zokuthengisa, kodwa ngoku ndicinga ukuba kukho inyaniso kubo.

Ndiza kukuxelela ityala lam.

Inkonzo ibonelela ngendlela ye-API ebuyisela izibalo zosuku lokugqibela. Xa usenza izibalo, indlela ibuza isiseko sedatha kathathu ngale mibuzo ilandelayo:

SELECT * FROM coins_info WHERE time <= NOW() GROUP BY symbol ORDER BY time DESC LIMIT 1

SELECT * FROM dominance_info ORDER BY time DESC LIMIT 1

SELECT * FROM transactions WHERE time >= NOW() - 24h ORDER BY time DESC

Ingcaciso:

  1. Kwisicelo sokuqala, sifumana amanqaku okugqibela kwingqekembe nganye enedatha yemarike. Amanqaku asibhozo kwiinkozo ezisibhozo kwimeko yam.
  2. Isicelo sesibini sifumana amanqaku amatsha.
  3. Owesithathu ucela uluhlu lwentengiselwano kwiiyure ezingama-XNUMX zokugqibela; kunokuba ngamakhulu aliqela kubo.

Mandicacise ukuba i-InfluxDB yakha ngokuzenzekelayo isalathiso esekwe kwiithegi kunye nexesha, elikhawulezisa imibuzo. Kwisicelo sokuqala Isimboli yithegi.

Ndiqhube uvavanyo loxinzelelo kule ndlela ye-API. Kwi-25 RPS, umncedisi ubonise umthwalo opheleleyo wee-CPU ezintandathu:

Umsindo, uthethathethwano kunye nokudakumba xa usebenza ne-InfluxDB

Ngelo xesha, inkqubo ye-NodeJs ayizange ibonelele nayiphi na imithwalo.

Isantya sokwenza sele sihlaziywe ngu-7-10 RPS: ukuba umxhasi omnye unokufumana impendulo kwi-200 ms, ke abathengi abayi-10 kufuneka balinde okwesibini. I-25 RPS ngumda apho uzinzo lwabandezeleka; iimpazamo ezingama-500 zibuyiselwe kubathengi.

Ngomsebenzi onjalo akunakwenzeka ukusebenzisa i-Influx kwiprojekthi yethu. Ngaphezu koko: kwiprojekthi apho ukubeka iliso kufuneka kuboniswe kubathengi abaninzi, iingxaki ezifanayo zinokuvela kwaye iseva yeemetriki iya kulayishwa kakhulu.

isiphelo

Isigqibo esibalulekileyo kumava afunyenweyo kukuba awukwazi ukuthatha iteknoloji engaziwayo kwiprojekthi ngaphandle kohlalutyo olwaneleyo. Uvavanyo olulula lwemiba evulekileyo kwi-github inokubonelela ngolwazi ukunqanda ukukhetha i-InfluxDB njengendawo yokugcina idatha.

I-InfluxDB ifanele ukuba iyilungele imisebenzi yeprojekthi yam, kodwa njengoko uqheliselo lubonisile, le datha ayifezekisi iimfuno kwaye ineempazamo ezininzi.

Unokufumana inguqulo ye-2.0.0-beta kwindawo yokugcina iprojekthi; sinokuthemba kuphela ukuba inguqulelo yesibini iya kuba nophuculo olubalulekileyo. Okwangoku, ndiza kufunda amaxwebhu e-TimescaleDB.

umthombo: www.habr.com

Yongeza izimvo