
Oleg BartunovïŒ@zenïŒãAlexander KorotkovïŒ@smagenïŒãFedor Sigaev
Ilya KosmodemyanskyïŒãããããPostgreSQLã§æãçããŠãããããã¯ããããŸãã ç§ãã¡ãã³ã³ãµã«ãã£ã³ã°ãè¡ã£ãŠããäœå¹Žãã®éã人ã ãæåã«å°ããã®ã¯ãããã«ããã¹ã¿ãŒã¬ããªã±ãŒã·ã§ã³ãäœæããæ¹æ³ãéæ³ãå®çŸããæ¹æ³ãã§ãã å€ãã®ããã®ãŠã£ã¶ãŒãããPostgreSQLã§ã©ã®ããã«ããŸãå®è£ ãããŠãããã«ã€ããŠè©±ããŸããPostgresProfessionalã®æ åœè ã¯ããã®ã¬ããŒãã§ã¯ã©ã¹ã¿ãŒã«é¢ãããã¹ãŠã説æããŸãã 察å¿ããåå-ãäœè³ã-ã¯å£®å€§ã§èšå¿µç¢çãªãã®ã§ãã ããã§ãPostgres Professionalã®ã¡ã³ããŒããµã¬ãéå§ããé¢çœããŠè¯ããã®ã«ãªããŸãã
ãªã¬ã°ã»ãã«ãã¥ãããã¢ã¬ã¯ãµã³ããŒã»ã³ããã³ãããã§ãŒãã«ã»ã·ã¬ãšãã
Oleg BartunovïŒ Ilyaæ°ã¯ãPostgresãã¯ã©ã¹ã¿ãŒã§ã©ã®ããã«ããŸãæ©èœããŠãããã«ã€ããŠè©±ããŸãããå®éã«ã¯ããã®ãããã¯ã§Postgresã³ãã¥ããã£ã§äœãèµ·ãã£ãŠãããã«ã€ããŠè©±ããŸãã å®éããã®ãããã¯ã¯ãããŸãã§ãããããã説æããããšããŸããããªãããã»ã©é£ãããªãã®ããã©ã®ãããªèŠéããåŸ ã¡åããŠããŸããã
æåã«ãèªå·±çŽ¹ä»ãããããšæããŸã-ç§ãã¡3人ã¯ããã·ã¢ã®Postgresã³ãã¥ããã£ã®äž»èŠãªéçºè ã§ãã

Postgresã§è¡ã£ãããšã¯ãã¹ãŠããã®å°ããªãã¬ãŒãïŒã¹ã©ã€ãäžïŒã«ãªã¹ãããããšããŸãããããããç§ãã¡ã®ä»äºãç¥ã£ãŠããã§ãããã
æåã«å°ããªã¹ã±ãããäœæããåæ£ããããã®ãæ±ãã®ãã©ãã»ã©é£ããããã©ãã»ã©èŠçãã瀺ãããšã«ããŸããã æåã®ã¹ã©ã€ãã¯ãDistributed MisfortuneãšåŒã°ããŸãã

Fedor SigaevïŒç¶ããŸãã
ååãšããŠã人ã ãã¯ã©ã¹ã¿ãŒã«ã€ããŠè©±ããšãããããã¯ãããäœã§ããããããç解ããŠãã人ã ã§ããããããã詳现ã«æ·±ãå ¥ããŸãïŒãã©ã®ããã«ãããšãããå®è£ ãããããããåäžã®ã³ããããšããŠããããŠããŒãéã®çžäºäœçšãããæ¹æ³ã ããŸãã¯ã圌ããæ¥ãŠãã¯ã©ã¹ã¿ãŒããè€æ°ã®ææŒãè»ãäžäžã«é 眮ãããã¹ãŠãæ©èœããç§ãã¡ã¯å¹žãã«ãªãããšèšã人ã ã§ããïŒ
ããã¯ããã»ã©åçŽã§ã¯ãªããã©ã®ã¯ã©ã¹ã¿ãŒã«ãããã€ãã®ãœãªã¥ãŒã·ã§ã³ãå¿ èŠã§ããããšãã¹ã±ããã§ç€ºãããã£ãã®ã§ãã æåã«ãIvan PanchenkoãšKolya Shaplovã«é瀟ããé¡ãããŸãããããããµãŒããŒãšããŠæå®ããŸãã ãµãŒããŒAãšãµãŒããŒBãæ£çŽãªãµãŒããŒãã€ãŸã æ£çŽãªããŒã¿ããŒã¹ã ãµãŒã·ã£ã«ã¯ã©ã€ã¢ã³ãã«ãªããããé¡ãããŸãã ã¯ã©ã€ã¢ã³ãã¯ã誰ãéè¡ã«æ¥ãŠãéãåãããšããæå³ã§ã¯ãªããéè¡ã®å€éšã®ã¯ã©ã€ã¢ã³ãã«ãµãŒãã¹ãæäŸããäœããã®çš®é¡ã®ã¢ããªã±ãŒã·ã§ã³ã§ãããšããæå³ã§ãã ãããã®ã客æ§ãçŽæ¥å¿ã«çããããšã¯ãããŸããã å®éãã¯ã©ã€ã¢ã³ãã¯ã¢ããªã±ãŒã·ã§ã³ã§ãã
ããã§ãã¢ããªã±ãŒã·ã§ã³ã¯ãã©ã³ã¶ã¯ã·ã§ã³ãéå§ããbeginã³ãã³ãã§ãããé åžããŸãã ãã®åŸã仲éã®ã¯ã©ã€ã¢ã³ããããŒã¿ããŒã¹ãé¢ããæ¡æããæœè±¡çãªæ¹æ³ã§äœããããå¿ èŠããããšèšããŸãããããã§äœããå€æŽããããã«æ¿å ¥ããããã§åé€ããŸããäœã§ãæ§ããŸãããã
ããŠã誰ããèšãããããã«ã2ãã§ãŒãºã³ãããã¯åé¡ã解決ããŸãã ã¯ã©ã€ã¢ã³ãã¯ãæºåã³ãã³ããæäŸããŸãã ããŒã¿ããŒã¹ã¯å®éã«äœãããŸããïŒ ãã¹ãŠã®ããªã¬ãŒãå®è¡ããå¶çŽãªã©ããã§ãã¯ããŸãã ãã®åŸããããã®ã³ãã³ããæåããå ŽåãããŒã¿ããŒã¹ã¯ã³ããããåžžã«æåããããšãçŽæããŸãã äœãèµ·ãã£ãŠããé»åã倱ãããŠãã
ããã§ãã¯ã©ã€ã¢ã³ãã¯1ã€ã®ã³ããããçºè¡ãã1ã€ã®ããŒã¿ããŒã¹ã«ç§»åããŸãã ããã£ã¯ã³ãããããŸããã ãããã2çªç®ã®ãµãŒã·ã£ãè¡ããšãã©ã€ãããªãã«ãªããå šå¡ã3ã€ã«ãªããŸãã èœã¡ãã 圌ãã¯æãããã€ããã 圌ãã¯äžæããŸãããã³ãããã¯æ¥ãŸããã§ããã ã¯ã©ã€ã¢ã³ãã¯äžè¬çã«å€¢ã§ã粟ç¥ã§ããããŸããããã¹ãŠãããŸããã£ãããã§ãã Vania Panchenkoã«ã¡ãªãã§åä»ããããããŒã¿ããŒã¹ã¯ã圌女ã®WALãã°ãèªã¿ã圌女ãã³ãããããããšã«ã€ããŠèªã¿ã圌女ã¯å¹žããªç¶æ ã«ãããŸã-ç§ã¯ãã¹ãŠãããŸããã ãµãŒããŒBã®Kolyaã«ãã£ãŠæ瀺ãããããŒã¿ããŒã¹ã¯ãWALãã°ãèªã¿åãããã³ãããã®æºåãã§ããŠããããšæžãããŠããå 容ãèŠã€ããŠããã³ãããããããŸããã§ããããšãã質åã§ãã³ã°ããŸãã 圌女ã¯äœããã¹ãã§ããïŒ ãããŠåœŒå¥³ã¯ã©ãã«ãè¡ãããšãã§ããŸããã ã¯ã©ã€ã¢ã³ããããã«ã€ããŠäœãç¥ããŸãããVanya-圌ã¯åœŒèªèº«ã®ã³ããããæã£ãŠããŸãã 質åïŒãã®ç¶æ³ããæãåºãã«ã¯ã©ãããã°ããã§ããïŒ

1ã€ã®ããŒã¿ããŒã¹ããã¹ãŠãæ£åžžã«ã³ããããã2çªç®ã®ããŒã¿ããŒã¹ãåé¡ã§ãã³ã°ããŸãã å€ãã®åºå£ã¯ãããŸããã DBAãŸãã¯ä»ã®èª°ããããšãã°ã·ã¹ãã 管çè ã«é»è©±ããŸãã 圌ã¯ãã°ããäœãèµ·ãã£ãã®ããããããŒã¿ããŒã¹ã§äœãã³ããããããã®ããç解ããããšããŸãããå¥ã®ããŒã¿ããŒã¹ã§ã¯ããã§ã¯ãããŸããã çŸæç¹ã§ã¯ããéã倱ãããšãæããŠããªãå Žåãã¯ã©ã¹ã¿ãŒã¯äžè²«æ§ã®ãªãããŒã¿ã§åäœãããããµãŒãã¹ãå®å šã«åæ¢ããŸããããšãã°ãæè¡çãªäœæ¥ãè¡ã£ãŠããå Žåã誰ã«äœãè² ã£ãŠããã®ããããããŸãã
ãŸãã¯ã仲è£äººã玹ä»ããŸãã ã¯ã©ã€ã¢ã³ãã¯ãããŒã¿ããŒã¹ã§ã¯ãªãã¢ãŒãã¿ãŒã«ç§»åããŸããã¿ã¹ã¯ãåæ£ãããã°ã«èªåèªèº«ã«ãã³ãããã®æºåãã§ããŠãããç¶æ ããŸãã¯ãå®äºãããããšãæžã蟌ãã®ã¯ã¢ãŒãã¿ãŒã§ãã ãã®åŸãã³ããããé åžããæåã®ããŒã¹ãã³ããããæžã蟌ãã ãã®ããã°ã«æžã蟌ã¿ã2çªç®ãã³ããããæžã蟌ã¿ãŸãã 次ã«ãç§ãã¡ã¯ç®ãèŠãŸãããã°ãèªãã§äžå¹žãªã³ãªã€ã¯èšãïŒãããªããèŠã€ãããã®ãã³ããããããã
ããã§ã®åé¡ã¯ããã®ã¬ããªãŒããŒãããæžãããšãéåžžã«é£ããã¿ã¹ã¯ã ãšããããšã§ãã ããã§ããããŒã¿ããŒã¹ãžã®ã³ããããèšã£ãç¬éã¯ãããŸããããã°ã«èªåã§æžã蟌ãããšãã§ããŸããã§ããã ãããåé¡ã®äžã€ã§ãã ä¿¡é Œæ§ãé«ãããããŸãã¯ä¿¡é Œã§ããããã«æãããã¯ã©ã¹ã¿ãŒãœãªã¥ãŒã·ã§ã³ãçŽé¢ããå€ãã®åé¡ã®1ã€ã§ãã
次ã®ã·ãŒã³ã§ã¯ã2ã€ã®å£åº§ãæã€éè¡ãæ³åããŠãã ãããåå£åº§ã«1,000æã®ã¯ã¬ãžããã«ãŒãããããŸãã Vanyaã«ã¯1ã€ã®ã¢ã«ãŠã³ãããããKolyaã«ã¯1ã€ã®ã¢ã«ãŠã³ãããããŸãã ã¯ã©ã€ã¢ã³ã1ïŒãµãŒã·ã£ïŒãè«æ±é¡ãã€ã³ã¿ãã¥ãŒããŸãã 圌ã¯äœãèŠãŠããŸããïŒ åœŒã¯åèš1000æã®ã¯ã¬ãžããã«ãŒãã1000æã®ã¯ã¬ãžããã«ãŒãã2000æã®ã¯ã¬ãžããã«ãŒããèŠãŠããŸãã ãã®åŸããµãŒã·ã£ã¯ãã©ã³ã¶ã¯ã·ã§ã³ãéå§ããŸã-圌ã¯1ã€ã®ããŒã¹ã«2ã€ã®ã+500ã¯ã¬ãžããã«ãŒãããã-500ã¯ã¬ãžããã«ãŒãããäžããŸãã ãããŠã圌ã¯å°ããŸãïŒãããªãã¯å šéšã§äœãæã£ãŠããŸããïŒãã ã€ãŸããVanyaãã1500æãKolyaãã500æã®ã¯ã¬ãžããã«ãŒããåŒãåºããããšããçµæãåºãŠããŸãã500æãããŸãããã¹ãŠãé 調ã§ãã ã¯ã©ã€ã¢ã³ã1ã«ã¯åã³2000ã衚瀺ãããŸãã
ãã®åŸããµãŒã·ã£ã¯ãã®ããžãã¹ãã³ããããå§ããŸãã 圌ã¯Kolyaãšã®ã³ããããéå§ããŸãã ãã®æç¹ã§ãã¯ã©ã€ã¢ã³ãNo. 2ãç®ãèŠãŸãïŒèŽè¡ããã®å°å¥³ïŒããããããããªããã©ãã ãã®ãéãæã£ãŠããããèŠããŠãã ããããšãã質åãæãã€ããŸãã Vanyaã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãŸã ã³ããããããŠããŸããããæåã®ã¯ã©ã€ã¢ã³ãã¯äœãèŠãŸããïŒ åœŒã¯1000ãèŠãŠããŸããããããã³ãªã€ã¯ãã§ã«ã³ãããããŠããŸã-圌ã¯ãã§ã«500ãæã£ãŠããŸããäžå¹žãª2çªç®ã®ã¯ã©ã€ã¢ã³ãã¯çµæãšããŠäœãèŠãŸããïŒ ãã®ãéã¯ã©ããã«ãªããªã£ãŠããŸãã 圌ã¯åèš1,500人ãèŠãŠããŸãïŒ
ãããã¯äžæŽåã®åé¡ã§ãã2ã€ã®ç°ãªãããŒã¿ããŒã¹ã«åæã«ã³ãããããããšã¯ã§ããŸããã ã€ãŸã äœãšãããŠãããšæŠãå¿ èŠããããŸãã Lokiã¯ãããŒã¿ããŒã¹ã®å€éšã§å ¬éããŸãã¯ããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ãæåŠããŸãã ããã§ãçŽé¢ããŠãã段éçãªäžå¹žãããªããééãããããããªãåé¡ã
Oleg BartunovïŒãã®èŠè§£ããã®çµè«ã¯ã2ãã§ãŒãºã³ãããã§ã¯å šäœçãªèªã¿åããã§ããªããšããããšã§ãã èªæžã§ããå šäœçã§ã¯ãããŸããã
Fedor SigaevïŒããã§ã¯ã2ãã§ãŒãºã³ããããå®éã«åŒãä»ããããšããããŸããã§ããã 2ãã§ãŒãºã³ãããã¯ç¶æ³ãè€éã«ããŸãããå®éã«ã¯ã1ã€ã®ããŒã¹ããã§ã«ã³ããããåãå ¥ãããã1ã€ã®ããŒã¹ãåãå ¥ããŠããªããããŒã«ããæ®ããŸãã ãããã£ãŠã2ã€ã®ããŒã¹ã®ç¶æ ã«äžè²«æ§ããªããšãã¯ãåžžã«ãã®ç¬éããããŸãã
Oleg BartunovïŒãã¹ãŠãããã»ã©åçŽã§ã¯ãªãããšã瀺ããåŸãããã€ãã®æ¿æ²»ã²ãŒã ã«ç§»ããŸãã
ãªãæ¿æ²»ã²ãŒã ãªã®ãïŒ ããã¯æ¡ä»¶ä»ãã®ååã§ãã Postgresã¯ã³ãã¥ããã£ã«ãã£ãŠéçºãããŠãããã³ãã¥ããã£ã«ã¯äžçš®ã®æ°äž»äž»çŸ©ããããŸãã1ã€ã®ãœãªã¥ãŒã·ã§ã³ãå®çŸããã«ã¯ãããããçš®é¡ã®ãžã§ã¹ãã£ãŒãäŒè©±ãªã©ãå€æ°é©çšããå¿ èŠããããŸãã ããããã¹ãŠãæ¿æ²»ã²ãŒã ãšåŒã³ãŸãã
æè¿ãŸã§ãããã«ã€ããŠã¯ãŸã£ããèããŠããŸããã§ããã ãããŠãæåéãçŽ2ã3幎åããã®ãããªç¶æ³ã¯ãªãŒãã³ãœãŒã¹ã§çºçããŸããã ãªãŒãã³ãœãŒã¹ãæ¯é çãªãœãããŠã§ã¢éçºã¢ãã«ã«ãªãã€ã€ãããŸãã ãã®ã°ã©ãã§ã¯ãã°ããŒãã«ãªåŸåãèŠãããšãã§ããŸãïŒ

ãªãŒãã³ãœãŒã¹ããŒã¿ããŒã¹ãæé·ããŠãããå°æããŒã¿ããŒã¹ãæžå°ããŠããããšãããããŸãã
åãªããœãªã¥ãŒã·ã§ã³ã¢ãã«ã ããã§ã¯ãGartnerã®Magic Quadrantã瀺ããŠããŸããå·ŠåŽãæšå¹Žãå³åŽãä»å¹Žã§ãã

EnterpriseDBãšå¯å£«éã«çŽé¢ããPostgresã¯ããã§ã«ããŒã¿ããŒã¹ã®ãªãŒããŒã«ãªã£ãŠããããšãããããŸãã 2014幎ã«åããŠãªãŒãã³ãœãŒã¹ããŒã¿ããŒã¹ãããŒã¿ããŒã¹ãªãŒããŒã®ãªã¹ãã«è¿œå ãããããšã¯ãããªã泚ç®ã«å€ããã€ãã³ãã§ãã ã€ãŸã åžå Žã¯éç±ããŠããŸãã

2018幎ã«ã¯ãããŒã¿ããŒã¹ã®70ïŒ ããªãŒãã³ãœãŒã¹ã«ãªãããšãããããŸãã ãã®äºæž¬ã¯ãããªãã¯ãããä¿¡ããããšãã§ããŸãããä¿¡ããããšã¯ã§ããŸããããä»ã§ã¯äººã ã¯ãŸããŸãããŒã¿ããŒã¹ã䜿ãããã£ãŠããåŸåããããŸãã ãããŠããªãŒãã³ãœãŒã¹ããŒã¿ããŒã¹ã®ãªãŒããŒã¯Postgresã§ãã ãŸããMySQLããããŸãããããéåžžã«åªããããŒã¿ããŒã¹ã§ãããPostgresã¯æ¬æ ŒçãªããŒã¿ããŒã¹ã§ãããçŸåšéåžžã«åªããŠããŸãã ãããŠãããã¯ç§ãã¡ã®ã³ãã¥ããã£ã§æããããŸãããªããªããç§ãã¡ã蚪ãããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã質åãå§ããPostgresããããã€ãã®æ©èœãæ±ãå§ããããã§ãã

ãã®ã¹ã©ã€ããEnterpriseDBãã¬ãŒã³ããŒã·ã§ã³ããæç²ããŸãããããã¯Postgreséçºã®æ®µéã瀺ããŠããŸãã 圌ãã¯æ¬¡ã®ããã«è¿°ã¹ãŸããïŒä»ã¯ãšã³ã¿ãŒãã©ã€ãºã®æ®µéã§ãã ããã«æžãããŠããæ©èœãã€ãŸããšã³ã¿ãŒãã©ã€ãºãšåŒã°ããæ©èœã«æ³šæããŠãã ããã ãã¹ãŠã¯åé¡ãããŸãããããã¯ã©ã¹ã¿ããšããåèªã¯è¡šç€ºãããŸããã ã€ãŸã æ¬åœã«ããã§ãã ã³ãã¥ããã£ã§ã¯ãã¯ã©ã¹ã¿ãŒãœãªã¥ãŒã·ã§ã³ãå¿ èŠã§ãããšããæèŠã¯ãŸã ãããŸããã

TodoïŒç¹å¥ã«ã¹ã¯ãªãŒã³ã·ã§ãããäœæããŸããïŒãèŠããšãããã«ã¯ã©ã¹ã¿ãŒããããŸãããããã¯åãã¯ã©ã¹ã¿ãŒã§ã¯ãããŸããã ããã¯ã¯ã©ã¹ã¿ã³ãã³ãã§ãã ã€ãŸã Todoã§ãããæ°Žå¹³ã¯ã©ã¹ã¿ãŒãªã©ãè¡ãããã«å¿ èŠãªããšã«ã€ããŠã®èšèã¯ãããŸããã
ããã¯å¶ç¶ã§ã¯ãããŸããã§ããã äžæ¹ã§ã¯ãã³ãã¥ããã£ã¯ä¿å®çã§ãããä»æ¹ã§ã¯ãåžå Žã¯ãŸã ç§ãã¡ããµããŒãããŠããŸããã
çŸåšãç¹ã«ãã·ã¢ã§ã¯ãPostgresã¯éåžžã«å€§èŠæš¡ãªãããžã§ã¯ãã®åè£ãšèŠãªãããŠãããã¯ã©ã¹ã¿ãŒã®æŠå¿µã¯å¿ é ã«ãªã£ãŠããŸãã

Postgres forkããŒãžãã芧ãã ããã ãã©ãŒã¯ã®æ°ã確èªããŸãã ããã ãã§ã¯ãããŸããã
èµ€ãäžžã§ãã¯ã©ã¹ã¿ãŒããã£ãŒãã£ã§ãããã©ãŒã¯ãããŒã¯ããŸããã Postgresãã衚瀺ãããã»ãšãã©ãã¹ãŠã®ãã©ãŒã¯ã¯ãã¯ã©ã¹ã¿ãŒãæ¬ èœããŠããããã«ã®ã¿è¡šç€ºãããŠããããšãããããŸãã ãããŠæçµçã«ãã³ãã¥ããã£ã¯ã¯ã©ã¹ã¿ãŒãæ¬åœã«Todoã«ããã¹ãã ãšèãå§ããäœããããã¹ãã ãšèãå§ããŸããã

ããã¯åããŠã®ããšã§ã¯ãããŸããã å€ããŠãŒã¶ãŒã§ããPostgresã®å€ããŠãŒã¶ãŒã¯ãã¬ããªã±ãŒã·ã§ã³ã«ã€ããŠè©±ããããšãèŠããŠããŸãã ãã€ãŠPostgresã«ã¯ã¬ããªã±ãŒã·ã§ã³ããªããã«ãŒãã«ã§ã¯ã¬ããªã±ãŒã·ã§ã³ãäžèŠã§ãããšèšãããŠããŸãããã¬ããªã±ãŒã·ã§ã³ã¯ãµãŒãããŒãã£è£œåã§ãªããã°ãªããŸããã ãããŠãåã³ããŠãŒã¶ãŒã¯ãã³ãã¥ããã£ãçªç¶ã³ã¢ã«ããã¹ãã ãšæ°ã¥ããŸããã ãããŠãç§ãã¡ã¯ãããæã«å ¥ããä»ã§ã¯ã¬ããªã±ãŒã·ã§ã³ã¯èª°ãã䜿çšããè¯ãéåžžã®ããŒã«ã§ãã ãŸããWindowsã®ããŒãã«é¢ããã¹ããŒãªãŒããããŸãããã©ã®ãããã®é»åãå¿ èŠããã©ã®ãããã®é»åãå¿ èŠããWindowsã®ããŒããããã¯ãªãããŸããããæçµçã«ã¯ãããè¡ããŸããã
ãã§ãŒãã«ã»ã·ã¬ãšãïŒããããç§ãã¡ã¯ããã¯ãªãããŸããã
ãªã¬ã°ã»ãã«ãã¥ããïŒãã®çµæãä»ã§ã¯éåžžã«é©åœçãªç¶æ³ã«ãªããŸãããäžå±€éçŽãæãã§ããŸãããäžå±€éçŽã¯æ±ºå®ããŠããŸããã ããã«ãèå³æ·±ãç¶æ³-ç§ãã¡ã¯äŒç€Ÿãçµç¹ãã顧客ãšè©±ãããã¯ã©ã¹ã¿ãŒãäœãããšèšããŸãã 2ndQuadrantã¯åãããšãèšã£ãŠããŸãïŒãã¯ã©ã¹ã¿ãŒãäœæããŸããã EnterpriseDBã¯ããç§ãã¡ãã¯ã©ã¹ã¿ãŒãäœã£ãŠããŸãããšèšããŸãã ãããããã¹ãŠã®æ £ç¿ã¯ããããŒããããã«ã¯èå³ããªããããŒããããã³ãã¥ããã£ã«èå³ããããŸãããšèšããŸãã ãã®ã¯ã©ã¹ã¿ãŒãã³ãã¥ããã£ãŒã«å¿ èŠã§ãããã³ãã¥ããã£ãŒãæ©èœããå¿ èŠããããŸãã
ã¹ã©ã€ãäžã§ãç§ã¯æçã«æ±ºå®ãäžãããšãµãŒã·ã£ã¯èªãã
ã¢ã¬ã¯ãµã³ããŒã»ã³ããã³ãïŒ
- ããããå€ãã®äººãPostgres XC XLããããšèããŠããŸãã XL-Postgres XCã®ãã©ãŒã¯ã§ããã XCã¯X2ã«ç§»è¡ããŸãããããã¯ã·ã£ãŒãã£ã³ã°ãšã¬ããªã±ãŒããããããŒãã«ãå®è£ ããå¥åã®ãã©ãŒã¯ã§ãããGTM-Global Transaction ManagerãšåŒã°ããå¥åã®ãµãŒãã¹ãéããŠã°ããŒãã«ãªäžè²«æ§ãå®çŸããŸãã 2ndQuadrantãMTTãHuaweiã«ãã£ãŠéçºãããŠããŸãã ããã«ãHuaweiã«ã¯ç¬èªã®ãã©ãŒã¯MPPDBããããXCã®ãã©ãŒã¯ã§ãã
ãªã¬ã°ã»ãã«ãã¥ããïŒç§ã¯ããããããã§ã«ã©ã€ããŠãŒã¶ãŒãæã£ãŠããããŒã¿ããŒã¹ãã€ãŸã äžåœã®å€ãã®éè¡ããããã®XCã䜿çšããŠããŸãã
ã¢ã¬ã¯ãµã³ããŒã»ã³ããã³ãïŒäžè²«æ§ã®ãããã°ããã£ããšããäºå®ã«ãããããããäžåœã¯éåžžã«åæ¢ã§ãããã«é¢ããŠéè¡ãç«ã¡äžããæºåãã§ããŠããŸãã
- pg_shardããããŸã-ããã¯ãåºæ¬çãªã·ã£ãŒãã£ã³ã°æ©èœãæäŸãããªãŒãã³ãœãŒã¹ã®Postgresæ¡åŒµæ©èœã§ãã ç¹°ãè¿ããŸããããã©ã³ã¶ã¯ã·ã§ã³ãããŒãžã£ã¯ãªããåæ£äžè²«æ§ã¯ãããŸããããäžéšã®Webã¿ã¹ã¯ã«äœ¿çšã§ããŸãã
- Citus DBããããŸã-ããã¯ãŸã Citus DataãéããªããªãŒãã³ããããšãçŽæããç¬èªã®ããŒã¿ããŒã¹ã§ãã ããè±å¯ãªæ©èœããããŸãã ããè€éãªã¯ãšãªã ããã§ãããçš®ã®ã©ããç·šæã§ããŸãããOLTPã®å Žåãåæ£äžè²«æ§ã¯ä¿èšŒãããŸããã
- FDWã¯ãEnterpriseDBãPostgresã«å¯ŸããŠå®è¡ããããšããŠããã¢ãããŒãã§ãã ã¡ã€ã³ãã¹ã¿ãŒãã©ã³ãã«è¿œå ããŸãã ã¢ã€ãã¢ã¯ãæ¢åã®å€éšããŒã¿ã©ãããŒã¡ã«ããºã ã䜿çšããããšã§ãã ã·ã£ãŒãã£ã³ã°ãè¡ãããã«ãå€éšããŒã¿ãœãŒã¹ã«ã¢ããŒã«ããŸãã B 9.6ã Postgresã®æ¢åã®ç¶æ¿ãéããŠããŒãã£ã·ã§ã³ãäœæã§ããããã«ããããããæ¢ã«ã³ãããããŠããŸãã åæ§ã«ãå€éšããŒãã«ãå€éšããŒãã«ã®ç¶æ¿ãè¡ãå ŽåãããªãåçŽãªã·ã£ãŒãã£ã³ã°ãå®è¡ã§ããŸãã ãã ãããªããã£ãã€ã¶ãŒããã®ãããªåæ£ã¯ãšãªãæé©åããæ¹æ³ã«ã€ããŠã¯ãå€ãã®çåãçããŸãã
EnterpriseDBã¯çŸåšãAggregate Pushdownãå®è¡ã§ããããã«ãããã«åãçµãã§ããŸãã ã·ã£ãŒããããã¹ãŠããã«ããªãããã«ããŠãããéèšãã«ãŠã³ãããã·ã£ãŒãèªäœã®éèšãã«ãŠã³ãã§ããããã«ããŸãã åæ§ã«ãããã·ã¥ããŠã³ã«åå ããŸã...ãããŠããã®ãããªããªãé·ãããŒããããã¯ãå®å šã«ã¯å®æããŠããŸããããããããæ¬æ Œçãªåæ£ãªããã£ãã€ã¶ãŒãå ¥æããã®ã¯æ確ã§ã¯ãããŸããã ãã ãããã®ã¢ãããŒãã®å©ç¹ã¯ãFDWãæ¹åããŠããããšã§ãã
- Greenplumã¯ã3æ¥åã«ãªãŒãã³ãœãŒã¹ã§æè¿ãªãªãŒã¹ãããPivotalã®åçšãã©ãŒã¯ã§ãã
Oleg BartunovïŒ GitHubã§GreenplumãããŠã³ããŒãããã³ã³ãã€ã«ãã€ã³ã¹ããŒã«ããã°ãeBayãé·ãéåããŠããã®ãšåã倧èŠæš¡ãªäžŠåããŒã¿ããŒã¹ããã§ã«æã£ãŠããããšã«ãªããŸãã ã€ãŸã ããã§ã®ãªãŒãã³ãœãŒã¹éçºã¢ãã«ã¯ãªãŒãã³ã§ããããã®å©ç¹ã瀺ããŠããŸãã
Fedor SigaevïŒèŠããŠãããŠãã ãã-ãããã¯OLAPããŒã¿ããŒã¹ã§ãããOLTPã§ã¯ãããŸããã Postgresã§äœãã倧éã«åæããå¿ èŠãããå Žåã¯ãGreenplumãŸãã¯pg_shardã§ãããæããããšãã§ããŸããã確å®ã«è»¢éãããããšãæåŸ ããŠããã«ãéãå ¥ããªãæ¹ãè¯ãã§ãã
Alexander KorotkovïŒãããŠãç§ãã¡ãå§ãããããžã§ã¯ãã¯ãPostgresãŠã£ã¶ãŒãçšã®åæ£ãã©ã³ã¶ã¯ã·ã§ã³ãããŒãžã£ãŒã§ãã 圌ã«ã€ããŠããå°ã詳ããã話ããŸãã
Oleg BartunovïŒãããã¯æŽ»çºã§æŽ»çºãªãããžã§ã¯ãã§ãããç¬èªã®ã«ã¹ã¿ã ããŒããããéçºäžã§ãã ãããŠãæã ã¯ãªãœãŒã¹ãããããšãããããŸãããã³ãã¥ããã£ã®æ±ºå®ã¯ãããŸããã
ååã®PGConã§ããã®åé¡ãæèµ·ãããã®åé¡ã解決ããããã®å€§ããªäŒè°ãããããã¯ã©ã¹ã¿ãŒãµããããéå¬ããããšã«åæããŸããã

2æ¥åãç§ãã¡ã¯ãã®äŒè°ããé£ã³ãŸããã ç§ãã¡ã¯ãŠã£ãŒã³ã§äŒããã¯ã©ã¹ã¿ãŒã®ççŒåé¡ãã€ãŸã ã³ãã¥ããã£ãTodoã§ã¯ã©ã¹ã¿ãŒåããããœãªã¥ãŒã·ã§ã³ã䜿çšãããã©ãããšããåé¡ãæèµ·ããŸããã

ç§ãã¡ã¯ãç¶æ³ãéåžžã«æçããŠãããããTodoã«ç€ºãå¿ èŠããããšå€æããŸããã åæã«ãã¯ã©ã¹ã¿ãŒãœãªã¥ãŒã·ã§ã³ã®éçºãç¶ç¶ããå¿ èŠããããŸããæ¢ã«ç€ºããããã«ãã¯ã©ã¹ã¿ãŒãœãªã¥ãŒã·ã§ã³ã¯éåžžã«è€éãªãã®ã§ãããææ¥ãŸãã¯2幎åŸã«ãã®ãœãªã¥ãŒã·ã§ã³ãåã€ãšã¯èšããªãããããœãªã¥ãŒã·ã§ã³ãéçºããå¿ èŠããããŸãã ããã«ãããšãã°ãåœç€Ÿã®ã³ãããã¡ã³ããä»ã®ãœãªã¥ãŒã·ã§ã³ãžã®éã劚ããªããããªæ¹æ³ã§éçºããå¿ èŠããããŸã-ããã¯éåžžã«éèŠã§ãã 決å®-å¹³åãšæã
ã¯ã©ã¹ã¿ãœãªã¥ãŒã·ã§ã³ãæ¡åŒµãšããŠéçºã§ããããã«Postgresã€ã³ãã©ã¹ãã©ã¯ãã£ãäœæãããšããã¢ã€ãã¢ããããŸãããããã«ãããéçºãå€§å¹ ã«ä¿é²ãããŸãã åæ£ãã©ã³ã¶ã¯ã·ã§ã³ãããŒãžã£ãŒã«ã€ããŠè©±ããŸãããããã®ã¢ã€ãã¢ã¯äººã ã«ãšã£ãŠèå³æ·±ããã®ã§ããããã®åé¡ã9.6ã«ããã·ã¥ããŸãã 9.6ã§ã¯ãåæ£ãã©ã³ã¶ã¯ã·ã§ã³ãæ¢ã«Postgresã«ãããå°ãªããšã誰ããæ¢ã«ã¯ã©ã¹ã¿ãŒãäœæã§ããããã«ããŸããïŒ ã¢ããªã±ãŒã·ã§ã³ã¬ãã«ã§ã

2015幎10æ31æ¥ã«EnterpriseDBããååŸããã¹ã©ã€ãã«è¿œå ããŸããã ãã®æéãæ°Žå¹³ã¹ã±ãŒãªã³ã°ïŒã·ã£ãŒãã£ã³ã°ïŒãšåŒã³ã解決ããå¿ èŠã®ããã¿ã¹ã¯ã®ãªã¹ããäœæããŸããã ã€ãŸã ãããã³ãã¥ããã£ã§æšé²ãããŠãããã®ã§ãã³ãã¥ããã£ããããåŠçããŸãã
ã¢ã¬ã¯ãµã³ããŒã»ã³ããã³ãïŒç®æšã¯æ確ã§ãããèªã¿åããšæžã蟌ã¿ã®äž¡æ¹ã®ã¹ã±ãŒã©ããªãã£ã«å ããŠãé«ã䟡å€ãæ±ããŠããŸãã ããã¯ãããšãã°åé·æ§ã䜿çšããŠå®çŸã§ããŸãã åãã·ã£ãŒãã¯1ã€ã®ã³ããŒã§ã¯ãªãã2ã€ã®ã³ããŒã«ä¿æãããŸãã
ãããŠã圌ãã¯ããã§ã¿ã¹ã¯ã売ã蟌ã¿ãŸãããããã§æ倧ã§ãã å®éã«ã¯ãã£ãšå€ãããããšã¯æããã§ãã ç§ãã¡ãæ±ã£ãŠããã¿ã¹ã¯ã¯ãåæ£ãã©ã³ã¶ã¯ã·ã§ã³ã®ç®¡çã§ãã çŸåšãå€ãã®ç°ãªãé¢å¿äºã亀差ããŠããã®ã¯ãåæ£ãªã¯ãšã¹ãã®ãã©ã³ããŒãšãšã°ãŒãã¥ãŒã¿ãŒã§ãã FDWã¯åæ£ãªã¯ãšã¹ãã«å¯Ÿãã1ã€ã®ã¢ãããŒãã§ãããpg_shardã¯å¥ã®ã¢ãããŒãã§ãããPostgres XC XLã¯3çªç®ã®ã¢ãããŒãã§ãã ãããŠããããã4æ¥ã5æ¥ãªã©ã ããããé ããæ©ãããã®æ¹åã§ãå ±éã®åæ¯ã«ãå°éããããšãé¡ã£ãŠããŸãã
Oleg BartunovïŒ Bruce MomzhanãäŒè°ã«ããã«ããŸãã圌ã¯Todoã§ã®ã¯ã©ã¹ã¿ãªã³ã°ã«é¢ããæ¡é ãæžãã¹ã責任è ã§ããããããã°ããªãããã®åªåãçµéããå¿ èŠãããã®ã§ããã¹ãŠãããŸããããŸãã

ãã®åçã¯ãããããã®ææãããããã®äžããããããã®ãã®ã調çã§ããããšãæå³ããŸããããããå€æãããšããäºå®ã¯ãããŸããã

ã¢ã¬ã¯ãµã³ããŒã»ã³ããã³ãïŒè¡šã§ã¯ããã®ãããªãããªãã¯ã¹ãäœæããããšããŸãããããã«ã¯ã©ã¹ã¿ãŒãœãªã¥ãŒã·ã§ã³ãå ¥åããŸãããçŸåšååšããéçºäžã®ãœãªã¥ãŒã·ã§ã³ãšããã€ãŠæŽå²çã§ãµããŒããããªããªã£ããœãªã¥ãŒã·ã§ã³ã®äž¡æ¹ã§ãã
Fedor SigaevïŒæã人æ°ã®ãããã®ãæ¡çšããŸããã Olegã¯æåããã®ãããªãã¯ã¹ãããã«å€§ããããã¯ã»ã«ããšã®ã°ã©ãã£ãã¯ãäœæã§ããããšã瀺ããŸããããããããã¯äœãæ確ã§ã¯ãããŸããã
ãªã¬ã°ã»ãã«ãã¥ããïŒãã®è¡šã¯é·ãéæ€èšããããšãã§ããè°è«ããããšãã§ããŸããçæ³çãªè§£æ±ºçã¯ãªãããšã瀺ããŠããŸãã ããšãã°ãXC / XL / X2ã¯æãé åçã«èŠããæããã©ã¹ã«ãªããŸãã FDWãšpg_shardã«ãå€ãã®å©ç¹ããããŸãããç¹ã«ããŒã¿ã®æŽåæ§ã«æ¬ ããäœããæ¬ ããŠããŸãã
æŠãå šäœãå§ãŸã£ããšããåäŒæ¥ã¯ãç§ãã¡ã¯æ±ºæãäžããç§ãã¡ã®æ±ºæã¯è¯ãããªã©ãšè¿°ã¹ãŸããã ãŸããXLã䜿çšããŠéãã§ãç¬èªã®ã¯ã©ã¹ã¿ãŒãäœæããããšã決ããŸããããXLãå®çšŒåã§äœ¿çšããæºåãããŸãæŽã£ãŠããªãããšã«æ°ä»ããäžè¬çãªæŠãã«ã¯åå ããããã®äžè¬çãªæè¡ã«éäžããããšã«ããŸãã誰ããå¿ èŠãšããèŠçŽ ã ã€ãŸã ãã¹ãŠã®ã¯ã©ã¹ã¿ãœãªã¥ãŒã·ã§ã³ã«ã¯ãåæ£ãã©ã³ã¶ã¯ã·ã§ã³ãããŒãžã£ãå¿ èŠã§ãã
ãããã£ãŠããã®æ¹åãéžæããŠå®è£ ããŸããã 次ã«ããããäœã§ãããããªããããéèŠã§ãããããããŠãããã¯ã©ã¹ã¿ãŒãœãªã¥ãŒã·ã§ã³ã«äžãããã®ã説æããŸãã

ã¢ã¬ã¯ãµã³ããŒã»ã³ããã³ãïŒåæ£ãã©ã³ã¶ã¯ã·ã§ã³ãããŒãžã£ãŒã«ã¯äžè¬çã«äœãå¿ èŠã§ããïŒ åæ£ã·ã¹ãã ã§ã®ã³ããããã¢ãããã¯ã§ããããšã¯æããã§ãã ã¢ãããã¯ãšã¯ããŸããã¢ãããã¯ã«ããããå Žæãééããããããããå Žæã«è»¢ããããšãæå³ããŸãã 第äºã«ãã¢ãããã¯ãªå¯èŠæ§ãã€ãŸã ããã¯ãè€æ°ã®ããŒã¿ããŒã¹ïŒ2çªç®ã®ã·ãŒã³ã§ç€ºãããã®ïŒã®èªã¿åãèŠæ±ãè¡ã£ãå Žåããã¹ãŠã®ã³ãããã衚瀺ãããããã¹ãŠã®ã³ãããã衚瀺ããå¿ èŠããªãããšãæå³ããŸãã ãããµãŒããŒã§ãéãæ¢ã«ééãããŠããã®ãèŠãŠãå¥ã®ãµãŒããŒã§ééãããŠããªãããšããããããã®çµæãéé¡ãåæããŸããã
, . , , pluggable API . ã€ãŸã Postgres' , â , . , , , - , , , .

API, , . , Postgres , so', , .
: , pluggable. pluggable, executer pluggable, , , , Transaction Manager pluggable.
: , , executer Postgres pluggable, .. executer, .

: , ? : , , Transaction Manager Postgres .
: , , .

, .. , Postgres.

, Transaction Manager.

次ã

, , .
- â Snapshot sharing â , Postgres XC, XL. , , , . , , , - , . ? , . , , , â , , ..
- Timestamp. , , , Timestamp. Timestamp, , , , , , , . MTP , . , , , , , . . , , , , - , , , . , two-phase commit, , , .
- â . , . , . , , , ' , , , .. , . , , .

â , DTM. Postgres, , , , , . , , , , .

: . , . - , .

dtmd â . , begin, id' , . , join, . Global xmin , .

, , dtmd . dtmd , , , , . roadback, .

flow â , , .

â , Timestamp, , Postgres' .


, , . , .

. , .. TCP- â , , sockhub, .



, .

, , â . , , .
: pg_shard. pg_shard , , .

: , , â pg_shard FDW.

.
- â , . ã€ãŸã .
- â , .
- â pg_shard.
- â FDW.
, , . , . Timestamp, , , .
: , , â , , . , , , , consistency high valability. .

.
: , , . , , . , , .

Roadmap â , XTM â 9.6., , , Timestamp , .
, :

-, pg_shard FDW â ACID . XC/XL/X2 , - , , , GTM.
: , , . , Todo⊠, Postgres, , , .
é£çµ¡å
» zen
» smagen
» Postgres Professional
â HighLoad++ . 2016 â HighLoad++ , 7 8 .
HighLoad++? PostgreSQL! , , , .
- HighLoad.Guide â , , , . 30 . !