
åçã¯ããããã¿ã€ãã³ã°ã«äœ¿çšãããããã€ã¹ã瀺ããŠããŸãã ã芧ã®ãšãããx86ããã»ããµïŒIntel EdisonïŒãåºç€ãšããŠæ¡çšãããŠããŸã
ã¿ãªããããã«ã¡ã¯ã ãã®èšäºã§ã¯ãIoTããã€ã¹ãšã¯ã©ãŠãã¢ããªã±ãŒã·ã§ã³éã®ããŒã¿åæã«é¢é£ãã1ã€ã®èå³æ·±ãåé¡ã解決ããçµéšãå ±æããããšæããŸãã ãŸãããããžã§ã¯ãã®äž»ãªã¢ã€ãã¢ãšç®æšã«ã€ããŠèª¬æãã次ã«ãã®æè¡çãªåŽé¢ãšå®è£ ã«ã€ããŠè©³ãã説æããŸããContikiOSãããŒã¿ããŒã¹ããããã³ã«ãããã³åæ§ã®åŽé¢ã«ã€ããŠã§ãã çµè«ãšããŠãã·ã¹ãã ã®æ§ç¯ã«äœ¿çšããããã¯ãããžãŒãç°¡åã«ãªã¹ãããŸãã
ãããžã§ã¯ãã«ã€ããŠç°¡åã«
ãŸãããããžã§ã¯ãã®äž»ãªã¢ã€ãã¢ã«ã€ããŠè©±ããŸãããã 以äžã¯ãå®æããã·ã¹ãã ã®åäœåçã®æŠç¥å³ã§ãã

ã¯ã©ãŠããµãŒãã¹ãä»ããŠããŸãã¯ïŒWi-Fiãä»ããŠïŒIoTããã€ã¹ã«çŽæ¥æ¥ç¶ãããŠãŒã¶ãŒãããŸãã ãŸããã€ã³ã¿ãŒãããäžã®ã©ããã«ã¯ã©ãŠãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒããããŸãã AWSãAzureã€ã³ã¹ã¿ã³ã¹ãå°çšãµãŒããŒãªã©ãäœã§ãã¯ã©ãŠããšããŠæ©èœããŸãã ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšIoTããã€ã¹éã§ããŒã¿ã亀æããã«ã¯ãäœããã®ãããã³ã«ã䜿çšããŠæ¥ç¶ã確ç«ããŸãã IoTããã€ã¹ã¯äœããã®åœ¢ã§çžäºã«æ¥ç¶ãããŠããŸãïŒããšãã°ãã€ãŒãµããããŸãã¯Wi-Fiãä»ããŠïŒã ããã«ããã¬ã¡ããªãŒããŒã¿ïŒç §åºŠã枩床ã®ã€ã³ãžã±ãŒã¿ãŒãªã©ïŒãçæããIoTããã€ã¹ã®å¥ã®ã°ã«ãŒãããããŸãã
åèšã§ã100ãè¶ ããããã€ã¹ãããã«ã¯1000ãè¶ ããããã€ã¹ãå ¥åã§ããŸãã ç§ã®äž»ãªã¿ã¹ã¯ã¯ãã¯ã©ãŠããšãããã®IoTããã€ã¹éã®ããŒã¿äº€æãæäŸããããšã§ããã å ã«é²ãåã«ãã·ã¹ãã ã«èª²ããããèŠä»¶ã«èšåãã䟡å€ããããŸãã
- IoTããã€ã¹éã§ããŒã¿ãåæããå¿ èŠããããŸãã
- IoTããã€ã¹ããããŒã¿ãåéããå¿ èŠããããŸãã
- IoTããã€ã¹ãšã¯ã©ãŠãã®éã§ããŒã¿ãåæããå¿ èŠããããŸãã
æè¡çãªå®è£

ããã§ã¯ãã¹ãŠãéåžžã«ç°¡åã§ãããŠãŒã¶ãŒã¯HTTPïŒSïŒãWebSocketããŸãã¯åæ§ã®ãããã³ã«ãä»ããŠã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã«æ¥ç¶ããŸãã èªè åãã®å°ããªã¿ã¹ã¯ïŒã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšIoTããã€ã¹éã®æ¥ç¶ã«äœ¿çšã§ãããã®ã¯äœã ãšæããŸããïŒ

MQTTã«ã€ããŠèããå Žåãééããªãæ£ããã§ãïŒ HTTPïŒSïŒãéžæãã人ãšåæ§ã«ã å®éãã©ã®ãããã³ã«ãé©åã§ã-ããªãã®å¥œã¿ã«åãããŠéžæããŠãã ããïŒ ç§ã®éžæã¯å€±æããŸãã-ãã©ã ããŒã«-éåæè€è£œïŒ ããŒã¿ããŒã¹ã®ã¬ããªã±ãŒã·ã§ã³ã¯æ£åžžã§ãã

ã¬ããªã±ãŒã·ã§ã³ãå¿ èŠãªçç±ãå°ãããããããããŸããã çãã¯ç°¡åã§ããè€è£œã䜿çšããŠããŒã¿ãåæããã®ã§ãã¯ã©ãŠããšIoTããã€ã¹ãå«ãããããå Žæã§åãããŒãžã§ã³ã®ããŒã¿ããŒã¹ããµããŒãã§ããŸãã ãã ããã¬ããªã±ãŒã·ã§ã³ã®å®è£ ã¯éåžžã«å°é£ã§ãã è€è£œãå¿ èŠãªå Žåã¯ãããããµããŒãããããŒã¿ããŒã¹ãå ¥æããŠãã ããããªããªããç§ã¯ç¹°ãè¿ããŸãããè€è£œã¯ããŒã¿ããŒã¹ã«æ¬æ¥åãã£ãŠããããã§ãã
ããã§ããããžã§ã¯ãã§äœæ¥ããéã«æ€èšããããŒã¿ããŒã¹ã«ã€ããŠã SQLite ã Redis ã MySQL ã PostgreSQL ã Tarantoolã®ããã€ãã®èšèãèšããããšæããŸãã
ãããã®ç¹æ§ãæ¯èŒããMySQLãšPostgreSQLãé€ãããã€ãã®éšåãIoTããã€ã¹äžã§å®è¡ããããšããŸããã 以äžã«ããã®ç±æ¥ã説æããŸãã
SQLiteã¯ãIoTããã€ã¹ã«ããŒã¿ãçŽæ¥ä¿åããããã®åªãããœãªã¥ãŒã·ã§ã³ã§ããããšã¯ééããããŸããããã¬ããªã±ãŒã·ã§ã³ããªããç°ãªãããã»ã¹ããã®åæã¢ã¯ã»ã¹ããµããŒãããŠããŸããã
Redisã¯ãã¹ã¿ãŒãã¹ã¿ã¬ããªã±ãŒã·ã§ã³ããµããŒãããŠããªããããåæ¹åã¬ããªã±ãŒã·ã§ã³ãå¿ èŠãªãããåé¡ã解決ã§ããŸããã
MySQLãšPostgreSQLã¯IoTããã€ã¹ã«ã¯éãããã®ã§ãããããã€ã³ã¹ããŒã«ããããšã¯ããŸããã§ããã ãã ãããããè¡ãããšã«æ±ºããå Žåã¯ãã³ã¡ã³ãã§èªç±ã«çµéšãå ±æããŠãã ããã
ç§ã®ãªã¹ãã®æåŸã®1ã€ã¯TarantoolããŒã¿ããŒã¹ã§ããã ç§ã¯Tarantoolãããžã§ã¯ãã®ã³ããã¿ãŒã§ãããšããã«èšããªããã°ãªããªãã®ã§ããããžã§ã¯ãèªäœãšãããããŸãéçºããŠãã人ã ãç¥ã£ãŠããŸãã ããã«ãTarantoolã«ã¯ãã¹ã¿ãŒãã¹ã¿ã¬ããªã±ãŒã·ã§ã³ããããŸãã å šäœãšããŠãç§ã«ãšã£ãŠã¯ééããªãæè¯ã®éžæè¢ã§ããã ãããžã§ã¯ãã§å¥ã®ããŒã¿ããŒã¹ã䜿çšã§ããŸãã ç§ãäŒããããšããŠããäž»ãªã¢ã€ãã¢ã¯ãIoTããã€ã¹ããã¹ã¿ãŒãã¹ã¿ã¬ããªã±ãŒã·ã§ã³ã§ããŒã¿ããŒã¹ã䜿çšããŠããŒã¿ã亀æã§ãããšããããšã§ãã
ãããŸã§ãç§ã¯è¡šé¢çã«ãããžã§ã¯ããç¥ã£ãŠããã ãã§ããã ããã§ã¯ãæè¡çãªåŽé¢ãå°ãæãäžããŠã¿ãŸãããã
Tarantoolã®äœ¿çšäžã«çºçããåé¡ããå§ããŸãã ãŸããTarantoolã¯ARMv7ã¢ãŒããã¯ãã£ã§å®è¡ãããŸããã§ããã 第äºã«ãTarantoolã¯32ãããç°å¢ã§èµ·åããªãã£ããããç¶æ³ãæªåããã ãã§ãã æçµçã«ããããã®åé¡ã解決ããããšãã§ããŸããã 以äžã¯ããããå©ããŠãããéçºã«ãŒã«ã§ãã
- CMakeã®ããŒã«ãã§ãŒã³ãã¡ã€ã«ã䜿çšããŸãã ãã以å€ã®å Žåãããªãã¯ãç§ã®ããã«ãCMakeãã¡ã€ã«ã®ä¿®æ£ã«å€ãã®æéãè²»ãããŸãã
- ãµã€ãºãæå®ãããŠããªã笊å·ãªãã®åãŸãã¯ãã®ä»ã®åã䜿çšããªãã§ãã ããã libcã«ã¯uint32_tãªã©ã®ç¹å¥ãªã¿ã€ãããããŸãã ããããªããšãæªå®çŸ©ã®åäœãçºçããå¯èœæ§ããããŸãã ãã®ã«ãŒã«ã¯ãC / C ++ã«ã®ã¿é©çšãããŸãã
- èªåãã¹ãã移æ€ããŸãã
èªåãã¹ãã¯IoTããã€ã¹ã§å®è¡ã§ããããšãæåŸ ãããŠããŸãã ããã§ãªãå Žåãå€ãã®ãããã°æéãç¡é§ã«ãããªã¹ã¯ããããŸãã
ãã®ããããã¹ã¿ãŒãšãã¹ã¿ãŒã®ã¬ããªã±ãŒã·ã§ã³ãåããäœæ¥ããŒã¿ããŒã¹ããããŸãã ãããïŒ æ¬¡ã®ã¹ãããã¯ã 6LoWPANã䜿çšããŠããã®ããŒã¿ããŒã¹ãã€ã³ã¹ããŒã«ãããŠããããã€ã¹ãæ¥ç¶ããããšã§ãã 6LoWPANãä»ããŠäºãã«æ¥ç¶ãããå€ãã®IoTããã€ã¹ã®ãããã¯ãŒã¯ãããããããããã¹ãŠã®ãã¬ã¡ããªããŒã¿ãåéããå¿ èŠãããããšãæãåºãããŠãã ããã

å®æããã·ã¹ãã ã®ç°¡åãªã¹ããŒã
ã»ã³ãµãŒãåããããã€ã¹ã¯ãé»æ³¢ãä»ããŠãã¬ã¡ããªãŒããŒã¿ãéä¿¡ããŸãã ãã®æšæºã¯6LoWPANïŒäœé»åã¯ã€ã€ã¬ã¹ããŒãœãã«ãšãªã¢ãããã¯ãŒã¯äžã®IPv6ïŒãšåŒã°ããŸãã ãããžã§ã¯ãã§LoRaWANã䜿çšããªãã£ãããšã«æ³šæããŠãã ããã ãã®ãã¯ãããžãŒã®å°æ¥ã®äœ¿çšãèŠã€ãããããããŸãããããã®èšäºã§ã¯6LoWPANã«çŠç¹ãåœãŠãŸãã ãããã£ãŠãé é枬å®ããŒã¿ã®åéã«ã¯ãã·ã¹ãã ã®éèŠãªéšåã§ããã²ãŒããŠã§ã€ã䜿çšããŸãã ã²ãŒããŠã§ã€ã¯ãé»æ³¢ãä»ããŠéä¿¡ãããããŒã¿ãåéããããã®WANã¢ã³ãããåããMIPSããã€ã¹ïŒMIPSã¯ããã»ããµã®ãã¡ããªãŒã§ãïŒã§ãã ããã«ã6LBRã¢ããªã±ãŒã·ã§ã³ãã²ãŒããŠã§ã€ã«ã€ã³ã¹ããŒã«ãããåä¿¡ããŒã¿ãIPv6ãã±ããã«å€æããŸãã
ä»é²6LBR

äžã®ç»åã¯ã6LBRã®ä»çµã¿ã瀺ããŠããŸãã 6LBRãã€ã³ã¹ããŒã«ãããã²ãŒããŠã§ã€ã¯ãã¯ã€ã€ã¬ã¹ã»ã³ãµãŒãããã¯ãŒã¯ãšä»ã®ãããã¯ãŒã¯ãšã®éã®ã³ã³ããŒã¿ãŒãšããŠæ©èœããŸãã ãã®å³ã¯ã6LBRãããã©ã«ãã§æ©èœãããšããçç±ã ãã§ãã¯ã€ã€ã¬ã¹ã»ã³ãµãŒãããã¯ãŒã¯ããIPãããã¯ãŒã¯ãžã®å€æã瀺ããŠããŸãã å°ãåŸã§ããã®åäœãå€æŽããæ¹æ³ã説æããŸãã
詳现ã«ã€ããŠã¯ãGitHubã®6LBRããŒãžãåç §ããŠãã ãã ã
6LBRã䜿çšãããšäœãåŸãããŸããïŒ ãŸãã6LBRã¢ããªã±ãŒã·ã§ã³ã§TCPããã³UDPã¹ã¿ãã¯æ©èœã䜿çšã§ããããã«ãIPã¹ã¿ãã¯ãååŸããŸãã 次ã«ã6LBRã§ä»»æã®I / Oããã€ã¹ã䜿çšã§ããŸãã çããŒã¿ãbashã«çŽæ¥æžã蟌ãããšãã§ãããšããŸãã =ïŒæ®å¿µãªããã6LBRã¯MQTTã«çŽæ¥æžã蟌ã¿ãŸããã MQTTãããŒã«ãŒã¯çããŒã¿ã«ã€ããŠäœãç¥ããªãã®ã§ãææ ¢ããå¿ èŠããããŸãã
MQTTãããŒã«ãŒãžã®çŽæ¥å ¥åãå¿ èŠãªã®ã¯ãªãã§ããïŒ çãã¯ç°¡åã§ããåé¡ã¯ã¬ã¬ã·ãŒã³ãŒãã§ãã
ããã§ã6LBRã¢ããªã±ãŒã·ã§ã³ã«ã€ããŠå°ãã話ããããšæããŸãã äžè¬ã«ã6LBRã¢ããªã±ãŒã·ã§ã³ã¯ãIPã¹ã¿ãã¯ã䜿çšãããä»ã®ããšãå®è¡ã§ããAPIã§èšè¿°ãããCã³ãŒãã§ãã ãã®ãããªã¢ããªã±ãŒã·ã§ã³ã®éçºã«ã¯ãå°ãªããšã2ã€ã®å°é£ã䌎ããŸããè€éãªã¹ããªãŒã ã¢ãã«ãšè€éãªã¡ã¢ãªã¢ãã«ã§ãã ãã®ãããææ ¢ããŠãããã°ã©ã ã®é »ç¹ãªã¯ã©ãã·ã¥ã«åããŠãã ããã 以äžã«ãç§ãéçºãã6LBRã¢ããªã±ãŒã·ã§ã³ã®å°ããªéšåã瀺ããŸãïŒäºåã«è¬çœªããŸãããœãŒã¹ãéããŠãããããæå³çã«æ··ä¹±ããã³ãŒãã§ã®ã¿åçãæçš¿ã§ããŸãïŒã

1ã€ã®èå³æ·±ãããšã«æ³šæããŠãã ãã-PROCESS_YIELDïŒïŒã 6LBRã«ã¯å調ãã«ãã¿ã¹ã¯ããããŸããã€ãŸãã6LBRã¢ããªã±ãŒã·ã§ã³ã¯ã«ãŒãã®åå埩ã§å¶åŸ¡ãè¿ãå¿ èŠããããŸãã ã³ãŒãã®å®è¡æéãé·ãããŠã¯ãªããŸããã
ããã§ã¯ãç§ãã¡ã®ãããžã§ã¯ããã©ã®æ®µéã«ããã®ããããäžåºŠèŠãŠã¿ãŸãããã ã²ãŒããŠã§ã€ãšããã«ã€ã³ã¹ããŒã«ããã6LBRã¢ããªã±ãŒã·ã§ã³ã䜿çšããŠããã®å éšã§ããŒã¿ãèªã¿æžãããããã®ã¡ãã·ã¥ãããã¯ãŒã¯ãäœæããŸããã ãŸããMQTTã¡ãã»ãŒãžã§IPãã±ãããã©ããããããšãã§ããŸãããåã¡ãã»ãŒãžã«ã¯ããã¬ã¡ããªããŒã¿ãªã©ãããã€ã¹ã«é¢ããæ å ±ãå«ãŸããŠããŸãã ããã«ãI / Oããã€ã¹ãæäœããæ©äŒããããŸãããããšãã°ãUARTã§MQTTã¡ãã»ãŒãžãèšé²ã§ãããšããŸãããã ãããããã®åŸãæ°ããåé¡ã«ééããŸãããTarantoolã¯MQTTãããŒã«ãŒã§ã¯åäœããŸããã 以äžã«ããã®å¶éãã©ã®ããã«ããŠåé¿ãããã説æããŸãã
çŽç²ãªC MQTTã©ã€ãã©ãªã§èšè¿°ãããlibmosquittoã䜿çšããããšã«ããŸãããããã¯ãMQTTãã¢ããªã±ãŒã·ã§ã³ã«ç°¡åã«çµ±åã§ããããã§ãã 以äžã¯ããã®ã©ã€ãã©ãªã䜿çšããŠMQTTã¡ãã»ãŒãžãæäœããäŸã§ãïŒ ãªã³ã¯ ïŒã
static int mosq_poll_one_ctx(mosq_t *ctx, int revents, size_t timeout, int max_packets) { /** XXX * I'm confused: socket < 0 means MOSQ_ERR_NO_CONN */ int rc = MOSQ_ERR_NO_CONN; int fd = mosquitto_socket(ctx->mosq); if (fd >= 0) { /** Wait until event */ revents = coio_wait(fd, revents, timeout); if (revents != 0) { if (revents & COIO_READ) rc = mosquitto_loop_read(ctx->mosq, max_packets); if (revents & COIO_WRITE) rc = mosquitto_loop_write(ctx->mosq, max_packets); } /** * mosquitto_loop_miss * This function deals with handling PINGs and checking * whether messages need to be retried, * so should be called fairly _frequently_(!). * */ if (ctx->next_misc_timeout < fiber_time64()) { rc = mosquitto_loop_misc(ctx->mosq); ctx->next_misc_timeout = fiber_time64() + 1200; } } return rc; }
ãœã±ããèšè¿°åãžã®ãªã³ã¯ãååŸããç¬èªã®ã€ãã³ãã«ãŒãã䜿çšããŠããã€ãã®ã€ãã³ããåŠçã§ããŸãã ãããŠããã¯çŽ æŽãããããšã§ãïŒ 6LBRã®ããã«ãTarantoolãå調ãã«ãã¿ã¹ã¯ãå®è¡ããŠãããšããäºå®ã«æ³šç®ããããšæããŸãã Tarantoolã¯ã
coio_wait()
ã䜿çšããŠå¶åŸ¡ãè¿ããŸãã
ããããã Tarantoolã¯Luaã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã§ãããããšãå¿ããŠããŸããã ãµãã©ã€ãºïŒ ããã§ãlibmosquittoãLuaã«ç§»æ€ããŸããã 以äžã¯ãåã®äŸã§èŠãé¢æ°ãåŒã³åºãã³ãŒãã§ãã
__poll_forever = function(self) local mq = self.mqtt while true do self.connected, _ = mq:poll_one() if not self.connected then if self.auto_reconect then self:__try_reconnect() else log.error( "mqtt: the client is not currently connected, error %s", emsg) end end fiber.sleep(self.POLL_INTERVAL) end end,
ãŸããlibmosquitto APIãããã¹ãŠã®é¢æ°ã移æ€ããŸããã ããã§çµæãèŠãããšãã§ããŸã ã ãªã³ã¯ã¯äœ¿çšäŸã瀺ããŸãã ã¡ãã·ã¥ãããã¯ãŒã¯å ã®ãã¹ãŠã®ããã€ã¹ããããŒã¿ãåéããããã«å¿ èŠãªããšã¯ãç¹å®ã®å Žæãã
subscribe()
é¢æ°ãåŒã³åºãã
get()
ã¡ãœãããå ¬éãã
get()
ã§ãïŒ
ãããã«
ç§ãã¡ãåŸããã®ãèŠãŠã¿ãŸãããïŒ

ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãžã®æ¥ç¶ã¯ãTarantool master-masterãæäŸããã¬ããªã±ãŒã·ã§ã³ãéããŠç¢ºç«ãããŸãã ãããã2ã€ã®æçšãªããããã£ãç¶ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãããŒã¿ãå€æŽãããšããã®æŽæ°ãããããŒã¿ã¯ãããã¯ãŒã¯äžã®ãã¹ãŠã®IoTããã€ã¹ã«é ä¿¡ãããŸãã
- IoTããã€ã¹ãããŒã¿ãå€æŽãããšããã®æŽæ°ãããããŒã¿ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã«é ä¿¡ãããŸãã
ãããã®ããããã£ãç§ã®åé¡ã®è§£æ±ºçã§ãã
ãã¹ã¿ãŒãã¹ã¿ã¬ããªã±ãŒã·ã§ã³ã䜿çšããŠIoTããã€ã¹ãæ¥ç¶ããããšãã§ããŸãã ãããã£ãŠãããã€ã¹ãšã¯ã©ãŠãã¯ããã¹ãŠã®ããŒã¿ãåæããããã«äœ¿çšã§ããã¯ã©ã¹ã¿ãŒã«çµåãããŸãã ãã¹ãŠã®IoTããã€ã¹ãšã¯ã©ãŠãã¯ããããã®éã®æ¥ç¶ã倱ãããªãéããã»ãšãã©ã®æéåæãããŸãã æ¥ç¶ã埩å ããããšããã«ããã¹ãŠã®ããŒã¿ãåã³åæãããŸãã çŽ æŽãããïŒ
6LBRã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããã²ãŒããŠã§ã€ã䜿çšãããšãIoTããã€ã¹ãšä»ã®IoTããã€ã¹éã§ããŒã¿ã亀æã§ããŸãã åã¡ãã»ãŒãžãMQTTã¡ãã»ãŒãžã«ã©ããããUARTãã£ãã«ã«éä¿¡ããŸãã
MQTTãããŒã«ãŒãã€ã³ã¹ããŒã«ãããIoTããã€ã¹#Nã¯ãUARTãã£ãã«ãããããã®ã¡ãã»ãŒãžãèªã¿åããŸãã MQTTãããŒã«ãŒã¯ãMQTTæ¥ç¶ãä»ããŠã¡ãã»ãŒãžãTarantoolã«ãªãã€ã¬ã¯ãããŸãã Tarantoolã¯ããããèªã¿åããTarantoolã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã¯åã¡ãã»ãŒãžã«å¯ŸããŠããã€ãã®ã³ãŒããå®è¡ããŸãã
#N IoTããã€ã¹ã¯ãTarantoolãã¹ã¿ãŒ/ãã¹ã¿ãŒã¬ããªã±ãŒã·ã§ã³ãä»ããŠä»ã®ãã¹ãŠã®ããã€ã¹ã«æ¥ç¶ãããŸãã åãã¬ããªã±ãŒã·ã§ã³ã䜿çšããŠããã¹ãŠã®ããã€ã¹ãã¯ã©ãŠãã«æ¥ç¶ããŸãã
ããã ãã§ãïŒ ç§ã¯ãã®èª²é¡ã解決ããŸãããç§ã®çµéšãå°æ¥ã®ããªãèªèº«ã®ãããžã§ã¯ãã«åœ¹ç«ã€ããšãæ¬åœã«é¡ã£ãŠããŸãã èŠçŽãããšãç§ã¯Tarantoolãå°çšãµãŒããŒã®ã¡ã€ã³ããã³ããšã³ããšã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã®äž¡æ¹ãšããŠäœ¿çšããŸããã ãã®ãããã¯ã«èå³ãããå Žåã¯ãè±èªã®ä»ã®èšäºãã芧ã«ãªãããšããå§ãããŸãã é£çµ¡ãåãåããåŒãç¶ãã泚ç®ãã ããïŒ