æçš¿è
ïŒ Denis Tsyplakov ããœãªã¥ãŒã·ã§ã³ã¢ãŒããã¯ããDataArtåé¡ã®å£°æ
ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ãæ§ç¯ãããšããç¹ã«ã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ããã€ã¯ããµãŒãã¹ã«ç§»è¡ãããšãã®åé¡ã®1ã€ã¯ãå€ãã®å Žåãã©ã³ã¶ã¯ã·ã§ã³ã§ãã åãã€ã¯ããµãŒãã¹ã¯ãç¬èªã®æ©èœã°ã«ãŒããæ
åœããå Žåã«ãã£ãŠã¯ãã®ã°ã«ãŒãã«é¢é£ä»ããããããŒã¿ãå¶åŸ¡ããèªåŸçã«ãŸãã¯ä»ã®ãã€ã¯ããµãŒãã¹ã«ãªã¯ãšã¹ããéä¿¡ããããšã«ããããŠãŒã¶ãŒãªã¯ãšã¹ãã«å¯Ÿå¿ã§ããŸãã ããŸããŸãªãã€ã¯ããµãŒãã¹ã«ãã£ãŠå¶åŸ¡ãããããŒã¿ã®äžè²«æ§ã確ä¿ããå¿
èŠããããŸã§ãããã¯ãã¹ãŠæ£åžžã«æ©èœããŸãã
ããšãã°ããã®ã¢ããªã±ãŒã·ã§ã³ã¯å€§èŠæš¡ãªãªã³ã©ã€ã³ã¹ãã¢ã§åäœããŸãã ãšããããçžäºã«åŒ±ãçžäºæ¥ç¶ããã3ã€ã®äºæ¥é åããããŸãã
- å庫-äœããã©ãã§ãã©ã®ããã«ãã©ã®ãããã®æéä¿ç®¡ããããç¹å®ã®ã¿ã€ãã®ååãçŸåšäœååšåº«ãããŠããããªã©
- ååã®éä»-梱å
ãåºè·ãé
éã®è¿œè·¡ãé
延ã«é¢ããèŠæ
ã®åæãªã©
- ååãæµ·å€ã«éãããå Žåã®ååã®ç§»åã«é¢ããçšé¢å ±åã®ç¶æïŒå®éããã®å Žåãç¹å¥ã«äœããäœæããå¿
èŠããããã©ããã¯ããããŸãããããã©ããè¿œå ããããã»ã¹ã«åœã®ãµãŒãã¹ãæ¥ç¶ããŸãïŒã
ãããã®3ã€ã®é åã«ã¯ããããå€ãã®ã°ãã°ããªæ©èœãå«ãŸããŠãããè€æ°ã®ãã€ã¯ããµãŒãã¹ãšããŠè¡šãããšãã§ããŸãã
1ã€ã®åé¡ããããŸãã 人ã補åã賌å
¥ããããã梱å
ããå®
é
䟿ã§éã£ããšããŸãã ãšããããå庫å
ã®ååã®åäœã1ã€å°ãªãããšã瀺ãå¿
èŠããããŸããããã¯ãååã®é
éããã»ã¹ãéå§ãããããšãããã³ååãäžåœã«éãããå Žåãçšé¢ã®æžé¡ãåŠçããããã§ãã ããã»ã¹ã®2çªç®ãŸãã¯3çªç®ã®æ®µéã§ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããå ŽåïŒããšãã°ãããŒããã¯ã©ãã·ã¥ããå ŽåïŒãããŒã¿ã¯äžè²«æ§ã®ãªãç¶æ
ã«ãªããŸãããã®ãããªé害ã¯ãããããã§ãããããžãã¹ã«ãšã£ãŠéåžžã«äžæå¿«ãªåé¡ïŒçšé¢è·å¡ã®èšªåãªã©ïŒã«ã€ãªãããŸãã
ãã®çš®ã®å€å
žçãªã¢ããªã·ãã¯ã¢ãŒããã¯ãã£ã§ã¯ãããŒã¿ããŒã¹å
ã®ãã©ã³ã¶ã¯ã·ã§ã³ã«ãã£ãŠåé¡ãç°¡åãã€ãšã¬ã¬ã³ãã«è§£æ±ºãããŸãã ãããããã€ã¯ããµãŒãã¹ã䜿çšãããšã©ããªããŸããïŒ ãã¹ãŠã®ãµãŒãã¹ããåãããŒã¿ããŒã¹ã䜿çšããå ŽåïŒããŸãæŽç·ŽãããŠããŸãããããã®å Žåã¯å¯èœã§ãïŒããã®ããŒã¿ããŒã¹ã®æäœã¯ç°ãªãããã»ã¹ããè¡ãããããã»ã¹éã§ãã©ã³ã¶ã¯ã·ã§ã³ãåŒã䌞ã°ãããšã¯ã§ããŸããã
解決ç
ãã®åé¡ã«ã¯ããã€ãã®è§£æ±ºçããããŸãã
- å¥åŠãªããšã«ãåé¡ãç¡èŠã§ããå ŽåããããŸãã é害ã1ãæã«1åããçºçããããã®çµæãæåã§åé€ããããšã§ããžãã¹ã«èš±å®¹ã§ããè²»çšããããããšãããã£ãŠããå Žåããã®ãèŠãæ¹ã«æ³šæãæãããšã¯ã§ããŸããã çšé¢ã®ç³ãç«ãŠãç¡èŠã§ãããã©ããã¯ããããŸããããç¹å®ã®ç¶æ³äžã§ããããå¯èœã§ãããšèããããŸãã
- è£åïŒçœ°éãæ¯æããªã©ãçšé¢ã«å¯Ÿããééçè£åã§ã¯ãããŸããïŒã¯ãåŠçæé ãè€éã«ããããŸããŸãªã¹ãããã®ã°ã«ãŒãã§ããã倱æããããã»ã¹ãæ€åºããŠåŠçã§ããŸãã ããšãã°ãæäœãéå§ããåã«ãåºè·æäœãéå§ããŠããããšãç¹å¥ãªãµãŒãã¹ã«æžã蟌ã¿ãæåŸã«ãã¹ãŠãæ£åžžã«çµäºããããšãããŒã¯ããŸãã ãã®åŸãå®æçã«äžå®å
šãªæäœããããã©ããã確èªããæäœãããå Žåã¯ã3ã€ãã¹ãŠã®ããŒã¿ããŒã¹ã調ã¹ãŠãããŒã¿ãäžè²«ããç¶æ
ã«ããããšããŸãã ããã¯å®å
šã«æ©èœããæ¹æ³ã§ãããåŠçããžãã¯ã倧å¹
ã«è€éã«ãªããæäœããšã«è¡ãã®ã¯éåžžã«èŠçã§ãã
- 2ãã§ãŒãºãã©ã³ã¶ã¯ã·ã§ã³ãå³å¯ã«èšãã°ãã¢ããªã±ãŒã·ã§ã³ã«é¢é£ããŠåæ£ããããã©ã³ã¶ã¯ã·ã§ã³ãäœæã§ããXA +ä»æ§ã¯ãå°æ°ã®äººã奜ã¿ãããã«éèŠãªã®ã¯å°æ°ã®äººãæ§æã§ããéåžžã«éãã¡ã«ããºã ã§ãã ããã«ã軜éã®ãã€ã¯ããµãŒãã¹ã§ã¯ãã€ããªãã®ãŒçã«åŒ±ãäºææ§ããããŸãã
- ååãšããŠããã©ã³ã¶ã¯ã·ã§ã³ã¯ã³ã³ã»ã³ãµã¹åé¡ã®ç¹æ®ãªã±ãŒã¹ã§ãããå€æ°ã®åæ£ã³ã³ã»ã³ãµã¹ã·ã¹ãã ã䜿çšããŠåé¡ã解決ã§ããŸãïŒå€§ãŸãã«èšãã°ãããŒã¯ãŒãpaxosãraftãzookeeperãetcdãconsulã§ã°ãŒã°ã«ã§ãããã¹ãŠã®ãã®ïŒã ããããå庫掻åã®åºç¯å²ã§åå²ããããŒã¿ã®å®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããããã¯ãã¹ãŠ2ãã§ãŒãºãã©ã³ã¶ã¯ã·ã§ã³ãããããã«è€éã«èŠããŸãã
- ãã¥ãŒãšçµææŽåæ§ïŒé·æçãªäžè²«æ§ïŒ-ã¿ã¹ã¯ã3ã€ã®éåæã¿ã¹ã¯ã«åå²ããããŒã¿ãé 次åŠçãããµãŒãã¹éã§ãã¥ãŒãããã¥ãŒã«æž¡ããé
信確èªã¡ã«ããºã ã䜿çšããŸãã ãã®å Žåãã³ãŒãã¯ããã»ã©è€éã§ã¯ãããŸããããçæãã¹ãç¹ãããã€ããããŸãã
- ãã¥ãŒã¯ãã1å以äžãã®é
ä¿¡ãä¿èšŒããŸããã€ãŸããåãã¡ãã»ãŒãžãåé
ä¿¡ããå ŽåããµãŒãã¹ã¯ãã®ç¶æ³ãæ£ããåŠçããååã2ååºè·ããªãããã«ããå¿
èŠããããŸãã ããã¯ãããšãã°æ³šæã®äžæã®UUIDã䜿çšããŠå®è¡ã§ããŸãã
- åæç¹ã®ããŒã¿ã¯ãããã«ççŸããŸãã ã€ãŸããååã¯æåã«å庫ããæ¶ããŠãããå°ãé
ããŠçºéã®æ³šæãäœæãããŸãã åŸã§ãçšé¢ããŒã¿ãåŠçãããŸãã ãã®äŸã§ã¯ãããã¯å®å
šã«æ£åžžã§ãããããžãã¹ã«åé¡ã¯ãããŸãããããã®ãããªããŒã¿ã®åäœãéåžžã«äžå¿«ã«ãªãå ŽåããããŸãã
- ãã®çµæãæåã®ãµãŒãã¹ãäœããã®ããŒã¿ããŠãŒã¶ãŒã«è¿ããªããã°ãªããªãå Žåãæçµçã«ãŠãŒã¶ãŒã®ãã©ãŠã¶ãŒã«ããŒã¿ãé
ä¿¡ããäžé£ã®åŒã³åºãã¯éåžžã«éèŠã§ãã äž»ãªåé¡ã¯ããã©ãŠã¶ãŒãèŠæ±ãåæçã«éä¿¡ããéåžžã¯åæå¿çãäºæããããšã§ãã éåæã®ãªã¯ãšã¹ãåŠçãè¡ãå Žåããã©ãŠã¶ãžã®ã¬ã¹ãã³ã¹ã®éåæé
ä¿¡ãæ§ç¯ããå¿
èŠããããŸãã åŸæ¥ãããã¯Webãœã±ãããä»ããŠããŸãã¯ãã©ãŠã¶ãããµãŒããŒãžã®æ°ããã€ãã³ãã®å®æçãªèŠæ±ãä»ããŠè¡ãããŸãã ããšãã°ãSocksJSãªã©ããã®ãªã³ã¯ãæ§ç¯ããããã€ãã®åŽé¢ãç°¡çŽ åããã¡ã«ããºã ããããŸãããããã§ãè€éããå¢ããŸãã
ã»ãšãã©ã®å ŽåãåŸè
ã®ãªãã·ã§ã³ãæãåãå
¥ããããŸãã åŠçèŠæ±ã¯ããã»ã©è€éã§ã¯ãããŸããããæ°åé·ãåäœããŸãããååãšããŠããã®çš®ã®æäœã§ã¯åãå
¥ããããŸãã ãŸããç¹°ãè¿ããããªã¯ãšã¹ããé®æããããã«ãããå°ãè€éãªããŒã¿ç·šæãå¿
èŠã§ãããããã«ã€ããŠãããã»ã©è€éãªããšã¯ãããŸããã
æŠç¥çã«ããã¥ãŒãšçµææŽåæ§ã䜿çšããŠãã©ã³ã¶ã¯ã·ã§ã³ãåŠçããããã®ãªãã·ã§ã³ã®1ã€ã¯æ¬¡ã®ããã«ãªããŸãã
- ãŠãŒã¶ãŒã賌å
¥ãããšãããã«é¢ããã¡ãã»ãŒãžããã¥ãŒã«éä¿¡ãããŸãïŒããšãã°ãRabbitMQã¯ã©ã¹ã¿ãŒããŸãã¯Google Cloud Platformã§äœæ¥ããŠããå Žå-Pub / SubïŒã ãã¥ãŒã¯æ°žç¶çã§ããã1å以äžã®é
ä¿¡ãä¿èšŒãããã©ã³ã¶ã¯ã·ã§ã³ã§ããã€ãŸããã¡ãã»ãŒãžãåŠçãããµãŒãã¹ãçªç¶ããããããŠããã¡ãã»ãŒãžã¯å€±ãããŸãããããµãŒãã¹ã®æ°ããã€ã³ã¹ã¿ã³ã¹ã«å床é
ä¿¡ãããŸãã
- ã¡ãã»ãŒãžããµãŒãã¹ã«å°çãããšãå庫å
ã®ååã«åºè·æºåãã§ããŠãããšããŒã¯ãä»ãããã次ã«ãååã®åºè·æºåãã§ããŸããããšããã¡ãã»ãŒãžããã¥ãŒã«éä¿¡ãããŸãã
- 次ã®ã¹ãããã§ããã£ã¹ããããæ
åœãããµãŒãã¹ã¯ããã£ã¹ãããã®æºåç¶æ³ã«é¢ããã¡ãã»ãŒãžãåä¿¡ãããã£ã¹ãããã¿ã¹ã¯ãäœæããŠããååã®ãã£ã¹ããããèšç»ãããŠããŸãããšããã¡ãã»ãŒãžãéä¿¡ããŸãã
- çºéãèšç»ãããŠãããšããã¡ãã»ãŒãžãåãåã£ã次ã®ãµãŒãã¹ã¯ãçšé¢ã®äºååŠçã®ããã»ã¹ãéå§ããŸãã
ããã«ããµãŒãã¹ã«ãã£ãŠåä¿¡ãããåã¡ãã»ãŒãžã¯äžææ§ããã§ãã¯ããããã®ãããªUUIDãæã€ã¡ãã»ãŒãžããã§ã«åŠçãããŠããå Žåãç¡èŠãããŸãã
ããã§ã¯ãåæç¹ã®ããŒã¿ããŒã¹ããŒã¹ã¯ãããã«äžè²«æ§ã®ãªãç¶æ
ã«ãããŸããã€ãŸããå庫å
ã®ååã¯ãã§ã«é
éããã»ã¹ã«ãããšããŒã¯ãããŠããŸãããé
éã¿ã¹ã¯èªäœã¯ãŸã ååšãããæ°ç§ã§è¡šç€ºãããŸãã ãããåæã«ã99.999ïŒ
ïŒå®éããã®æ°ã¯ãã¥ãŒãµãŒãã¹ã®ä¿¡é Œæ§ã®ã¬ãã«ã«çããïŒã«ãããéä¿¡ã¿ã¹ã¯ã衚瀺ãããããšãä¿èšŒãããŠããŸãã ã»ãšãã©ã®äŒæ¥ã§ã¯ãããã¯åãå
¥ããããŸãã
ãã®ãšãã®èšäºã¯äœã§ããïŒ
ãã®èšäºã§ã¯ããã€ã¯ããµãŒãã¹ã¢ããªã±ãŒã·ã§ã³ã®ãã©ã³ã¶ã¯ã·ã§ã³ã®åé¡ã解決ããå¥ã®æ¹æ³ã«ã€ããŠèª¬æããŸãã ãã€ã¯ããµãŒãã¹ã¯ãåãµãŒãã¹ã«ç¬èªã®ããŒã¿ããŒã¹ãããå Žåã«æé©ã«æ©èœããŸãããäžå°èŠæš¡ã®ã·ã¹ãã ã§ã¯ãååãšããŠãã¹ãŠã®ããŒã¿ãææ°ã®ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã«ç°¡åã«åãŸããŸãã ããã¯ãã»ãŒãã¹ãŠã®å
éšãšã³ã¿ãŒãã©ã€ãºã·ã¹ãã ã«åœãŠã¯ãŸããŸãã ã€ãŸããå€ãã®å Žåãç°ãªãç©çãã·ã³éã§ããŒã¿ãå³å¯ã«å
±æããå¿
èŠã¯ãããŸããã åãããŒã¿ããŒã¹ã®ããŒãã«ã®ç¡é¢ä¿ãªã°ã«ãŒãã«ç°ãªããã€ã¯ããµãŒãã¹ã®ããŒã¿ãä¿åã§ããŸãã ããã¯ãå€ãã¢ããªã·ãã¯ã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ã«åå²ããã³ãŒããæ¢ã«åå²ããŠããããããŒã¿ããŸã 1ã€ã®ããŒã¿ããŒã¹ã«ããå Žåã«ç¹ã«äŸ¿å©ã§ãã ãã ãããã©ã³ã¶ã¯ã·ã§ã³ã®åå²ã®åé¡ã¯äŸç¶ãšããŠæ®ã£ãŠããŸãããã©ã³ã¶ã¯ã·ã§ã³ã¯ãããã¯ãŒã¯æ¥ç¶ãšãããã«å¿ããŠãã®æ¥ç¶ãéããããã»ã¹ã«å³å¯ã«çµã³ä»ããããŠãããå¥ã®ããã»ã¹ããããŸãã ã«ãªãæ¹æ³
äžèšã§ã¯ãåé¡ã解決ããããã€ãã®äžè¬çãªæ¹æ³ã説æããŸããããããã«ããã¹ãŠã®ããŒã¿ãåãããŒã¿ããŒã¹ã«ããç¹å¥ãªå Žåã«å¥ã®æ¹æ³ãæäŸããããšæããŸãã
ãã®ãããžã§ã¯ãã§ãã®ã¡ãœãã
ãå®è£
ããããšããããšã¯ãå§ãããŸããããèšäºã§çŽ¹ä»ããã®ã¯ååã«èå³ããããŸãã çªç¶ãç¹å®ã®å Žåã«äŸ¿å©ã«ãªããŸãã
ãã®æ¬è³ªã¯éåžžã«ã·ã³ãã«ã§ãã ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããã¯ãŒã¯æ¥ç¶ã«é¢é£ä»ããããŠãããããŒã¿ããŒã¹ã¯ããªãŒãã³ãããã¯ãŒã¯æ¥ç¶ã®ãã®ç«¯ã«èª°ã座ã£ãŠããããå®éã«ã¯ç¥ããŸããã 圌女ã¯æ°ã«ããŸãããäž»ãªããšã¯æ£ããã³ãã³ãããœã±ããã«éä¿¡ãããããšã§ãã éåžžããœã±ããã¯ã¯ã©ã€ã¢ã³ãåŽã®1ã€ã®ããã»ã¹ã«æä»çã«å±ããŠããããšã¯æããã§ããããããåé¿ããã«ã¯å°ãªããšã3ã€ã®æ¹æ³ããããŸãã
1.ããŒã¿ããŒã¹ã³ãŒããå€æŽãã
ç¬èªã®ããŒã¿ããŒã¹ã¢ã»ã³ããªãäœæããŠã³ãŒããå€æŽã§ããããŒã¿ããŒã¹ã®ããŒã¿ããŒã¹ã³ãŒãã¬ãã«ã§ã¯ãæ¥ç¶éã§ãã©ã³ã¶ã¯ã·ã§ã³ã転éããããã®ã¡ã«ããºã ãå®è£
ããŸãã ã¯ã©ã€ã¢ã³ãã®èŠ³ç¹ããã©ã®ããã«æ©èœãããïŒ
- ãã©ã³ã¶ã¯ã·ã§ã³ãéå§ããããã€ãã®å€æŽãè¡ãããã©ã³ã¶ã¯ã·ã§ã³ã次ã®ãµãŒãã¹ã«è»¢éããŸãã
- DBã«ãã©ã³ã¶ã¯ã·ã§ã³ã®UUIDãæäŸããNç§åŸ
æ©ããããã«æ瀺ããŸãã ãã®æéäžã«ãã®UUIDãšã®å¥ã®æ¥ç¶ãæ¥ãªãå Žåããã©ã³ã¶ã¯ã·ã§ã³ãããŒã«ããã¯ãããããããªãããã©ã³ã¶ã¯ã·ã§ã³ã«é¢é£ä»ãããããã¹ãŠã®ããŒã¿æ§é ãæ°ããæ¥ç¶ã«è»¢éãããã®äœæ¥ãç¶ããŸãã
- UUIDã次ã®ãµãŒãã¹ïŒã€ãŸããå¥ã®ããã»ã¹ãå Žåã«ãã£ãŠã¯å¥ã®VMïŒã«æž¡ããŸãã
- ãã®äžã§ãæ¥ç¶ãéããDBã³ãã³ããæå®ããŸã-æå®ãããUUIDã§ãã©ã³ã¶ã¯ã·ã§ã³ãç¶è¡ããŸãã
- å¥ã®ããã»ã¹ã«ãã£ãŠéå§ããããã©ã³ã¶ã¯ã·ã§ã³ã®äžéšãšããŠãããŒã¿ããŒã¹ãåŒãç¶ã䜿çšããŸãã
ãã®ã¡ãœããã¯äœ¿çšããã®ãæã軜éã§ãããããŒã¿ããŒã¹ã³ãŒãã®å€æŽãå¿
èŠã§ããã¢ããªã±ãŒã·ã§ã³ããã°ã©ãã¯éåžžãããè¡ãããå€ãã®ç¹å¥ãªã¹ãã«ãå¿
èŠã§ãã ã»ãšãã©ã®å ŽåãããŒã¿ããŒã¹ããã»ã¹ãšããŒã¿ããŒã¹éã§ããŒã¿ã転éããå¿
èŠããããŸããããŒã¿ããŒã¹ã®ã³ãŒãã¯ãå
šäœãšããŠå®å
šã«å€æŽã§ããŸã-PostgreSQLã ããã«ãããã¯ç®¡çãããŠããªããµãŒããŒã§ã®ã¿æ©èœããŸããRDSãCloud SQLã§ã¯äœ¿çšã§ããŸããã
æŠç¥çã«ã¯ã次ã®ããã«ãªããŸãã

2.ãœã±ããã®æäœ
2çªç®ã«æãæµ®ãã¶ã®ã¯ããœã±ããã«ããããŒã¿ããŒã¹æ¥ç¶ã®åŸ®åŠãªæäœã§ãã è€æ°ã®ã¯ã©ã€ã¢ã³ãããã®ã³ãã³ãããããŒã¿ããŒã¹ãžã®1ã€ã®ã³ãã³ãã¹ããªãŒã å
ã®ç¹å®ã®ããŒãã«åããããªããŒã¹ãœã±ãããããã·ããäœæã§ããŸãã
å®éããã®ã¢ããªã±ãŒã·ã§ã³ã¯pgBouncerãšéåžžã«ãã䌌ãŠããŸãããæšæºæ©èœã«å ããŠãã¯ã©ã€ã¢ã³ãããã®ãã€ãã¹ããªãŒã ãæäœããã³ãã³ãã§1ã€ã®ã¯ã©ã€ã¢ã³ããå¥ã®ã¯ã©ã€ã¢ã³ãã«çœ®ãæããããšãã§ããŸãã
ç§ã¯ãã®æ¹æ³ã匷ãå«ããŸãããã®å®è£
ã®ããã«ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®éã埪ç°ãããã€ããªãã±ãããã¯ãªãŒã³ã¢ããããå¿
èŠããããŸãã ãããŠããŸã å€ãã®ã·ã¹ãã ããã°ã©ãã³ã°ãå¿
èŠã§ãã å®å
šãæãããã ãã«æã£ãŠããŸããã
3.ã²ãŒããŠã§ã€JDBC
ã²ãŒããŠã§ã€JDBCãã©ã€ããŒãäœæã§ããŸããç¹å®ã®ããŒã¿ããŒã¹çšã®æšæºJDBCãã©ã€ããŒã䜿çšããPostgreSQLã«ããŸãã ã¯ã©ã¹ãã©ãããããã®ãã¹ãŠã®å€éšã¡ãœãããžã®HTTPã€ã³ã¿ãŒãã§ã€ã¹ãäœæããŸãïŒHTTPã§ã¯ãªããéãã¯ãããã§ãïŒã 次ã«ãå¥ã®JDBCãã©ã€ããŒãäœæããŸããããã¯ããã¹ãŠã®ã¡ãœããåŒã³åºããJDBCã²ãŒããŠã§ã€ã«ãªãã€ã¬ã¯ããããã¡ãµãŒãã§ãã ã€ãŸããå®éã«ã¯ãæ¢åã®ãã©ã€ããŒã2ã€ã«åãããããã®ååããããã¯ãŒã¯çµç±ã§æ¥ç¶ããŠããŸãã 次ã®ã³ã³ããŒãã³ãå³ãååŸããŸãã
NBïŒïŒã芧ã®ãšããã3ã€ã®ãªãã·ã§ã³ã¯ãã¹ãŠé¡äŒŒããŠããŸããå¯äžã®éãã¯ãæ¥ç¶ã転éããã¬ãã«ãšãããã«äœ¿çšããããŒã«ã§ãã
ãã®åŸããã©ã€ããŒã«ãæ¹æ³1ã§èª¬æããUUIDãã©ã³ã¶ã¯ã·ã§ã³ã§åºæ¬çã«åãããªãã¯ãè¡ãããã«æ瀺ããŸãã
Javaã¢ããªã±ãŒã·ã§ã³ã³ãŒãã§ã¯ããã®ã¡ãœããã®äœ¿çšã¯æ¬¡ã®ããã«ãªããŸãã
ãµãŒãã¹A-ãã©ã³ã¶ã¯ã·ã§ã³ã®éå§
以äžã¯ããã©ã³ã¶ã¯ã·ã§ã³ãéå§ããããŒã¿ããŒã¹ã«å€æŽãå ãããããå¥ã®ãµãŒãã¹ã«æž¡ããŠå®äºããããã®ãµãŒãã¹ã®ã³ãŒãã§ãã ã³ãŒãã§ã¯ãJDBCã¯ã©ã¹ãçŽæ¥äœ¿çšããŸãã ãã¡ããã2019幎ã«ã¯èª°ããããè¡ããŸããããç°¡åã«ããããã«ãã³ãŒãã¯åçŽåãããŠããŸãã
ãµãŒãã¹B-ãã©ã³ã¶ã¯ã·ã§ã³ã®å®äº
ä»ã®ã³ã³ããŒãã³ãããã³ãã¬ãŒã ã¯ãŒã¯ãšã®çžäºäœçš
ãã®ãããªã¢ãŒããã¯ãã£ãœãªã¥ãŒã·ã§ã³ã®å¯äœçšã®å¯èœæ§ãèæ
®ããŠãã ããã
æ¥ç¶ããŒã«
å®éã«ã¯JDBCã²ãŒããŠã§ã€å
ã«å®éã®æ¥ç¶ããŒã«ãããã®ã§ããµãŒãã¹å
ã®æ¥ç¶ããŒã«ããªãã«ãããšãå¥ã®ãµãŒãã¹ã䜿çšã§ãããµãŒãã¹å
ã®æ¥ç¶ããã£ããã£ããŠä¿æãããããããé©åã§ãã
ããã«ãUUIDãåä¿¡ããŠââå¥ã®ããã»ã¹ãžã®è»¢éãåŸ
æ©ããåŸãæ¥ç¶ã¯åºæ¬çã«åäœäžèœã«ãªããããã³ããšã³ãJDBCã®èŠ³ç¹ããã¯èªåçã«éããŸããã²ãŒããŠã§ã€JDBCã®èŠ³ç¹ããã¯ã誰ã«ãäžããã«ä¿æããå¿
èŠããããŸãç®çã®UUIDãä»å±ããŸãã
ã€ãŸããã²ãŒããŠã§ã€JDBCããã³åãµãŒãã¹å
ã®æ¥ç¶ããŒã«ã®äºé管çã¯ã埮åŠã§äžå¿«ãªãšã©ãŒãåŒãèµ·ããå¯èœæ§ããããŸãã
JPA
JPAã§ã¯ã2ã€ã®åé¡ãèããããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³ç®¡çã JPAãã³ããããããšãããšã³ãžã³ã¯ãã¹ãŠã®ããŒã¿ãä¿åããããä¿åããŠããªããšèããå ŽåããããŸãã ã»ãšãã©ã®å Žåããã©ã³ã¶ã¯ã·ã§ã³ã転éããåã«æåã§ãã©ã³ã¶ã¯ã·ã§ã³ç®¡çãšãã©ãã·ã¥ïŒïŒãè¡ãããšã§åé¡ã解決ã§ããŸãã
- 2次ãã£ãã·ã¥ã¯ã»ãšãã©ã®å Žåæ£ããåäœããŸããããåæ£ã·ã¹ãã ã§ã¯ãã®äœ¿çšã¯ãããã«ããå¶éãããŸãã
æ¥ã®ãã©ã³ã¶ã¯ã·ã§ã³
Springãã©ã³ã¶ã¯ã·ã§ã³ç®¡çã¡ã«ããºã ã¯ããããã䜿çšã§ããªããããæåã§ç®¡çããå¿
èŠããããŸãã ã«ã¹ã¿ã ã¹ã³ãŒããäœæãããªã©ãæ¡åŒµã§ããããšã¯ã»ãŒééããããŸãããã確ãã«ãSpring Transactionsæ¡åŒµæ©èœãã©ã®ããã«é
眮ãããŠãããã調ã¹ãå¿
èŠããããŸããããŸã æ€èšããŠããŸããã
é·æãšçæ
é·æ
- ãœãŒã€ã³ã°æã«æ¢åã®ã¢ããªã·ãã¯ã³ãŒããå€æŽããå¿
èŠã¯ãããŸããã
- å®è³ªçã«ã³ãŒããè€éã«ããããšãªããè€éãªã¯ãã¹ãµãŒããŒãã©ã³ã¶ã¯ã·ã§ã³ãèšè¿°ã§ããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³å®è¡ã®ã¯ãã¹ãµãŒãã¹ãã¬ãŒã¹ãå®è¡ã§ããŸãã
- ãã®ãœãªã¥ãŒã·ã§ã³ã¯éåžžã«æè»ã§ããé
åžãäžèŠãªåŸæ¥ã®ãã©ã³ã¶ã¯ã·ã§ã³ã䜿çšããã¯ãã¹ãµãŒãã¹ã®çžäºäœçšãå¿
èŠãªæäœã«å¯ŸããŠã®ã¿ãã©ã³ã¶ã¯ã·ã§ã³ãå
±æã§ããŸãã
- ãããžã§ã¯ãããŒã ã¯ãæ°ãããã¯ãããžã匷å¶çã«ç¿åŸããå¿
èŠã¯ãããŸããã ãã¡ãããæ°ããæè¡ã¯åªããŠããŸãããã¿ã¹ã¯-å¿
é ãã€ç·æ¥ã§ãïŒæšæ¥ãŸã§ïŒïŒ20人ã®éçºè
ã«ãªã¢ã¯ãã£ãã·ã¹ãã ã®æ§ç¯ã®æŠå¿µãæããããšã¯ãéåžžã«éèŠã§ãã ãã ãã20人å
šå¡ãæééãã«ãã¬ãŒãã³ã°ãå®äºãããšããä¿èšŒã¯ãããŸããã
çæ
- ãã¥ãŒã«å
¥ãããããœãªã¥ãŒã·ã§ã³ãšã¯å¯Ÿç
§çã«ãããŒã¿ããŒã¹ã¬ãã«ã§ã¹ã±ãŒã©ãã«ã§ãªããå®éã«ã¯éã¢ãžã¥ã©ãŒã§ãã ãã¹ãŠã®ã¯ãšãªãšè² è·å
šäœãåæãã1ã€ã®ããŒã¿ããŒã¹ããŸã ãããŸãã ãã®æå³ã§ããœãªã¥ãŒã·ã§ã³ã¯è¡ãè©°ãŸãã§ããåŸã§è² è·ãå¢ãããããããŒã¿ã«å¿ããŠãœãªã¥ãŒã·ã§ã³ãã¢ãžã¥ãŒã«åããå Žåã¯ããã¹ãŠãããçŽãå¿
èŠããããŸãã
- ããã»ã¹éãç¹ã«ãã¬ãŒã ã¯ãŒã¯ã§èšè¿°ãããããã»ã¹éã§ãã©ã³ã¶ã¯ã·ã§ã³ã転éããå Žåã¯ãéåžžã«æ³šæããå¿
èŠããããŸãã ã»ãã·ã§ã³ã«ã¯ç¬èªã®èšå®ããããããŸããŸãªãã¬ãŒã ã¯ãŒã¯ã§ã¯ãããŒã¿ããŒã¹ãšã®æ¥ç¶ãçªç¶å€æŽããããšã誀åäœãçºçããå¯èœæ§ããããŸãã ããšãã°ãPostgreSQLã®ã»ãã·ã§ã³èšå®ãšãã©ã³ã¶ã¯ã·ã§ã³ãåç
§ããŠãã ããã
- å°å
ã®å»ºç¯å®¶ã®DataArtã®ãã£ããã§ã¢ã€ãã¢ã話ãããšããååãç§ã«æåã«å°ããã®ã¯ãç§ã飲ãã§ãããã©ããïŒãããã飲ãŸãªãïŒïŒ ããããããšãã°ããã®ã¢ã€ãã¢ã¯æãæ®åããŠãããã®ã§ã¯ãªãããããžã§ã¯ãã«å®è£
ãããšãä»ã®åå è
ã«ãšã£ãŠã¯éåžžã«çãããã®ã«ãªããšæããŸãã
- ã«ã¹ã¿ã JDBCãã©ã€ããŒãå¿
èŠã§ãã æžã蟌ã¿ã«ã¯æéãããããŸãããããã°ãããããããã¯ãŒã¯éä¿¡ãšã©ãŒãªã©ãå«ããšã©ãŒãæ¢ããŠãã ããã
èŠå
ããäžåºŠèŠåããŸãããã®ãããžã§ã¯ãã®
èªå®
ã§
ãã®ããªãã¯ãç¹°ãè¿ãããšããªãã§ãã ããããªããããå¿
èŠãªã®ããæ確ã«èª¬æããä»ã«æ¹æ³ããªããšãã説åŸåã®ãã蚌æ ããªãéãã
4æ1æ¥ãããã¹ãŠïŒ