ã»ã«ã²ã€ã»ãã©ããã³ïŒã¢ãŽã£ãŒãïŒ
ã¿ãªãããããã«ã¡ã¯ãç§ã®ååã¯ã»ã«ã²ã€ã»ããŒã¬ãã£ã¢ã³ã§ããããŒã¿ããŒã¹ç®¡çè ãšããŠAvitoã§åããŠããŸãã ç§ã¯ãã®ãããªã·ã¹ãã ã§åããŠããŸãïŒ
ããã¯ã2 TBã4ãµãŒããŒ-1ãã¹ã¿ãŒã3ã¹ã¿ã³ãã€ã®äžå€®ããŒã¹ã§ãã ãŸããlondisteããŒã¹ã®è«çã¬ããªã±ãŒã·ã§ã³ïŒããã¯Skytoolsã«ãããã®ïŒãå€éšã¹ãã£ã³ã¯ã¹ã€ã³ããã¯ã¹ãDWHãªã©ã®å€éšã·ã¹ãã ãžã®ããŸããŸãªã¢ããããŒãããããŸãã ãŸããxrpcãšåŒã°ãããªã¢ãŒãããã·ãŒãžã£ã³ãŒã«ã®åéã§ãç¬èªã®éçºãè¡ã£ãŠããŸãã 16å¡©åºã®ã¹ãã¬ãŒãžã ãã1ã€ã®æ°åã¯ãããã¯ã¢ããã«6æéãããããã®åŸ©æ§ã«ã¯çŽ12æéãããããšã§ãã ãããã®ã·ã¹ãã ã®ããŸããŸãªäºæ ãçºçããå Žåãç§ãã¡ã®ãµã€ãã®ç°¡åãªãµã€ãã¯10å以å ã§å®äºããŸãã
ãããã®ã·ã¹ãã ã®ããŸããŸãªæ¥ç¶ãæ³åããããšãããšã次ã®ããã«ãªããŸãã
ãããŠãäºæ ã§ããããã¹ãŠå€±ããªãããã«ããã«ã¯ã©ãããã°ããã§ããïŒ
äºæ ãšã¯äœã§ããïŒ
ç§ã¯äž»ã«ãµãŒããŒæ倱ã®ã¯ã©ãã·ã¥ãèæ ®ããŸããããŠã£ã¶ãŒãã®ãã©ã¹ã¯ããŒã¿ççºã®ãããªäºæ ã§ããå¯èœæ§ããããŸãã
å§ããŸãããã
äžéšã®ç®¡çè ãã©ãã§ããªã誀ã£ãŠæŽæ°ãããšããŸãã ãã®ãããªã±ãŒã¹ãäœåºŠããããŸããã ãããã身ãå®ãæ¹æ³ã¯ïŒ ç§ãã¡ã¯ã12æéã®é 延ã§WALã䜿çšããã¹ã¿ã³ãã€ããããšããäºå®ã§èªåãå®ããŸãã ãã®ãããªäºæ ãçºçããå Žåããã®ããŒã¿ãã¹ã¿ã³ãã€ããååŸãããã¹ã¿ãŒã«ã¢ããããŒãããŸããã
ãã¹ã¿ãŒã«çºçããå¯èœæ§ããã2çªç®ã®ã¯ã©ãã·ã¥ã¯ããµãŒããŒã®æ倱ã§ãã éåæã¬ããªã±ãŒã·ã§ã³ã䜿çšããŸãããµãŒããŒã倱ã£ãåŸãã¹ã¿ã³ãã€ããã¢ãŒã·ã§ã³ãè¡ãå¿ èŠããããŸãã ãããŠä»¥æ¥ éåæè€è£œããããããæ¥ç¶ãããã·ã¹ãã ã埩å ããã«ã¯ããŸããŸãªæé ãå®è¡ããå¿ èŠããããŸãã ç§ãã¡ã®ãã¹ã¿ãŒã¯äžå¿ã§ãããããŒã¿ãœãŒã¹ã§ãããããã£ãŠããã¹ã¿ãŒãåãæ¿ãããã¬ããªã±ãŒã·ã§ã³ãéåæã§ããå Žåããã©ã³ã¶ã¯ã·ã§ã³ã®äžéšã倱ãããã·ã¹ãã ã®äžéšãæ°ãããã¹ã¿ãŒã«ãšã£ãŠéæäžå¯èœãªæªæ¥ã«ããããšãããããŸãã
æã§ããããšã¯ãã¹ãŠé£ããã®ã§ãããã«ã¹ã¯ãªãããå®è¡ããå¿ èŠããããŸãã äºæ ã¯ã©ã®ããã«èŠããŸããïŒ å€éšã·ã¹ãã ã§ã¯ããŠã£ã¶ãŒãã«è¡šç€ºãããªããªã£ãåºåã衚瀺ãããæ€çŽ¢æã«sphinxãååšããªãåºåãçºè¡ããã·ãŒã±ã³ã¹ãå ã«æ»ããç¹ã«ãã®ããè«çã¬ããªã«ãæ©èœããªããªããŸããïŒlondisteïŒã
ãããããã¹ãŠãããã»ã©æªãããã§ã¯ãªãããã¹ãŠåŸ©å ããããšãã§ããŸãã ç§ãã¡ã¯åº§ã£ãŠèããå埩æé ãèšç»ããŸããã ç¹ã«ãDWHãå床ã¢ã³ããŒãã§ããŸãã ãããŠçŽæ¥ããªããªã ç°¡åãª10åã®æéãããã°ãæ次ã¬ããŒãã§ã¯ããããã®å€±ãããã¢ã€ãã ã®å€æŽã¯åã«è¡šç€ºãããŸããã
xrpcã埩å ããæ¹æ³ã¯ïŒ ãžãªã³ãŒãã£ã³ã°ããŠã£ã¶ãŒãã§ã®éåæããã·ãŒãžã£ã®åŒã³åºããããã³ãŠãŒã¶ãŒã«ã«ãã®èšç®ã«äœ¿çšãããxrpcããããŸãã ãããã£ãŠãäœããzeokodiliããå Žåãã€ãŸã 圌ãã¯ãããäœæããå°å³äžã®åº§æšã«å€æãããã®åŸãã®äœæã¯æ¶ããŸããããžãªã³ãŒãã£ã³ã°ããããŸãŸã§ããåãäœæããžãªã³ãŒãã£ã³ã°ããªãã®ã¯2åç®ãªã®ã§ãäœã埩å ããå¿ èŠã¯ãããŸããã ããŒã«ã«ããã·ãŒãžã£ã³ãŒã«ã¯éåæã§ãã ããã¯ããŒã«ã«ã§ããã1ã€ã®ããŒã¿ããŒã¹äžãããã«ã¯1ã€ã®ããŒã¿ããŒã¹äžã«ãããããããŒã¿ããŒã¹ãåãæ¿ãããšãã«äžè²«æ§ããããŸãã ãŸããäœã埩å ããå¿ èŠã¯ãããŸããã ãŠãŒã¶ãŒã®ã«ã«ãã ãŠãŒã¶ãŒãäœãæªãããšãããåŸãäºæ ãçºçãããããã®æªãã¢ã€ãã ãçŽå€±ããå ŽåããŠãŒã¶ãŒã®ã«ã«ãã埩å ã§ããªããšå€æããŸããã 圌ã¯ãããã®æªãããšãããŸããã
Sphinxãµã€ãã 2ã€ã®ã¹ãã£ã³ã¯ã¹ããããŸã-1ã€ã¯ãµã€ãçšããã1ã€ã¯ããã¯ãªãã£ã¹çšã§ãã ãµã€ãã§ããSphinxã¯ã10åããšã«ã€ã³ããã¯ã¹å šäœãå®å šã«åæ§ç¯ããããã«å®è£ ãããŠããŸãã ãããã£ãŠãäºæ ãçºçããŠå埩ãã10ååŸã«ã€ã³ããã¯ã¹ãå®å šã«åæ§ç¯ããããã¹ã¿ãŒã«å¯Ÿå¿ããŸããã ããã¯ãªãã£ã¹ã«ã€ããŠããéèŠã§ã¯ãªããšå€æããŸããã埩æ§åŸã«å€æŽãããåºåã®äžéšãåããããšãã§ããããã«æã«äžåºŠããã¯ãªãã£ã¹ã¹ãã£ã³ã¯ã¹å šäœãå®å šã«åæ§ç¯ãããšããããã®ç·æ¥ã¢ã€ãã ã¯ãã¹ãŠåé€ãããŸãã
ã·ãŒã±ã³ã¹ãåŸæ¹ã«ãžã£ã³ãããªãããã«åŸ©å ããæ¹æ³ã¯ïŒ item_idãuser_idãæ¯æãäž»ããŒãªã©ãç§ãã¡ã«ãšã£ãŠéèŠãªã·ãŒã±ã³ã¹ãéžæããŸããããããŠãäºæ ã®åŸããããã10äžååã«ã¹ã¯ããŒã«ããŸããïŒååã§ãããšå€æããŸããïŒã
ã·ã¹ãã ã䜿çšããŠè«çè€è£œã埩å ããŸããããã¯ãè«çã¬ããªã«ã®UNDOãäœæããlondisteã®ãããã§ãã
ããããå ã«æ»ã-ãããã¯3ã€ã®ããŒã ã§ãã ã³ãã³ãèªäœãšãè«çã¬ããªã«çšã®2ã€ã®å ã«æ»ãè¿œå /åé€ã³ãã³ãã ãŸããlondisteã§ãªãã¬ã€ãããã¹ã¿ãŒããPostgresã»ãã·ã§ã³å€æ°ã«TICK_IDãæž¡ãããã«ãã©ã°ãè¿œå ããŸããã
ããã¯ãUndoã®å®è£ ã§çŽæ¥å¿ èŠã§ãã å®è£ ãããŠããŸã-ãã¹ãŠã®ãµãã¹ã¯ã©ã€ããŒããŒãã«ã§ããªã¬ãŒãããã ãã§ãã ããªã¬ãŒã¯ãã©ã®æäœãçŽæ¥çºçããããå±¥æŽãã¬ãŒãã«æžã蟌ã¿ãŸãã ã¿ãŒã²ããè¡šã ããã¯tick_idããã¹ã¿ãŒã«æž¡ãããã®ãšã³ããªãŒã§èšæ¶ããŠããŸãã ãããã£ãŠãäºæ ãçºçãããšããè«çã¬ããªã«ã¯å°æ¥ã®ãã®ã§ãããå°éäžå¯èœãªæªæ¥ããã®å€æŽã埩å ããããã«ã¯ãªãŒã³ã¢ããããå¿ èŠããããŸãã ããã¯ãéã¯ãšãªãå®è¡ããããšã«ãã£ãŠè¡ãããŸãã æ¿å ¥ã®å Žåã¯åé€ãè¡ããæŽæ°ã®å Žåã¯ä»¥åã®å€ã§æŽæ°ããåé€ã®å Žåã¯æ¿å ¥ããŸãã
æã§ãã®ãã¹ãŠãè¡ãã®ã§ã¯ãªããã¹ã¯ãªããã§è¡ããŸãã ãã®ã¹ã¯ãªããã®ç¹åŸŽã¯äœã§ããïŒ ãããã3ã€ã®éåæã¹ã¿ã³ãã€ããããåãæ¿ããåã«ããã¹ã¿ãŒã«æãè¿ããã®ãèŠã€ããå¿ èŠããããŸãã 次ã«ããã®ã¹ã¿ã³ãã€ãéžæããã¢ãŒã«ã€ãããæ®ãã®WALãåçãããŸã§åŸ æ©ããå°æ¥ã®ãã¹ã¿ãŒçšã«éžæããŸãã 次ã«ãPostgres 9.2ã䜿çšããŸãã ãã®ããŒãžã§ã³ã®æ©èœã¯ãã¹ã¿ã³ãã€ãæ°ããããã¢ãŒã·ã§ã³ãšãã¹ã¿ãŒã«åãæ¿ããããã«ãåæ¢ããå¿ èŠãããããšã§ãã çè«çã«ã¯ã9.4ã§ã¯ããã¯ã§ããªããªããŸããã ãããã£ãŠãææ Œãã·ãŒã±ã³ã¹ã®åæ¹ãžã®ç§»åãUndoããã·ãŒãžã£ã®å®è¡ãã¹ã¿ã³ãã€ã®å®è¡ãè¡ããŸãã ãããŠèå³æ·±ãç¹ããããŸããã¹ã¿ã³ãã€ãæ°ãããã¹ã¿ãŒã«æ¥ç¶ãããŸã§åŸ ã€å¿ èŠããããŸãã ãããè¡ãã«ã¯ãæ°ãããã¹ã¿ãŒã®ã¿ã€ã ã©ã€ã³ãé©åãªã¹ã¿ã³ãã€ã«è¡šç€ºãããã®ãåŸ ã¡ãŸãã
ãããŠä»ãPostgresã«ã¯ãã®ãããªSQLé¢æ°ããªãããšãããããã¹ã¿ã³ãã€ã®ã¿ã€ã ã©ã€ã³ãç解ããããšã¯äžå¯èœã§ãã ãããããã®æ¹æ³ã§è§£æ±ºããŸããPostgresã¬ããªã±ãŒã·ã§ã³ãããã³ã«çµç±ã§ã¹ã¿ã³ãã€ã«æ¥ç¶ã§ããæåã®ã³ãã³ãã®åŸãã¹ã¿ã³ãã€ã¯èµ€ã§åŒ·èª¿è¡šç€ºãããã¿ã€ã ã©ã€ã³ãéç¥ããŸãã
ããã¯å埩ãŠã£ã¶ãŒãã®ã¹ã¯ãªããã§ãã
ããã«é²ã¿ãŸãããã äžéšã®å€éšã·ã¹ãã ããã©ãã©ã«ãªã£ãå Žåãã©ãããã°çŽæ¥å埩ã§ããŸããã ããšãã°ãã¹ã¿ã³ãã€ã ãªããªã å ã»ã©èšã£ãããã«ãã¹ã¿ã³ãã€ã3ã€ããããã®ãã¡ã®1ã€ãèœã¡ããæ®ãã®ã¹ã¿ã³ãã€ã«åãæ¿ããŸãã æåŸã®æ段ãšããŠããã¹ãŠã®ã¹ã¿ã³ãã€ã倱ã£ãŠãããã¹ã¿ãŒã«ãã©ãã£ãã¯ãåãæ¿ããããšãã§ããŸãã äžéšã®ãã©ãã£ãã¯ã¯ããã§å€±ãããŸãããååãšããŠããµã€ãã¯æ©èœããŸãã ãŸã ãã®ãããªããªãã¯ããããŸãã-æåã¯åžžã«ããã¯ã¢ããããæ°ããã¹ã¿ã³ãã€ãäœæãããã®åŸSSD'shnyãµãŒããŒãååŸããŸããããããã¯ã¢ããããã¹ã¿ã³ãã€ã埩å ãç¶ããŸããã ãã®åŸãããã¯ã¢ããããååŸããå Žåããªã«ããªã«ã¯12æéããããã¯ãŒãã³ã°ã¹ã¿ã³ãã€ããpg_basebackupãååŸããã ãã§ããã°ãã¯ããã«çãæéããããããšãå€æããŸããã ã¹ã¿ã³ãã€ãè€æ°ããå Žåã¯ã確èªããŠã¿ãããšãã§ããŸãã
ã¹ãã£ã³ã¯ã¹ã®ãµã€ããå£ããå Žåã ãµã€ãã¹ãã£ã³ã¯ã¹ã¯ãã€ã³ããã¯ã¹å šäœãå®å šã«åæ§ç¯ããããã«äœæãããŠããããµã€ãã¹ãã£ã³ã¯ã¹ã¯ãã¹ãŠã¢ã¯ãã£ããªãµã€ãåºåã§ãã çŸåšããµã€ãäžã®ãã¹ãŠã®3,000äžãŸãã¯3,500äžã®åºåã¯ããã®ã·ã¹ãã ã«ãã£ãŠã€ã³ããã¯ã¹ä»ããããŠããŸãã ã€ã³ããã¯ã¹äœæã¯å¥ã®è«çã¬ããªã«ããè¡ãããŸããã€ã³ããã¯ã¹äœæã®ããã«ç¹å¥ã«æºåããããã¹ãŠãã¡ã¢ãªå ã«é 眮ãããããã«äœæãããŸããã€ã³ããã¯ã¹äœæã¯éåžžã«è¿ éã«è¡ãããããã10åããšã«å®å šã«ãŒãããã€ã³ããã¯ã¹äœæãè¡ãããšãã§ããŸãã è«çã¬ããªã«ãããã€ããããŸãã ãããŠãã¬ããªã«ã倱ã£ãå Žåããã®ãªã¶ãŒãã«åãæ¿ããŸãã ãããŠãã¹ãã£ã³ã¯ã¹ã«äœããèµ·ãã£ãå Žåã10ååŸã«å®å šã«ã€ã³ããã¯ã¹ãåäœæããããã¹ãŠãæ£åžžã«ãªããŸãã
ãšã¯ã¹ããŒããDWHã«åŸ©å ããã«ã¯ã©ãããã°ããã§ããïŒ äœãããšã¯ã¹ããŒãããDWHã§äºæ ãçºçããææ°ã®ããŒã¿ã®äžéšã倱ããããšããŸãã å¥ã®è«çã¬ããªã«ãä»ããŠDWHããšã¯ã¹ããŒãããéå»4æ¥éã¯ãã®ã¬ããªã«ã«ä¿åãããŸãã æã§ãšã¯ã¹ããŒãã¹ã¯ãªãããååŒã³åºããããã®ããŒã¿ããã¹ãŠã¢ããããŒãã§ããŸãã ããã«ãå幎ã§å¥ã®ã¢ãŒã«ã€ãããããŸãã ãŸãã¯ãæåŸã®æ段ãšããŠã ããã€ãã®ã¹ã¿ã³ãã€ãããããã®ãã¡ã®1ã€ãååŸããŠãäžè¬ã«ãDWHã®ãã¹ã¿ãŒããã®ãã¹ãŠã®ããŒã¿ãäžæåæ¢ããã³åã¢ããããŒãã§ããŸãã
Xrpcã¯pgqïŒãããã¯Skytoolsã§ãïŒã®äžã«å®è£ ãããŠãããããã®ãããã§ãã®ãããªããªãããŒãªããšãã§ããŸãã å®éãPgqã¯ããŒã¿ããŒã¹å ã®åãªãããŒãã«ã§ãããã€ãã³ãã¯ããã«æ ŒçŽãããŸãã åçã®ããã«èŠããŸãã ã€ãã³ãæéãšãã©ã³ã¶ã¯ã·ã§ã³IDããããŸãã xrpcã¯ã©ã€ã¢ã³ãã埩å ãããããã®ãã¥ãŒãååŸããŠæ»ããã¬ã·ãŒããŒã«ãªãã€ãã³ããå床åçã§ããŸãã
Xdb-ããã€ãã®ããŒã¿ããŒã¹ã®ãªããžããªããããŸãã 16å°ã®åºå°ã8å°ã®è»ã«ãããŸãã ãã®ã¹ãã¬ãŒãžã¯æ¬¡ã®ããã«äºçŽãããŠããŸã-Postgresãã€ããªã¬ããªã±ãŒã·ã§ã³ã¯ããããã·ã³ããå¥ã®ãã·ã³ã«åçŽã«èšå®ãããŸãã ã€ãŸã æåã®ãã·ã³ã¯ã2çªç®ã«ã¹ã¿ã³ãã€ã3çªç®ã«2çªç®ã1çªç®ã«8çªç®ã«äºçŽãããŠããŸãã ããã«ãWALããã¬ã€ããå Žåã4æ¥éã®é 延ããããŸããã€ãŸããå®éã«ã¯ããããã®ããŒãã®ããããã4æ¥éã§ããã¯ã¢ããããŸãã
次ã«ãã¬ããªã«ã®è©³çŽ°ã説æããŸãã Postgresã®æ©èœã«åºã¥ããŠè«çã¬ããªã«ãäœæããŸãããããã¯ãã¹ã¿ãŒã®ãã¥ãŒã§ãããç®çã®ããŒãã«ã®é 延ããªã¬ãŒã§ãã ãããã®ããªã¬ãŒã¯ãå¥ã®ã©ãã«ã«æžã蟌ãç¹å¥ãªæ©èœãããªã¬ãŒããŸãã å®äœåãããè¡šçŸãšèŠãªãããšãã§ããŸãã ããã«ããã®ãã¬ãŒãã¯ãã³ãã£ã¹ããè«ççãªã«ãã«è€è£œãããããšãæå³ããŸãã
çŽæ¥ãã©ãããããããã®ããã«èŠããŸãããããã«ã€ããŠã¯è©³ãã説æããŸããã
è«çã¬ããªã«ãµãŒããŒèªäœããªããããäžè¬çã«å¿ èŠãªã®ã§ããïŒ ããã¯å¥ã®ãµãŒããŒã§ãã ããã¯ãã¹ãŠãããã«ã¡ã¢ãªã«ãããšããäºå®ã«ãã£ãŠç¹åŸŽä»ããããŸããããªãã¡ shared_buffersã¯ããã®ãã¬ãŒãå šäœãšãã®ã€ã³ããã¯ã¹ãå®å šã«é©åãããµã€ãºã§ãã ããã«ãããããšãã°ã1ã€ã®ã«ãã1ç§éã«7000ãã©ã³ã¶ã¯ã·ã§ã³ãåŠçãã1000åã®ã€ãã³ãããã¹ã¿ãŒãããã¹ã¿ãŒã«ãã¥ãŒã€ã³ã°ããããªã©ããã®ãããªè«çã¬ããªã«ã®å€§ããªè² è·ãåŠçã§ããŸãã ãªããªã ããã¯londisteãšpgqã«ãã£ãŠå®è£ ãããè«çã¬ããªã«ã§ãããã®è«çã¬ããªã«ã§æ¢ã«å€±ãããŠãããã©ã³ã¶ã¯ã·ã§ã³ã远跡ãããšãã䟿å©ãªããšããããŸãã ãã®ããšã«åºã¥ããŠãå ã«æ»ããªã©ã®æäœãå®è¡ã§ããŸãã
ãã§ã«2ã€ã®ã¬ããªã«ããããšèšããŸããããåãæ¿ããã ãã§å埩ã§ããŸãã 1ã€ã®ã¬ããªã«ã倱ãããå Žåã2çªç®ã®ã¬ããªã«ã«åãæ¿ããŸãã ããã¯ãpgqãè€æ°ã®ã³ã³ã·ã¥ãŒããŒã1ã€ã®ãã¥ãŒã«ãµãã¹ã¯ã©ã€ãããããšãèš±å¯ããŠããããã§ãã ã«ããèœã¡ãåŸããã®ã³ããŒã埩å ããå¿ èŠããããŸãã ãããåã«londisteã§è¡ãå Žåãã¬ããªã«ãµã€ãã§ã¯4æéãã¹ãã£ã³ã¯ã¹ã§ã¯8æéããããŸãã ã¹ãã£ã³ã¯ã¹ãžã®äŸ¿å©ãªã€ã³ããã¯ã¹äœæã®ããã«ããŒã¿ãã«ããããããªã¬ãŒãããã§åŒã³åºãããããã¯ãã¹ãŠéåžžã«é·ãã§ãã ããããèœã¡ãã«ããäœæããå¥ã®æ¹æ³ãããããšãå€æããŸãã-pg_dumpãåäœãããããšãã§ããŸãã
ããããåã«pg_dumpã§londisteãå®è¡ãããšãlondisteã¯å€±ããããã©ã³ã¶ã¯ã·ã§ã³ã®çŸåšã®äœçœ®ã®ãã¹ã¿ãŒãšè«çã¬ããªã«ã®äž¡æ¹ãç£èŠãããããåäœããŸããã ãããã£ãŠããŸã è¿œå ã®æé ãå®è¡ããå¿ èŠããããŸãã tick_idãŠã£ã¶ãŒãã§ãã³ãã埩å ããåŸã埩å ãããã«ãã®tick_idãšäžèŽããããã«ä¿®æ£ããå¿ èŠããããŸãã ãã®å Žåãpg_dumpãä»ããŠã³ããŒããŸããããã«ã¯15åããããããŸããã
ã¢ã«ãŽãªãºã èªäœã¯æ¬¡ã®ããã«ãªããŸãã
ããã¯ã¢ããã¯ã¯ã©ãã·ã¥ããä¿è·ããããã«èšèšãããŠããŸãããããã¯ã¢ããèªäœã§çŽæ¥ã¯ã©ãã·ã¥ããããšããããŸãã ããšãã°ãPostgresã§ã¯ãWALã¢ãŒã«ã€ãã³ãã³ãã¯ãWALãã¢ãŒã«ã€ãã«æžã蟌ãŸãããšãã«fsynkãè¡ãã¹ãããšã瀺ããŠããŸããã ããããããã¯éèŠãªããšã§ãããã¢ãŒã«ã€ãã®ç·æ¥åèµ·åãªã©ãã身ãå®ãããšãã§ããŸãã ããã«ãããã¯ã¢ããã¯å€éšã¯ã©ãŠãã«ã³ããŒããããšããäºå®ã«ãã£ãŠã確ä¿ãããŠããŸãã ããããèšç»ã§ã¯ã2ã€ã®ã¢ã¯ãã£ããªã¢ãŒã«ã€ããµãŒããŒãäœæããŠãarchive_commandãäž¡æ¹ã®WALã«æžã蟌ãããã«ããŸãã ãŸããæåã¯WALã¢ãŒã«ã€ããµãŒããŒèªäœã§çŽæ¥åä¿¡ããããã«pg_receivexlogã§å®éšãããšèšãããšãã§ããŸããã9.2ã§ã¯äœ¿çšããããšã¯ã»ãšãã©äžå¯èœã§ããããšãå€æããŸãããããã¯fsynkã§ã¯ãªãããŠã£ã¶ãŒãããæ¢ã«åä¿¡ããWALã远跡ããªãããã§ããã§ãã¯ãã€ã³ãã§ã¯ãªãŒãã³ã°ã§ããŸãã Postgresã¯ä»ãã£ãŠããŸãã ãããŠãããããå°æ¥çã«ã¯archive_commandã䜿çšãããçµå±pg_receivexlogã䜿çšããŸãã
èªå® ã§ã¯ã¹ããªãŒãã³ã°ã䜿çšããŸããã ã€ãŸã ç§ã話ããŠããããšã¯ããã¹ãŠWALã¢ãŒã«ã€ãã®ã¿ã«åºã¥ããŠããŸãã ããã¯ãã¹ããªãŒãã³ã°æã«ã¢ãŒã«ã€ããæäŸããã®ãé£ãããšããäºå®ã®ããã«è¡ãããŸããã ããšãã°ãã¢ãŒã«ã€ããã¹ã¿ã³ãã€ããååŸããå Žåãããã¯ã¢ããã¯å®äºããŸããããŠã£ã¶ãŒãã¯ãŸã ãããã¯ã¢ããã®åŸ©å ã«å¿ èŠãªãããã®ãã¹ãŠã®WALãã¢ãŒã«ã€ãã§ããŸããã ãããŠãå£ããããã¯ã¢ãããååŸããŸãã ããã¯ãããšãã°ãããã¯ã¢ãããååŸããã¹ã¿ã³ãã€ããç§ãã¡ã®ããã«12æéé ããŠããå Žåã«åé¿ã§ããŸãã ãŸãã¯ãPostgres 9.5ã§ã¯ããã®ãããªåé¡ãçºçããªãããã«archive_mode = alwaysãèšå®ããŸããã ã¹ã¿ã³ãã€ããéãã«ããã¯ã¢ãããåããã¢ãŒã«ã€ãã®WALãã¹ã¿ã³ãã€ããçŽæ¥åä¿¡ããããšãå¯èœã§ãã
ããã¯ã¢ããããã ãã§ã¯ååã§ã¯ãããŸããããã¹ãŠãæ£ããããã¯ã¢ãããããŠãããã©ããã確èªããå¿ èŠããããŸãã ãã¹ããµãŒããŒã§ãããè¡ãããã®ããã«ç¹å¥ãªããã¯ã¢ããæ€èšŒã¹ã¯ãªãããäœæããŸããã ãµãŒããŒã埩å ãããµãŒããŒãã°ã§ãšã©ãŒã¡ãã»ãŒãžãå®è¡ããåŸã«ãã§ãã¯ããå 容ã«åºã¥ããŠããŸãã ãŸããã¯ã©ã¹ã¿ãŒã«åŸ©å ãããåããŒã¿ããŒã¹ã«å¯ŸããŠãcheck_backupãšããç¹å¥ãªãã§ãã¯é¢æ°ãåŒã³åºãããè¿œå ã®ãã§ãã¯ãå®è¡ãããŸãã ç¹ã«ãæåŸã®ãã©ã³ã¶ã¯ã·ã§ã³ã®æ¥ä»ãæåŸã®ã¢ããŠã³ã¹ã®æ¥ä»ãš1å以å ã§ç°ãªãå¿ èŠããããšããæ€èšŒã ã€ãŸã ããŒã«ããªãå Žåãããã¯ã¢ããã¯æ£ãã埩å ãããŠãããšèããããŸãã
ã¹ã©ã€ãã§ã¯ãããã¯ã¢ããããã§ãã¯ãããšãã«ãã°ã§åæããç¹å®ã®ãšã©ãŒã確èªã§ããŸãã
以åã¯ãããŒã¿ããŒã¹å šäœã®ããã¥ãŒã ãå®è¡ããŠããŒãã«ãèªã¿åãããšã§ããã¯ã¢ããããã§ãã¯ããŸãããã埩å ãããããã¯ã¢ããã®ã¬ããŒããã«ãŠã³ãããã¬ããŒããæ£ããèšç®ãããå Žåãç©Žããªããå¥åŠãªå€ããããããã¯ã¢ãããæ£ããè¡ããããããæåŠããããšã«ããŸããã
ç§ã¯éåæè€è£œã«ã€ããŠè©±ããŸããããæã åæãåããããšæããŸãã Avitoã¯å€ãã®ãµãŒãã¹ã§æ§æãããŠããããããã®ãµãŒãã¹ã®1ã€ã¯æ¯æããµãŒãã¹ã§ãã ãããŠããããéžæãããŠãããšããäºå®ã®ããã«ãåæã¬ããªã±ãŒã·ã§ã³ãè¡ãããšãã§ããŸãã å¥ã®ããŒã¹ã§åäœããŸãã ãã®ãããªå€§ããªè² è·ã¯ãªãããããã¯ãŒã¯ã®æšæºçãªé 延ã«ãããããã§åæã¬ããªã±ãŒã·ã§ã³ãæå¹ã«ã§ããŸãã
æåŸã«äœãèšããŸããïŒ ããã§ããã¬ããªã±ãŒã·ã§ã³ã¯åæçã§ãããšããäºå®ã«ããããããããã®ã¢ãŒãã§äœæ¥ããã³å埩ã§ããŸããæ¥ç¶ãããã·ã¹ãã ãèŠããšããããã埩å ããæ¹æ³ãèŠã€ããããšãã§ããŸãã ããã¯ã¢ããããã¹ãããããšãéèŠã§ãã
å¥ã®ãã®ãããªçºèšã å埩ã¹ã¯ãªããããããŸããæåŸã«DNSãå€æŽããå¿ èŠããããŸãã ãã¹ã¿ãŒãŸãã¯ã¹ã¬ãŒãããããŸã-ããã¯DNSã§ä¿®æ£ãããŠããŸãã DNSãèªåçã«åãæ¿ããããã«ãZooKeeperãªã©ã®äœããã®ã·ã¹ãã ã®äœ¿çšãæ€èšããŠããŸãã ãã®ãããªèšç»ã
ãã®ã¬ããŒãã¯ãé«è² è·ã·ã¹ãã HighLoad ++ã®éçºè ã®äŒè°ã§è¡ãããæé«ã®ã¹ããŒãã®1ã€ã®è»¢åã§ã ã çŸåšã2016幎ã®äŒè°ãç©æ¥µçã«æºåããŠããŸããä»å¹Žã¯11æ7æ¥ãš8æ¥ã«Skolkovoã§HighLoad ++ãéå¬ãããŸãã
AvitoããŒã ã¯åŸæ¥ãéåžžã«åŒ·åãªããã©ãŒãã³ã¹ãæäŸããŠããŸããããšãã°ãä»å¹Žã¯æ¬¡ã®ããã«ãªããŸãã
- ããŒã¿ã»ã³ã¿ãŒéã®ç§»è¡ã®çµéš / Mikhail Tyurin
- ã¡ã€ã³æ€çŽ¢ã®Sphinx 3.0ããã³RTã€ã³ããã¯ã¹Avito / Andrey SmirnovãVyacheslav Kryukov;
ãŸãããããã®è³æã®äžéšã¯ãé«è² è·ã·ã¹ãã HighLoadã®éçºã«é¢ãããªã³ã©ã€ã³ãã¬ãŒãã³ã°ã³ãŒã¹ã§äœ¿çšãããŸãã¬ã€ãã¯ãç¹å¥ã«éžæãããæåãèšäºãè³æããããªã®ãã§ãŒã³ã§ãã ç§ãã¡ã®æç§æžã«ã¯ãã§ã«30以äžã®ãŠããŒã¯ãªè³æããããŸãã æ¥ç¶ããŠãã ããïŒ