Ҳангоми кор бо InfluxDB хашм, муомила ва депрессия

Ҳангоми кор бо InfluxDB хашм, муомила ва депрессия

Агар шумо махзани силсилаи вақтро истифода баред (timeseries db, вики) ҳамчун нигаҳдории асосӣ барои сайт бо омор, пас ба ҷои ҳалли мушкилот шумо метавонед дарди саратонро ба даст оред. Ман дар лоиҳае кор карда истодаам, ки чунин пойгоҳи додаҳоро истифода мебарад ва баъзан InfluxDB, ки мавриди баррасӣ қарор дода мешавад, сюрпризҳои комилан ғайричашмдоштро пешкаш мекунад.

Радди: Масъалаҳои номбаршуда ба версияи InfluxDB 1.7.4 дахл доранд.

Чаро силсилаи вақт?

Лоиҳа пайгирии транзаксияҳо дар блокчейнҳои гуногун ва намоиши омор мебошад. Махсусан, мо ба баровардан ва сӯхтани тангаҳои устувор назар мекунем (вики). Дар асоси ин муомилот, шумо бояд графикҳо созед ва ҷадвалҳои ҷамъбастиро нишон диҳед.

Ҳангоми таҳлили транзаксияҳо як идея пайдо шуд: истифода бурдани пойгоҳи додаҳои силсилаи вақтҳои InfluxDB ҳамчун нигаҳдории асосӣ. Амалиётҳо нуқтаҳои вақт мебошанд ва онҳо ба модели силсилаи вақт мувофиқат мекунанд.

Функсияҳои ҷамъоварӣ низ хеле қулай менамуданд - барои коркарди диаграммаҳо бо муддати тӯлонӣ беҳтаринанд. Ба корбар барои як сол диаграмма лозим аст ва базаи маълумот маҷмӯи маълумотро бо чаҳорчӯбаи вақти панҷ дақиқа дарбар мегирад. Ба ӯ фиристодани ҳама сад ҳазор нуқтаҳо бефоида аст - ба ғайр аз коркарди тӯлонӣ, онҳо ҳатто дар экран ҷойгир намешаванд. Шумо метавонед татбиқи худро оид ба зиёд кардани мӯҳлат нависед, ё функсияҳои ҷамъбасти дар Influx сохташударо истифода баред. Бо ёрии онҳо, шумо метавонед маълумотро аз рӯи рӯз гурӯҳбандӣ кунед ва 365 нуқтаи заруриро фиристед.

Ин каме печида буд, ки чунин пойгоҳҳо одатан бо мақсади ҷамъоварии ченакҳо истифода мешаванд. Мониторинги серверҳо, дастгоҳҳои iot, ҳама чизест, ки аз онҳо миллионҳо нуқтаҳои шакли "ҷараён": [<вақт> - <қимати метрӣ>]. Аммо агар пойгоҳи додаҳо бо ҷараёни бузурги додаҳо хуб кор кунад, пас чаро ҳаҷми хурд бояд мушкилот эҷод кунад? Бо дарназардошти ин, мо InfluxDB-ро ба кор бурдем.

Дар InfluxDB боз чӣ қулай аст

Ба ғайр аз вазифаҳои ҷамъбастии зикршуда, боз як чизи бузург вуҷуд дорад - пурсишҳои пайваста (д). Ин нақшасозест, ки дар пойгоҳи додаҳо сохта шудааст, ки метавонад маълумотро дар ҷадвал коркард кунад. Масалан, ҳар 24 соат шумо метавонед ҳамаи сабтҳои рӯзро гурӯҳбандӣ кунед, ҳисоби миёнаро ҳисоб кунед ва як нуқтаи навро дар ҷадвали дигар бидуни навиштани велосипедҳои худ сабт кунед.

Ҳамчунин вуҷуд дорад сиёсати нигоҳдорӣ (д) — танзими ҳазфи маълумот пас аз як давраи муайян. Ин муфид аст, вақте ки масалан, ба шумо лозим аст, ки сарбории CPU-ро дар тӯли як ҳафта бо андозагирӣ як маротиба дар як сония нигоҳ доред, аммо дар масофаи ду моҳ чунин дақиқӣ лозим нест. Дар чунин вазъият, шумо метавонед ин корро кунед:

  1. эҷод кардани дархости пайваста барои ҷамъ кардани маълумот ба ҷадвали дигар;
  2. барои ҷадвали аввал, сиёсатро барои нест кардани нишондиҳандаҳое, ки аз ҳамон ҳафта калонтаранд, муайян кунед.

Ва Influx андозаи маълумотро мустақилона коҳиш медиҳад ва чизҳои нолозимро нест мекунад.

Дар бораи маълумоти захирашуда

Маълумоти зиёд нигоҳ дошта намешавад: тақрибан 70 ҳазор транзаксия ва як миллион нуқтаи дигар бо маълумоти бозор. Илова кардани сабтҳои нав - на бештар аз 3000 хол дар як рӯз. Метрикҳо барои сайт низ мавҷуданд, аммо дар он ҷо маълумот кам аст ва тибқи сиёсати нигоҳдорӣ, онҳо на бештар аз як моҳ нигоҳ дошта мешаванд.

Масъалаҳо

Ҳангоми таҳия ва санҷиши минбаъдаи хидмат, дар кори InfluxDB мушкилоти бештар ва муҳим ба миён омаданд.

1. Нест кардани маълумот

Як қатор маълумотҳо бо транзаксия мавҷуданд:

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

Натиҷа:

Ҳангоми кор бо InfluxDB хашм, муомила ва депрессия

Ман фармон барои нест кардани маълумот мефиристам:

DELETE FROM transactions WHERE symbol=’USDT’

Минбаъд ман дархост мекунам, ки маълумоти аллакай ҳазфшударо қабул кунам. Ва ба ҷои посухи холӣ, Influx як қисми маълумотеро, ки бояд нест карда шаванд, бармегардонад.

Ман кӯшиш мекунам, ки тамоми ҷадвалро нест кунам:

DROP MEASUREMENT transactions

Ман тозакунии ҷадвалро тафтиш мекунам:

SHOW MEASUREMENTS

Ман ҷадвалро дар рӯйхат намебинам, аммо дархости нави маълумот то ҳол ҳамон маҷмӯи транзаксияҳоро бармегардонад.

Мушкилот танҳо як маротиба бо ман рӯй дод, зеро парвандаи ҳазф як парвандаи ҷудогона буд. Аммо ин рафтори база ба доираи амалиёти «дуруст» мувофик нест. Баъдтар ман онро дар github кушода ёфтам чипта кариб як сол пеш дар ин мавзуъ.

Дар натиҷа, нест кардан ва сипас барқарор кардани тамоми пойгоҳи додаҳо кӯмак кард.

2. Рақамҳои нуқтаи шинокунанда

Ҳисобҳои математикӣ ҳангоми истифодаи функсияҳои дарунсохт дар InfluxDB хатогиҳои дақиқ доранд. На ин ки ин чизи ғайриоддӣ аст, аммо он ногувор аст.

Дар ҳолати ман, маълумот ҷузъи молиявӣ дорад ва ман мехоҳам онро бо дақиқии баланд коркард кунам. Аз ин сабаб, мо нақша дорем, ки аз дархостҳои пайваста даст кашем.

3. Дархостҳои давомдор наметавонанд ба минтақаҳои гуногуни вақт мутобиқ карда шаванд

Хизматрасонӣ дорои ҷадвали дорои омори амалиёти ҳаррӯза мебошад. Барои ҳар рӯз, шумо бояд ҳамаи транзаксияҳоро барои он рӯз гурӯҳбандӣ кунед. Аммо рӯзи ҳар як корбар дар вақти дигар оғоз мешавад ва аз ин рӯ маҷмӯи муомилот гуногун хоҳад буд. Бо UTC ҳа 37 вариантҳо сменаҳое, ки барои онҳо шумо бояд маълумотро ҷамъ кунед.

Дар InfluxDB, ҳангоми гурӯҳбандӣ аз рӯи вақт, шумо метавонед ба таври иловагӣ тағиротро муайян кунед, масалан барои вақти Маскав (UTC+3):

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

Аммо натиҷаи пурсиш нодуруст хоҳад буд. Бо баъзе сабабҳо, маълумоте, ки аз рӯи рӯз гурӯҳбандӣ шудааст, то соли 1677 оғоз мешавад (InfluxDB расман як давраи вақтро аз ин сол дастгирӣ мекунад):

Ҳангоми кор бо InfluxDB хашм, муомила ва депрессия

Барои ҳалли ин мушкилот, мо муваққатан хидматро ба UTC+0 гузаронидем.

4. Намоиш

Дар Интернет меъёрҳои зиёде мавҷуданд, ки InfluxDB ва дигар пойгоҳи додаҳоро муқоиса мекунанд. Дар назари аввал онҳо ба маводи маркетинг монанд буданд, аммо ҳоло фикр мекунам, ки дар онҳо як ҳақиқат вуҷуд дорад.

Ман ба шумо парвандаи худро мегӯям.

Ин хидмат усули API-ро пешниҳод мекунад, ки омори рӯзи охирро бармегардонад. Ҳангоми иҷрои ҳисобҳо, усул се маротиба базаи маълумотро бо дархостҳои зерин дархост мекунад:

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

Шарҳ

  1. Дар дархости аввал, мо нуқтаҳои охиринро барои ҳар як танга бо маълумоти бозор мегирем. Дар ҳолати ман ҳашт нуқта барои ҳашт танга.
  2. Дархости дуюм яке аз нуқтаҳои навтаринро мегирад.
  3. Сеюм рӯйхати транзаксияҳоро дар давоми XNUMX соати охир талаб мекунад; мумкин аст якчанд садҳо бошад.

Иҷозат диҳед фаҳмонам, ки InfluxDB ба таври худкор индексро дар асоси тегҳо ва вақт месозад, ки дархостҳоро суръат мебахшад. Дар дархости аввал рамз тег аст.

Ман дар ин усули API санҷиши стресс гузаронидам. Барои 25 RPS, сервер сарбории пурраи шаш CPU-ро нишон дод:

Ҳангоми кор бо InfluxDB хашм, муомила ва депрессия

Дар айни замон, раванди NodeJs ҳеҷ гуна сарбориро таъмин накард.

Суръати иҷро аллакай 7-10 RPS паст шудааст: агар як муштарӣ метавонад дар 200 мс посух гирад, пас 10 муштарӣ бояд як сония интизор шаванд. 25 RPS маҳдудиятест, ки дар он субот осеб дидааст; 500 хато ба мизоҷон баргардонида шуд.

Бо чунин иҷроиш истифода бурдани Influx дар лоиҳаи мо ғайриимкон аст. Гузашта аз ин: дар лоиҳае, ки мониторинг бояд ба мизоҷони зиёд намоиш дода шавад, мушкилоти шабеҳ метавонанд пайдо шаванд ва сервери метрика аз ҳад зиёд бор карда шавад.

хулоса

Хулосаи муҳимтарин аз таҷрибаи бадастомада ин аст, ки шумо наметавонед технологияи номаълумро бидуни таҳлили кофӣ ба лоиҳа қабул кунед. Санҷиши оддии масъалаҳои кушода дар github метавонад маълумот диҳад, то аз интихоби InfluxDB ҳамчун анбори асосии маълумот пешгирӣ кунад.

InfluxDB бояд барои вазифаҳои лоиҳаи ман мувофиқ бошад, аммо тавре ки таҷриба нишон дод, ин пойгоҳи додаҳо ба талабот ҷавобгӯ нест ва хатогиҳои зиёд дорад.

Шумо аллакай метавонед версияи 2.0.0-бетаро дар анбори лоиҳа пайдо кунед; мо танҳо умедворем, ки версияи дуюм беҳбудиҳои назаррас хоҳад дошт. Дар ҳамин ҳол, ман ҳуҷҷатҳои TimescaleDB-ро меомӯзам.

Манбаъ: will.com

Илова Эзоҳ