Mkwiyo, kukambirana komanso kukhumudwa mukamagwira ntchito ndi InfluxDB

Mkwiyo, kukambirana komanso kukhumudwa mukamagwira ntchito ndi InfluxDB

Ngati mugwiritsa ntchito nkhokwe yanthawi (timeseries db, wiki) monga kusungirako kwakukulu kwa malo omwe ali ndi ziwerengero, ndiye kuti m'malo mothetsa vutoli mutha kupeza mutu wambiri. Ndikugwira ntchito yomwe imagwiritsa ntchito nkhokwe zotere, ndipo nthawi zina InfluxDB, yomwe tidzakambitsirana, imapereka zodabwitsa zosayembekezereka.

chandalama: Nkhani zomwe zalembedwa zikugwira ntchito ku mtundu wa InfluxDB 1.7.4.

Chifukwa chiyani mndandanda wanthawi?

Ntchitoyi ndikutsata zochitika pa blockchains zosiyanasiyana ndikuwonetsa ziwerengero. Makamaka, timayang'ana kutulutsa ndi kuwotcha ndalama zokhazikika (wiki). Kutengera ndi zochitika izi, muyenera kupanga ma graph ndikuwonetsa matebulo achidule.

Ndikusanthula zochitika, lingaliro lidabwera: kugwiritsa ntchito nkhokwe yanthawi ya InfluxDB ngati chosungira chachikulu. Zochita zimatengera nthawi ndipo zimagwirizana bwino ndi mtundu wanthawi.

Ntchito zophatikizira zidawonekanso zosavuta kwambiri - zabwino pokonza ma chart okhala ndi nthawi yayitali. Wogwiritsa ntchito amafunikira tchati kwa chaka chimodzi, ndipo nkhokwe ili ndi data yokhala ndi nthawi ya mphindi zisanu. Ndizopanda pake kumutumizira madontho 365 - kupatula kukonza kwautali, sangakwane pazenera. Mutha kulemba zomwe mwakhazikitsa pakuwonjezera nthawi, kapena gwiritsani ntchito zophatikiza zomwe zidapangidwa mu Influx. Ndi chithandizo chawo, mukhoza kusonkhanitsa deta masana ndi kutumiza mfundo XNUMX zofunika.

Zinali zosokoneza pang'ono kuti nkhokwe zoterezi nthawi zambiri zimagwiritsidwa ntchito pofuna kusonkhanitsa ma metric. Kuyang'anira ma seva, zida za iot, chilichonse chomwe mamiliyoni a mfundo za "flow": [ - ]. Koma ngati database ikugwira ntchito bwino ndi kuchuluka kwa data, ndiye chifukwa chiyani voliyumu yaying'ono iyenera kuyambitsa mavuto? Poganizira izi, tidatenga InfluxDB kuti tigwire ntchito.

Ndi chiyani chinanso chomwe chili chosavuta ku InfluxDB

Kupatula ntchito zomwe zatchulidwazi, pali chinthu chinanso chachikulu - mafunso mosalekeza (Doc). Iyi ndi ndondomeko yomangidwa mu database yomwe imatha kukonza deta pa ndandanda. Mwachitsanzo, maola 24 aliwonse mutha kupanga magulu onse a tsikulo, kuwerengera pafupifupi ndikujambulitsa mfundo imodzi patebulo lina osalemba njinga zanu.

Komanso pali ndondomeko zosungira (Doc) -kukhazikitsa kufufutidwa kwa data pakatha nthawi inayake. Ndizothandiza pamene, mwachitsanzo, muyenera kusunga CPU katundu kwa sabata ndi miyeso kamodzi pa sekondi, koma pa mtunda wa miyezi ingapo kulondola koteroko sikufunika. Zikatero, mutha kuchita izi:

  1. pangani funso losalekeza kuti muphatikize deta mu tebulo lina;
  2. patebulo loyamba, fotokozani ndondomeko yochotsa ma metric omwe ali akale kuposa sabata lomwelo.

Ndipo Influx idzachepetsa paokha kukula kwa deta ndikuchotsa zinthu zosafunikira.

Za data yosungidwa

Palibe zambiri zomwe zasungidwa: za 70 zochitika ndi mfundo zina miliyoni ndi chidziwitso chamsika. Kuwonjezera zolemba zatsopano - zosaposa 3000 mfundo patsiku. Palinso ma metric a tsambalo, koma pali deta yochepa pamenepo ndipo, malinga ndi ndondomeko yosungira, amasungidwa osapitirira mwezi umodzi.

Mavuto

Pachitukuko ndi kuyesedwa kotsatira kwa ntchitoyi, zovuta zowonjezereka zidabuka pakugwira ntchito kwa InfluxDB.

1. Kuchotsa deta

Pali mndandanda wa data ndi zochitika:

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

Zotsatira:

Mkwiyo, kukambirana komanso kukhumudwa mukamagwira ntchito ndi InfluxDB

Ndikutumiza lamulo lochotsa deta:

DELETE FROM transactions WHERE symbol=’USDT’

Kenako ndikupempha kuti ndilandire deta yomwe yachotsedwa kale. Ndipo m'malo moyankha mopanda kanthu, Influx imabweza gawo la data lomwe liyenera kuchotsedwa.

Ndikuyesera kuchotsa tebulo lonse:

DROP MEASUREMENT transactions

Ndikuwona kufufutidwa kwa tebulo:

SHOW MEASUREMENTS

Sindikuwona tebulo pamndandanda, koma funso latsopano la data limabwezeranso magawo omwewo.

Vutoli lidandichitikira kamodzi kokha, popeza mlandu wochotsa udali wodzipatula. Koma khalidwe ili la database silikugwirizana ndi ndondomeko ya "zolondola" ntchito. Pambuyo pake ndidapeza itatsegulidwa pa github tikiti pafupifupi chaka chapitacho pa mutu uwu.

Zotsatira zake, kuchotsa ndikubwezeretsanso database yonse kunathandiza.

2. Manambala a mfundo zoyandama

Kuwerengera masamu mukamagwiritsa ntchito zomanga mu InfluxDB kumakhala ndi zolakwika zolondola. Osati kuti izi ndi zachilendo, koma sizosangalatsa.

Kwa ine, deta ili ndi gawo lazachuma ndipo ndikufuna kuyikonza molondola kwambiri. Pachifukwa ichi, tikukonzekera kusiya mafunso osalekeza.

3. Mafunso osalekeza sangasinthidwe kuti agwirizane ndi nthawi zosiyanasiyana

Ntchitoyi ili ndi tebulo lomwe lili ndi ziwerengero zamalonda zatsiku ndi tsiku. Patsiku lililonse, muyenera kusonkhanitsa zochitika zonse za tsikulo. Koma tsiku la wogwiritsa ntchito aliyense lidzayamba nthawi yosiyana, ndipo chifukwa chake zochitikazo zidzakhala zosiyana. Ndi UTC inde Mitundu 37 zosintha zomwe muyenera kuphatikizira deta.

Mu InfluxDB, mukamasonkhanitsa nthawi, mutha kufotokozeranso kusintha, mwachitsanzo nthawi ya Moscow (UTC+3):

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

Koma zotsatira za funso zidzakhala zolakwika. Pazifukwa zina, zomwe zasankhidwa masana ziyamba kubwerera ku 1677 (InfluxDB imathandizira nthawi yayitali kuyambira chaka chino):

Mkwiyo, kukambirana komanso kukhumudwa mukamagwira ntchito ndi InfluxDB

Kuti tithane ndi vutoli, tinasinthitsa ntchitoyi kwa UTC+0 kwakanthawi.

4. Magwiridwe

Pali ma benchmark ambiri pa intaneti omwe amafananiza InfluxDB ndi nkhokwe zina. Poyamba, iwo ankawoneka ngati zipangizo zamalonda, koma tsopano ndikuganiza kuti pali choonadi mwa iwo.

Ndikuuzani vuto langa.

Ntchitoyi imapereka njira ya API yomwe imabwezera ziwerengero za tsiku lomaliza. Powerengera, njirayo imafunsa nkhokwe katatu ndi mafunso otsatirawa:

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

Kufotokozera:

  1. Mu pempho loyamba, timapeza mfundo zomaliza za ndalama iliyonse yokhala ndi deta yamsika. Mfundo zisanu ndi zitatu pa ndalama zisanu ndi zitatu kwa ine.
  2. Pempho lachiwiri limapeza imodzi mwa mfundo zatsopano.
  3. Wachitatu apempha mndandanda wazomwe zachitika maola XNUMX apitawa; pakhoza kukhala mazana angapo aiwo.

Ndiloleni ndifotokozere kuti InfluxDB imangopanga index kutengera ma tag ndi nthawi, zomwe zimafulumizitsa mafunso. Mu pempho loyamba Chizindikiro ndi tag.

Ndayesa mayeso opsinjika panjira iyi ya API. Kwa 25 RPS, seva idawonetsa kuchuluka kwa ma CPU asanu ndi limodzi:

Mkwiyo, kukambirana komanso kukhumudwa mukamagwira ntchito ndi InfluxDB

Panthawi imodzimodziyo, ndondomeko ya NodeJs sinapereke katundu uliwonse.

Liwiro lakupha ladetsedwa kale ndi 7-10 RPS: ngati kasitomala mmodzi angalandire yankho mu 200 ms, ndiye makasitomala 10 amayenera kudikirira kachiwiri. 25 RPS ndiye malire omwe kukhazikika kudasokonekera; zolakwika 500 zidabwezedwa kwa makasitomala.

Ndikuchita koteroko sikutheka kugwiritsa ntchito Influx mu polojekiti yathu. Komanso: mu pulojekiti yomwe kuwunika kumayenera kuwonetsedwa kwa makasitomala ambiri, zovuta zofananira zitha kuwoneka ndipo ma seva a metrics adzadzaza.

Pomaliza

Mfundo yofunika kwambiri pazochitika zomwe mwapeza ndikuti simungathe kutenga teknoloji yosadziwika mu polojekiti popanda kusanthula kokwanira. Kuwunika kosavuta kwa nkhani zotseguka pa github kungapereke chidziwitso chopewa kusankha InfluxDB ngati sitolo yayikulu.

InfluxDB iyenera kukhala yokwanira bwino pa ntchito za polojekiti yanga, koma monga momwe zasonyezera, deta iyi simakwaniritsa zosowa ndipo ili ndi nsikidzi zambiri.

Mutha kupeza kale mtundu wa 2.0.0-beta m'malo osungira projekiti; titha kuyembekeza kuti mtundu wachiwiri ukhala ndi kusintha kwakukulu. Pakadali pano, ndipita kukaphunzira zolemba za TimescaleDB.

Source: www.habr.com

Kuwonjezera ndemanga