Ti o ba lo data lẹsẹsẹ akoko kan (timeseries db,
be: Awọn ọran ti a ṣe akojọ kan si ẹya InfluxDB 1.7.4.
Kí nìdí akoko jara?
Ise agbese na ni lati tọpa awọn iṣowo lori ọpọlọpọ awọn blockchains ati awọn iṣiro ifihan. Ni pataki, a wo itujade ati sisun ti awọn owó iduroṣinṣin (
Lakoko ti o n ṣe itupalẹ awọn iṣowo, imọran wa: lati lo aaye data jara akoko InfluxDB bi ibi ipamọ akọkọ. Awọn iṣowo jẹ awọn aaye ni akoko ati pe wọn baamu daradara sinu awoṣe jara akoko.
Awọn iṣẹ iṣakojọpọ tun wo irọrun pupọ - apẹrẹ fun awọn shatti sisẹ pẹlu akoko pipẹ. Olumulo nilo aworan apẹrẹ fun ọdun kan, ati pe ibi ipamọ data ni eto data kan pẹlu aaye akoko ti iṣẹju marun. Ko ṣe pataki lati firanṣẹ gbogbo awọn aami ọgọọgọrun ẹgbẹrun - yato si sisẹ pipẹ, wọn kii yoo baamu paapaa loju iboju. O le kọ imuse tirẹ ti jijẹ igba akoko, tabi lo awọn iṣẹ ikojọpọ ti a ṣe sinu Influx. Pẹlu iranlọwọ wọn, o le ṣe akojọpọ data ni ọjọ kan ati firanṣẹ awọn aaye 365 ti o nilo.
O jẹ airoju diẹ pe iru awọn data data ni a maa n lo fun idi ti gbigba awọn metiriki. Abojuto ti awọn olupin, awọn ẹrọ iot, ohun gbogbo lati eyiti awọn miliọnu awọn aaye “sisan”: [<akoko> - <metric value>]. Ṣugbọn ti ibi-ipamọ data ba ṣiṣẹ daradara pẹlu ṣiṣan data nla, lẹhinna kilode ti iwọn kekere kan yoo fa awọn iṣoro? Pẹlu eyi ni lokan, a mu InfluxDB lati ṣiṣẹ.
Kini ohun miiran rọrun ni InfluxDB
Yato si awọn iṣẹ akojọpọ ti a mẹnuba, ohun nla miiran wa - lemọlemọfún ibeere (
O tun wa idaduro imulo (
- ṣẹda ibeere ti o tẹsiwaju lati ṣajọpọ data sinu tabili miiran;
- fun tabili akọkọ, ṣalaye eto imulo fun piparẹ awọn metiriki ti o dagba ju ọsẹ kanna lọ.
Ati Influx yoo ni ominira dinku iwọn data naa ati paarẹ awọn nkan ti ko wulo.
Nipa ti o ti fipamọ data
Ko data pupọ ti wa ni ipamọ: nipa awọn iṣowo 70 ẹgbẹrun ati awọn aaye miliọnu miiran pẹlu alaye ọja. Ṣafikun awọn titẹ sii tuntun - ko ju awọn aaye 3000 lọ fun ọjọ kan. Awọn metiriki tun wa fun aaye naa, ṣugbọn data kekere wa nibẹ ati, ni ibamu si eto imulo idaduro, wọn wa ni ipamọ fun ko ju oṣu kan lọ.
Isoro
Lakoko idagbasoke ati idanwo atẹle ti iṣẹ naa, awọn iṣoro to ṣe pataki pupọ ati siwaju sii dide ninu iṣẹ InfluxDB.
1. Npa data
Awọn onka data wa pẹlu awọn iṣowo:
SELECT time, amount, block, symbol FROM transactions WHERE symbol='USDT'
Esi:
Mo n fi aṣẹ ranṣẹ lati pa data rẹ:
DELETE FROM transactions WHERE symbol=’USDT’
Nigbamii Mo ṣe ibeere kan lati gba data ti paarẹ tẹlẹ. Ati dipo idahun ofo, Influx pada apakan ti data ti o yẹ ki o paarẹ.
Mo n gbiyanju lati pa gbogbo tabili naa:
DROP MEASUREMENT transactions
Mo ṣayẹwo piparẹ tabili naa:
SHOW MEASUREMENTS
Emi ko rii tabili ninu atokọ naa, ṣugbọn ibeere data tuntun tun da eto awọn iṣowo kanna pada.
Iṣoro naa ṣẹlẹ si mi ni ẹẹkan, nitori ọran piparẹ naa jẹ ọran ti o ya sọtọ. Ṣugbọn ihuwasi yii ti aaye data kedere ko ni ibamu si ilana ti iṣẹ “ti o tọ”. Nigbamii Mo rii pe o ṣii lori github
Bi abajade, pipaarẹ ati lẹhinna mimu-pada sipo gbogbo data data ṣe iranlọwọ.
2. Lilefoofo ojuami awọn nọmba
Awọn iṣiro iṣiro nigba lilo awọn iṣẹ ti a ṣe sinu InfluxDB ni awọn aṣiṣe deede. Kii ṣe pe eyi jẹ ohunkohun dani, ṣugbọn ko dun.
Ninu ọran mi, data naa ni paati inawo ati pe Emi yoo fẹ lati ṣe ilana rẹ pẹlu iṣedede giga. Nitori eyi, a gbero lati fi awọn ibeere lemọlemọ silẹ.
3. Awọn ibeere ti o tẹsiwaju ko le ṣe deede si awọn agbegbe akoko oriṣiriṣi
Iṣẹ naa ni tabili pẹlu awọn iṣiro idunadura ojoojumọ. Fun ọjọ kọọkan, o nilo lati ṣe akojọpọ gbogbo awọn iṣowo fun ọjọ yẹn. Ṣugbọn ọjọ olumulo kọọkan yoo bẹrẹ ni akoko ti o yatọ, ati nitori naa ṣeto awọn iṣowo yoo yatọ. Nipa UTC bẹẹni
Ni InfluxDB, nigbati o ba ṣe akojọpọ nipasẹ akoko, o le tun pato iyipada kan, fun apẹẹrẹ fun akoko Moscow (UTC+3):
SELECT MEAN("supply") FROM transactions GROUP BY symbol, time(1d, 3h) fill(previous)
Ṣugbọn abajade ibeere yoo jẹ aṣiṣe. Fun idi kan, data akojọpọ nipasẹ ọjọ yoo bẹrẹ ni gbogbo ọna pada si 1677 (InfluxDB ṣe atilẹyin ni ifowosi akoko akoko lati ọdun yii):
Lati ṣiṣẹ ni ayika iṣoro yii, a yipada iṣẹ fun igba diẹ si UTC+0.
4. išẹ
Ọpọlọpọ awọn aṣepari lori Intanẹẹti ti o ṣe afiwe InfluxDB ati awọn apoti isura data miiran. Ni wiwo akọkọ, wọn dabi awọn ohun elo titaja, ṣugbọn nisisiyi Mo ro pe otitọ kan wa ninu wọn.
Emi yoo sọ ọran mi fun ọ.
Iṣẹ naa n pese ọna API ti o da awọn iṣiro pada fun ọjọ ikẹhin. Nigbati o ba n ṣe awọn iṣiro, ọna naa beere aaye data ni igba mẹta pẹlu awọn ibeere wọnyi:
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
Alaye:
- Ni ibere akọkọ, a gba awọn aaye to kẹhin fun owo kọọkan pẹlu data ọja. Awọn ojuami mẹjọ fun awọn owó mẹjọ ninu ọran mi.
- Ibeere keji gba ọkan ninu awọn aaye tuntun julọ.
- Ẹkẹta beere atokọ ti awọn iṣowo fun awọn wakati XNUMX to kọja; o le jẹ ọpọlọpọ awọn ọgọọgọrun ninu wọn.
Jẹ ki n ṣalaye pe InfluxDB ṣe agbero atọka laifọwọyi da lori awọn afi ati akoko, eyiti o mu awọn ibeere pọ si. Ni ibere akọkọ aami jẹ tag.
Mo ti ṣiṣe idanwo wahala lori ọna API yii. Fun 25 RPS, olupin ṣe afihan fifuye kikun ti awọn Sipiyu mẹfa:
Ni akoko kanna, ilana NodeJs ko pese eyikeyi fifuye rara.
Iyara ipaniyan ti bajẹ tẹlẹ nipasẹ 7-10 RPS: ti alabara kan ba le gba esi ni 200 ms, lẹhinna awọn alabara 10 ni lati duro fun iṣẹju-aaya kan. 25 RPS ni opin eyiti iduroṣinṣin jiya; awọn aṣiṣe 500 ni a pada si awọn alabara.
Pẹlu iru iṣẹ bẹ ko ṣee ṣe lati lo Influx ninu iṣẹ akanṣe wa. Pẹlupẹlu: ninu iṣẹ akanṣe nibiti ibojuwo nilo lati ṣafihan si ọpọlọpọ awọn alabara, awọn iṣoro ti o jọra le han ati pe olupin metiriki yoo jẹ apọju.
ipari
Ipari pataki julọ lati iriri ti o gba ni pe o ko le gba imọ-ẹrọ aimọ sinu iṣẹ akanṣe kan laisi itupalẹ to. Ṣiṣayẹwo irọrun ti awọn ọran ṣiṣi lori github le pese alaye lati yago fun yiyan InfluxDB bi ile itaja data akọkọ.
InfluxDB yẹ ki o jẹ ibamu ti o dara fun awọn iṣẹ ṣiṣe ti iṣẹ akanṣe mi, ṣugbọn bi iṣe ti fihan, data data yii ko pade awọn iwulo ati pe o ni awọn idun pupọ.
O le ti rii ẹya 2.0.0-beta tẹlẹ ninu ibi ipamọ iṣẹ akanṣe; a le nireti pe ẹya keji yoo ni awọn ilọsiwaju pataki. Lakoko, Emi yoo lọ iwadi iwe TimescaleDB.
orisun: www.habr.com