Fushi, ciniki da damuwa lokacin aiki tare da InfluxDB

Fushi, ciniki da damuwa lokacin aiki tare da InfluxDB

Idan kuna amfani da tsarin bayanai na lokaci (timeseries db, wiki) a matsayin babban ajiya don shafin tare da ƙididdiga, to, maimakon magance matsalar za ku iya samun ciwon kai mai yawa. Ina aiki akan aikin da ke amfani da irin wannan bayanan, kuma wani lokacin InfluxDB, wanda za'a tattauna, yana gabatar da abubuwan mamaki da ba zato ba tsammani.

DisclaimerAbubuwan da aka jera sun shafi nau'in InfluxDB 1.7.4.

Me yasa jerin lokaci?

Aikin shine bin diddigin ma'amaloli akan blockchain daban-daban da kididdigar nuni. Musamman, muna duban fitar da hayaki da kona tsayayyen tsabar kudi (wiki). Dangane da waɗannan ma'amaloli, kuna buƙatar gina zane-zane da nuna tebur na taƙaitaccen bayani.

Yayin da ake nazarin ma'amaloli, wani ra'ayi ya zo: don amfani da bayanan lokaci na InfluxDB azaman babban ma'aji. Ma'amaloli maki ne a cikin lokaci kuma sun dace da tsarin tsarin lokaci.

Ayyukan tara kuma sun yi kama da dacewa sosai - manufa don sarrafa sigogi tare da dogon lokaci. Mai amfani yana buƙatar ginshiƙi na shekara guda, kuma ma'aunin yana ƙunshe da saitin bayanai tare da tsarin lokaci na mintuna biyar. Ba shi da ma'ana a aika masa duk dige-dige dubu ɗari - ban da dogon aiki, ba za su dace da allon ba. Kuna iya rubuta aikin kanku na ƙara lokacin, ko amfani da ayyukan tarawa da aka gina a cikin Faɗawa. Tare da taimakonsu, zaku iya tattara bayanai da rana kuma ku aika da maki 365 da ake buƙata.

Ya kasance ɗan ruɗani cewa galibi ana amfani da irin waɗannan bayanan bayanai don manufar tattara awo. Kulawa da sabar, na'urorin iot, duk abin da miliyoyin maki na nau'in "zuwa": [<lokaci> - <ƙimar awo>]. Amma idan ma'aunin bayanai yana aiki da kyau tare da babban kwararar bayanai, to me yasa ƙaramin ƙara zai haifar da matsala? Tare da wannan a zuciya, mun ɗauki InfluxDB don aiki.

Me kuma ya dace a cikin InfluxDB

Baya ga ayyukan tara da aka ambata, akwai wani abu mai girma - tambayoyin ci gaba (doc). Wannan jadawali ne da aka gina a cikin ma'ajin bayanai wanda zai iya sarrafa bayanai akan jadawali. Misali, kowane sa'o'i 24 za ku iya tattara duk bayanan na ranar, ƙididdige matsakaicin matsakaici kuma yi rikodin sabon ma'ana ɗaya a cikin wani tebur ba tare da rubuta kekunan ku ba.

Akwai kuma manufofin riƙewa (doc) - saita goge bayanan bayan wani lokaci. Yana da amfani lokacin da, alal misali, kuna buƙatar adana nauyin CPU na mako guda tare da ma'auni sau ɗaya a cikin daƙiƙa guda, amma fiye da nisa na watanni biyu ba a buƙatar irin wannan daidaito ba. A cikin irin wannan hali, zaka iya yin haka:

  1. ƙirƙiri ci gaba da tambaya don tara bayanai zuwa wani tebur;
  2. don tebur na farko, ayyana manufar share ma'auni waɗanda suka girmi wancan makon.

Kuma shigowar za ta rage girman bayanan da kanta tare da share abubuwan da ba dole ba.

Game da adana bayanai

Ba a adana bayanai da yawa: game da 70 dubu ma'amaloli da kuma wani maki miliyan tare da bayanin kasuwa. Ƙara sabbin shigarwar - babu fiye da maki 3000 kowace rana. Hakanan akwai ma'auni don rukunin yanar gizon, amma akwai ƙaramin bayanai a wurin kuma, bisa ga tsarin riƙewa, ana adana su ba fiye da wata ɗaya ba.

Matsalolin

Yayin haɓakawa da gwajin sabis na gaba, ƙarin matsaloli masu mahimmanci sun taso a cikin aikin InfluxDB.

1. Share bayanai

Akwai jerin bayanai tare da ma'amaloli:

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

Sakamako:

Fushi, ciniki da damuwa lokacin aiki tare da InfluxDB

Ina aika umarni don share bayanai:

DELETE FROM transactions WHERE symbol=’USDT’

Na gaba zan yi buƙatar karɓar bayanan da aka riga aka goge. Kuma maimakon martani mara komai, Influx yana dawo da sashin bayanan da yakamata a goge.

Ina ƙoƙarin share teburin duka:

DROP MEASUREMENT transactions

Na duba gogewar tebur:

SHOW MEASUREMENTS

Ba na ganin tebur a cikin jeri, amma sabuwar tambayar bayanai har yanzu tana dawo da tsarin ma'amaloli iri ɗaya.

Matsalar ta same ni sau ɗaya kawai, tunda shari'ar gogewa wani keɓe ne. Amma wannan hali na database a fili bai dace da tsarin aikin "daidai" ba. Daga baya na same shi a bude akan github tikitin kusan shekara guda da ta gabata akan wannan batu.

Sakamakon haka, sharewa sannan kuma maido da duk bayanan ya taimaka.

2. Lambobin masu iyo

Lissafin lissafi lokacin amfani da ginanniyar ayyuka a cikin InfluxDB suna da daidaitattun kurakurai. Ba wai wannan wani abu ne da ba a saba gani ba, amma yana da daɗi.

A cikin yanayina, bayanan suna da ɓangaren kuɗi kuma ina so in aiwatar da shi tare da daidaito mai girma. Saboda wannan, muna shirin yin watsi da ci gaba da tambayoyin.

3. Ba za a iya daidaita tambayoyin ci gaba zuwa wurare daban-daban na lokaci ba

Sabis ɗin yana da tebur tare da ƙididdigar ma'amala ta yau da kullun. Ga kowace rana, kuna buƙatar haɗa duk ma'amaloli don wannan ranar. Amma kowace ranar mai amfani za ta fara a wani lokaci daban, sabili da haka saitin ma'amala zai bambanta. By UTC iya 37 bambance -bambancen karatu canje-canje don abin da kuke buƙatar tara bayanai.

A cikin InfluxDB, lokacin haɗawa ta lokaci, zaku iya kuma ƙididdige canje-canje, misali don lokacin Moscow (UTC+3):

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

Amma sakamakon tambayar ba daidai ba ne. Don wasu dalilai, bayanan da aka tattara ta rana za su fara har zuwa 1677 (InfluxDB a hukumance yana goyan bayan ɗan lokaci daga wannan shekara):

Fushi, ciniki da damuwa lokacin aiki tare da InfluxDB

Don magance wannan matsalar, mun canza sabis na ɗan lokaci zuwa UTC+0.

4. Aiki

Akwai alamomi da yawa akan Intanet waɗanda ke kwatanta InfluxDB da sauran bayanan bayanai. Da farko, sun yi kama da kayan talla, amma yanzu ina tsammanin akwai wata gaskiya a cikinsu.

Zan fada muku lamarina.

Sabis ɗin yana ba da hanyar API wanda ke dawo da kididdiga don ranar ƙarshe. Lokacin yin lissafi, hanyar tana tambayar ma'ajin bayanai sau uku tare da tambayoyi masu zuwa:

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

Bayani:

  1. A cikin buƙatun farko, muna samun maki na ƙarshe don kowane tsabar kuɗi tare da bayanan kasuwa. Maki takwas akan tsabar kudi takwas a cikin akwati na.
  2. Buƙatun na biyu yana samun ɗayan sabbin maki.
  3. Na uku yana buƙatar jerin ma'amaloli na sa'o'i XNUMX na ƙarshe; za a iya samun ɗari da yawa daga cikinsu.

Bari in fayyace cewa InfluxDB ta atomatik tana gina fihirisa bisa tags da lokaci, wanda ke hanzarta tambayoyin. A cikin bukatar farko alama tag ne.

Na gudanar da gwajin damuwa akan wannan hanyar API. Don 25 RPS, uwar garken ya nuna cikakken nauyin CPUs guda shida:

Fushi, ciniki da damuwa lokacin aiki tare da InfluxDB

A lokaci guda, tsarin NodeJs bai samar da wani kaya ba kwata-kwata.

Gudun aiwatarwa ya riga ya ragu da 7-10 RPS: idan abokin ciniki ɗaya zai iya karɓar amsa a cikin 200 ms, to abokan ciniki 10 sun jira na biyu. 25 RPS shine iyakar abin da kwanciyar hankali ya sha wahala; An mayar da kurakurai 500 ga abokan ciniki.

Tare da irin wannan aikin ba shi yiwuwa a yi amfani da Influx a cikin aikinmu. Bugu da ƙari: a cikin aikin da ake buƙatar nuna sa ido ga abokan ciniki da yawa, matsaloli iri ɗaya na iya bayyana kuma uwar garken awo za ta yi yawa.

ƙarshe

Mafi mahimmancin ƙarshe daga ƙwarewar da aka samu shine cewa ba za ku iya ɗaukar fasahar da ba a sani ba a cikin aikin ba tare da isasshen bincike ba. Sauƙaƙan nunawa na buɗaɗɗen batutuwa akan github na iya ba da bayanai don guje wa zaɓar InfluxDB azaman babban ma'ajin bayanai.

Ya kamata InfluxDB ya kasance mai kyau ga ayyukan aikina, amma kamar yadda aikin ya nuna, wannan bayanan ba ya biyan bukatun kuma yana da kwari da yawa.

Kuna iya samun sigar 2.0.0-beta a cikin ma'ajiyar aikin; muna iya fatan cewa sigar ta biyu za ta sami ci gaba mai mahimmanci. A halin yanzu, zan je nazarin takardun TimescaleDB.

source: www.habr.com

Add a comment