Kana iwe ukashandisa dhatabhesi yenguva (timeseries db,
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 (
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 (
Uyezve pane mitemo yekuchengetedza (
- gadzira mubvunzo unoenderera kuunganidza data mune imwe tafura;
- 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:
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
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
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):
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:
- Muchikumbiro chekutanga, tinowana mapoinzi ekupedzisira emari yega yega ine data remusika. Mapoinzi masere pamari sere mune yangu.
- Chikumbiro chechipiri chinowana imwe yemapoinzi matsva.
- 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:
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