å人ãã¡ã翻蚳ã®ç¬¬2éšãPostgreSQLã®æ¹ãè¯ãã§ããïŒãã«æ³šç®ããŠãã ããã ç§ãã¡ã¯ããããã³ã¡ã³ãã®æåã®éšåãšåãç±çãªè°è«ãåŒãèµ·ããããšãé¡ã£ãŠããŸãã ãŸãã PG Day'16 Russiaã§å人çã«è°è«ãç¶ããŠãããŸããPostgreSQLã®ã¹ããŒã¬ã³ã¯ããäžçã§æãå
é²çãªãªãŒãã³ãœãŒã¹ããŒã¿ããŒã¹ãã§ãããšäž»åŒµããŠããŸãã ãã®ã·ãªãŒãºã®
æåã®éšåã§ã¯ãããŒã¿ã¹ãã¬ãŒãžïŒã¢ãã«ãæ§é ãåããµã€ãºå¶éïŒãèŠãŠãPostgresã圌ã®èšèãè¡åã§ç¢ºèªããããã€ãã®çç±ã説æããŸããã 第2éšã§ã¯ãã€ã³ããã¯ã¹äœæãä»®æ³ããŒãã«ãã¯ãšãªæ©èœãªã©ãããŒã¿ã®æäœãšæ€çŽ¢ã«ã€ããŠèª¬æããŸãã ãã®ã·ãªãŒãºã§ã¯ãPostgreSQLãä»ã®ãªãŒãã³ãœãŒã¹ããŒã¿ããŒã¹ãã€ãŸãMySQLãMariaDBãFirebirdãšåºå¥ããããã®ãèŠã€ããŸãã

玢åŒä»ã
Postgresã¯ãä»ã®ãªãŒãã³ãœãŒã¹ããŒã¿ããŒã¹ã«ã¯ãªãã€ã³ããã¯ã¹æ©èœãæäŸããŸãã æšæºã€ã³ããã¯ã¹ã«å ããŠãéšåã€ã³ããã¯ã¹ãæ©èœã€ã³ããã¯ã¹ãGiSTããã³GINã€ã³ããã¯ã¹ããµããŒãããŠããŸãã ãããã®ããã€ãããã詳现ã«èŠãŠã¿ãŸãããã
éšåã€ã³ããã¯ã¹
ããŒãã«ã®ç¹å®ã®ãµãã»ããã®ã¿ã«ã€ã³ããã¯ã¹ãäœæããå Žåãéšåã€ã³ããã¯ã¹ãäœæã§ããŸãã ããšãã°ãåã®å€ãç¹å®ã®æ¡ä»¶ã«å¯Ÿå¿ããè¡ã®ã¿ã ãã®åªããæ©èœã«ãããé©åãªã€ã³ããã¯ã¹ãµã€ãºãç¶æã§ãããããããã©ãŒãã³ã¹ãåäžãããã£ã¹ã¯é åã®äœ¿çšéãåæžãããŸãã éšåã€ã³ããã¯ã¹ã®éèŠãªåŽé¢ã¯ãã€ã³ããã¯ã¹åãæ¡ä»¶ã決å®ããåãšç°ãªãå Žåãããããšã§ãã ããšãã°ãå
éšãã¹ãçšã«äœæãããã¢ã«ãŠã³ãã§ã¯ãªããææãŠãŒã¶ãŒã®ã¢ã«ãŠã³ãã®ã¿ã«ã€ã³ããã¯ã¹ãäœæããŸãã
MySQLã§ã¯ãæ¡ä»¶ã«åºã¥ããŠã€ã³ããã¯ã¹ä»ãã®è¡ãå¶éããã®ã§ã¯ãªãããéšåã€ã³ããã¯ã¹ããšããçšèªã䜿çšããŠãã€ã³ããã¯ã¹ä»ãã®å€ãç¹å®ã®ãã€ãæ°ã«åãæšãŠãããšããããŸãã ç§ãã¡ã説æãã圢åŒã®éšåã€ã³ããã¯ã¹ã¯ãMySQLã§ã¯ãµããŒããããŠããŸããã
æ©èœã€ã³ããã¯ã¹
é¢æ°ã€ã³ããã¯ã¹ïŒãŸãã¯åŒããŒã¹ã®ã€ã³ããã¯ã¹ïŒã¯ãã€ã³ããã¯ã¹äœæã®ããã«åãäºåèšç®ããé¢æ°ã䜿çšããŠäœæã§ããŸãã æ°ããå€ã«ã¯ãã¯ãšãªãå®è¡ããããã³ã«èšç®ãããã®ã§ã¯ãªããã¯ãšãªå®è¡ã®å®æ°ãšããŠã€ã³ããã¯ã¹ãä»ããããæ±ãããŸãã ããšãã°ãURLã®ã¯ãªãã¯ããããã圢åŒã§åéããWebã¯ãªãã¯ãã°ãããå ŽåãããŒã¿ãæ£èŠåããããã®
å°æåã®ãªã³ã¯ã«ã€ãªããã€ã³ããã¯ã¹ãäœæã§ããŸãïŒPostgreSQLã¯å€§æåãšå°æåãåºå¥ããŸãïŒ
compose.ioããã³
Composeã ioã¯ç°ãªãçµæãšèŠãªãããŸãïŒïŒ
GISTãšGINïŒããã³BRINïŒïŒ
GiSTïŒæ±çšæ€çŽ¢ããªãŒïŒã䜿çšãããšãBããªãŒãRããªãŒãããã³ãŠãŒã¶ãŒå®çŸ©ã®ã€ã³ããã¯ã¹ã¿ã€ããçµã¿åãããŠãé«åºŠãªã¯ãšãªæ©èœãåããã«ã¹ã¿ã ã€ã³ããã¯ã¹ãäœæã§ããŸãã GiSTã¯ãPostGISïŒ1æ以éãã¹ãŠã®PostgreSQLã€ã³ã¹ããŒã«ã§æšæºåãããïŒããã³OpenFTSïŒãªãŒãã³ãœãŒã¹ã³ãŒãã䜿çšããå
šææ€çŽ¢ãšã³ãžã³ïŒã§äœ¿çšãããŸãã Postgresã¯SP-GiSTããµããŒãããŠããŸããããã«ãããéåžžã«é«éãªæ€çŽ¢ã®ããã«ããŒãã£ã·ã§ã³æ€çŽ¢ã€ã³ããã¯ã¹ãäœæã§ããŸãã
GINïŒGeneralized Inverted IndexïŒã䜿çšãããšãè€åããŒã¿åã«ã€ã³ããã¯ã¹ãä»ããããšãã§ããŸããããã«ãããä»ã®ããŒã¿åãããŸããŸãªæ¹æ³ã§çµã¿åãããŠãå®å
šã«åå¥ã®äœããäœæã§ããŸãã è€åããŒã¿åã®è©³çŽ°ãªèª¬æã¯
ããã®ã·ãªãŒãºã®
æåã®éšåã«ãããŸãã
GISTããã³GINã€ã³ããã¯ã¹ãäœæããããã®æ§æã¯æ¬¡ã®ãšããã§ãïŒ
CREATE INDEX ... ON ... USING GIST | GIN ....éåžžã«ç°¡åã§ãïŒ
PostgreSQL 9.5ã§ã¯ãBRINïŒãããã¯ç¯å²ã€ã³ããã¯ã¹ïŒãå°å
¥ãããŸãããããã«ããã倧ããªããŒãã«ãã€ã³ããã¯ã¹äœæçšã®åã«åºã¥ããç¯å²ã«åå²ã§ããŸãã ããã¯ãã¯ãšãªãã©ã³ããŒããªã¯ãšã¹ãã§æå®ãããç¯å²ã®ã¿ãã¹ãã£ã³ã§ããããšãæå³ããŸãã ãŸããç¯å²ãã€ã³ããã¯ã¹ä»ãããå Žåãã€ã³ããã¯ã¹ä»ãã«å¿
èŠãªãã£ã¹ã¯å®¹éã¯ãæšæºã®BããªãŒã€ã³ããã¯ã¹ã®å Žåããã倧å¹
ã«å°ãªããªããŸãã
æ¯èŒã®ããã«
ç§ãã¡ãæ€èšããŠããä»ã®SQLããŒã¿ããŒã¹ã¯ãæ©èœã€ã³ããã¯ã¹ã«é¢ããŠã®ã£ãããæžãããŸãã MySQL 5.7.6ã§ã¯ãæ©èœã€ã³ããã¯ã¹ãšããŠäœ¿çšã§ããçæãããåãå°å
¥ãããŸããã MariaDBã§ã¯ãä»®æ³ïŒãçæããŸãã¯ãèšç®ããšãåŒã°ããïŒåãããŒãžã§ã³5.2ã«ç»å ŽããŸããããçµã¿èŸŒã¿é¢æ°ã䜿çšããŠåãäœæããããšã®ã¿ããµããŒãããŠããŸãïŒãŠãŒã¶ãŒå®çŸ©é¢æ°ã¯ãããŸããïŒã ããŒãžã§ã³2.0ã§ã¯ãFirebirdã¯èšç®åã䜿çšããã€ã³ããã¯ã¹åŒãå°å
¥ããŸããã ãã ãããããã®ããŒã¿ããŒã¹ã¯ããããéšåã€ã³ããã¯ã¹ãGiSTã€ã³ããã¯ã¹ããŸãã¯GINã€ã³ããã¯ã¹ããµããŒãããŠããŸããã ããã«ãæåã®éšåã§ããã€ãã£ãJSONããŒã¿åã¯ãããã®ããŒã¿ããŒã¹ã§ã€ã³ããã¯ã¹ä»ãã§ããªãããšã説æããŸããã
ãã¹ãŠã®ã€ã³ããã¯ã¹ãèšå®ããããã©ãŒãã³ã¹ãåæããå Žåã¯ãmySidewalkã®Matt Barrã®èšäº
ãSimple PostgreSQL Index Verificationããå¿
ãèªãã§ãã ããã
ä»®æ³ããŒãã«é¢æ°
å€ãã®ã¯ãšãªã«ã¯ä»®æ³ããŒãã«ãå¿
èŠã§ãã æ¯èŒããŠãããã¹ãŠã®SQLããŒã¿ããŒã¹ã¯ãäœããã®ä»®æ³ããŒãã«æ©èœãæäŸããŸãã PostgreSQLã¯ããã«å€ããæäŸããŸãã
CTEãšååž°
Postgresã¯ã
WITHå¥ã䜿çšããå
±éããŒãã«åŒïŒCTEïŒããµããŒãããŠããŸãã ãã®æ©èœã¯ã
PostgreSQLã®èšäº
-SeriesãRandomããã³Withã§å®èšŒãããŠã
ãŸã ã CTEã䜿çšãããšãã¯ãšãªå
ã§ä»®æ³ããŒãã«ãäœæããè«ççãªæäœã®ã·ãŒã±ã³ã¹ãè¡šçŸã§ããŸãã ãããã£ãŠãã¯ãšãªã®å¥ã®éšåã«ãã¹ããããã¯ãšãªã䜿çšããŠäœæãããä»®æ³ããŒãã«ããããèªã¿åããšãã¹ããã¯ããã«ç°¡åã§ãã PostgreSQL CTEãååž°çã«äœ¿çšã§ããŸãã ãã®äŸ¿å©ãªæ©èœã䜿çšãããšãè¿ãããããŒã¿ã®ã¬ãã«ããªããªããŸã§ãã¯ãšãªãç¹°ãè¿ãåç
§ããªããéå±€ããã©ãããšãã§ããŸãã 以äžã¯ããããã¯åé¡æ³ã§ã¬ãã«ãããŒããããã³èŠªé¢ä¿ãèå¥ããååž°çCTEã®äŸã§ãã
MySQLããã³MariaDBã¯WITHå¥ã䜿çšããªããããæ£åŒã«ã¯CTEããµããŒãããŸããã ãã¹ããããã¯ãšãªã䜿çšããŠããããã®ããŒã¿ããŒã¹ã«æŽŸçããŒãã«ãäœæã§ããŸãããååž°ã¯èš±å¯ãããŸããã ããã«ãMySQLã®ã¯ãšãªãªããã£ãã€ã¶ãŒãããŒãžã§ã³5.6ã®ãªãªãŒã¹ä»¥éã«æ¹åããããšããäºå®ã«ããããããããã®ããŒã¿ããŒã¹ã®ãã¹ããããã¯ãšãªã¯åé¡ã§ç¥ãããŠãããããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸãã ãã®ç¹ã§ã®Firebirdã¯MySQLããã³MariaDBãããåªããŠãããæ©èœçã«ã¯PostgresãšäžèŽããŠããŸããCTEwith WITHããµããŒãããååž°ã®å¯èœæ§ãæäŸããŸãã
ãããªã¢ã©ã€ãºããã¥ãŒ
ãããªã¢ã©ã€ãºããã¥ãŒã¯ãPostgreSQLããµããŒããããã1ã€ã®äŸ¿å©ãªä»®æ³ããŒãã«æ©èœã§ãã éåžžã®ãã¥ãŒãšåæ§ã«ãé »ç¹ã«äœ¿çšããã¯ãšãªã®çµæãè¡šããŸãããéãã¯çµæãéåžžã®ããŒãã«ã®ããã«ãã£ã¹ã¯ã«ä¿åãããããšã§ãã ãããªã¢ã©ã€ãºããã¥ãŒã«ã€ã³ããã¯ã¹ãä»ããããšãã§ããŸãã ããã«ãåŒã³åºããããã³ã«åäœæãããéåžžã®ãã¥ãŒãšã¯ç°ãªããä¿åãããçµæãæã€ãã¥ãŒã¯æéã®çµéãšãšãã«ã³ããããããŸãã æå³çã«æŽæ°ããªãéããæŽæ°ãããŸããã ããã«ããããããªã¢ã©ã€ãºããã¥ãŒã䜿çšããã¯ãšãªã®å®è¡é床ã倧å¹
ã«åäžããŸãã éåžžã®ãã¥ãŒã䜿çšããããè€éãªããŒãã«çµåãè¡ã£ãããã¯ãšãªã§ã°ã«ãŒãåæ©èœãå®è¡ããããã代ããã«ãå¿
èŠãªããŒã¿ããã¹ãŠæºåãããŠãã£ã¹ã¯äžã§åŸ
æ©ããŠãããããªã¢ã©ã€ãºããã¥ãŒã䜿çšããŸãã æ ŒçŽãããçµæã䜿çšããŠãããªã¢ã©ã€ãºããã¥ãŒã®ããŒã¿ãæŽæ°ããå¿
èŠãããå ŽåãREFRESHã³ãã³ãã䜿çšããŠãªã³ããã³ãã§ãããå®è¡ã§ããŸãã 以äžã«ãåå
¥ã®èŠçŽããŒã¿ãæäŸãããããªã¢ã©ã€ãºããã¥ãŒã®äŸã瀺ããŸãã
FirebirdãMySQLãMariaDBã¯ãããªã¢ã©ã€ãºããã¥ãŒããµããŒãããŠããŸããããéåžžã®ããŒãã«ãäœæããã¹ãã¢ãããã·ãŒãžã£ãŸãã¯ããªã¬ãŒã䜿çšããŠå¿
èŠã«å¿ããŠæŽæ°ããããšã«ããããããã®ããŒã¿ããŒã¹ã§åé¿çã䜿çšã§ããŸãã
ã¯ãšãªæ©èœ
Postgresã«ã¯åºç¯ãªã¯ãšãªæ©èœããããŸãã
åã®ã»ã¯ã·ã§ã³ã§æ¢ã«WITHã«ã€ããŠå°ã説æããŸããã SELECTã¯ãšãªã§äœ¿çšã§ããè¿œå ã®é¢æ°ãããã€ãèŠãŠã¿ãŸãããã
ã¯ãšãªéçŽ
PostgreSQLã¯ãSELECTã¹ããŒãã¡ã³ãéã®çžäºäœçšã®ããã«UNIONãINTERSECTãããã³EXCEPTå¥ãæäŸããŸãã UNIONã¯ã2çªç®ã®SELECTã¯ãšãªã®çµæãæåã®SELECTã¯ãšãªã®çµæã«è¿œå ããŸãã INTERSECTã¯ãäž¡æ¹ã®SELECTã¹ããŒãã¡ã³ãã«äžèŽããè¡ã®ã¿ãè¿ããŸãã EXCEPTã¯ã2çªç®ã®SELECTã¯ãšãªã®è¡ãšäžèŽããªãæåã®SELECTã¯ãšãªã®è¡ã®ã¿ãè¿ããŸãã EXCEPTã䜿çšããäŸãèŠãŠã¿ãŸããããããã§ã¯ãéå»1é±éã«ãŠãŒã¶ãŒãã¡ãŒã«ãåä¿¡ããŠââè¿ä¿¡ããå Žåãé€ãããŠãŒã¶ãŒã®é£çµ¡å
æ
å ±ãè¿ããŸãã
SELECT c.lastName, c.firstName, c.email FROM customers c EXCEPT SELECT e.lastName, e.firstName, e.email FROM email_log e WHERE e.email_date > current_date - interval '7 days' AND e.email_action_date > current_date - interval '7 days' AND email_action_type = 'response';
MySQLãMariaDBãããã³Firebirdã¯UNIONããµããŒãããŠããŸãããINTERSECTãŸãã¯EXCEPTã®ãããããµããŒãããŠããŸããã ãã ããã¯ãšãªã§joinããã³EXISTSå¥ã䜿çšãããšãPostgreSQLãšåãçµæãåŸãããšãã§ããŸãã ããããèŠæ±ã¯ããè€éã«ãªããŸãã
ãŠã£ã³ããŠé¢æ°
ãŠã£ã³ããŠé¢æ°ã¯ãçµæã®ããã€ãã®è¡ã®äžã«ããéåé¢æ°ã§ãïŒãµãã»ããã«ããŠã£ã³ããŠããæäŸããïŒã¯ãéåžžã«äŸ¿å©ã§ãã æ¬è³ªçã«ã¯ãé¢æ°ãå®è¡ããããã«ãçŸåšã®è¡ã«å±ããã»ã¯ã·ã§ã³å
ã®è¡ãå埩åŠçã§ããŸãã æšæºé¢æ°ã«ã¯ãROW_NUMBERïŒïŒãRANKïŒïŒãDENSE_RANKïŒïŒãããã³PERCENT_RANKïŒïŒãå«ãŸããŸãã ãªãã·ã§ã³ã§PARTITION BYããã³ORDER BYãšãšãã«äœ¿çšãããOVERããŒã¯ãŒãã¯ããŠã£ã³ããŠé¢æ°ã䜿çšãããŠããããšã瀺ããŸãã äŸãšããŠã以äžã®ãé¢æ°ãšãã®ä»ãã®æ®µèœã§ã¯ãROW_NUMBERïŒïŒOVER ...ã®ãŠã£ã³ããŠé¢æ°ã䜿çšããŠãäžé£ã®æ°å€ã®äžå€®å€ã決å®ããŸããã ãŠã£ã³ããŠé¢æ°ã䜿çšããã¯ãšãªã®WINDOWå¥ã¯ãªãã·ã§ã³ã§ãããé åºãç¶æããããã«ãŠã£ã³ããŠãäœæããŠååãä»ããããšãã§ããŸãã
FirebirdãMySQLãMariaDBã¯çŸåšããŠã£ã³ããŠé¢æ°ããµããŒãããŠããŸããããFirebird 3ã®èšç»æã«æ°å¹Žåã«çºè¡šãããŸããã
暪ãµãã¯ãšãª
LATERALããŒã¯ãŒããFROMå¥ã®ãµãã¯ãšãªã«é©çšããŠããµãã¯ãšãªãšãã®åã«äœæãããä»ã®ããŒãã«ãŸãã¯ä»®æ³ããŒãã«ãšã®çžäºåç
§ãè¿œå ã§ããŸãã ããã«ãããããç°¡åãªã¯ãšãªãäœæã§ããŸãã ããã¯ãåè¡ãçžäºåç
§ãããããŒãã«ã«å¯ŸããŠè©äŸ¡ãããããã«æ©èœããŸããããã¯ãã¯ãšãªã®å®è¡äžã®é床ã€ã³ãžã±ãŒã¿ã®æ¹åãæå³ããå ŽåããããŸãã 以äžã¯ãåŠçã®ãªã¹ããšåœŒããæè¿ãã¯ãããžãŒã«é¢ããäœããèªãã ãã©ããã«ã€ããŠã®æ
å ±ãååŸãããäŸã§ãã
MySQLãFirebirdãããã³MariaDBã¯çŸåšã暪æ¹åã®ãµãã¯ãšãªããµããŒãããŠããŸããã ç¹°ãè¿ããŸãããåé¿çãèŠã€ããããšãã§ããŸãããããã«ããã¯ãšãªãããè€éã«ãªããŸãã
ãã1ã€ã®æ³šæïŒMySQLãšMariaDBã¯FULL OUTER JOINããµããŒãããŠããŸããããUNION ALLã䜿çšããŠ2ã€ã®ããŒãã«ã®ãã¹ãŠã®è¡ãçµåããåé¿çã䜿çšã§ããŸãã
æ©èœãªã©
PostgreSQLã¯
ããã®ã·ãªãŒãºã®
æåã®éšåã§è©³çŽ°ã«èª¬æããç¹æ®ãªããŒã¿åããµããŒããããã®ãå«ããå
ç¢ãªçµã¿èŸŒã¿æŒç®åãšé¢æ°ãæäŸããŸãã ããã«ãç¬èªã®æŒç®åãšé¢æ°ïŒéçŽãå«ãïŒãããã³ã¹ãã¢ãããã·ãŒãžã£ãšããªã¬ãŒãäœæã§ããŸãã ãããã¯ãåºãããããïŒïŒïŒããã¹ãŠã詳现ã«èª¿ã¹ãããšã¯ã§ããŸããããé¢æ°ã®ç°¡åãªäŸãããã€ãèŠãŠã¿ãŸãããã
Postgresã¯ãã¯ãšãªèšèªãæç¶ãèšèªãCèšèªãå
éšã®4çš®é¡ã®ãŠãŒã¶ãŒå®çŸ©é¢æ°ããµããŒãããŠããŸãã åãã¥ãŒã¯ãåºæ¬ããŒã¿åãšè€åããŒã¿åã®äž¡æ¹ãååŸããŠè¿ãããšãã§ããŸãã PostgreSQLã§ã¯ãCREATE FUNCTIONã³ãã³ãã¯é¢æ°ã®äœæã ãã§ãªããã¹ãã¢ãããã·ãŒãžã£ã®äœæã«ã䜿çšãããããšã«æ³šæããŠãã ããã
è€åããŒã¿åãè¿ãé¢æ°ãäœæããäŸãèŠãŠã¿ãŸãããã
äžé£ã®æ°å€ããŒã¿ã®äžå€®å€ãèŠã€ããããã®å®éã®é¢æ°ã®äŸã次ã«ç€ºããŸãã
ãã®æ¯èŒã«é¢ä¿ããä»ã®ãªãŒãã³ãœãŒã¹SQLããŒã¿ããŒã¹ã§ã¯ãç¬èªã®é¢æ°ãã¹ãã¢ãããã·ãŒãžã£ãããªã¬ãŒãäœæããããšãã§ããŸãããPostgresãæã£ãŠããã®ãšåãçš®é¡ã®ããŒã¿åãšããŒãœãã©ã€ãºãªãã·ã§ã³ã¯ãããŸããã ããã«ãPGã§ã¯ãç¬èªã®æŒç®åãäœæã§ããŸãã ä»ã®æ¯èŒãããããŒã¿ããŒã¹ã¯ããŠãŒã¶ãŒå®çŸ©æŒç®åããµããŒãããŠããŸããã
Postgresãåå¥åããå¯èœæ§ã¯ãMySQLãMariaDBãFirebirdã®äžã§ä»ã«é¡ãèŠãŸããã
èšèªæ¡åŒµ
PostgreSQLã«ã¯å€ãã®èšèªæ¡åŒµæ©èœããããŸãã ãããã®ããã€ãã¯ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®äžéšã§ãããä»ã®å€ãã¯ãµãŒãããŒãã£ã®éçºè
ãéããŠå©çšå¯èœã§ãã
Composeã§ã¯ãã€ã³ã¹ããŒã«ã®ã»ãã¥ãªãã£ã確ä¿ããããã«ãPostgreSQLã®ä¿¡é Œã§ããèšèªæ¡åŒµæ©èœã®ã¿ããµããŒãããŠããŸãã 2æã«
PL / Perl ã8æã«
PL / v8 ïŒJavaScriptããŒã¹ã®æç¶ãèšèªïŒã®ãµããŒããè¿œå ããŸããã SQLããŒã¹ã®PL / pgSQLçµã¿èŸŒã¿èšèªïŒComposeã€ã³ã¹ããŒã«ã§ãå©çšå¯èœïŒãããå€ãã®çµã¿èŸŒã¿é¢æ°ãæã€ãããã®èšèªæ¡åŒµæ©èœã«ããããµãŒããŒäžã®ããŒã¿ãæäœããã³åŠçããããã®æŽç·Žãããã¹ã¯ãªãããäœæã§ããŸãã
ãŸãšãããš
PostgreSQLã¯éåžžã«æ©èœãè±å¯ã§ãå€ãã®çµã¿èŸŒã¿ã®ãæ©èœããšãããŒãºã«åãããŠããŒãœãã©ã€ãºããã³æ¡åŒµããç¡æ°ã®æ¹æ³ããããŸãã ããã«æ®éçã«èªèãããŠããä¿¡é Œæ§ãšæç床ãå ãããšããã®ããŒã¿ããŒã¹ãœãªã¥ãŒã·ã§ã³ã倧äŒæ¥ã®åªåã«å€ããçç±ãæããã«ãªããŸãã ãã ããå°èŠæš¡ãªãããžã§ã¯ãã§ãæé ãªäŸ¡æ Œã§å¹æçã§ãã
Postgresãä»ã®ãªãŒãã³ãœãŒã¹SQLãœãªã¥ãŒã·ã§ã³ãšåºå¥ããå°æ°ã®æ©èœã«ã€ããŠã®ã¿èª¬æãããšããäºå®ã«ãããããããå®éã«ã¯ããã«å€ãã®æ©èœããããŸãïŒããŒãžã§ã³9.5ã§ããã«ç»å ŽããŸãïŒïŒã ãã®2éšæ§æã®ã·ãªãŒãºããPostgreSQLãéžæããçç±ã®èª¬åŸåã®ããæŠèŠãæäŸããããšãé¡ã£ãŠããŸãã