2017幎ã¯PG Dayã«ãšã£ãŠéèŠãªã€ãã³ãã§ãã-ç§ãã¡ã¯ã€ãã³ããããŒã¿ããŒã¹ã«ç¹åããæå€§ã®ã«ã³ãã¡ã¬ã³ã¹ã«å€ããŸããã
ç§ãã¡ã¯äŒçµ±ãå€ããããã¹ã°ã¬ã«æ§ããè±ãã§è峿·±ãããã°ã©ã ãæºåããŸãã ããã«ãããããããååãšã®ã³ãã¥ãã±ãŒã·ã§ã³ãšåå è
ããã®ãã£ãŒãããã¯ã«ãããèšå€§ãªæ°ã®å°éå®¶ããããŒã¿ãä¿åããããã®ããã€ãã®ã·ã¹ãã ã®æäœã«ã匷å¶çãŸãã¯ç¬èªã®æ±ºå®ã«ãã£ãŠé¢äžããŠããããšãæããã«ãªããŸãã ç§ãã¡ã¯ãååãšäºãã«ã³ãã¥ãã±ãŒã·ã§ã³ãåããçµéšã亀æããåé¡ã解決ããæ¹æ³ãèŠã€ããæ©äŒã奪ããããããŸããã ãã®ããã2017幎ã PG Dayã¯ã PostgreSQL ã MySQL ã Oracle ã MS SQL Server ã NoSQLãœãªã¥ãŒã·ã§ã³ããã®ä»ã®ç¡æããã³åçšDBMSã®5ã€ã®äžŠåã¹ã¬ããã«åå²ãããŠããŸã ã
GHGãã€ã®æ§é ã®ææ¬çãªå€æŽã¯ä»å¹Žã ãã§å§ãŸã£ããšããäºå®ã«ãããããããã¯ãŒã¯ã·ã§ããã®ååããã®ã€ãã³ããžã®é¢å¿ããã£ãšæ©ãçŸãå§ããŸããã éå»ã®PG Dayã®1ã€ã§ã Andrei Rynkevichã¯OracleããPostgreSQLãžã®è峿·±ãã¬ããŒããçºè¡šããŸãã-Phormã§ã®ç§»è¡ã®çµéšã«åºã¥ãã4å¹Žã®æ
ã§ãHabrèªè
ã«åãã§æç€ºããŸãããããªã©ã¯ã«ããPostgreSQLãžã®4å¹Žã®æ
ãã¬ããŒãã¯ããçç£ãã§PostgreSQLãå®å
šã«æèŒãã補åã®ã€ã³ã¹ããŒã«ã§æ¥æäžã«çµäºããäºå®ã§ãããç§ãã¡ã®ãããžã§ã¯ãã®æå€§ã®èª²é¡ã«é¢ãããã®ã§ãã

æåã¯ãOracleãããããŠãŒã¶ãŒã¢ã¯ãã£ããã£ã¯ã»ãšãã©ãããŸããã§ããã ãã®ãããªç¶æ³ã§ã¯ãã©ã®ãã¯ãããžãŒã䜿çšãããã¯éèŠã§ã¯ãããŸããã 質åãã©ãã ãäžæãæžããŠãæ§ããŸãã-ãã¹ãŠãå®ç§ã«æ©èœããŸãã ããããã¢ããªã¹ãã¯ããªãã®å©ãã«ãªããŸãã
ãã®ãããç¹å¥ãªçš®é¡ã®çµ±èšã衚瀺ãããŸãããããã¯ã軜ãè² è·ã§ããã£ã¹ã¯ãçŒçã«å®å
šã«è©°ãŸã£ãããŒã§ãã
çŽ5 TBã§ããã ãã¡ãããçµ±èšããªãã«ããŸããããåããŠæ¡åŒµçšã®è¿œå ããŒã¿ããŒã¹ã«ã€ããŠèãå§ããŸããã è² è·ã¯å¢å€§ããŠããŸããããæé©åã®æ©äŒã¯Oracleã©ã€ã»ã³ã¹ã«ãã£ãŠå¶éãããŠããŸããã çŸåšã®ã©ã€ã»ã³ã¹ã§ã¯4ã³ã¢ãã䜿çšã§ããŸãããããã®å¶éã«ããããªã¯ãšã¹ãã«ã¹ã¿ã³ãã€ã䜿çšããããšããã§ãããããŒãã£ã·ã§ã³åãè¡ãããŸããããã®ãããªæ©é¢è»ã§ã¯é ãã«è¡ããŸããã ãã®ãããæ¡åŒµã®ãªãã·ã§ã³ãæ€èšãå§ããŸããã

åãã«ãOracleã®æ©èœã«æ³šç®ããŸããã çŸåšã®ã©ã€ã»ã³ã¹ã«
ã¯å¹Žé15,000ãã³ããããããŸãïŒãµããŒããšæ°ããããŒãžã§ã³ã®ã¢ããã°ã¬ãŒãïŒã ããã»ããµã®ã©ã€ã»ã³ã¹å¶éããã³ããŒãã£ã·ã§ã³åå²ã®ããã®ããã¥ã¡ã³ãã®åé€ã¯ããã®éã«éåžžã«å€§ããªè²¢ç®ã远å ããŸããããããã£ãŠãããŸããéããªãã£ãã®ã§ãç§ãã¡ã¯ãã®ããã«ã¯è¡ããŸããã§ããã
æåã«æ€èšãããœãªã¥ãŒã·ã§ã³ã¯MySQLã§ããã åœæãMySQLã¯ãã§ã«ãããžã§ã¯ãã§äœ¿çšãããŠããŸãããã人ã
ãšè©±ãåã£ãçµæãããªãåé¡ãå€ãæ©èœãå¶éãããŠããããšãããããŸããã ãã®ãããNoSQLãœãªã¥ãŒã·ã§ã³ãããªãæ€èšããŸããã åœæãNoSQLã®éçºè
ã¯ããŸããã§ããããããã¯éåžžã«åçãªå€åã§ããããã«æãããã®ã§ãèã«çœ®ããŸããã
ç§ãã¡ã«ãšã£ãŠæãé©åãªãœãªã¥ãŒã·ã§ã³ã¯
Greenplumã§ãããããã¯PostgreSQLã«åºã¥ããŠæ§ç¯ãããMPPããŒã¿ããŒã¹ã§ãã ãã¡ãããå¯äžã®ãã€ãã¹ã¯ãããæ¯æããããšããããšã§ãããéé¡ã¯Oracleã®éé¡ãšåãã§ã¯ãªããããGreenplumãžã®ãããªãç§»è¡ãç®æšã«PostgreSQLã§åæ¢ããããšã«ããŸããã èšç»ã«ãããšããã®ãããªç§»è¡ã¯ããã»ã©é£ãããªãã¯ãã§ãã

æåã«ããã¹ã¿ãŒ+ã¹ã¿ã³ãã€ïŒ24ã³ã¢ã128 GBã®RAMïŒã3ãã©ãã€ãïŒ3 TBïŒã®RAID10ãæ§ç¯ãã2å°ã®ãã¹ãã賌å
¥ããŸãã-SSDã¯éåžžã«é«äŸ¡ãªãããSSDãã£ã¹ã¯ã§ã¯ãããŸããã ãããŠã次ã«äœããã¹ãããèããŸããã

æåã®æ®µéã§ã¯ãç§»è¡ã®ãã¹ãŠã®ã¹ããããæç¢ºãã€è©³çްã«çè§£ããŠããŸããã§ããã ããæç¹ã§
ãããŒãããããæç»ããå¿
èŠããããŸããã ç»é¢ã«ã¯ããã®ããŒããããã®å€§å¹
ã«åãæšãŠãããããŒãžã§ã³ã衚瀺ãããŸãã ã¹ããŒãžã®ãã¡ã次ã®ãã®ãåºå¥ã§ããŸãã
- OracleããŒã¿ããŒã¹ããPostgreSQLããŒã¿ããŒã¹ãžã®ããŒã¿è€è£œã
- å䜵-ãçããããã¯ãããŒã¿ããŒã¹èªäœã«åããæ¹æ³ãšããŠã
- OracleããPostgresãžã®çµ±èšè»¢éã
- æ©èœã®ç§»è»¢ã
- ããŒãã«ãšé¢é£ãããžã§ã¯ãã転éããŸãã
ããã«-åã¹ããŒãžã«ã€ããŠé 次ã

åœåãç§ãã¡ã¯äžåºŠã«ç§»è¡ããæ©äŒããªãããšããã§ã«çè§£ããŠãããããçµ±èšããå§ããããšã«ããŸããã ãããŠãäžéšã®çµ±èšãéšåçã«PostgreSQLã«ãããæ®ããOracleïŒäž»ã«ãšã³ãã£ãã£ïŒã«ãããããªç¬éã圢æãããŸããã åé¡ã¯ãã¬ããŒãã«äž¡æ¹ãå¿
èŠãªããšã§ãã 質åïŒã©ã®ããã«ã¬ããŒããäœæããŸããïŒ
ãŸã æ©äŒãéãããŠãããããOracleã®ãªãã·ã§ã³ãããã«åŽäžããŸããã ã¢ããªã±ãŒã·ã§ã³ãµãŒãã¹ãæ§æããOracleãããšã³ãã£ãã£ãæœåºããPostgreSQLããçµ±èšæ
å ±ãååŸããŠãäœããã®æ¹æ³ã§æ¥ç¶ãšãã£ã«ã¿ãªã³ã°ãè¡ãããšãã§ããŸãã ãã®ãããªã¢ããªã±ãŒã·ã§ã³ã¯ãããŒã¿ããŒã¹ã«å¯ŸããŠäœæ¥ãè¡ããŸãã ãã®ã¢ãããŒãã¯éåžžã«è€éã«æããã®ã§ãããŸããŸãªçšåºŠã§äœ¿çšãã3ã€ã®ã¢ãããŒããããã«å®è£
ããŸããã
æåã®ãªãã·ã§ã³ ïŒPostgreSQLã§ã¬ããŒãããªã¯ãšã¹ãããéã«DBIãªã³ã¯ã䜿çšããŠå¿
èŠãªãšã³ãã£ãã£ãOracleãããã³ãã¢ãŠããã-ãã®ã¢ãããŒãã¯æ©èœããŠããã倿°ã®ãšã³ãã£ãã£ã§å€§ããªããŒã¿ããã³ãããå¿
èŠãããå Žåããã¹ãŠãé
ããªãããã®ãããªæé©åãè¡ããããããå°ããªãµã³ãã«ã«é©ããŠããŸãã¯ãšãªã¯éåžžã«è€éã§ãã ãã®ã¢ãããŒãã¯ããšã³ãã£ãã£ã®é¢é£æ§ãå¿
èŠãªå Žåã«é¢é£ããŸãããç·šéãããŒãžã«ç§»åããæ°ããèŠçŽ ã远å ããä¿åãããããã«æ°ããçµ±èšã§è¡šç€ºããå¿
èŠããããŸãã
次ã®ãªãã·ã§ã³ã¯ããã¹ãŠã®ãšã³ãã£ãã£ãOracleããPostgreSQLã«è»¢éãããã¹ãŠã®ãšã³ãã£ãã£ã宿çã«è»¢éããããšã§ãã ãã®ã¢ãããŒãã䜿çšããŸãããå®éã«ã¯ããšã³ãã£ãã£ã®æ°ã«çŽ100 GBãããããããpostgresã§ã®ãšã³ãã£ãã£ã®é¢é£æ§ã¯é
ããŠããŸãã ãã ãããã®ãªãã·ã§ã³ã¯ãããŒã¿ã®é¢é£æ§ãå¿
èŠãšããªã倧ããªã¬ããŒããåŠçããå¿
èŠãããå Žåã«æå¹ã§ãã ããããäœããã®çµ±èšãé
ãå§ãããšããã«30åã§ç§ãã¡ã«é Œãç§ãã¡ã®æŒç®åãç¥ã£ãŠãç§ãã¡ã¯
ã¹ããªãŒãã³ã°ã¬ããªã±ãŒã·ã§ã³ãå®è£
ããããšã«æ±ºããŸããïŒOracleã«æŽæ°ãããšããšã³ãã£ãã£ã¯ã»ãŒããã«Postgresã«å
¥ããŸãã

ãã®åé¡ã«å¯ŸåŠããããã«ã次ã®ãªãã·ã§ã³ãæ€èšãããŸããã
WisdomForce Database Syncã¯ãåœæååšããŠããåçšè£œåã§ãã ããã¯ç§ãã¡ã«ããåããéåºŠã¯æ¯ç§çŽ5,000ã®æŽæ°ãæäŸããŸãããã䜿çšããããšã«æ±ºããç¬éã«å¥ã®äŒç€Ÿãããã賌å
¥ãããããžã§ã¯ããåžå Žããæ¶ããã®ã§ãç§ãã¡ã¯ãããææ¡ããŠèªåã§ãœãªã¥ãŒã·ã§ã³ãæ§ç¯ããå¿
èŠããããŸããã
æ€èšãããæåã®ãªãã·ã§ã³ã¯ã
Oracle DataChange Captureã§ãã ãããã¯ãOracleããŒã¿ããŒã¹ã§å®è¡ãããJavaããã»ã¹ã§ãã 圌ãã¯ãã¬ãŒãã®å€åããã£ãããããããããã¥ãŒã«è©°ããæ¹æ³ãç¥ã£ãŠããŸãã æ®å¿µãªããããã®æ±ºå®ã®ã¹ããŒãã¯æŽå²äžå€±ãããŸããããããã»ã©éãã¯ãããŸããã§ããã
ã¬ããªã±ãŒã·ã§ã³ã®æåã®ããŒãžã§ã³ã¯ã
ãããªã¢ã©ã€ãºãã»ãã¥ãŒã»ãã°ã«åºã¥ããŠæ§ç¯ãããŸãã-ãããã¯ããã¹ã¿ãŒã»ãã¬ãŒãã«å¯Ÿãããã¹ãŠã®å€æŽãä¿åãããããªã¢ã©ã€ãºãã»ãã¥ãŒã§è¿
éã«åã«ãŠã³ãããããã«äœ¿çšãããOracleç¹æ®ãã¬ãŒãã§ãã
ãã®ãœãªã¥ãŒã·ã§ã³ã¯å®è£
ãéåžžã«ç°¡åã§ã1ç§ãããçŽ500ã®æŽæ°é床ãåŸãããŸãããã補åãæé·ããããã§ã¯äžååã§ããããšã倿ããŸããã æ¬¡ã«ãOracleããä»ã®ãœãŒã¹ã«ããŒã¿ãè€è£œããç¹å¥ãªOracleãã¯ãããžãŒ
Streamã«åãæ¿ããŸããã ãŸããçŸåšã®é床ã§ã¯ã1ç§éã«5000åã®æŽæ°ã§ãšã³ãã£ãã£ããã³ãããã³æŽæ°ããããšãã§ããŸãïŒå¶éã§ã¯æå€§50 000ã«ããããšãã§ããŸããïŒããå¹³åé
å»¶ã«ã¯æå€§30ç§ããããŸãã ãããŠãè峿·±ãããšã«ãOracleã§1ã€ã®ã¬ã³ãŒããæŽæ°ããŠããããã«ã¯Streamã«å°éããŸããããããããã¹ãŠã®ããã»ã¹ã«é
å»¶ããããããå€å°ã®é
å»¶ãçºçããŸãã
ãŸããOracleã«ã¯ã¹ããªãŒã ãã¯ãããžãŒã®ç¶ç¶æ§ããããŸããXStreamsã䜿çšãããšãããè¯ãçµæãåŸãããšãã§ããŸãããææãœãªã¥ãŒã·ã§ã³ãããããããã¹ãããŸãããã䜿çšããŸããã§ããã
è€è£œã¹ããŒã ã¯éåžžã«åçŽã§ãã ãªã©ã¯ã«ã¯ãREDOãã°ãèªã¿åãããã»ã¹ãäœæããŠããŸããããã¯ãPostgreSQLã®WALãã¡ã€ã«ã«é¡äŒŒããŠããŸãã è€è£œããå¿
èŠã®ãããã¹ãŠã®ã©ãã«ã¯ãå¥ã®ã©ãã«ãè€è£œããŒã¿ãã«èšé²ãããŸãã ããã«ãŠã§ã¢ã®å©ããåããŠãREDOãã°ãã³ãã©ãŒããã»ã¹ãåãã¬ãŒãã§ãã³ã°ããŸãã ãã®çµæãåºåã§ããŒã¿ãååŸããããã¬ããªã±ãŒã·ã§ã³ããŒã¿ããã¬ãŒãã远å ãããŸãã

PostgreSQLã®åŽã§ã
Javaã¬ããªã±ãŒã·ã§ã³ã¢ããªã±ãŒã·ã§ã³/ãŠãŒãã£ãªãã£ãæ§ç¯ããŸãã-ãã®ããŒã¿ãã¬ããªã±ãŒã·ã§ã³ããŒã¿ããèªã¿åããPostgreSQLã«æžã蟌ã¿ãŸãã ãã®å©ç¹ã¯ãããŒã¿ããã©ã³ã¹ã¢ã¯ãã£ãã«èªã¿æžãã§ããå ŽåãæŽåæ§ã®éåããªãããšã§ãã
1ç§ããã5000ã®é床ã«ã€ããŠã¯ãåºæ¬çã«ãã¬ããªã±ãŒã·ã§ã³ãŠãŒãã£ãªãã£ã¯ãã®å Žæã®çããªã³ã¯ã§ãã å
ã»ã©è¿°ã¹ãããã«ãã¹ããªãŒã ããã»ã¹ã§ã¯ãæå€§50,000ä»¶ã®ãœãŒã/æŽæ°ãä¿æã§ããŸãã ãŠãŒãã£ãªãã£ãé«éåããããã«ã
3ã€ã®ã¹ã¬ããã«åå²ããŸããã
- æåã®ã¹ããªãŒã ã¯ãã¬ããªã±ãŒã·ã§ã³ããŒã¿ããããŒã¿ãèªã¿åããPostgreSQLã«æ¢ã«é©çšã§ããã¯ãšãªã«å€æããŸããã
- 2çªç®ã¯ãããã®å€æŽãé©çšããŸããã
- 3çªç®ã¯ãè€è£œããŒã¿ãã¬ãŒãããåŠçæžã¿ããŒã¿ãæ¶å»ããŸããã

ã¹ããªãŒã ããã»ã¹ã§ã¯ãããŒã¿ã¬ããªã±ãŒã·ã§ã³ã ãã§ãªããDDLãèš±å¯ãããŸãã æåã¯ããã®åé¡ã解決ããããã«æ¥ãã§è¡ããŸããã 幞ããªããšã«ãã·ã¹ãã ã¯è€éã§ããããã¹ãŠã®æåã«ããååçž®ãæå°éã«æãããã£ãã®ã§ãããDDLèšèªèªäœã倿§ã§ãããããç°¡åã§ã¯ãããŸããã§ããã ããã«ãDDLãOracleããPostgreSQLã«ç¿»èš³ããããšã«ã¯ãããŸããªç¹ããããŸãã ãã®ããããã®DDLã®äºçš®ã«ã€ããŠã¯ãå®çšŒåç°å¢ã§ã¢ã«ãŠã³ããäœæãããªãããšããããããŸããã ãã®çµæãpostgresã§ããããåäœæããããŒã¿ããªããŒãããæ¹ãç°¡åã ãšå€æããŸããã ãã®çµæããµããŒãããåœä»€ã1ã€æ®ããŸãã-ããã¯TRUNCATEã§ãã

ã»ãšãã©ã®å Žåã1ç§éã«5000åã®æŽæ°ã蚱容ãããŸããããŸã äžè¶³ããŠããç¬éããããŸãã ããã¯ãŸãã«ãOracleã®å€§éããŒã¿ã®ãããã§ãã ãã®ãããæŽæ°ããã°ã©ã ãæ°åã®ã¬ãã€ãã«åœ±é¿ãäžããããšããããŸããã ã¹ããªãŒã ããã»ã¹ã¯ååã«éãããããããã®ããªã¥ãŒã ããã¹ãŠå®è¡ããããšã¯ãµãŒããŒã«ãšã£ãŠéåžžã«é«äŸ¡ã§ãã ãã®ããããã®ãããªã¹ããŒã ãæãã€ããŸããã
ããŒã¿ããŒã¹èšèšè
ã¯ãèªåã®ãããã倿°ã®å€æŽã«åœ±é¿ãäžããããšãçè§£ããŠããå Žåãã¬ããªã±ãŒã·ã§ã³ã忢ããå¿
èŠããããšããç¹å®ã®ãã©ã°ããããã·ã¹ãã ã«èšå®ããŸãã ãã®ããããé©çšãããšããããã·ã¹ãã ã¯ã¹ããªãŒã ããã»ã¹ã忢ããã¿ãã¬ããã§ç¬èªã®åŠçãè¡ããæåŸã«ã¬ããªã±ãŒã·ã§ã³ãã¬ãŒãã«ããŒã«ãŒãæžãçããããããããçµäºããããšãšã¿ãã¬ãããåæåããå¿
èŠãããããšã瀺ããŸããã æ¬¡ã«ããããã·ã¹ãã ã¯postgresã«é²ã¿ãŸããã 圌女ã¯ããã§ã«Postgresã«ããOracleã§æžããããã®æåŸã®ããŒã¯ã³ãåŸ
ã£ãŠããŸããã 圌ã¯ãã€ãæåŸã«æ¥ãŸããã ã·ã¹ãã ã¯ãã©ã°ã確èªãããã¬ãŒããåäœæããå¿
èŠãããå ŽåãDBIãªã³ã¯ã䜿çšããŠããããåäœæããOracleãããã¹ãŠã®ãšã³ãã£ãã£ãæœåºããŸããã ãããŠã圌女ã¯ã·ã¹ãã èªäœã®ããããé©çšããŸããã ããããã¹ãŠã¬ããªã±ãŒã·ã§ã³ã§ãã
次ã®ã¹ãããã¯ãããŒã¿ãããŒã¿ããŒã¹èªäœã«ããŒãããããšã§ãã å®éãç§ãã¡ã®ãããžã§ã¯ãã¯ããã€ãã«åãããŠããŸããå®éã«ã¯ãããŒã¿ããŒã¹èªäœã§ãã UIããšã³ãã£ãã£ã®ããŒã¹ã«æµã蟌ã¿ãã¬ããŒããçºè¡ããŸãã ã¹ãã¢ãããã·ãŒãžã£ãéããŠæ¯æ¥150 GBããã³ãã³ã°ãããã°ãµãŒããŒã
ããŒã¿ããŒã¹éçºè
ã¯å®éã«ã¯log-server-databaseãã³ãã«ãå¶åŸ¡ããªããããå€ãã®åé¡ãçºçããŸãã ããšãã°ãçµ±èšã¯ããŸããŸãªåœãããããŸããŸãªæéã«ããŸããŸãªéã§ååŸããã宿çã«è² è·ãæ¥å¢ããŸãã ããããã¹ãŠã®ãŠãŒã¶ãŒã«åœ±é¿ããããšã¯æããã§ãã æ¬¡ã®åé¡ã¯ãäºæããªãããšããããŸãããã°ãµãŒããŒãçæããããŒã¿ã®ãã±ããã倧ããããŸãã ç¹°ãè¿ããŸããããã®ãããªãã³ãã«ãåŠçãããšããµãŒããŒäžã®å€ãã®ãªãœãŒã¹ãæ¶è²»ãããä»ã®ãã¹ãŠã®ããã»ã¹ã«åœ±é¿ããŸãã ããã«ãçµ±èšã®ããã«å€±æããããããåŠçããããšã¯äŸç¶ãšããŠå°é£ã§ãã
äœããããããããŒãã§ããå Žåããããã®çµ±èšã¯ãã°ãµãŒããŒã«æ®ããŸãã ããŒã¿ããŒã¹éçºè
ã¯ãã©ããããããããã«ãã©ãçãïŒãããåžžã«å¯èœã§ãããšã¯éããŸããïŒãã¹ãã¢ãããã·ãŒãžã£ã倿ããå¿
èŠããããŸãïŒåŒã³åºããä¿®æ£ãåå
¥åïŒã ããã¯ããªãè€éãªæ±ºå®ã§ãã ãããã£ãŠãpostgresã®åŽã§ã¯ãå°ãç°ãªãæ¹æ³ã§ãã¡ã€ã«ãã¢ããããŒãããŸããã ãã°ãµãŒããŒã¯ã¹ãã¢ãããã·ãŒãžã£ãåŒã³åºããªããªããŸããããcsvãã¡ã€ã«ãçºè¡ããŸãã

ç¹å®ã®ã«ãŒã«ã«åŸã£ãŠãåã¿ã€ãã®çµ±èšãããŒã¿ããŒã¹ã«ã¢ããããŒããã
ããŒãžããã°ã©ã ããããŸãã ãã¹ãŠã®ãåœã®ããã¡ã€ã«ã¯åããã¹ãäžã«ãããããã«ãã以åã®åé¡ããã¹ãŠè§£æ±ºãããŸããã ããŒããžã£ã³ãã¯ããã£ã¹ã¯äžã®æªåŠçãã¡ã€ã«ã®æ°ã«ã®ã¿åœ±é¿ããŸããã ãã€ã§ãããã¡ã€ã«ããã¡ã€ã«ãèŠã€ããŠãæã§ä¿®æ£ããå
ã«æ»ããŠããŒãã§ããŸãã ãŸããå䜵ã«ãã倧ããªãã³ãã«ãåå²ããããããéåžžã«é·ããã©ã³ã¶ã¯ã·ã§ã³ã¯ãããŸããã§ããã

å䜵ãé·ãéã®ããæ©ãã§ããŸããã
æåã®ãªãã·ã§ã³ã¯èã®äžã§è¡ããããã®ç·ã¯ç·è²ã®ããã«èŠããŸãã ãããåœŒã®æ±ºå®ã§ãã ã€ãŸããçµ±èšã®ã¿ã€ãããšã«ãã¹ããŒãžã³ã°ãã©ãã«ãäœæããããããã®ã©ãã«ãããŒã¿ããŒã¹ã«é
眮ããããã·ãŒãžã£ãäœæãããŸããã ãããããã®ãªãã·ã§ã³ã¯ãã¹ãŠã®ãœãªã¥ãŒã·ã§ã³ã«é©ããŠããããã§ã¯ãªããããããã·ã³ãã«ã§ããæ®éçãªãã®ã«ãããã£ãã®ã§ãã ããã§ã2çªç®ã®ãªãã·ã§ã³ããããŸããã
ç»é¢ã«ã¯ãçµ±èšãåŠçããããã®æåã§æãç°¡åãªã«ãŒã«ã衚瀺ãããŸãã ããã°ã©ã ã¯ããã¡ã€ã«ã®ååã«ãã£ãŠãã©ã®ã«ãŒã«ãåãããçè§£ããããŒã¿ããŒã¹å
ã®ã©ãã«ã¯åãã«ãŒã«ã«å¯Ÿå¿ããŠããŸããã äž»ããŒã¯ãã®ãã¬ãŒãããéžæããããã§ã«åè¡ã®ãããã®äž»ããŒã«ãã£ãŠãINSERTãŸãã¯UPDATEãå®è¡ããå¿
èŠããããã©ããããã§ã«çè§£ã§ããŸããã
ãããã®ã«ãŒã«ã¯ã»ãšãã©ã®ã¿ã€ãã®çµ±èšãèšè¿°ããŸããããŸã å€ãã®ãªãã·ã§ã³ããããŸãã ãã®ãããMergeræ§æã¯æé·ãç¶ããŠããŸãã ãã®ãããINSERTãŸãã¯UPDATEã®ã«ãŒã«ãããããããŸãã¯ãã®ããŒãã£ã·ã§ã³ãå®è¡ããå¿
èŠãããå Žåã«æ¡ä»¶ãèšå®ããä»ã®ããããå€ãªæ¹æ³ãåããŸãã ããããããããæ¬¡ã®ããšãåºå¥ã§ããŸãã çµ±èšã¯ãPostgreSQLã®ãšã³ãã£ãã£ãããæ©ãæ¥ãããšããããŸãã ããã¯ãããšãã°ãã¬ããªã±ãŒã·ã§ã³èªäœããèœã¡ãããããã°ããåäœããªãã£ãå Žåã«çºçããŸãã

ãã®åé¡ã解決ããããã«ãããªãããŒãªå°ããªã¹ããŒã ãäœæããŸããã Oracleã«ã¯
HEART_BEATãšåŒã°ãããã¬ãŒããšã30ç§ããšã«ã¿ã€ã ã¹ã¿ã³ããæ¿å
¥ãããžã§ãããããŸãã ãã®ãã¬ãŒãã¯PostgreSQLããŒã¿ããŒã¹ã«è€è£œãããMergerã¯ãã§ã«äœãå¿
èŠããçè§£ã§ããŸãã å°çããæåŸã®ããŒãããŒãã調ã¹ããã®ããŒãããŒããããæ°ãããã¡ã€ã«ã®ã¿ãåŠçããŸããããããªããšãäžéšã®ããŒã¿ã倱ãããå¯èœæ§ããããŸãã ãšã³ãã£ãã£ãååšããªããããã§ã«çµ±èšã«å«ãŸããŠããå Žåã¯ãããŒãžãããšæ¶ããããšã¯æããã§ãã

ã¬ããªã±ãŒã·ã§ã³ãšå䜵ã«ãããçµ±èšã«é²ãããšãã§ããŸããã ã¹ã©ã€ãã«ã¯ããã®ããã»ã¹ã®ãããã«å€æŽãããããŒãžã§ã³ã衚瀺ãããŠããŸãã ã¹ããŒãžã®ãã¡ã次ã®ãã®ãåºå¥ã§ããŸãã
- å䜵ã®ã©ãã«ãšã«ãŒã«ã®äœæã
- csvãã¡ã€ã«ãä»ããŠOracleãšPostgreSQLã®äž¡æ¹ã«ãã°ã€ã³ããããã®ãã°ãµãŒããŒã®ç¿»èš³ã
äœããã®çç±ã§ãä»ã®ãã¹ãŠãäžåºŠã«è»¢éããããšãæããŠããŸããã ãããã£ãŠãåæ®µéã§ãäœããã®åé¡ãçºçããå Žåã«æ»ãæ©äŒãäœãšãããŠä¿æããããšããŸããã æ¬çªç°å¢ã§äºéãã®ã³ã°ããã°ããä¿æãããŠããå ŽåãUIãšã¬ããŒãã®äž¡æ¹ã®å€æãéå§ããŸããã
ããã§ãç§»è¡ãžã®ææãèªèããŸããããããã£ãŠã
2ã€ã®åäžã®ã¬ããŒããåæã«ã·ã¹ãã ã«ååšãã1ã€ã¯Oracleã§æ©èœãããã1ã€ã¯PostgreSQLã§æ©èœããŸããã ããã¯ãéçºè
ãšãã¹ã¿ãŒã®äž¡æ¹ã«ãšã£ãŠéåžžã«äŸ¿å©ã§ããããšã倿ããŸãããåžžã«åãã¯ãšãªãå®è¡ããçµæã確èªããŠã°ã©ãã£ã«ã«ã«æ¯èŒããèŠã€ãã£ãåé¡ã解決ã§ããŸãã

PostgreSQLã®çµ±èšãå€ããã°å€ãã»ã©ãæ°ããã±ãŒã¹ãå€ããªããŸããã ãã®ãããããšãã°ãPostgreSQLã§èŠã€ãã£ãçµ±èšã«ãããšãããæç¹ã§ããã§ã«Oracleã«ãããšã³ãã£ãã£ãæŽæ°ããå¿
èŠããããŸããã ããšãã°ãããã€ãã®ãããå€ãæž¡ããšããã¹ããŒã¿ã¹ã倿Žããå¿
èŠããããŸããã ãã®å Žåãpostgresã®åŽã§ãå¿
èŠãªçµ±èšãå¯èœãªéãéçŽããdbiãªã³ã¯çµç±ã§Oracleã«ãããè©°ã蟌ãäœããã®çš®é¡ã®ãžã§ããéå§ããŸããã ãã-ãã§ã«ã¹ãã¢ãããã·ãŒãžã£ãä»ããŠããŸãã¯Oracleã®å¯Ÿå¿ãããžã§ãã«ãã£ãŠåŠçãããå¥ã®ãã¬ãŒãã§ã ãã®åŸãOracleã§ããŒã¿ãã¹ããŒã¿ã¹ãããã³ãšã³ãã£ãã£ã倿Žãããã¬ããªã±ãŒã·ã§ã³ãéããŠPostgreSQLã«ç§»è¡ããŸããã

äœã ãšæãïŒ ããã¯
ãšã³ãã£ãã£ã®ã³ã¬ã¯ã·ã§ã³ã§ã ã ç§ã¯ãã¹ãŠã®ãšã³ãã£ãã£ãã¢ãã©ãŒã«å
¥ãã圌ã¯ãããã®éã®ãã¹ãŠã®æ¥ç¶ãæ§ç¯ããŸããã ã芧ã®ãšãããã°ãªããã¯éåžžã«å¯éããŠããããã¹ãŠãç»é¢ã«åãŸãããã§ã¯ãããŸããã ãããã£ãŠãçµ±èšã䜿çšããåãããªãã¯ïŒãã¹ãŠãéšåçã«è»¢éããããã«ãæ¥ç¶ãéåžžã«ã¿ã€ãã§ãããããæåããŸããã§ããã ããã«ãORMã·ã¹ãã ã¯UIã§æ©èœããæ¥ç¶ãåæããããšã¯éåžžã«å°é£ã§ãã å®éãç°ãªãããŒã¿ããŒã¹ã«2ãã§ãŒãºã³ããããå®è£
ããå¿
èŠããããŸãã åãORM-kuã§2ã€ã®ãªãã·ã§ã³ãå®è¡ããããšããã¢ãã«ã«ãšã£ãŠåé¡ã§ããã ãã®ããããšã³ãã£ãã£ã®ç§»è¡å
šäœãæåŸã®ãã¬ãŒã¯ã¹ã«ãŒãŸã§å»¶æãããšåæã«ãå¿
èŠãªãã€ã³ãããã¹ãŠæºåããããšã«ããŸããã
ã¿ãã¬ããã®1ã€ã«ã€ããŠã転éãåæãå®è£
ããå¿
èŠããããŸããããããªãæéãããããŸããã ãã®çç±ã¯ããã®ãã¬ãŒããéåžžã«å€§ãããéäžçã«å€åããŠããããã§ãã postgresã§ã®åæåæåïŒãã¹ãŠã®ãšã³ãã£ãã£ããã³ãã³ã°ããå¿
èŠãããïŒããã³ã¬ããªã±ãŒã·ã§ã³ããã»ã¹ã«ã¯äžå©ã§ããã

æ©èœã®è»¢éã«ãããå°ãç°¡åã«ãªããŸããã ç»é¢ã«ã¯ãOracleããPostgreSQLãžã®ã·ã¹ãã ã®äžéšã®ç§»è¡æ®µéã®é¢ä¿ã衚瀺ãããŸãã ãã¡ãããããå°ãªããªã³ã¯ããããŸããã忣æ¹åœ¢ã¯æ£æ¹åœ¢ã§æ§æãããŠãããç¬èªã®æ¥ç¶ããããŸãã ãããã£ãŠãæåŸã®ã¹ããŒããä¿é²ããããã«ãå¯èœãªéããã¹ãŠãç°¡çŽ åããŸããã
3ã€ã®ãªãã·ã§ã³ããã
ãŸã ã
Oracleããå®å
šã«åé€ããŠpostgresã§å®è¡ãããšã
ã®æ©èœã®å®å
šãªç§»è¡ ã å Žåã«ãã£ãŠã¯ããããå¯èœã§ããã
ã»ãšãã©ã®å Žåã
æ©èœã
転éããã¢ã€ãã«ç¶æ
ã§èµ·åããŸãã ã ããšãã°ã課éã·ã¹ãã ã¯ãã®ã¢ãŒãã§çŽ1å¹Žéæ©èœããå€ãã®ããã©ãŒãã³ã¹ã®åé¡ãšããã€ãã®é倧ãªãã°ãèŠã€ããããšãã§ããŸããã
ãããããã®ãããªè«æ±ã®çµæã¯ãã¡ãããŽãç®±ã«æšãŠãããŸãããããã転éãšã¯ãã¹ãã¢ãããã·ãŒãžã£ãOracleããpostgresã«æžãæããŠè»¢éããããšã§ãããããã®æé ã¯æ©èœããªãå ŽåããããŸãããããŠããã°ãã°ã圌ãã¯åãããåŒã°ããªãã£ããããããããã«ãããæ¬¡ã®ã¹ãããã®ããã«äžé£ã®ã空çœããäœæããããšãã§ããŸããã
å®éãæåŸã®ãžã£ãŒã¯ã«è¡ãããã«ãã¹ãŠãæºåããŠãç§ãã¡ã¯ãã®æåŸã®ãžã£ãŒã¯ã«å¯ŸåŠããŸããå®éãã¢ã€ãã«ç¶æ
ã§æ©èœããéè·ã§ãã£ãæ©èœãå«ããã¹ãŠã®çµ±èšã転éããŸãããããªã倧éã®é¢é£ããŒã¿ãããŠã³ããŒããããã€ã³ãã§ããã€ãã®ç§»è¡ãå®è¡ããå¿
èŠãããããããªãªãŒã¹èªäœã¯ããªã倧ããªãããŠã³ã¿ã€ã ãã§è¡ãããŸãããè峿·±ãããšã«ãå€ãã®ããšãè¡ã£ãã«ãããããããç¹å®ã®ã¢ãžã¥ãŒã«ã転éããã®ãå¿ããŠããããšãããã£ãããããªãªãŒã¹ãçŽ1é±éå»¶æããããåŸãŸããã§ããããã®åŸãã1ã2é±éã§ç§»è¡ãããªãã£ãå¥ã®ã¢ãžã¥ãŒã«ãèŠã€ãããæŽ»çºã«çµäºããå¿
èŠããããŸããã
ã ãã4幎-ããã¯ããªãé·ãæéã§ãããã®å€ãæ£åœåããããã©ãããçè§£ããããã«ãããã€ãã®ã¡ããªãã¯ãæžãçããŸããããã®äžéšã¯ã¹ã©ã€ãã«è¡šç€ºãããŠããŸãããããããããªããããªãã®ããããã¯ããã®äœåãŸãã¯ãã®äœåã®éã®åæè©äŸ¡ã«ééããããã§ããããåãééããç¯ããŸãããåœåãè©äŸ¡ã¯1幎åã§ããããããŠä»ã§ãããã¹ãŠãçµãã£ããšãã«ã2幎以äžããã®æ°åãåŒã¶äººã¯ã»ãšãã©ããŸãããã芧ã®ãšãããããŒã¹ã¯ããã»ã©å€§ãããããŸããããããã»ã©å°ããã¯ãããŸãããã³ãŒããååŸããå Žåããã®ãããªæ°å€ã0ã§æžãã«ã¯ã1æ¥ãããçŽ80è¡ãæžãå¿
èŠããããŸããããã¯ããã§ã¯ãªããå°ããªããŒã ã«ãšã£ãŠãå€ãã®ããšã§ããæå€§ã®æéã¯ãããŸããŸãªãœãªã¥ãŒã·ã§ã³ã®èª¿æ»ãšæ¯èŒã«è²»ããããŸãããæè¡çã§ã¯ãªãä»ã®ãã€ã³ãã®ãã¡ãããã€ããããŸããã芧ã®ãšãããç°åã«ã¯ãããŸããŸãªããŒã ãããŸããŸãªå Žæã§åããŠããçŽ30人ãé¢äžããŸããããããŠããã®ãããªçµåãããããŒã ã®èª¿æŽã«ã¯ããªãé·ãæéãããããŸããããã€ã³ãã®1ã€ã¯çŠç¹ã®åªå€±ã§ããããé·ãéãç§ã¯èªåã®ç®ã§ããã«åºããããŸã§ãããäœã§ããããèããŠããŸãããäºå®ãç§ãã¡ã¯ããã¢ã¯ãã£ãã§ãããã»ãšãã©ã®å ŽåãOracleã§ãã®ãããªå€§ããªåé¡ã¯çºçããŠããªãã£ãããããã¹ãŠã®ç§»è¡ã¿ã¹ã¯ã¯å°ãããã¯ã°ã©ãŠã³ãã§è¡ãããŸããããŸããçæçãªã¿ã¹ã¯ãããªããã£ãããããã®æŠç¥çæ¹åæ§ã¯ãããã«èæ¯ã«è¿œãããããŸãããç§»è¡ã1ã2é±éå¿ããå ŽåããããŸããã
PostgreSQLã¯éåžžã«åªããããŒã¿ããŒã¹ã§ãããšããäºå®ã«ããããããããªãªãŒã¹ããšã«ãŸããŸãæ°ã«å
¥ã£ãŠããŸãããããã§ãç§»è¡äžã«ããã€ãã®ãã€ã³ããäžè¶³ããŠããŸããããžã§ãã¯ãOracleã§ã¯ããŒã¿ããŒã¹èªäœã«ååšãããã¬ãŒã ã¯ãŒã¯ãè¶
ããŠããçš®ã®crontabãå®è¡ããããšã¯çããããšã§ãããããã«ãããããã¹ãŠãç£èŠãããã¹ãŠãæ£åžžã«èµ·åããã³å®è¡ãããããšã確èªããå¿
èŠããããŸãããªãœãŒã¹ç®¡çïŒããã»ã¹éãããšãã°ãŠãŒã¶ãŒã¯ãšãªãšçµ±èšéã§ãªãœãŒã¹ãå
±æãããšããå ŽåããããŸããç§ãæãã«ãOracleãäœåãç¯çŽããã®ã§ãOracleã§æãã¯ãŒã«ãªã®ã¯ãã©ãã·ã¥ããã¯ã§ããããã¯ãããããŒãžã§ã³ãçæé埩å
ããæ©äŒã§ããç§ãã¡ã¯äŒŒããããªããšãèããŠããŸãããä»ã§ã¯postgresã§ãããå®è£
ããããšãèããŠããŸãããªããªããã€ã³ã·ãã³ãã®ããã«å€§ããªãšã³ãã£ãã£ã埩å
ããå¿
èŠããã£ãããã§ãããŸããOEMïŒOracle Enterprise ManagementïŒ-ããã¯ãã®ãããªWebã¢ããªã±ãŒã·ã§ã³ã§ããç¹å®ã®åé¡ãçºçãããšãDBAã¯ãã®OEMã«ç»ããããã«ãããã¹ãŠã®ã¢ã¯ãã£ããã£ã確èªããŸããã¹ããŒãªãŒã調ã¹ãäœãèµ·ãã£ãã®ãã確èªããããŸããŸãªåŽé¢ã®çžäºäœçšãæ¯èŒããããããçš®é¡ã®ç®¡çäœæ¥ãè¡ãããšãã§ããŸãã PostgreSQLã§ã¯ããã¡ãããDBAã¯æå
ã§ç²ŸéããŠããããããã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããå Žåãšåãé床ã§ãã¹ãŠã®ã¯ãšãªãçºè¡ã§ããŸãããDBA以å€ã®äººã«ãšã£ãŠãèŠåŽããŸãããããã£ãŠãç¬èªã®OEMããŒãžã§ã³ãäœæããŸããããããŒãã«ãšã¯ãšãªã®æµéã®å
šå±¥æŽãä¿åããããšãéèŠã§ããããã®çµæãããã«è¡ã£ãŠé床ãäœäžããŠãããã®ã確èªããããããçš®é¡ã®é¢ä¿ã確èªããã³ãŒãã«å€æŽãå ããããšãã§ããŸããã
ã¿ã©ãç§ãã¡ã¯ãŸã 屿©ãè²·ããŸããã§ããããéã¯å¢ãç¶ããŠããã®ã§ãPostgreSQLã§ãã§ã«Oracleãæ±ããŠããã®ãšåãåé¡ã«çŽé¢ããŠããŸãããããã¯å€§èŠæš¡ã§ãããããã£ãŠãæåã«ééããåé¡ã¯ãã£ã¹ã¯ã®å¶éã§ããããæç¹ã§ãããã€ãã®ããŒãã£ã·ã§ã³ã§éRAIDæäœãè¡ãå¿
èŠãããããŸããããããã£ãŠãRAID-10ãRAID-5ã«å€ãããšæãããŸãããã®æäœã®äž»ãªåé¡ã¯ããããã®ããŒãã£ã·ã§ã³ã«ä¿åãããŠããããŒã¿ã倱ãããããšã§ãããã®ããããã¹ãŠãããã«åããããã«ãã£ã¹ã¯äžã®ã¹ããããåçããå¿
èŠããããŸããããªã¯ãšã¹ãã«ã¯ãåé¡ããããŸããåŠçã®ããã€ãã®å¶éã«çŽé¢ããŠãããäžéšã®æ©èœããªãã«ããå¿
èŠãããããŸããããã«ãpostgres ããå¥ã®å ŽæãŸã§ãå€ãã®ã¹ããŒã¹ãšåŠçãå¿
èŠãšããèšå€§ãªçµ±èšãåããç¹å¥ãªæ¹æ³ã§ãã®æ¹åå
šäœãéçºããŸãããæ°ããããŒãžã§ã³ãèŠãŸãããïŒç§ãã¡ã¯èŠãŠèŠãŸããããäž»ãªçµ±èšãç°¡åã«Hadoopã«è»¢éããŸããã hdupã«ImpalaããããŸãããã®ãããªåæ±ç¶ã®ãå®éã«ã¯ãããŒã¿ãåŠçããããŒã¿ããŒã¹ããããŠãHadoopã¯ã©ã¹ã¿ãŒå
ã§ãè«æ±ãçæãžã§ãã®äœæ¥ã®ãããã«ãå¿
èŠãšãããªãèšå€§ãªçµ±èšããã¹ãŠæœåºãããšããæŠç¥çãªã¿ã¹ã¯ããããŸãããã®ãããç§ãã¡ã®ãªãã¬ãŒã¿ãŒã¯æéããšã®çµ±èšãèŠãã®ã奜ãã§ããã¡ã€ã³ã€ãã³ãããŒãã«ã®ããŒã®ããªã¥ãŒã ã¯éåžžã«å€§ãããããã¯ãµãŒããŒã«ãšã£ãŠé«äŸ¡ãªãããHadoopã«æéããšã®çµ±èšãæ¢ã«æçš¿ããŸãããPG Day'17
ã®ããŒãå¥ã®æ¡å€§ã¯ãããããŒã¿ãŠã§ã¢ããŠã¹ããå¥ã®ããŒã¿ãŠã§ã¢ããŠã¹ãžã®ç§»è¡ã®ãããã¯ã«é¢ãããªã¹ããŒãšã¹ããŒã«ãŒã®é¢å¿ãé«ããŸãããç§»è¡ã®åé¡ã¯ãã»ãŒãã¹ãŠã®ã»ã¯ã·ã§ã³ã§å¯ŸåŠãããŸãããã ãã誰ã質åããŸããïŒç¹ã«ããªãã®ããã«ãç§ãã¡ã¯ããã€ãã®è峿·±ãã¬ããŒããæç€ºããæºåãããŠããŸããããžã«Sozykinã®Yandexã®ã¯ãäŒãããŸãPotgreSQLãžã®Oracleããã®ç§»è¡ãµãŒãã¹ãããŒãã¿ãªãYandexã®å°éå®¶ã¯ãããŠã³ã¿ã€ã ãããã«ãæ¬åœã«å·šå€§ãªããŒã¿ããŒã¹ãç§»è¡ããæ¹æ³ã«ã€ããŠã®åºæ¿çãªè©±ããã¢ã¬ã¯ãµã³ããŒã³ããã³ãå瀟ããPostgresã®ãããã§ãã·ã§ãã«ã«ãã®å ±åæžã§ã¯ããç§ãã¡ã®å¿çUber'uã¯ããMySQLãžã®PostgreSQLã®ããã¯ã§äººæ°ã®ã¿ã¯ã·ãŒãµãŒãã¹ãåããçšåºŠã»ã³ã»ãŒã·ã§ãã«ãªè©±ã®è§£æãè¡ããŸããDistilleryã®Kristina Kucherovaãã圌女ãšåœŒå¥³ã®ååããã·ã¹ãã ã®OLTPéšåã®MS SQLããPostgreSQLãžã®ç§»è¡ãããã³ãããã®çµæãããŠã Oracleãå®è¡ããŠãã25ã®DBMSããã®Greenplumã§ã®ãªã³ã©ã€ã³ããŒã¿è€è£œã«é¢ãã4çªç®ã®è峿·±ãã¬ããŒãã¯ã Tinkoff Bankã®Date Warehouse管çã°ã«ãŒãã®è²¬ä»»è
ã§ãã Dmitry Pavlovã«ãã£ãŠæºåãããŠããŸããããããªãŒãPG Dayã§æŒããã®ã¯ãããåããŠã§ã¯ãããŸããã圌ã®ä»¥åã®å ±åã¯å€§æåã§ãããæºå¡ã®éšå±ãéããŸããããã®å·ãåºçã«åããŠæºåãããçºè¡ããã¿ã³ãæŒãæºåãã§ããæåŸã®ç¬éã«ãç ç©¶æãVoskhodãã®ååãã¬ããŒããç³è«ããŸãããããããªãŒã»ãã®ãã³ã³ãèªãããŠã³ã¿ã€ã ãæå°éã«æããŠãDB2ããPostgreSQLãžã®ç¶æ
ã·ã¹ãã ãMirãïŒ10 TBãè¶
ããããŒã¿ïŒïŒã®ããŒã¿ããŒã¹ã®æ£åžžãªç§»è¡ãç¬èªã®ç§»è¡ã®æºåãããŠããŸããïŒããã¹ãã¢ããå¥ã®ã¹ãã¢ã«æ¢ã«æ£åžžã«ç§»è¡ããçµéšãå
±æããããšæã£ãŠããŸããïŒPG Dayã«æ¥ãŠãæ¥ã®äŸ¡æ Œã§ãã±ããã賌å
¥ããã¬ããŒããç³è«ããŠãã ãããç· ãåãã¯ããããã§ãïŒå€ã«ãµã³ã¯ãããã«ãã«ã¯ã§ãäŒãããŸãããïŒ