Ja izmantojat laikrindu datu bÄzi (laikrindas db,
AtbildÄ«bas noraidÄ«Å”ana: uzskaitÄ«tÄs problÄmas attiecas uz InfluxDB versiju 1.7.4.
KÄpÄc laikrindas?
Projekta mÄrÄ·is ir izsekot darÄ«jumiem dažÄdÄs blokÄ·Ädes un parÄdÄ«t statistiku. KonkrÄti, mÄs aplÅ«kojam stabilu monÄtu emisiju un dedzinÄÅ”anu (
AnalizÄjot darÄ«jumus, radÄs ideja: kÄ galveno krÄtuvi izmantot InfluxDB laikrindu datu bÄzi. DarÄ«jumi ir laika punkti, un tie labi iekļaujas laikrindu modelÄ«.
ArÄ« apkopoÅ”anas funkcijas izskatÄ«jÄs ļoti Ärtas - ideÄli piemÄrotas diagrammu apstrÄdei ar ilgu periodu. LietotÄjam ir nepiecieÅ”ama diagramma par gadu, un datu bÄzÄ ir datu kopa ar piecu minÅ«Å”u laika posmu. Nav jÄgas sÅ«tÄ«t viÅam visus simts tÅ«kstoÅ”us punktu ā ja neskaita ilgstoÅ”u apstrÄdi, tie pat neietilps ekrÄnÄ. Varat uzrakstÄ«t savu ievieÅ”anu, lai palielinÄtu laika periodu, vai izmantot apkopoÅ”anas funkcijas, kas iebÅ«vÄtas Influx. Ar viÅu palÄ«dzÄ«bu jÅ«s varat grupÄt datus pa dienÄm un nosÅ«tÄ«t nepiecieÅ”amos 365 punktus.
Nedaudz mulsinÄja tas, ka Å”Ädas datu bÄzes parasti tiek izmantotas metriku vÄkÅ”anai. Serveru, iot ierÄ«Äu, visa, no kura āplÅ«stā miljoniem punktu, uzraudzÄ«ba: [<laiks> - <metriskÄ vÄrtÄ«ba>]. Bet, ja datu bÄze darbojas labi ar lielu datu plÅ«smu, tad kÄpÄc mazam apjomam vajadzÄtu radÄ«t problÄmas? Paturot to prÄtÄ, mÄs izmantojÄm InfluxDB darbu.
Kas vÄl ir Ärts InfluxDB
Bez minÄtajÄm apkopoÅ”anas funkcijÄm ir vÄl viena lieliska lieta - nepÄrtraukti vaicÄjumi (
ir arÄ« saglabÄÅ”anas politikas (
- izveidot nepÄrtrauktu vaicÄjumu, lai apkopotu datus citÄ tabulÄ;
- pirmajai tabulai definÄjiet politiku metrikas dzÄÅ”anai, kas ir vecÄka par to paÅ”u nedÄļu.
Un Influx patstÄvÄ«gi samazinÄs datu apjomu un izdzÄsÄ«s nevajadzÄ«gÄs lietas.
Par saglabÄtajiem datiem
Datu netiek glabÄts daudz: aptuveni 70 tÅ«kstoÅ”i darÄ«jumu un vÄl miljons punktu ar tirgus informÄciju. Jaunu ierakstu pievienoÅ”ana - ne vairÄk kÄ 3000 punkti dienÄ. Vietnei ir arÄ« metrika, taÄu tajÄ ir maz datu, un saskaÅÄ ar saglabÄÅ”anas politiku tie tiek glabÄti ne ilgÄk kÄ mÄnesi.
ProblÄmas
Pakalpojuma izstrÄdes un turpmÄkÄs testÄÅ”anas laikÄ InfluxDB darbÄ«bÄ radÄs arvien kritiskÄkas problÄmas.
1. Datu dzÄÅ”ana
Ir virkne datu par darījumiem:
SELECT time, amount, block, symbol FROM transactions WHERE symbol='USDT'
RezultÄts:
Es nosÅ«tu komandu dzÄst datus:
DELETE FROM transactions WHERE symbol=āUSDTā
TÄlÄk es pieprasu saÅemt jau dzÄstos datus. Un tukÅ”as atbildes vietÄ Influx atgriež daļu datu, kas bÅ«tu jÄdzÄÅ”.
Es mÄÄ£inu izdzÄst visu tabulu:
DROP MEASUREMENT transactions
Es pÄrbaudu tabulas dzÄÅ”anu:
SHOW MEASUREMENTS
Es neredzu tabulu sarakstÄ, taÄu jaunais datu vaicÄjums joprojÄm atgriež to paÅ”u darÄ«jumu kopu.
ProblÄma man radÄs tikai vienu reizi, jo dzÄÅ”anas gadÄ«jums bija atseviŔķs gadÄ«jums. Bet Ŕī datu bÄzes uzvedÄ«ba acÄ«mredzami neietilpst āpareizasā darbÄ«bas ietvaros. VÄlÄk es atradu to atvÄrtu vietnÄ github
RezultÄtÄ palÄ«dzÄja visas datu bÄzes dzÄÅ”ana un pÄc tam atjaunoÅ”ana.
2. PeldoÅ”Ä komata skaitļi
MatemÄtikas aprÄÄ·inos, izmantojot InfluxDB iebÅ«vÄtÄs funkcijas, ir precizitÄtes kļūdas. Tas nav nekas neparasts, bet tas ir nepatÄ«kams.
ManÄ gadÄ«jumÄ datiem ir finanÅ”u komponents, un es vÄlÄtos tos apstrÄdÄt ar augstu precizitÄti. Å Ä« iemesla dÄļ mÄs plÄnojam atteikties no nepÄrtrauktiem vaicÄjumiem.
3. NepÄrtrauktus vaicÄjumus nevar pielÄgot dažÄdÄm laika zonÄm
PakalpojumÄ ir tabula ar ikdienas darÄ«jumu statistiku. Katrai dienai ir jÄgrupÄ visi Ŕīs dienas darÄ«jumi. TaÄu katra lietotÄja diena sÄksies citÄ laikÄ, un tÄpÄc darÄ«jumu kopums bÅ«s atŔķirÄ«gs. PÄc UTC jÄ
InfluxDB, grupÄjot pÄc laika, varat papildus norÄdÄ«t nobÄ«di, piemÄram, pÄc Maskavas laika (UTC+3):
SELECT MEAN("supply") FROM transactions GROUP BY symbol, time(1d, 3h) fill(previous)
Bet vaicÄjuma rezultÄts bÅ«s nepareizs. KÄdu iemeslu dÄļ dati, kas sagrupÄti pa dienÄm, sÄksies lÄ«dz pat 1677. gadam (InfluxDB oficiÄli atbalsta laika posmu no Ŕī gada):
Lai novÄrstu Å”o problÄmu, mÄs Ä«slaicÄ«gi pÄrslÄdzÄm pakalpojumu uz UTC+0.
4. Performance
InternetÄ ir daudz etalonu, kas salÄ«dzina InfluxDB un citas datu bÄzes. No pirmÄ acu uzmetiena tie izskatÄ«jÄs pÄc mÄrketinga materiÄliem, bet tagad es domÄju, ka tajos ir kÄda patiesÄ«ba.
Es jums pastÄstÄ«Å”u savu gadÄ«jumu.
Pakalpojums nodroÅ”ina API metodi, kas atgriež statistiku par pÄdÄjo dienu. Veicot aprÄÄ·inus, metode trÄ«s reizes vaicÄ datu bÄzi ar Å”Ädiem vaicÄjumiem:
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
Paskaidrojums
- PirmajÄ pieprasÄ«jumÄ mÄs saÅemam pÄdÄjos punktus par katru monÄtu ar tirgus datiem. ManÄ gadÄ«jumÄ astoÅi punkti par astoÅÄm monÄtÄm.
- Otrais pieprasÄ«jums iegÅ«st vienu no jaunÄkajiem punktiem.
- TreÅ”ais pieprasa pÄdÄjo XNUMX stundu darÄ«jumu sarakstu, to var bÅ«t vairÄki simti.
Ä»aujiet man precizÄt, ka InfluxDB automÄtiski izveido indeksu, pamatojoties uz tagiem un laiku, kas paÄtrina vaicÄjumu izpildi. PirmajÄ pieprasÄ«jumÄ simbols ir atzÄ«me.
Esmu veicis Ŕīs API metodes stresa testu. 25 RPS serveris demonstrÄja pilnu seÅ”u CPU slodzi:
TajÄ paÅ”Ä laikÄ NodeJ process vispÄr nenodroÅ”inÄja slodzi.
Izpildes Ätrums ir samazinÄjies jau par 7-10 RPS: ja viens klients varÄja saÅemt atbildi 200 ms laikÄ, tad 10 klientiem bija jÄgaida sekunde. 25 RPS ir robeža, pie kuras cieta stabilitÄte; klientiem tika atgrieztas 500 kļūdas.
Ar Å”Ädu veiktspÄju nav iespÄjams izmantot Influx mÅ«su projektÄ. TurklÄt: projektÄ, kurÄ monitorings ir jÄdemonstrÄ daudziem klientiem, var rasties lÄ«dzÄ«gas problÄmas un tiks pÄrslogots metrikas serveris.
secinÄjums
VissvarÄ«gÄkais secinÄjums no gÅ«tÄs pieredzes ir tÄds, ka nezinÄmu tehnoloÄ£iju nevar iekļaut projektÄ bez pietiekamas analÄ«zes. VienkÄrÅ”a atklÄto problÄmu pÄrbaude vietnÄ github varÄtu sniegt informÄciju, lai izvairÄ«tos no InfluxDB izvÄles par galveno datu krÄtuvi.
InfluxDB vajadzÄja bÅ«t piemÄrotam mana projekta uzdevumiem, taÄu, kÄ liecina prakse, Ŕī datu bÄze neatbilst vajadzÄ«bÄm un tajÄ ir daudz kļūdu.
Projekta repozitorijÄ jau var atrast versiju 2.0.0-beta, atliek tikai cerÄt, ka otrajÄ versijÄ bÅ«s bÅ«tiski uzlabojumi. TikmÄr es ieÅ”u pÄtÄ«t TimescaleDB dokumentÄciju.
Avots: www.habr.com