Intukuthelo, ukuxoxisana nokudangala lapho usebenza ne-InfluxDB

Intukuthelo, ukuxoxisana nokudangala lapho usebenza ne-InfluxDB

Uma usebenzisa i-database yochungechunge lwesikhathi (i-timeseries db, wiki) njengesitoreji esiyinhloko sesayithi elinezibalo, khona-ke esikhundleni sokuxazulula inkinga ungathola amakhanda amaningi. Ngisebenza kuphrojekthi esebenzisa isizindalwazi esinjalo, futhi ngezinye izikhathi i-InfluxDB, okuzoxoxwa ngayo, yethule izimanga ezingalindelekile ngokuphelele.

Disclaimer: Izinkinga ezisohlwini zisebenza enguqulweni ye-InfluxDB 1.7.4.

Kungani uchungechunge lwesikhathi?

Iphrojekthi iwukulandelela ukuthengiselana kuma-blockchain ahlukahlukene kanye nokubonisa izibalo. Ngokuqondile, sibheka ukuphuma nokushiswa kwezinhlamvu zemali ezizinzile (wiki). Ngokusekelwe kulokhu kuthenga, udinga ukwakha amagrafu futhi ubonise amathebula esifinyezo.

Ngenkathi kuhlaziywa okwenziwayo, kwavela umbono: ukusebenzisa isizindalwazi sochungechunge lwesikhathi se-InfluxDB njengendawo yokugcina enkulu. Okwenziwayo kungamaphuzu ngesikhathi futhi kufanelana kahle nemodeli yochungechunge lwesikhathi.

Imisebenzi yokuhlanganisa nayo ibukeke ifaneleka kakhulu - ilungele ukucubungula amashadi anesikhathi eside. Umsebenzisi udinga ishadi lonyaka, futhi isizindalwazi siqukethe isethi yedatha enohlaka lwesikhathi lwemizuzu emihlanu. Akusizi ukumthumelela wonke amachashazi ayizinkulungwane eziyikhulu - ngaphandle kokucubungula isikhathi eside, ngeke aze alingane esikrinini. Ungabhala ukusebenzisa kwakho ukukhulisa isikhathi, noma usebenzise imisebenzi yokuhlanganisa eyakhelwe ku-Influx. Ngosizo lwabo, ungaqoqa idatha ngosuku futhi uthumele amaphuzu adingekayo angama-365.

Bekudida kancane ukuthi imininingwane enjalo ivamise ukusetshenziselwa inhloso yokuqoqa amamethrikhi. Ukuqapha amaseva, amadivayisi we-iot, yonke into okuvela kuyo izigidi zamaphoyinti efomu elithi “flow”: [<isikhathi> - <inani lemethrikhi>]. Kodwa uma i-database isebenza kahle ngokugeleza kwedatha enkulu, kungani-ke ivolumu encane kufanele ibangele izinkinga? Sinalokhu engqondweni, sithathe i-InfluxDB ukuze sisebenze.

Yini enye elula ku-InfluxDB

Ngaphandle kwemisebenzi yokuhlanganisa eshiwo, kukhona enye into enhle - imibuzo eqhubekayo (doc). Lesi isihleli esakhelwe kusizindalwazi esingacubungula idatha kushejuli. Isibonelo, njalo emahoreni angama-24 ungaqoqa wonke amarekhodi osuku, ubale isilinganiso futhi urekhode iphuzu elisha kwelinye ithebula ngaphandle kokubhala amabhayisikili akho.

Futhi ube izinqubomgomo zokugcina (doc)—ukusetha ukususwa kwedatha ngemva kwesikhathi esithile. Kuwusizo uma, ngokwesibonelo, udinga ukugcina umthwalo we-CPU iviki ngezilinganiso kanye ngomzuzwana, kodwa ngebanga lezinyanga ezimbalwa ukunemba okunjalo akudingekile. Esimweni esinjalo, ungenza lokhu:

  1. dala umbuzo oqhubekayo ukuze uhlanganise idatha kwelinye ithebula;
  2. kuthebula lokuqala, chaza inqubomgomo yokususa amamethrikhi amadala kunalelo viki elifanayo.

Futhi Ukuthutheleka kuzonciphisa ngokuzimela usayizi wedatha futhi kususe izinto ezingadingekile.

Mayelana nedatha egciniwe

Ayikho idatha eningi egcinwayo: cishe ukuthengiswa kwezinkulungwane ezingama-70 namanye amaphuzu ayisigidi ngolwazi lwemakethe. Ukwengeza okufakiwe okusha - amaphuzu angadluli ku-3000 ngosuku. Kukhona futhi amamethrikhi esayithi, kodwa kunedatha encane lapho futhi, ngokomgomo wokugcinwa, agcinwa isikhathi esingaphezu kwenyanga.

Izinkinga

Ngesikhathi sokuthuthukiswa nokuhlolwa okwalandela kwensizakalo, kwavela izinkinga ezibucayi kakhulu ekusebenzeni kwe-InfluxDB.

1. Ukususa idatha

Kunochungechunge lwedatha enokuthengiselana:

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

Umphumela:

Intukuthelo, ukuxoxisana nokudangala lapho usebenza ne-InfluxDB

Ngithumela umyalo wokususa idatha:

DELETE FROM transactions WHERE symbol=’USDT’

Okulandelayo ngenza isicelo sokuthola idatha eseyisusiwe kakade. Futhi esikhundleni sempendulo engenalutho, i-Influx ibuyisela ingxenye yedatha okufanele isuswe.

Ngizama ukususa lonke ithebula:

DROP MEASUREMENT transactions

Ngibheka ukususwa kwetafula:

SHOW MEASUREMENTS

Angiliboni ithebula ohlwini, kodwa umbuzo wedatha omusha usabuyisela isethi efanayo yokwenziwe.

Inkinga yenzeke kimi kanye kuphela, njengoba icala lokucisha kwakuyicala elingalodwa. Kodwa lokhu kuziphatha kwe-database ngokusobala akuhambisani nohlaka lokusebenza "olulungile". Kamuva ngathola ivuliwe ku-github ithikithi cishe unyaka odlule ngalesi sihloko.

Ngenxa yalokho, ukususa bese ubuyisela yonke isizindalwazi kusizile.

2. Izinombolo zamaphuzu antantayo

Izibalo zezibalo uma usebenzisa imisebenzi eyakhelwe ngaphakathi ku-InfluxDB inamaphutha okunemba. Akukhona ukuthi lokhu kuyinto engavamile, kodwa akujabulisi.

Esimeni sami, idatha inengxenye yezezimali futhi ngingathanda ukuyicubungula ngokunemba okuphezulu. Ngenxa yalokhu, sihlela ukushiya imibuzo eqhubekayo.

3. Imibuzo eqhubekayo ayikwazi ukulungiswa kumazoni esikhathi ahlukene

Isevisi inetafula elinezibalo zokwenziwe zansuku zonke. Ngosuku ngalunye, udinga ukuqoqa yonke imisebenzi yalolo suku. Kodwa usuku lomsebenzisi ngamunye luzoqala ngesikhathi esihlukile, ngakho-ke isethi yokuthengiselana izohluka. Nge-UTC yebo Izinhlobo ezi-37 amashifu odinga ukuhlanganisa idatha yawo.

Ku-InfluxDB, uma uqoqa ngesikhathi, ungakwazi futhi ukucacisa ukushintsha, isibonelo ngesikhathi sase-Moscow (UTC+3):

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

Kodwa umphumela wombuzo uzobe ungalungile. Ngesizathu esithile, idatha eqoqwe ngosuku izoqala yonke indlela ibuyele ku-1677 (I-InfluxDB isekela ngokusemthethweni ubude besikhathi kusuka kulo nyaka):

Intukuthelo, ukuxoxisana nokudangala lapho usebenza ne-InfluxDB

Ukuze sixazulule le nkinga, sishintshele isevisi i-UTC+0 okwesikhashana.

4. Ukusebenza

Kunamabhentshimakhi amaningi ku-inthanethi aqhathanisa i-InfluxDB nezinye izingosi zolwazi. Uma uthi nhlá, zazibukeka njengezinto zokumaketha, kodwa manje ngicabanga ukuthi kukhona iqiniso kuzo.

Ngizokutshela udaba lwami.

Isevisi inikeza indlela ye-API ebuyisela izibalo zosuku lokugcina. Lapho wenza izibalo, indlela ibuza isizindalwazi izikhathi ezintathu ngale mibuzo elandelayo:

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

Incazelo:

  1. Esicelweni sokuqala, sithola amaphuzu okugcina ohlamvu lwemali ngalunye olunedatha yemakethe. Amaphuzu ayisishiyagalombili ngezinhlamvu zemali eziyisishiyagalombili ecaleni lami.
  2. Isicelo sesibili sithola elinye lamaphuzu amasha.
  3. Owesithathu ucela uhlu lwemisebenzi yamahora angu-XNUMX okugcina; kungase kube amakhulu ambalwa akho.

Ake ngicacise ukuthi i-InfluxDB yakha ngokuzenzakalelayo inkomba ngokusekelwe kumathegi nesikhathi, okusheshisa imibuzo. Esicelweni sokuqala Uphawu umaka.

Ngihlole ingcindezi ngale ndlela ye-API. Ku-25 RPS, iseva ibonise umthwalo ogcwele wama-CPU ayisithupha:

Intukuthelo, ukuxoxisana nokudangala lapho usebenza ne-InfluxDB

Ngesikhathi esifanayo, inqubo ye-NodeJs ayizange inikeze noma yimuphi umthwalo nhlobo.

Ijubane lokubulala selivele lehlisiwe ngo-7-10 RPS: uma iklayenti elilodwa lingathola impendulo ku-200 ms, amaklayenti ayi-10 kwakudingeka alinde umzuzwana. 25 RPS umkhawulo lapho ukuzinza kwalimala khona; amaphutha angu-500 abuyiselwe kumakhasimende.

Ngokusebenza okunjalo akunakwenzeka ukusebenzisa i-Influx kuphrojekthi yethu. Ngaphezu kwalokho: kuphrojekthi lapho ukuqapha kudinga ukuboniswa kumakhasimende amaningi, izinkinga ezifanayo zingase zivele futhi iseva yamamethrikhi izolayishwa ngokweqile.

isiphetho

Isiphetho esibaluleke kakhulu esivela kokuhlangenwe nakho okutholiwe ukuthi awukwazi ukuthatha ubuchwepheshe obungaziwa kuphrojekthi ngaphandle kokuhlaziya okwanele. Ukuhlolwa okulula kwezinkinga ezivulekile ku-github kunganikeza ulwazi ukugwema ukukhetha i-InfluxDB njengesitolo sedatha esikhulu.

I-InfluxDB bekufanele ifaneleke kahle imisebenzi yephrojekthi yami, kodwa njengoba umkhuba ubonisile, le database ayihlangabezani nezidingo futhi inezimbungulu eziningi.

Usuvele uthole inguqulo engu-2.0.0-beta endaweni yephrojekthi; singathemba kuphela ukuthi inguqulo yesibili izoba nokuthuthuka okukhulu. Okwamanje, ngizohamba ngifunde imibhalo ye-TimescaleDB.

Source: www.habr.com

Engeza amazwana