Jekk tuża database tas-serje tal-ħin (timeseries db,
Ċaħda ta 'responsabbiltà: Il-kwistjonijiet elenkati japplikaw għall-verżjoni InfluxDB 1.7.4.
Għaliex serje tal-ħin?
Il-proġett huwa li jsegwu t-tranżazzjonijiet fuq diversi blockchains u juri statistika. Speċifikament, inħarsu lejn l-emissjoni u l-ħruq ta 'muniti stabbli (
Waqt l-analiżi tat-tranżazzjonijiet, ħarġet idea: li tuża d-database tas-serje tal-ħin InfluxDB bħala l-ħażna ewlenija. It-tranżazzjonijiet huma punti fiż-żmien u jidħlu sew fil-mudell tas-serje taż-żmien.
Il-funzjonijiet ta 'aggregazzjoni dehru wkoll konvenjenti ħafna - ideali għall-ipproċessar ta' charts b'perjodu twil. L-utent jeħtieġ chart għal sena, u d-database fiha sett ta 'dejta b'qafas ta' żmien ta 'ħames minuti. Huwa inutli li tibgħatlu l-mitt elf tikka kollha - apparti l-ipproċessar twil, lanqas biss se jidħlu fuq l-iskrin. Tista 'tikteb l-implimentazzjoni tiegħek stess li żżid il-perjodu ta' żmien, jew tuża l-funzjonijiet ta 'aggregazzjoni mibnija f'Influx. Bl-għajnuna tagħhom, tista' tiġbor id-dejta kuljum u tibgħat il-punt 365 meħtieġ.
Kienet ftit konfuża li dawn id-databases normalment jintużaw għall-iskop tal-ġbir tal-metriċi. Monitoraġġ ta 'servers, apparat iot, dak kollu li minnu miljuni ta' punti tal-forma "fluss": [<ħin> - <valur metriku>]. Imma jekk id-database taħdem tajjeb bi fluss kbir ta 'data, allura għaliex volum żgħir għandu jikkawża problemi? B'dan f'moħħna, ħadna InfluxDB biex taħdem.
X'iktar huwa konvenjenti f'InfluxDB
Minbarra l-funzjonijiet ta 'aggregazzjoni msemmija, hemm ħaġa oħra kbira - mistoqsijiet kontinwi (
Għandhom ukoll politiki ta’ żamma (
- toħloq mistoqsija kontinwa biex taggrega data f'tabella oħra;
- għall-ewwel tabella, iddefinixxi politika għat-tħassir ta' metriċi li huma eqdem minn dik l-istess ġimgħa.
U Influx se jnaqqas b'mod indipendenti d-daqs tad-dejta u jħassar affarijiet mhux meħtieġa.
Dwar data maħżuna
Mhux ħafna dejta maħżuna: madwar 70 elf transazzjoni u miljun punt ieħor b'informazzjoni tas-suq. Żieda ta' entrati ġodda - mhux aktar minn 3000 punt kuljum. Hemm ukoll metriċi għas-sit, iżda hemm ftit dejta hemmhekk u, skont il-politika ta 'żamma, huma maħżuna għal mhux aktar minn xahar.
Problemi
Matul l-iżvilupp u l-ittestjar sussegwenti tas-servizz, inqalgħu aktar u aktar problemi kritiċi fl-operat ta 'InfluxDB.
1. Tħassir tad-data
Hemm serje ta' dejta bit-tranżazzjonijiet:
SELECT time, amount, block, symbol FROM transactions WHERE symbol='USDT'
Riżultat:
Qed nibgħat kmand biex tħassar id-dejta:
DELETE FROM transactions WHERE symbol=’USDT’
Sussegwentement nagħmel talba biex nirċievi d-dejta diġà mħassra. U minflok rispons vojt, Influx jirritorna parti mid-dejta li għandha titħassar.
Qed nipprova nħassar it-tabella kollha:
DROP MEASUREMENT transactions
Niċċekkja t-tħassir tat-tabella:
SHOW MEASUREMENTS
Ma narax it-tabella fil-lista, iżda mistoqsija ġdida tad-dejta għadha tirritorna l-istess sett ta 'tranżazzjonijiet.
Il-problema seħħet lili darba biss, peress li l-każ tat-tħassir kien każ iżolat. Iżda din l-imġieba tad-database b'mod ċar ma tidħolx fil-qafas ta 'operazzjoni "korretta". Aktar tard sibtha miftuħa fuq github
Bħala riżultat, it-tħassir u mbagħad ir-restawr tad-database kollha għen.
2. Numri bil-punt li jvarja
Il-kalkoli tal-matematika meta jintużaw funzjonijiet integrati f'InfluxDB għandhom żbalji ta' preċiżjoni. Mhux li din hija xi ħaġa mhux tas-soltu, iżda hija spjaċevoli.
Fil-każ tiegħi, id-dejta għandha komponent finanzjarju u nixtieq nipproċessaha bi preċiżjoni għolja. Minħabba dan, qed nippjanaw li nabbandunaw mistoqsijiet kontinwi.
3. Mistoqsijiet kontinwi ma jistgħux jiġu adattati għal żoni tal-ħin differenti
Is-servizz għandu tabella bi statistika ta 'tranżazzjonijiet ta' kuljum. Għal kull jum, għandek bżonn tiġbor it-tranżazzjonijiet kollha għal dik il-ġurnata. Iżda l-ġurnata ta 'kull utent se tibda f'ħin differenti, u għalhekk is-sett ta' tranżazzjonijiet se jkun differenti. Sal-UTC iva
F'InfluxDB, meta tiġbor skont il-ħin, tista' wkoll tispeċifika bidla, pereżempju għall-ħin ta' Moska (UTC+3):
SELECT MEAN("supply") FROM transactions GROUP BY symbol, time(1d, 3h) fill(previous)
Iżda r-riżultat tal-mistoqsija se jkun żbaljat. Għal xi raġuni, id-dejta miġbura skond il-ġurnata se tibda lura sa 1677 (InfluxDB jappoġġja uffiċjalment medda ta' żmien minn din is-sena):
Biex naħdmu għal din il-problema, qlibna temporanjament is-servizz għal UTC+0.
4. Prestazzjoni
Hemm ħafna punti ta' referenza fuq l-Internet li jqabblu InfluxDB u databases oħra. L-ewwel daqqa t'għajn, dehru qishom materjali tal-kummerċjalizzazzjoni, iżda issa naħseb li hemm xi verità fihom.
Jien ngħidlek il-każ tiegħi.
Is-servizz jipprovdi metodu API li jirritorna statistika għall-aħħar jum. Meta jwettaq il-kalkoli, il-metodu jistaqsi mad-database tliet darbiet bil-mistoqsijiet li ġejjin:
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
Spjegazzjoni:
- Fl-ewwel talba, aħna nġibu l-aħħar punti għal kull munita b'dejta tas-suq. Tmien punti għal tmien muniti fil-każ tiegħi.
- It-tieni talba tikseb wieħed mill-aktar punti ġodda.
- It-tielet wieħed jitlob lista ta 'tranżazzjonijiet għall-aħħar XNUMX siegħa; jista' jkun hemm diversi mijiet minnhom.
Ħa niċċara li InfluxDB awtomatikament jibni indiċi bbażat fuq tikketti u ħin, li jħaffef il-mistoqsijiet. Fl-ewwel talba simbolu hija tag.
Għamilt test tal-istress fuq dan il-metodu API. Għal 25 RPS, is-server wera tagħbija sħiħa ta 'sitt CPUs:
Fl-istess ħin, il-proċess NodeJs ma pprovda l-ebda tagħbija.
Il-veloċità tal-eżekuzzjoni diġà ddegradat b'7-10 RPS: jekk klijent wieħed jista 'jirċievi tweġiba f'200 ms, allura 10 klijenti kellhom jistennew it-tieni. 25 RPS huwa l-limitu li fih batiet l-istabbiltà; 500 żball ġew ritornati lill-klijenti.
B'rendiment bħal dan huwa impossibbli li tuża Influx fil-proġett tagħna. Barra minn hekk: fi proġett fejn il-monitoraġġ jeħtieġ li jintwera lil ħafna klijenti, jistgħu jidhru problemi simili u s-server tal-metriċi jkun mgħobbi żżejjed.
Output
L-iktar konklużjoni importanti mill-esperjenza miksuba hija li ma tistax tieħu teknoloġija mhux magħrufa fi proġett mingħajr analiżi suffiċjenti. Skrinjar sempliċi ta 'kwistjonijiet miftuħa fuq github jista' jipprovdi informazzjoni biex tevita li tagħżel InfluxDB bħala l-maħżen tad-dejta prinċipali.
InfluxDB kellu jkun tajjeb għall-kompiti tal-proġett tiegħi, iżda kif wriet il-prattika, din id-database ma tissodisfax il-ħtiġijiet u għandha ħafna bugs.
Diġà tista' ssib il-verżjoni 2.0.0-beta fir-repożitorju tal-proġett; nistgħu biss nittamaw li t-tieni verżjoni jkollha titjib sinifikanti. Sadanittant, immur nistudja d-dokumentazzjoni TimescaleDB.
Sors: www.habr.com