Агар шумо махзани силсилаи вақтро истифода баред (timeseries db,
Радди: Масъалаҳои номбаршуда ба версияи InfluxDB 1.7.4 дахл доранд.
Чаро силсилаи вақт?
Лоиҳа пайгирии транзаксияҳо дар блокчейнҳои гуногун ва намоиши омор мебошад. Махсусан, мо ба баровардан ва сӯхтани тангаҳои устувор назар мекунем (
Ҳангоми таҳлили транзаксияҳо як идея пайдо шуд: истифода бурдани пойгоҳи додаҳои силсилаи вақтҳои InfluxDB ҳамчун нигаҳдории асосӣ. Амалиётҳо нуқтаҳои вақт мебошанд ва онҳо ба модели силсилаи вақт мувофиқат мекунанд.
Функсияҳои ҷамъоварӣ низ хеле қулай менамуданд - барои коркарди диаграммаҳо бо муддати тӯлонӣ беҳтаринанд. Ба корбар барои як сол диаграмма лозим аст ва базаи маълумот маҷмӯи маълумотро бо чаҳорчӯбаи вақти панҷ дақиқа дарбар мегирад. Ба ӯ фиристодани ҳама сад ҳазор нуқтаҳо бефоида аст - ба ғайр аз коркарди тӯлонӣ, онҳо ҳатто дар экран ҷойгир намешаванд. Шумо метавонед татбиқи худро оид ба зиёд кардани мӯҳлат нависед, ё функсияҳои ҷамъбасти дар Influx сохташударо истифода баред. Бо ёрии онҳо, шумо метавонед маълумотро аз рӯи рӯз гурӯҳбандӣ кунед ва 365 нуқтаи заруриро фиристед.
Ин каме печида буд, ки чунин пойгоҳҳо одатан бо мақсади ҷамъоварии ченакҳо истифода мешаванд. Мониторинги серверҳо, дастгоҳҳои iot, ҳама чизест, ки аз онҳо миллионҳо нуқтаҳои шакли "ҷараён": [<вақт> - <қимати метрӣ>]. Аммо агар пойгоҳи додаҳо бо ҷараёни бузурги додаҳо хуб кор кунад, пас чаро ҳаҷми хурд бояд мушкилот эҷод кунад? Бо дарназардошти ин, мо InfluxDB-ро ба кор бурдем.
Дар InfluxDB боз чӣ қулай аст
Ба ғайр аз вазифаҳои ҷамъбастии зикршуда, боз як чизи бузург вуҷуд дорад - пурсишҳои пайваста (
Ҳамчунин вуҷуд дорад сиёсати нигоҳдорӣ (
- эҷод кардани дархости пайваста барои ҷамъ кардани маълумот ба ҷадвали дигар;
- барои ҷадвали аввал, сиёсатро барои нест кардани нишондиҳандаҳое, ки аз ҳамон ҳафта калонтаранд, муайян кунед.
Ва Influx андозаи маълумотро мустақилона коҳиш медиҳад ва чизҳои нолозимро нест мекунад.
Дар бораи маълумоти захирашуда
Маълумоти зиёд нигоҳ дошта намешавад: тақрибан 70 ҳазор транзаксия ва як миллион нуқтаи дигар бо маълумоти бозор. Илова кардани сабтҳои нав - на бештар аз 3000 хол дар як рӯз. Метрикҳо барои сайт низ мавҷуданд, аммо дар он ҷо маълумот кам аст ва тибқи сиёсати нигоҳдорӣ, онҳо на бештар аз як моҳ нигоҳ дошта мешаванд.
Масъалаҳо
Ҳангоми таҳия ва санҷиши минбаъдаи хидмат, дар кори InfluxDB мушкилоти бештар ва муҳим ба миён омаданд.
1. Нест кардани маълумот
Як қатор маълумотҳо бо транзаксия мавҷуданд:
SELECT time, amount, block, symbol FROM transactions WHERE symbol='USDT'
Натиҷа:
Ман фармон барои нест кардани маълумот мефиристам:
DELETE FROM transactions WHERE symbol=’USDT’
Минбаъд ман дархост мекунам, ки маълумоти аллакай ҳазфшударо қабул кунам. Ва ба ҷои посухи холӣ, Influx як қисми маълумотеро, ки бояд нест карда шаванд, бармегардонад.
Ман кӯшиш мекунам, ки тамоми ҷадвалро нест кунам:
DROP MEASUREMENT transactions
Ман тозакунии ҷадвалро тафтиш мекунам:
SHOW MEASUREMENTS
Ман ҷадвалро дар рӯйхат намебинам, аммо дархости нави маълумот то ҳол ҳамон маҷмӯи транзаксияҳоро бармегардонад.
Мушкилот танҳо як маротиба бо ман рӯй дод, зеро парвандаи ҳазф як парвандаи ҷудогона буд. Аммо ин рафтори база ба доираи амалиёти «дуруст» мувофик нест. Баъдтар ман онро дар github кушода ёфтам
Дар натиҷа, нест кардан ва сипас барқарор кардани тамоми пойгоҳи додаҳо кӯмак кард.
2. Рақамҳои нуқтаи шинокунанда
Ҳисобҳои математикӣ ҳангоми истифодаи функсияҳои дарунсохт дар InfluxDB хатогиҳои дақиқ доранд. На ин ки ин чизи ғайриоддӣ аст, аммо он ногувор аст.
Дар ҳолати ман, маълумот ҷузъи молиявӣ дорад ва ман мехоҳам онро бо дақиқии баланд коркард кунам. Аз ин сабаб, мо нақша дорем, ки аз дархостҳои пайваста даст кашем.
3. Дархостҳои давомдор наметавонанд ба минтақаҳои гуногуни вақт мутобиқ карда шаванд
Хизматрасонӣ дорои ҷадвали дорои омори амалиёти ҳаррӯза мебошад. Барои ҳар рӯз, шумо бояд ҳамаи транзаксияҳоро барои он рӯз гурӯҳбандӣ кунед. Аммо рӯзи ҳар як корбар дар вақти дигар оғоз мешавад ва аз ин рӯ маҷмӯи муомилот гуногун хоҳад буд. Бо UTC ҳа
Дар InfluxDB, ҳангоми гурӯҳбандӣ аз рӯи вақт, шумо метавонед ба таври иловагӣ тағиротро муайян кунед, масалан барои вақти Маскав (UTC+3):
SELECT MEAN("supply") FROM transactions GROUP BY symbol, time(1d, 3h) fill(previous)
Аммо натиҷаи пурсиш нодуруст хоҳад буд. Бо баъзе сабабҳо, маълумоте, ки аз рӯи рӯз гурӯҳбандӣ шудааст, то соли 1677 оғоз мешавад (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
Шарҳ
- Дар дархости аввал, мо нуқтаҳои охиринро барои ҳар як танга бо маълумоти бозор мегирем. Дар ҳолати ман ҳашт нуқта барои ҳашт танга.
- Дархости дуюм яке аз нуқтаҳои навтаринро мегирад.
- Сеюм рӯйхати транзаксияҳоро дар давоми XNUMX соати охир талаб мекунад; мумкин аст якчанд садҳо бошад.
Иҷозат диҳед фаҳмонам, ки InfluxDB ба таври худкор индексро дар асоси тегҳо ва вақт месозад, ки дархостҳоро суръат мебахшад. Дар дархости аввал рамз тег аст.
Ман дар ин усули API санҷиши стресс гузаронидам. Барои 25 RPS, сервер сарбории пурраи шаш CPU-ро нишон дод:
Дар айни замон, раванди NodeJs ҳеҷ гуна сарбориро таъмин накард.
Суръати иҷро аллакай 7-10 RPS паст шудааст: агар як муштарӣ метавонад дар 200 мс посух гирад, пас 10 муштарӣ бояд як сония интизор шаванд. 25 RPS маҳдудиятест, ки дар он субот осеб дидааст; 500 хато ба мизоҷон баргардонида шуд.
Бо чунин иҷроиш истифода бурдани Influx дар лоиҳаи мо ғайриимкон аст. Гузашта аз ин: дар лоиҳае, ки мониторинг бояд ба мизоҷони зиёд намоиш дода шавад, мушкилоти шабеҳ метавонанд пайдо шаванд ва сервери метрика аз ҳад зиёд бор карда шавад.
хулоса
Хулосаи муҳимтарин аз таҷрибаи бадастомада ин аст, ки шумо наметавонед технологияи номаълумро бидуни таҳлили кофӣ ба лоиҳа қабул кунед. Санҷиши оддии масъалаҳои кушода дар github метавонад маълумот диҳад, то аз интихоби InfluxDB ҳамчун анбори асосии маълумот пешгирӣ кунад.
InfluxDB бояд барои вазифаҳои лоиҳаи ман мувофиқ бошад, аммо тавре ки таҷриба нишон дод, ин пойгоҳи додаҳо ба талабот ҷавобгӯ нест ва хатогиҳои зиёд дорад.
Шумо аллакай метавонед версияи 2.0.0-бетаро дар анбори лоиҳа пайдо кунед; мо танҳо умедворем, ки версияи дуюм беҳбудиҳои назаррас хоҳад дошт. Дар ҳамин ҳол, ман ҳуҷҷатҳои TimescaleDB-ро меомӯзам.
Манбаъ: will.com