ã«ãŒã«ã®åããªã¹ã
以äžã®ã»ãŒãã¹ãŠã®ãã€ã³ãã¯ãèŠãã¿ãšé«æã«æºã¡ãæ²ããç©èªã§ãã ãããŠããçã¿ïŒããšããèšèã¯ãç©èªãããŸããã£ãŠãããã€ã³ãã瀺ããŠããããã®èšæ¶ã¯ä»ã§ãå€éããŠããŸãã
- ããŒã¿ããŒã¹ã¹ããŒãã®ããŒãžã§ã³ç®¡ç
ããŒã¿ããŒã¹ã¹ããŒãã¯ãäœæããã³ãŒãã§ãã ããŒãžã§ã³ç®¡çã·ã¹ãã å ã«ããããããžã§ã¯ãã®æ®ãã®ããŒãžã§ã³ãšããŒãžã§ã³ç®¡çãããŠããå¿ èŠããããŸãã PostgreSQLã®å Žåããããã®ç®çã§Pyrseasãæã奜ãã§ãã ã ãã¹ãŠã®PostgreSQLåºæã®ãªããžã§ã¯ããå«ãã¹ããŒããããŒãžã§ã³ç®¡çãããyamlãã¡ã€ã«ã«å€æããŸãã çŽç²ãªSQLãšã¯ç°ãªãããã©ã³ãã§ãã®ãããªãã¡ã€ã«ãæäœããå€æŽãããŒãžãããšäŸ¿å©ã§ãã æåŸã®ã¹ãããã§ã¯ãyamlãã¡ã€ã«ãããŒã¿ããŒã¹ã¹ããŒããšæ¯èŒãããSQLãžã®ç§»è¡ãèªåçã«çæãããŸãã
- çã¿ïŒ æŠéåºå°ã«çŽæ¥å€æŽãé©çšããªãã§ãã ãã
å€æŽãåçŽã§ãéåžžã«ç·æ¥ã§ãæ¬åœã«ãããå Žåã§ãã æåã«ãéçºè ã«åºã¥ããŠé©çšãããã©ã³ãã«ã³ããããããã©ã³ã¯ã«åºã¥ããŠå€æŽãé©çšããå¿ èŠããããŸãïŒæŠéããŒã¹ãšåãïŒã ãããŠããã¹ãŠãäœå¹¹ã«åãŸã£ãããæŠéåºå°ã«ç³è«ããŸãã ããã¯é·ããåŠæ³çã§ãããå€ãã®åé¡ããæããŸãã
- çã¿ïŒ åé€ãŸãã¯æŽæ°ãæžãåã«ãã©ãã«æžãã
ãããŠãã³ãŒããå®è¡ããåã«ãæ¯ãåãã3åã«ãŠã³ãããŠãæ£ããããŒã¹ã®ã»ãã·ã§ã³ã«ããããšã確èªããŠãã ããã ç§ã¯ã3人ã®ãç§ãã¡ã®ç¶ããèµ°ãããšããèããªãã§ãåæšãŠã«ã€ããŠéãã§ããã¢ãŒã¡ã³ïŒ
UPD koropovskiy ïŒçŸåšã®ã»ãã·ã§ã³ã®èªåã³ãããããªãã«èšå®ããæ¹ã䟿å©ã§ãã
tgz ïŒãŸãã¯ãæŽæ°ãšåé€ã®åæžã蟌ã¿ãå§ãŸãåã
- ãã¹ãé§åéçº
å¿ ãæåã«ãã¹ããäœæããŠãããããŒã¿ããŒã¹ãªããžã§ã¯ããäœæããŠãã ããã ã¹ããŒã ãããŒãã«ãé¢æ°ãåãæ¡åŒµæ©èœãªã©ããããããªããžã§ã¯ãã«ã€ããŠè©±ããŠããŸã-äŸå€ã¯ãããŸããïŒ æåã¯é£ããããã«æãããŸãããåŸã§äœåºŠãæè¬ããŸãã åè·¯ãæåã«äœæãããšããŠããäœããèŠèœãšããã¡ã§ãã ãŸãã6ãæã§ããŒãã«ããªãã¡ã¯ã¿ãªã³ã°ããå Žåãäœæãããã¹ãã®ã¿ããããããæ©èœã§ã®çªç¶ã®æ»æããããªããæããŸãã PostgreSQLã®å ŽåãçŽ æŽãããpgTAPæ¡åŒµæ©èœããããŸãã ååè·¯ã§ããã¹ãçšã®é¢æ°ãèšè¿°ããããã®è¿œå åè·¯ãschema_name_tapããäœæããããšããå§ãããŸãã ãããŠãpg_proveãä»ããŠãã¹ããå®è¡ããŸãã
- PITRã調æŽããããšãå¿ããªãã§ãã ãã
ãã£ããã³ãªããšããã³ã¹ã®åœ¹å²ãæããããšãæããŠããŸãããã©ã®ããŒã¹ã«ãããã¯ã¢ãããèšå®ããå¿ èŠããããŸãã ããã«ããã€ã§ãããŒã¹ã埩å ã§ããããšãæãŸããã§ãã ããã¯ãçœå®³åŸ©æ§ã ãã§ãªããéçºè ãããŒã¿ããŒã¹ã®ç¹å®ã®ã¿ã€ã ã¹ã©ã€ã¹ã§äœæ¥ããããã®å€ãã®èå³æ·±ãæ©äŒãæäŸããŸãã PostgreSQLã«ã¯ãã®ããã®ããŒãã³ãããŸãã
- ããŒã¿ã®äžè²«æ§
ããŒã¿ããŒã¹å ã®äžè²«æ§ã®ãªãããŒã¿ãè¯ãçµæãããããããšã¯ãããŸããã§ããã å°æ°ã§ãã£ãŠããããŒã¹å šäœãç°¡åã«ãŽãã«å€ããããšãã§ããŸãã ãããã£ãŠãå€éšããŒããã§ãã¯ãªã©ã®æ£èŠåããã³å¶éã決ããŠç¡èŠããªãã§ãã ããã 蚱容ã¬ãã«ã®è€éããšããã©ãŒãã³ã¹ãåããæ£èŠå圢åŒã§ã¹ããŒã ãå®è£ ã§ããªãããšã確èªããåŸã«ã®ã¿ãéæ£èŠå圢åŒïŒjsonbãªã©ïŒã䜿çšããŠãã ãã-éæ£èŠåãã¥ãŒã¯ãäžè²«æ§ã®ãªãããŒã¿ã«ã€ãªããå¯èœæ§ããããŸãã éæ£èŠåã®æ¯æè ã®ãã¹ãŠã®è°è«ã«ã圌ãã¯çç±ã®ããã«æ£èŠåãæãã€ãããšçããæå³ã®ããè¡šæ ã§é»ã£ãŠããŸãã
- æåã«é
延å¯èœãªå€éšããŒãäœæããŸã
ãã®å Žåããã©ã³ã¶ã¯ã·ã§ã³ã®æåŸã«å¶éã®ãã§ãã¯ã延æããŸããããã«ãããå®è¡äžã«å 責ãšã®äžæŽåãååŸã§ããŸãïŒãã ããæåŸã«ã¯ãã¹ãŠãäžè²«ããŠãããããšã©ãŒãçºçããŸãïŒã ããã«ããã©ã³ã¶ã¯ã·ã§ã³å ã®ãã©ã°ãå³æã«å€æŽããããšã«ããããã©ã³ã¶ã¯ã·ã§ã³ã®é©åãªã¿ã€ãã³ã°ã§å¶éãã§ãã¯ã匷å¶ã§ããŸãã
UPD ã³ã¡ã³ãã¯ãé 延å¯èœã¯å€ãã®ã€ã³ããŒãã¿ã¹ã¯ãåçŽåãããããŸããªãã©ã¯ãã£ã¹ã§ãããããã©ã³ã¶ã¯ã·ã§ã³å ã®ãããã°ããã»ã¹ãè€éã«ããåå¿è éçºè ã«ãšã£ãŠã¯æªããã©ã¯ãã£ã¹ã§ããããšã瀺ããŠããŸãã é 延ããŒã¯ãããŒãæããªããããåªããŠãããšé åºã«åŸããŠããŸããã質åã®å¥ã®èŠæ¹ãæ€èšããŠãã ããã
- ãããªãã¯ã¹ããŒãã䜿çšããªãã§ãã ãã
ããã¯ãæ¡åŒµæ©èœã®æ©èœã®ãŠãŒãã£ãªãã£å³ã§ãã å¿ èŠã«å¿ããŠãåå¥ã®ã¹ããŒã ãäœæããŸãã ããããã¢ãžã¥ãŒã«ã®ããã«æ±ãããšã³ãã£ãã£ã®è«ççã«å¥åã®ã»ããããšã«æ°ããã¹ããŒããäœæããŸãã
- APIã®åå¥ã®ã¹ããŒã
ã¢ããªã±ãŒã·ã§ã³åŽã§åŒã³åºãããé¢æ°ã®å Žåãå¥åã®ã¹ããŒã ãapi_v_version_numberããäœæã§ããŸãã ããã«ãããããŒã¿ããŒã¹ãžã®ã€ã³ã¿ãŒãã§ã€ã¹ã§ããé¢æ°ã®å Žæãæ確ã«å¶åŸ¡ã§ããŸãã ãã®ã¹ããŒã ã®é¢æ°ã«ååãä»ããã«ã¯ããã³ãã¬ãŒããentity_get / post / patch / delete_argumentsãã䜿çšã§ããŸãã
- ç£æ»ããªã¬ãŒ
ããªã¬ãŒã¯ãã¢ã¯ã·ã§ã³ã®ç£æ»ã«æé©ã§ãã ãŸããä»»æã®ããŒãã«ã®ã¢ã¯ã·ã§ã³ãèšé²ãããŠãããŒãµã«ããªã¬ãŒé¢æ°ãäœæããããšããå§ãããŸãã ãããè¡ãã«ã¯ãinformation_schemaããã¿ãŒã²ããããŒãã«ã®æ§é ã«é¢ããããŒã¿ãæœåºããå®è¡ãããŠããã¢ã¯ã·ã§ã³ã«å¿ããŠå€ãè¡ãæ¿å ¥ããããæ°ããè¡ãæ¿å ¥ãããããç解ããŸãã ãã®æ±ºå®ã«ãããã³ãŒãã¯ããæææ·±ãé æçã«ãªããŸãã
ããªã¬ãŒã䜿çšããŠçŽ¯ç©ã¬ãžã¹ã¿ãŒãèšç®ããå Žåã¯ãããžãã¯ã«æ³šæããŠãã ãã-ãšã©ãŒã1ã€ãããäžè²«æ§ã®ãªãããŒã¿ãååŸããå¯èœæ§ããããŸãã åã«ãããšãããã¯éåžžã«å±éºãªã«ã³ããŒã§ãã
- çã¿ïŒ ããŒã¿ãæ°ããã¹ããŒãã«ã€ã³ããŒããã
ããŒã¿ããŒã¹éçºè ã®ç掻ã®äžã§æãæãããããå®æçã«çºçããã€ãã³ãã PostgreSQLã¯FDWãæ¬åœã«å©ããŠãããã®ã§ã9.6ã§ããŸãæ©èœããŸããïŒéçºè ãæ°ã«ãããªããFDWã¯ãªã¢ãŒãåŽã§èšç»ãç«ãŠãããšãã§ããŸãïŒã ãšããã§ã ãå€éšã¹ããŒãã®ã€ã³ããŒãããªã©ã®äŸ¿å©ãªæ§é ããããŸããããã«ãããããŒãã«ã®æã«ã©ãããŒãæžãå¿ èŠããªããªããŸãã ããŒã¿ããŒã¹å ã®æ¢åã®å€éšããŒãšäž»ããŒãåé€ããã³åŸ©å ããããã®äžé£ã®SQLã³ãã³ããä¿åããäžé£ã®é¢æ°ãçšæããããšããå§ãããŸãã ã€ã³ããŒãããããšããå§ãããŸãããŸããã¿ãŒã²ããããŒãã«ãšåãæ§é ã®ããŒã¿ã§ãã¥ãŒã»ãããäœæããŸãã ãããŠããããããïŒã³ããŒã§ã¯ãªãïŒã³ããŒã䜿çšããŠæ¿å ¥ãè¡ããŸãã SQLã³ãã³ãã®ã·ãŒã±ã³ã¹å šäœãå¥ã®ããŒãžã§ã³ç®¡çããããã¡ã€ã«ã«ä¿åãã-1ããŒã䜿çšããŠpsqlãä»ããŠïŒåäžã®ãã©ã³ã¶ã¯ã·ã§ã³ã§ïŒå®è¡ããããšããå§ãããŸãã ãšããã§ãPostgreSQLã§æåã«ããã¯ã¢ãããäœæããæã亀差ãããããšã§fsyncããªãã«ã§ããã®ã¯ã€ã³ããŒãã®ã¿ã§ãã
- SQLã§èšè¿°ããªãã§ãã ããïŒ1999
ããããæ¬åœã«ããã以æ¥ãå€ãã®æ°ŽãæµåºããŸãããå šäžä»£ãåŠæ ¡ãåæ¥ããã¬ã³ã¬ã®æºåž¯é»è©±ã¯1999幎ã®åºæºã«ãã£ãŠã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã«å€ãããŸããã äžè¬çã«ãããªãã¯ç§ãã¡ã®ç¶èŠªãæžããããã«æžãã¹ãã§ã¯ãããŸããã "with"ã䜿çšãããšãã³ãŒãããããããã«ãªããäžããäžã«èªãããšãã§ããçµåãããã¯éã§ã«ãŒãããŸããã ãšããã§ãåãååã®ãã£ãŒã«ãéã§çµåãè¡ãããå Žåãããªã³ãã§ã¯ãªãã䜿çšãã䜿çšããæ¹ãç°¡æœã§ãã ãããŠãã¡ãããããã«ã³ãŒãã§ãªãã»ããã䜿çšããªãã§ãã ããã ãããŠãå¿ããããã¡ãªã暪æ¹åã«çµåããããããªçŽ æŽããããã®ããããŸã-ãããŠãã®ç¬éãåç«ã¯äžçã§æ²ããã§ãã
UPD ãwithãã䜿çšãããšããã®å®è¡çµæã«ãã£ãŠCTEãäœæãããããšãå¿ããªãã§ãã ãããCTEã¯ã¡ã¢ãªãæ¶è²»ããã¯ãšãªãå®è¡ãããšãã«ã€ã³ããã¯ã¹ããµããŒãããŸããã ãã®ãããããŸãã«ãé »ç¹ã«äœ¿çšãããwithãã®ãã€ã³ããŸã§äœ¿çšãããšããªã¯ãšã¹ãã®ããã©ãŒãã³ã¹ã«æªåœ±é¿ãäžããå¯èœæ§ããããŸãã ãããã£ãŠãã¹ã±ãžã¥ãŒã©ãä»ããŠãªã¯ãšã¹ããåæããããšãå¿ããªãã§ãã ããã ãwithãã¯ã以äžã®ã¯ãšãªã®ããã€ãã®éšåã§ç°ãªãæ¹æ³ã§äœ¿çšãããããŒãã«ãååŸããå¿ èŠãããå Žåã«ç¹ã«é©ããŠããŸãã ãŸãããwithãã䜿çšãããšã¯ãšãªã®å¯èªæ§ãå€§å¹ ã«åäžããPostgreSQLã®ãã¹ãŠã®æ°ããããŒãžã§ã³ã§ããå¹ççã«æ©èœããããšãå¿ããªãã§ãã ããã ä»ã®ãã®ãçãã-ãã®ç¹å®ã®ãã¶ã€ã³ã奜ãã
- äžæããŒãã«
äžæããŒãã«ãªãã§ã¯ãšãªãäœæã§ããå Žå-ãããããã«äœæããŠãã ããïŒ éåžžããwithãã³ã³ã¹ãã©ã¯ãã«ãã£ãŠäœæãããCTEã¯èš±å®¹å¯èœãªä»£æ¿ã§ãã äºå®ãPostgreSQLã¯äžæããŒãã«ããšã«äžæãã¡ã€ã«ãäœæããŸã...ãããŠãã¯ããå°çäžã®å¥ã®æ²ããåç«ã§ãã
- çã¿ïŒ SQLã§æãæãããã¢ã³ããã¿ãŒã³
ãã¥ãŒæ§é ã䜿çšããªã
select myfunc() from table;
ãã®ãããªãªã¯ãšã¹ãã®å®è¡æéã¯ãè¡æ°ãšãšãã«çŽç·çã«å¢å ããŸãã ãã®ãããªã¯ãšãªã¯ãåè¡ã«é©çšãããé¢æ°ã䜿çšããã«ãã€ã§ãæžãæããããšãã§ããå®è¡é床ãæ°æ¡åäžããŸãã
- ãªã¯ãšã¹ãã®äž»ãªç§å¯
ãã¹ãã³ã³ãã¥ãŒã¿ãŒã§èŠæ±ã®å®è¡ãé ãå Žåãå®çšŒåã§ã¯é«éã«åäœããŸããã ããã¯ãè»ã®ããéè·¯ã«ã€ããŠã®æè¯ã®äŸãã§ãã ãã¹ãã³ã³ãã¥ãŒã¿ãŒã¯äžæ¹éè¡ã®éè·¯ã§ãã å®çšŒåãµãŒããŒã¯10åã®éè·¯ã§ãã 亀éæžæ»ã®ãªãè»ã®å€ãã¯ã1è»ç·ãããã©ãã·ã¥ã¢ã¯ãŒã§10åèµ°è¡ããŸãã ããããããªãã®è»ãå€ããã±ãã§ããå Žåã圌女ã¯ãã§ã©ãŒãªãšããŠè¡ããªãã§ããããäœæ¬ã®ç©ºã®è»ç·ã圌女ã«äžããªããã
- ã€ã³ããã¯ã¹ã䜿çšãã«ãŒã¯ïŒ
ããããã©ãã ãæ£ããäœæããŠäœ¿çšãããã«ãã£ãŠç°ãªããŸããããªã¯ãšã¹ãã¯10åã®1ç§ãŸãã¯1åã§å®è¡ãããŸãã Marcus Vinandã®b-treeã€ã³ããã¯ã¹ãµã€ããé²èŠ§ããããšããå§ãããŸããããã¯ãã€ã³ã¿ãŒãããã§èŠããã©ã³ã¹ã®åããæšã«ã€ããŠã®äžè¬ã«å ¬éãããŠããæé«ã®èª¬æã§ãã ãããŠåœŒã®æ¬ãçŽ æŽãããã§ããã¯ãã
- ã°ã«ãŒãåãŸãã¯ãŠã£ã³ããŠé¢æ°ïŒ
ãããããã¡ããããŠã£ã³ããŠé¢æ°ã¯ãã以äžã®ããšãã§ããŸãã ãã ãããã®ããã«éèšããããšãã§ããŸãã ãã®ãããªå Žåãç§ã¯ã«ãŒã«ã«åŸããŸãïŒéçŽãã«ããŒã€ã³ããã¯ã¹ã«åŸã£ãŠèšç®ãããå Žåãã°ã«ãŒãåã®ã¿ã ã«ããŒããã€ã³ããã¯ã¹ããªãå Žåã¯ããŠã£ã³ããŠé¢æ°ãè©Šãããšãã§ããŸãã
- set_config
set_configã¯ããã©ã³ã¶ã¯ã·ã§ã³å ã§postgresql.confã®ããªãã¡ã¬ã³ã¹ãèšå®ããã ãã§ãªãããã©ã³ã¶ã¯ã·ã§ã³ã«ã«ã¹ã¿ã å€æ°ãæž¡ãããã«ã䜿çšã§ããŸãïŒäºåã«postgresql.confã§å®çŸ©ãããŠããå ŽåïŒã ãã©ã³ã¶ã¯ã·ã§ã³ã§ãã®ãããªå€æ°ã䜿çšãããšãåŒã³åºãããé¢æ°ã®åäœã«éåžžã«èå³æ·±ã圱é¿ãäžããããšãã§ããŸãã
- FTSãšãã©ã€ã°ã©ã
圌ãã¯çŽ æŽãããã§ãïŒ SQLã®å šæ©èœãä¿æããªãããå šææ€çŽ¢ãšãããŸãæ€çŽ¢ãæäŸããŸãã å¿ããã«äœ¿çšããŠãã ããã
- ç¬èªã®äŸå€ãåŒã³åºã
å€ãã®å Žåã倧èŠæš¡ãªãããžã§ã¯ãã§ã¯ãã³ãŒããšã¡ãã»ãŒãžã§å€ãã®äŸå€ãã¹ããŒããå¿ èŠããããŸãã ããããæ··åããªãããã«ãäŸå€ãã³ãŒã-äŸå€ããã¹ããã®äŸå€çšã«å¥ã®ã¿ã€ãã®äŸå€ãäœæãããªãã·ã§ã³ãšãããããåŒã³åºãé¢æ°ïŒãã¬ã€ãºãã®ã©ãããŒïŒãè¿œå ããã³åé€ããããŸãã ãŸãããã¹ãŠã®ããŒã¿ããŒã¹ãªããžã§ã¯ãããã¹ãã§ã«ããŒããå Žåãã©ããã§æ¢ã«äœ¿çšãããŠããäŸå€ã³ãŒãã誀ã£ãŠåé€ããããšã¯ã§ããŸããã
- å€ãã®åŠæ³ã ãã§ã¯ååã§ã¯ãããŸãã
ããŒãã«ã«ACLãèšå®ãããã»ãã¥ãªãã£å®çŸ©è ãã§é¢æ°ãå®è¡ããããšãå¿ããªãã§ãã ããã é¢æ°ãèªã¿åãå°çšã®å Žåãfeng shuiã§ã¯ãå®å®ããã©ã°ãèšå®ããå¿ èŠããããŸãã
- çã¿ïŒ ã±ãŒãã®äžã®ãã§ãªãŒ
UPD ãµãŒããŒãä»ããŠã¢ããªã±ãŒã·ã§ã³ãŠãŒã¶ãŒãããŒã¿ããŒã¹ã«ãªãã€ã¬ã¯ãããããšã¯ã§ããŸãããã¢ããªã±ãŒã·ã§ã³ãŠãŒã¶ãŒãããŒã¿ããŒã¹ãŠãŒã¶ãŒã«1察1ã§ãããŒããã£ã¹ãããŸãã æšæºçãªPostreSQLããŒã«ã䜿çšããŠãããŒã¿ããŒã¹å ã®ãŠãŒã¶ãŒãšãã®ã°ã«ãŒãã®ã»ãã¥ãªãã£ãåæã«èšå®ã§ããããã«æããŠããããã¯çµ¶å¯Ÿã«ããªãã§ãã ããïŒ ãã®ã¹ããŒã ã§ã¯ãæ¥ç¶ããŒã«ã䜿çšã§ãããæ¥ç¶ãããåã¢ããªã±ãŒã·ã§ã³ãŠãŒã¶ãŒã¯ãããŒã¿ããŒã¹ãžã®ãªãœãŒã¹ã倧éã«æ¶è²»ããæ¥ç¶ã䜿ãæãããŸãã ããŒã¿ããŒã¹ã¯æ°çŸã®æ¥ç¶ãä¿æãããµãŒããŒã¯æ°åã®æ¥ç¶ãä¿æããŸãããã®ãããã¢ããªã±ãŒã·ã§ã³ã¯ããŒããã©ã³ãµãŒãšæ¥ç¶ããŒã«ã䜿çšããŸãã ãŸããè² è·ãå¢å ããŠåãŠãŒã¶ãŒã1人ãã€ããŒã¿ããŒã¹ã«å€æããå Žåãåç·ãåæããŠãã¹ãŠãæžãæããå¿ èŠããããŸãã