Hasha, kutaurirana uye kushungurudzika paunenge uchishanda neInfluxDB

Hasha, kutaurirana uye kushungurudzika paunenge uchishanda neInfluxDB

Kana iwe ukashandisa dhatabhesi yenguva (timeseries db, wiki Vasai) senzvimbo huru yekuchengetedza nzvimbo ine nhamba, ipapo panzvimbo yekugadzirisa dambudziko iwe unogona kuwana yakawanda yemusoro. Ndiri kushanda purojekiti inoshandisa dhatabhesi yakadai, uye dzimwe nguva InfluxDB, iyo ichakurukurwa, yakaratidza zvinoshamisa zvisingatarisirwi.

Disclaimer: Nyaya dzakanyorwa dzinoshanda kuInfluxDB vhezheni 1.7.4.

Why time series?

Iyo purojekiti ndeyekutevera kutengeserana pane akasiyana blockchains uye kuratidza manhamba. Kunyanya, isu tinotarisa kuburitsa uye kupisa kwemari yakagadzikana (wiki Vasai) Kubva pane izvi zvekutengeserana, iwe unofanirwa kuvaka magirafu uye kuratidza pfupiso matafura.

Ndichiri kuongorora kutengeserana, zano rakauya: kushandisa iyo InfluxDB nguva yakatevedzana dhatabhesi seyo huru yekuchengetedza. Transactions mapoinzi munguva uye anokwana zvakanaka mumuenzaniso wenguva.

Iwo aggregation mabasa aitaridzikawo ari nyore - akanakira kugadzirisa machati ane nguva refu. Mushandisi anoda chati kwegore, uye dhatabhesi ine data seti ine nguva yemaminitsi mashanu. Hazvina basa kumutumira ese zviuru zana madotsi - kunze kwekurebesa kugadzirisa, haatombokwane pachiratidziri. Iwe unogona kunyora yako pachako kuita kwekuwedzera iyo nguva yakatarwa, kana kushandisa mabasa ekubatanidza akavakirwa muInflux. Nerubatsiro rwavo, unogona kuunganidza data nezuva uye kutumira inodiwa 365 mapoinzi.

Zvaive zvishoma zvinovhiringa kuti dhatabhesi dzakadaro dzinowanzo shandiswa nechinangwa chekuunganidza metrics. Kutariswa kwemaseva, iot zvishandiso, zvese zvinobva kune mamirioni emapoinzi efomu "kuyerera": [<nguva> - <metric kukosha>]. Asi kana iyo dhatabhesi ichishanda nemazvo nekuyerera kwedata hombe, saka nei vhoriyamu diki ichifanira kukonzera matambudziko? Tichifunga izvi, takatora InfluxDB kushanda.

Chii chimwe chiri nyore muInfluxDB

Kunze kweakataurwa mabasa ekuunganidza, pane chimwe chinhu chikuru - mibvunzo inoenderera (doc) Uyu mugadziri akavakirwa mudhatabhesi anogona kugadzirisa data pane hurongwa. Semuenzaniso, maawa makumi maviri nemana ega ega unogona kuunganidza marekodhi ese ezuva, kuverenga avhareji uye kurekodha imwe pfungwa nyowani mune imwe tafura usinganyore mabhasikoro ako.

Uyezve pane mitemo yekuchengetedza (doc) -kumisikidza kudzima data mushure menguva yakati. Inobatsira kana, semuenzaniso, iwe unofanirwa kuchengeta iyo CPU mutoro kwevhiki nezviyero kamwe pasekondi, asi pamusoro pechinhambwe chemwedzi yakati kuti kurongeka kwakadaro hakudiwi. Mumamiriro ezvinhu akadaro, unogona kuita izvi:

  1. gadzira mubvunzo unoenderera kuunganidza data mune imwe tafura;
  2. yetafura yekutanga, tsanangura mutemo wekudzima metrics akakura kupfuura vhiki imwe chete iyoyo.

Uye Influx ichazvimiririra kuderedza saizi yedata uye kudzima zvinhu zvisina basa.

Nezve data rakachengetwa

Kwete data rakawanda rakachengetwa: nezve 70 zviuru zvekutengeserana uye mamwe miriyoni mapoinzi ane ruzivo rwemusika. Kuwedzera zvinyorwa zvitsva - kwete kupfuura 3000 mapoinzi pazuva. Kune zvakare metrics yesaiti, asi pane diki data ipapo uye, maererano nekuchengetedza mutemo, ivo vanochengetwa kwete inopfuura mwedzi.

Matambudziko

Munguva yekuvandudza uye kwakatevera kuyedzwa kwesevhisi, matambudziko akawedzera uye akanyanya kumuka mukushanda kweInfluxDB.

1. Kudzima data

Pane nhevedzano yedata ine kutengeserana:

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

Mhinduro:

Hasha, kutaurirana uye kushungurudzika paunenge uchishanda neInfluxDB

Ndiri kutumira murairo wekudzima data:

DELETE FROM transactions WHERE symbol=’USDT’

Tevere ndinoita chikumbiro chekugamuchira iyo yakatodzimwa data. Uye pachinzvimbo chemhinduro isina chinhu, Influx inodzosa chikamu che data chinofanira kubviswa.

Ndiri kuedza kudzima tafura yese:

DROP MEASUREMENT transactions

Ndinotarisa kubviswa kwetafura:

SHOW MEASUREMENTS

Ini handisi kuona tafura mune iyo rondedzero, asi mutsva wedata mubvunzo uchiri kudzosa seti imwechete yekutengeserana.

Dambudziko rakangouya kwandiri kamwe chete, sezvo nyaya yekudzimwa yaive yega. Asi maitiro aya edhatabhesi zvakajeka haakodzeri muchimiro che "chaiyo" mashandiro. Gare gare ndakaona yakavhurwa pa github tikiti rinenge gore rapfuura panyaya iyi.

Nekuda kweizvozvo, kudzima uye nekudzoreredza dhatabhesi rese kwakabatsira.

2. Inoyangarara poindi nhamba

Masvomhu ekuverenga kana uchishandisa akavakirwa-mukati mabasa muInfluxDB ane zvikanganiso zvechokwadi. Kwete kuti ichi chinhu chisina kujairika, asi chisingafadzi.

Mune mhaka yangu, iyo data ine chikamu chemari uye ndinoda kuigadzirisa nehupamhi hwepamusoro. Nekuda kweizvi, tinoronga kusiya mibvunzo inoenderera.

3. Mibvunzo inoenderera haigone kuchinjirwa kune dzakasiyana nzvimbo dzenguva

Sevhisi ine tafura ine nhamba dzemazuva ese dzekutengeserana. Kwezuva rega rega, unofanirwa kuisa mumapoka zvese zvekutengeserana zvezuva iro. Asi zuva remushandisi wega wega richatanga panguva yakasiyana, uye saka seti yekutengeserana ichave yakasiyana. NeUTC hongu 37 akasiyana kuchinja kwaunoda kuunganidza data.

MuInfluxDB, kana uchiunganidza nenguva, unogona kuwedzera kutsanangura shanduko, semuenzaniso yenguva yeMoscow (UTC+3):

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

Asi mhinduro yemubvunzo ichange isiriyo. Nekuda kwechimwe chikonzero, data yakaunganidzwa masikati inotanga nzira yese kudzokera ku1677 (InfluxDB inotsigira zviri pamutemo nguva kubva gore rino):

Hasha, kutaurirana uye kushungurudzika paunenge uchishanda neInfluxDB

Kuti tigadzirise dambudziko iri, takachinjira sevhisi kuUTC+0.

4. Kuita

Kune akawanda mabhenji paInternet anofananidza InfluxDB uye mamwe dhatabhesi. Pakutanga, vaitaridzika sezvinhu zvekutengesa, asi ikozvino ndinofunga kuti mune chokwadi mavari.

Ndichakuudza nyaya yangu.

Iyo sevhisi inopa API nzira inodzosa manhamba ezuva rekupedzisira. Paunenge uchiverenga, nzira inobvunza dhatabhesi katatu nemibvunzo inotevera:

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

Tsananguro:

  1. Muchikumbiro chekutanga, tinowana mapoinzi ekupedzisira emari yega yega ine data remusika. Mapoinzi masere pamari sere mune yangu.
  2. Chikumbiro chechipiri chinowana imwe yemapoinzi matsva.
  3. Wechitatu anokumbira runyoro rwekutengeserana kwemaawa makumi maviri nemana ekupedzisira; panogona kunge paine mazana akati wandei.

Rega ndijekese kuti InfluxDB inogadzira otomatiki index yakavakirwa pama tag nenguva, iyo inomhanyisa mibvunzo. Muchikumbiro chekutanga chiratidzo iri tag.

Ini ndaita bvunzo yekushushikana pane iyi API nzira. Kune makumi maviri neshanu RPS, sevha yakaratidza mutoro uzere wemaCPU matanhatu:

Hasha, kutaurirana uye kushungurudzika paunenge uchishanda neInfluxDB

Panguva imwecheteyo, maitiro eNodeJs haana kupa chero mutoro zvachose.

Kumhanyisa kwekuuraya kwakatoderedzwa ne7-10 RPS: kana mutengi mumwe aigona kugamuchira mhinduro mu200 ms, ipapo vatengi gumi vaifanira kumirira kwechipiri. 10 RPS ndiyo muganho pawakagadzikana kugadzikana; 25 zvikanganiso zvakadzoserwa kune vatengi.

Nekuita kwakadaro hazvigoneke kushandisa Influx muchirongwa chedu. Uyezve: mupurojekiti umo kutarisa kunoda kuratidzwa kune vakawanda vatengi, matambudziko akafanana anogona kuoneka uye metrics server icharemerwa.

mhedziso

Mhedziso inonyanya kukosha kubva pachiitiko chawakawana ndechekuti haugone kutora tekinoroji isingazivikanwe mupurojekiti pasina ongororo yakakwana. Kuongororwa kwakapusa kwezvinhu zvakavhurika pa github kunogona kupa ruzivo kudzivirira kusarudza InfluxDB sechitoro chikuru chedhata.

InfluxDB inofanira kunge yakanyatsokodzera mabasa epurojekiti yangu, asi sekuratidzwa kwatakaita, iyi dhatabhesi haizadzise zvinodiwa uye ine mabhugi akawanda.

Iwe unogona kutowana vhezheni 2.0.0-beta mune repository yeprojekiti; isu tinogona chete kutarisira kuti iyo yechipiri vhezheni ichave nekunatsiridza kukuru. Zvichakadaro, ndichaenda kunodzidza TimescaleDB zvinyorwa.

Source: www.habr.com

Voeg