
å"Tsurugi"ãšã¯äœã
å"Tsurugi"ãšã¯
å"Tsurugi"ã¯ãåœç£ã® OSS-次äžä»£ RDB ã§ãã5 幎éã®åœïŒNEDOïŒã®æ¯æŽãçµãŠãåºæ¥äžãã£ã RDB ã«ãªããŸãã
ããšããšæå¿ã®å匷äŒããå§ãŸã£ãã³ãã¥ããã£æŽ»åãããŒã¹ã§ãåœã®äºç®ãåããŠã
ã»åæ°éäŒæ¥ïŒããŒãã©ã¹ã»ãã¯ãããžãŒãºïŒNECïŒ
ã»å€§åŠïŒæ±äº¬å·¥æ¥å€§åŠã»æ
¶å¿å€§åŠã»åå€å±å€§åŠã»å€§éªå€§åŠïŒ
ã»ç ç©¶æ©é¢ïŒåœç«å€©æå°ïŒ
çã
ãäž»äœãšãªã£ãŠãããŸããŸãªäŒæ¥ã»é¢ä¿è
ã®ååã®ããšã«éçºãããŸããã
OSS ãªã®ã§ãã ãã§ãèªç±ã«å©çšããããšãã§ããŸãã
ã©ã€ã»ã³ã¹ã¯ Apache2.0 ã«ãªããŸããåçšãµããŒããæäŸãããŠããŸãã
èæ¯ãšåºç€æ§èœ
ãªã«ãã€ããµã© RDB ãªã®ãïŒãã§ã«æ¯ããŠããæè¡ã§ã¯ãªãã®ãïŒãšããã®ããæ®éã®ãŠãŒã¶ïŒãšã³ãžãã¢ã®å°è±¡ã ãšæããŸãã
å®éã¯ãRDB ã®æè¡ã¯å¹Žã 鲿©ããŠããŸãã
ã«ããããããæ¢åã® RDB ã§ã¯ããã®ãããªæ°ããæè¡ã¯ãªããªãåãå
¥ããããªãã®ã宿
ã§ããããã¯äž»ã«ãã€ãããŒã·ã§ã³ã®ãžã¬ã³ããšã寡å åã«ããç«¶äºç·©åããããŠå RDB ã®æ©èœæ¡åŒµã«ããã³ãŒãããŒã¹ã®è¥å€§åã«ãããã®ã§ãããã
ãã®çµæãæ¢åã® RDB ããæ§æ¥ã®ç°å¢ã§ãããã¡ã¢ãªãŒã¯è²Žéã»ã³ã¢ã¯å°ãªãã»åºæ¬ã¯ Diskããåæãšããã¢ãŒããã¯ãã£ãå·æ°ããçŸåšã®ç°å¢ã§ããã倧容éã¡ã¢ãªãŒã»ã¡ããŒã³ã¢ã»åæ£ç°å¢ããžå
šé¢çã«é©å¿ãè¡ãããšã¯å°é£ã«ãªã£ãŠããŸã£ãŠããŸãã
å"Tsurugi"ã¯ãã® 20 幎æ¥ã® RDB ã§ã®äžççãªãæè¡çææãåãå
¥ãã倧容éã¡ã¢ãªãŒã»ã¡ããŒã³ã¢ç°å¢ã掻ããããšãã§ããã¢ãŒããã¯ãã£ããäžããæ§ç¯ããŠã§ãããã£ã RDB ã§ãã
ããŒã¹ããã©ãŒãã³ã¹
å"Tsurugi"ã®ããŒã¹ããã©ãŒãã³ã¹ã¯ä»¥äžã«ãªããŸãã

ç¹ã«30ã³ã¢ä»¥äžã§äŒžã³ã¯é¡èã§ãã
ããã¯æ¥çæšæºã®YCSB-AïŒread 50% / write 50%ïŒã«ãããã®ã§ãã
100ã³ã¢è¿èŸºã§ã¯ã¹ã«ãŒãããã§400äžTPS/é
å»¶ã§200ããç§ã«ãªã£ãŠããŸãã
ããã¯"Shirakami"ãšãããå"Tsurugi"ã®ãšã³ãžã³éšåã®åºç€æ§èœã§ãã
å€åŽã«SQLïŒéä¿¡åŠççã
ã®å±€ãã€ããŠãããšããã®ã»ã©ã®ããã©ãŒãã³ã¹ã¯ã§ãŸããã
ãšã¯ãããããŒã¹ã®åºç€æ§èœã¯åºãŠããã®ã§ãçŸç¶ã®ç¹ã«æé©åãå
¥ããŠããªãçŽ ã®ç¶æ
ã§ã30ã³ã¢è¿èŸºã§ããã§ã«æ¢åã®RDBã®æ§èœãåé§ããŠãããŸããããå€ãã®ã³ã¢æ°ã§ã¯å·®ã¯äžæ¹çã«ãªããŸãã

ã¢ãŒãªãŒã¢ã¯ã»ã¹çã«ã€ããŠ
ãã®å"Tsurugi"ã¯7/10çŸåšããŸã αçã§ã®æäŸã®ã¿ã§ãã
åºç€æ§èœãšéåžžã®RDBãšããŠã®æäœéã®æ©èœã¯æºãããŠããŸããããŸã ãŸã æ©èœãè¶³ããŸããã9æã®GAãç®æããŠæ©èœæ¡åŒµã»æ§èœåäžãè¡ã£ãŠããŸãã
ãã ãã倧ããªç¹é·ã®äžã€ã§ãããããããåŠç/write-heavy-transactionãã«ç§ã§ãŠããæ©èœã¯ãã§ã«ãååå©çšã§ãæ°Žæºãã€ã極ããŠé«ãæ§èœãã§ãããã«ãªã£ãŠããŸãã
ãšããããã詊ããŠã¿ããããšãããããªã客æ§ã«ã¯ãαãšããŠã®æäŸãéå§ããåçšãµããŒããå§ããŠããŸãã
å"Tsurugi"ã®é£ãã
å"Tsurugi"ã¯ããã®20幎éã®å€§ãããã©ãã€ã ã·ãããããæ°ããRDBã®ã¢ãŒããã¯ãã£ãå
šé¢çã«æ¡çšããŠããŸãã
åºæ¬çãªæåã¯ä»ãŸã§ã®RDBãšå€ãããŸãããããããããšç¥ã£ãŠãããæ¹ãããäºé
ããããããå±±ã®ããã«ãããŸãã
äž»ãªãã®ã以äžã«é ã«æããŸãã
ã»MVCC/TimeStampããŒã¹
åŸæ¥ã®RDBã¯ãåºæ¬ã¯single version(mono version)ïŒlockããŒã¹ã§ã®ã¢ã«ãŽãªãºã ã»ã¢ãŒããã¯ãã£ã§åããŠããŸãã
å"Tsurugi"ã¯ãmulti version + timestampããŒã¹ã®ã¢ã«ãŽãªãºã ã»ã¢ãŒããã¯ãã£ã§åäœããŠããŸãã
äž¡è ãšãã«äžè²«æ§ïŒserializableïŒãæ ä¿ããŠããŸãããåè ãã貎éãªãªãœãŒã¹ã䜿ãåããããªã·ãŒãªã®ã«å¯ŸããŠãåŸè ã¯ãè±å¯ãªãªãœãŒã¹ã䜿ãåãããšããããªã·ãŒã§ãã
è«ççã«ã¯ç䟡ã§ãããèãæ¹ãšããŠãŸã£ããã®å¥ç©ã§ãã
ãã¡ããã以åã«ãmulti versionïŒMVCCïŒã®å®è£
ã¯ãããŸããããããããããã¯ãããŸã§ãsingle versionã®å»¶é·ç·äžã®ãã®ã§ãMVCCã®æ¬æ¥ã®ããã³ã·ã£ã«ã掻ããã«ã¯ã»ã©é ããã®ã§ãã
å"Tsurugi"ã§ã¯ãMVCC/TimeStampããŒã¹ããã®åºç€ã«æ®ããŠäœãäžããããŠããä»çµã¿ã§ãã
ã»HybridCC
å"Tsurugi"ã®åºæ¬ã¯OCCã§ãã
ããã¯éåžžã«è»œéãã€é«éãªã¢ã«ãŽãªãºã ã§ããããããåŠçã¯å¿è«ãéåžžã®ãã«ãã£ã³ã§ãã䞊ååŠçãã§ããªãããšããèŽåœçãªæ¬ é¥ããããŸãã
å"Tsurugi"ã¯ãOCCãšã¯å¥ã«ãããåŠçã«ç¹åãããMVCCã®ã¢ã«ãŽãªãºã ïŒLTXïŒãéçºããŠå®è£ ããŠããŸããããã«ããã®LTXãšOCCãæ··åšã§ããããã«ããŠããŸãã
ãããåŠçã®ãããªéããåŠçããªããšãã¯OCCã§ãéã«ããçšåºŠå€§ããªåŠçãè¡ããšãã¯LTXã§ããšãã颚ã«è€æ°ã®ãããã³ã«ãâåæâã«å©çšããŠæé©ãªãªãœãŒã¹ãããŒãžã¡ã³ããã§ããããã«ããŠããŸãã
ã»å€æ§ãªã€ã³ã¿ãŒãã§ãŒã¹
åŸæ¥ã®ã¢ããªã·ãã¯ãªRDBãšç°ãªããå"Tsurugi"ã¯ã³ã³ããŒãã³ãããŒã¹ã®ã¢ãŒããã¯ãã£ã§äœãããRDBã§ãã
ãã®ã¢ãŒããã¯ãã£ã«ãããã³ãŒãããŒã¹ãè¥å€§åãããã«æ§ã ãªã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŠããŸããJDBCã©ã€ã¯ãªåæJavaAPIãéåæããŒã¹ã®JavaAPIãWebAPIãDump/Loadã€ã³ã¿ãŒãã§ã€ã¹ãPostgresæ¥ç¶ãçã ã§ãã
ãŸããããŒã¹ã®ãã©ã³ã¶ã¯ã·ã§ã³ãšã³ãžã³ã®äžè²«æ§æ ä¿ã«ãããè€æ°ã®ã€ã³ã¿ãŒãã§ã€ã¹ãåæã«å©çšããããšãã§ããŸããJavaã®APIã§ãããåŠçãå®è¡äžã«ãWebAPIçµç±ã§ããã®ãããåŠçäžã®ããŒãã«ã«æ®éã«ã¢ã¯ã»ã¹ããããšããæ®éã«å®è¡ããããšãã§ããŸãã
次å以éã¯ããã詳现ã«å"Tsurugi"ã®ããã©ãŒãã³ã¹ã»å éšã玹ä»ããŠãããŸãã
ç¥æé£å¿
é¢é£ãªã³ã¯
âœå°å
¥äºäŸãªã©ã®è©³çްã詊çšã®ãç³èŸŒã¿ã¯ã³ãã©
å"Tsurugi"ã³ãã¥ããã£ãµã€ãïŒhttps://www.tsurugidb.com/ïŒ
âœTsurugiã«é¢ãããã¬ã¹ãªãªãŒã¹ã¯ã³ãã©
https://prtimes.jp/main/html/rd/p/000000001.000124881.html