æç³»åããŒã¿ããŒã¹ïŒtimeseries dbã
å
責äºé
: ãªã¹ããããŠããåé¡ã¯ãInfluxDB ããŒãžã§ã³ 1.7.4 ã«é©çšãããŸãã
ãªãæç³»åãªã®ãïŒ
ãã®ãããžã§ã¯ãã¯ãããŸããŸãªãããã¯ãã§ãŒã³äžã®ãã©ã³ã¶ã¯ã·ã§ã³ã远跡ããçµ±èšã衚瀺ããããšã§ãã å
·äœçã«ã¯ãã¹ããŒãã«ã³ã€ã³ã®çºè¡ãšççŒã調ã¹ãŸãïŒ
ãã©ã³ã¶ã¯ã·ã§ã³ãåæããŠãããšãã«ãInfluxDB æç³»åããŒã¿ããŒã¹ãã¡ã€ã³ ã¹ãã¬ãŒãžãšããŠäœ¿çšãããšããã¢ã€ãã¢ãæµ®ãã³ãŸããã ãã©ã³ã¶ã¯ã·ã§ã³ã¯æç¹ã§ãããæç³»åã¢ãã«ã«ããé©åããŸãã
éèšé¢æ°ãéåžžã«äŸ¿å©ã§ãé·æéã®ãã£ãŒããåŠçããã®ã«æé©ã§ãã ãŠãŒã¶ãŒã¯ 365 幎éã®ãã£ãŒããå¿ èŠãšããããŒã¿ããŒã¹ã«ã¯ XNUMX åéã®æéæ ã®ããŒã¿ ã»ãããå«ãŸããŠããŸãã XNUMX äžåã®ãããããã¹ãŠéä¿¡ããŠãæå³ããããŸãããé·ãåŠçãé€ãã°ãç»é¢ã«åãŸããããªãããã§ãã ã¿ã€ã ãã¬ãŒã ãå¢ããç¬èªã®å®è£ ãäœæããããšããInflux ã«çµã¿èŸŒãŸããŠããéèšé¢æ°ã䜿çšããããšãã§ããŸãã 圌ãã®å©ããåããŠãããŒã¿ãæ¥ããšã«ã°ã«ãŒãåããå¿ èŠãª XNUMX ãã€ã³ããéä¿¡ã§ããŸãã
ãã®ãããªããŒã¿ããŒã¹ã¯éåžžãã¡ããªã¯ã¹ãåéããç®çã§äœ¿çšããããšããããšã«å°ãæ··ä¹±ããŸããã ãµãŒããŒãIoT ããã€ã¹ãªã©ãäœçŸäžãã®ãã€ã³ããããããŒããããã¹ãŠã®ãã®ãç£èŠããŸã: [<æé> - <ã¡ããªãã¯å€>]ã ããããããŒã¿ããŒã¹ã倧èŠæš¡ãªããŒã¿ ãããŒã§é©åã«åäœããã®ã§ããã°ããªãããªã¥ãŒã ãå°ãããšåé¡ãçºçããã®ã§ãããã? ããã念é ã«çœ®ããŠãç§ãã¡ã¯ InfluxDB ãæ¡çšããŸããã
InfluxDB ã®ãã®ä»ã®äŸ¿å©ãªæ©èœ
åè¿°ã®éèšé¢æ°ãšã¯å¥ã«ããã XNUMX ã€ã®åªããç¹ããããŸãã ç¶ç¶çãªã¯ãšãª (
ãããŸã ä¿åããªã·ãŒ (
- é£ç¶ã¯ãšãªãäœæããŠããŒã¿ãå¥ã®ããŒãã«ã«éçŽããŸãã
- æåã®ããŒãã«ã§ã¯ãåãé±ãããå€ãã¡ããªã¯ã¹ãåé€ããããã®ããªã·ãŒãå®çŸ©ããŸãã
ãããŠInfluxã¯ç¬èªã«ããŒã¿ã®ãµã€ãºãåæžããäžèŠãªãã®ãåé€ããŸãã
ä¿åããŒã¿ã«ã€ããŠ
ä¿åãããããŒã¿ã¯ããã»ã©å€ããããŸãããçŽ 70 äžä»¶ã®ååŒãšãããã« 3000 äžç¹ã®åžå Žæ å ±ãä¿åãããŸãã æ°ãããšã³ããªã®è¿œå - XNUMX æ¥ããã XNUMX ãã€ã³ã以äžã ãµã€ãã®ã¡ããªãã¯ããããŸãããããã«ã¯ããŒã¿ãã»ãšãã©ãªããä¿æããªã·ãŒã«åŸã£ãŠãããŒã¿ã¯ XNUMX ãæ以å ã«ä¿åãããŸãã
åé¡
ãµãŒãã¹ã®éçºãšãã®åŸã®ãã¹ãäžã«ãInfluxDB ã®éçšã«ãããŠãŸããŸãé倧ãªåé¡ãçºçããŸããã
1. ããŒã¿ã®åé€
ãã©ã³ã¶ã¯ã·ã§ã³ã«é¢ããäžé£ã®ããŒã¿ããããŸãã
SELECT time, amount, block, symbol FROM transactions WHERE symbol='USDT'
çµæïŒ
ããŒã¿ãåé€ããã³ãã³ããéä¿¡ããŠããŸãã
DELETE FROM transactions WHERE symbol=âUSDTâ
次ã«ãæ¢ã«åé€ãããããŒã¿ã®åä¿¡ããªã¯ãšã¹ãããŸãã ãããŠãInflux ã¯ç©ºã®å¿çã®ä»£ããã«ãåé€ããå¿ èŠãããããŒã¿ã®äžéšãè¿ããŸãã
ããŒãã«å šäœãåé€ããããšããŠããŸãã
DROP MEASUREMENT transactions
ããŒãã«ã®åé€ã確èªããŸãã
SHOW MEASUREMENTS
ãªã¹ãã«ã¯ããŒãã«ã衚瀺ãããŸããããæ°ããããŒã¿ ã¯ãšãªã¯åããã©ã³ã¶ã¯ã·ã§ã³ã®ã»ãããè¿ããŸãã
åé€ã®ã±ãŒã¹ã¯åå¥ã®ã±ãŒã¹ã ã£ãã®ã§ããã®åé¡ãç§ã«çºçããã®ã¯ XNUMX åã ãã§ããã ããããããŒã¿ããŒã¹ã®ãã®åäœã¯æããã«ãæ£ãããæäœã®æ çµã¿ã«åœãŠã¯ãŸããŸããã åŸã§githubã§å
¬éãããŠããã®ãèŠã€ããŸãã
çµæãšããŠãããŒã¿ããŒã¹å šäœãåé€ããŠåŸ©å ããããšã§è§£æ±ºããŸããã
2. æµ®åå°æ°ç¹æ°
InfluxDB ã®çµã¿èŸŒã¿é¢æ°ã䜿çšããå Žåã®æ°åŠèšç®ã«ã¯ç²ŸåºŠãšã©ãŒãçºçããŸãã ããã¯ç¹å¥ãªããšã§ã¯ãããŸããããäžå¿«ã§ãã
ç§ã®å ŽåãããŒã¿ã«ã¯è²¡åçãªèŠçŽ ãå«ãŸããŠãããããé«ç²ŸåºŠã«åŠçããããšèããŠããŸãã ãã®ãããç¶ç¶çãªã¯ãšãªã¯å»æ¢ããäºå®ã§ãã
3. ç¶ç¶çãªã¯ãšãªãç°ãªãã¿ã€ã ãŸãŒã³ã«é©å¿ãããããšã¯ã§ããŸãã
ãã®ãµãŒãã¹ã«ã¯ãæ¯æ¥ã®ãã©ã³ã¶ã¯ã·ã§ã³çµ±èšã瀺ãããŒãã«ããããŸãã æ¥ããšã«ããã®æ¥ã®ãã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ãã°ã«ãŒãåããå¿
èŠããããŸãã ãã ããåãŠãŒã¶ãŒã® XNUMX æ¥ã¯ç°ãªãæéã«å§ãŸããããäžé£ã®ãã©ã³ã¶ã¯ã·ã§ã³ãç°ãªããŸãã UTCãŸã§ã«ã¯ã
InfluxDB ã§ã¯ãæéã§ã°ã«ãŒãåãããšãã«ãããšãã°ã¢ã¹ã¯ã¯æé (UTC+3) ãªã©ã®ã·ãããè¿œå ã§æå®ã§ããŸãã
SELECT MEAN("supply") FROM transactions GROUP BY symbol, time(1d, 3h) fill(previous)
ãã ããã¯ãšãªçµæã¯æ£ãããããŸããã äœããã®çç±ã§ãæ¥ããšã«ã°ã«ãŒãåãããããŒã¿ã¯ 1677 幎ãŸã§é¡ã£ãŠéå§ãããŸã (InfluxDB ã¯ä»å¹Žããæéãæ£åŒã«ãµããŒãããŠããŸã)ã
ãã®åé¡ãåé¿ããããã«ããµãŒãã¹ãäžæçã« UTC+0 ã«åãæ¿ããŸããã
4.ããã©ãŒãã³ã¹
ã€ã³ã¿ãŒãããäžã«ã¯ãInfluxDB ãšä»ã®ããŒã¿ããŒã¹ãæ¯èŒãããã³ãããŒã¯ãå€æ°ãããŸãã äžèŠãããšããŒã±ãã£ã³ã°è³æã®ããã«èŠããŸããããä»ã§ã¯ãã®äžã«çå®ãå«ãŸããŠãããšæããŸãã
ç§ã®å Žåãã話ããŸãã
ãã®ãµãŒãã¹ã¯ãéå» XNUMX æ¥ã®çµ±èšãè¿ã API ã¡ãœãããæäŸããŸãã èšç®ãå®è¡ãããšããã¡ãœããã¯æ¬¡ã®ã¯ãšãªã䜿çšããŠããŒã¿ããŒã¹ã« XNUMX åã¯ãšãªãå®è¡ããŸãã
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ã³ã€ã³ã§XNUMXãã€ã³ãã§ãã
- XNUMX çªç®ã®ãªã¯ãšã¹ãã¯ãææ°ã®ãã€ã³ãã® XNUMX ã€ãååŸããŸãã
- XNUMX ã€ç®ã¯ãéå» XNUMX æéã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ãªã¹ããèŠæ±ããŸã (ãã©ã³ã¶ã¯ã·ã§ã³ã¯æ°çŸä»¶ããå¯èœæ§ããããŸã)ã
InfluxDB ã¯ã¿ã°ãšæéã«åºã¥ããŠã€ã³ããã¯ã¹ãèªåçã«æ§ç¯ãããããã¯ãšãªãé«éåãããããšãæ確ã«ããŠãããŸãã æåã®ãªã¯ãšã¹ãã§ã¯ ã·ã³ãã« ã¿ã°ã§ãã
ãã® API ã¡ãœããã§ã¹ãã¬ã¹ ãã¹ããå®è¡ããŸããã 25 RPS ã®å ŽåããµãŒããŒã¯ XNUMX ã€ã® CPU ã®å šè² è·ãå®èšŒããŸããã
åæã«ãNodeJs ããã»ã¹ã¯ãŸã£ããè² è·ãæäŸããŸããã§ããã
å®è¡é床ã¯ãã§ã« 7 ïœ 10 RPS äœäžããŠããŸãã200 ã€ã®ã¯ã©ã€ã¢ã³ãã 10 ããªç§ã§å¿çãåä¿¡ã§ããå Žåã25 ã®ã¯ã©ã€ã¢ã³ã㯠500 ç§åŸ ã€å¿ èŠããããŸãã XNUMX RPS ã¯å®å®æ§ãæãªãããéçã§ãããXNUMX ãšã©ãŒãã¯ã©ã€ã¢ã³ãã«è¿ãããŸããã
ãã®ãããªããã©ãŒãã³ã¹ã§ã¯ãç§ãã¡ã®ãããžã§ã¯ã㧠Influx ã䜿çšããããšã¯äžå¯èœã§ãã ããã«ãå€ãã®ã¯ã©ã€ã¢ã³ãã«å¯ŸããŠã¢ãã¿ãªã³ã°ããã¢ã³ã¹ãã¬ãŒã·ã§ã³ããå¿ èŠããããããžã§ã¯ãã§ã¯ãåæ§ã®åé¡ãçºçããã¡ããªã¯ã¹ ãµãŒããŒãéè² è·ã«ãªãå¯èœæ§ããããŸãã
åºå
åŸãããçµéšããåŸãæãéèŠãªçµè«ã¯ãååãªåæãªãã«æªç¥ã®ãã¯ãããžãŒããããžã§ã¯ãã«å°å ¥ããããšã¯ã§ããªããšããããšã§ãã github ã§æªè§£æ±ºã®åé¡ãç°¡åã«ã¹ã¯ãªãŒãã³ã°ããããšã§ãInfluxDB ãã¡ã€ã³ ããŒã¿ ã¹ãã¢ãšããŠéžæããããšãé¿ããããã®æ å ±ãåŸãããå¯èœæ§ããããŸãã
InfluxDB ã¯ç§ã®ãããžã§ã¯ãã®ã¿ã¹ã¯ã«é©ããŠããã¯ãã§ãããå®è·µã§ç€ºãããŠããããã«ããã®ããŒã¿ããŒã¹ã¯ããŒãºãæºãããŠããããå€ãã®ãã°ããããŸãã
ãããžã§ã¯ã ãªããžããªã«ã¯ãã§ã«ããŒãžã§ã³ 2.0.0-beta ãå«ãŸããŠããŸãããXNUMX çªç®ã®ããŒãžã§ã³ã§å€§å¹
ãªæ¹åãå ããããããšãç¥ãã°ããã§ãã ãããŸã§ã®éãTimescaleDB ã®ããã¥ã¡ã³ããå匷ããŠã¿ãŸãã
åºæïŒ habr.com