
ITãããžã§ã¯ãã§ã¯ã誰ããã³ãŒããèšè¿°ããŸãã ãšã³ãžãã¢ã¯æ°è¡ã䜿çšããŠKubernetesã¯ã©ã¹ã¿ãŒã管çããTerraformã¯ã©ãŠãã忣ããã倿°ã®æ§æãAnsibleãChefãããã³Puppetã«å€æããŸãã QAã¯ãSpockãšCucumberã§ããžãã¹åãã®ãã¹ãã¹ã¯ãªãããäœæããŸãã ã¢ããªã¹ãã¯æµdevelopersã§ãå€ãã®å Žåéçºè
ããåªããŠãããSQLã話ããŸãã MarkdownãAsciiDocããŸãã¯LaTEX圢åŒã®ãããžã§ã¯ãããã¥ã¡ã³ãã¯ããã«ããµãŒããŒäžã§ç®çã®åœ¢åŒã«ãã³ã³ãã€ã«ããããŸãã éçºè
èªèº«ããããã®ã³ãŒããã€ããŒã¯ãã¯ã©ã€ã¢ã³ãããµãŒããŒãã¹ã¯ãªãããæ©èœãªã©ãããããã©ã€ãã±ãŒã¹ã§ããŸããŸãªèšèªãå³åº§ã«è©±ããŸãã
ã³ãŒãã¯é·ãéç¥ç§çãªæå³äžæãªãã®ã§ãªããªã£ãŠãããçŸåšã§ã¯å€ãã®éŠçžã§ããã ãäœããã®åœ¢ã§ã¢ã¯ã»ã¹å¯èœã§çè§£ã§ããããã«ãªã£ãŠããŸãã ãããŠããã®ãã¹ãŠã®ã³ãŒãã¯æšæºã®ã©ã€ããµã€ã¯ã«ã«é¢äžããŠããŸããVCSã«ãã£ãŠç®¡çãããã³ãŒãã¬ãã¥ãŒãèªåãã¹ããCIãCDãåããŸãã äžè¬çãªããŒã«ãšã¢ãããŒããããã©ãŒãã³ã¹ãšåè³ªã®ææšã䜿çšãããŸãã ãããŠãã¹ãŠãåãããŠããã³ãŒããšããŠã®ãã¹ãŠããšããèªãã®ããååãä»ããããŠããŸãã
ããããããŒã¿ããŒã¹ã®äžçã¯äŒçµ±çã«ããã®é²æ©ãšãã¯ãããžãŒã®èŽ
æ²¢ãšã¯äžç·ãç»ããŠããŸãã ããŒã¿ããŒã¹ã®éçºãšä¿å®ã®ããã»ã¹ã¯é·å¹Žã«ããã£ãŠå€ããããäžçäžã®éçºè
ã管çè
ããŠãŒã¶ãŒã«ææãšææãæ€ãä»ãç¶ããŠããŸãã ããããéåžžã®ã³ãŒãã®åœ¢åŒã§ããŒã¿ããŒã¹ãæç€ºããããšã¯å¯èœã§ããïŒ ã¡ã€ã³ã®éçºããã»ã¹ã«è¿ã¥ããäžè¬çãªããŒã«ãšã¢ãããŒãã䜿çšããŸããïŒ ã«ããã®äžã§ããã«ã€ããŠã
å
žåçãªãããžã§ã¯ã
ç§ãã¡ã®ã»ãšãã©ã¯ã欲ãããã©ããã«é¢ä¿ãªããæ¯æ¥ããŸããŸãªããŒã¿ããŒã¹ãåŠçããå¿
èŠããããŸãã ããã©ãŒãã³ã¹ã®åé¡ãç«¶äºåã®ããã¢ã¯ã»ã¹ãªã©ãèšèšãéçºã管çã解決ããã ãã§ãã åæã«ãããŒã¿ã®åéãåŠçãããã³ä¿åã®èŠä»¶ã¯åžžã«å³ãããããŠããŸããäžéšã®äººã«ã¯100ïŒ
ã®æŽåæ§ãå¿
èŠã§ãããä»ã®äººã«ã¯å¿
èŠãããŸããã æ°å¹Žä¿åããããã®ãããã°ãæ°ç§ä¿åããããã®ããããŸãã äžéšã®æå€±ã¯æ°çŸäžä»¶ã®æå€±ããããããŸãããä»ã®æå€±ã¯äºæ¥ã«ãšã£ãŠç®ç«ããªãã§ãããã
ãã®ç¹ã§ã Polyglot Persistenceã¢ãããŒãã¯é·ãéç»å ŽããŠãããæåè£ã«äœ¿çšãããŠããŸãããã®çµæãæè¿ã§ã¯ããããããããžã§ã¯ãã§åäžã®DBMSãæºããããšãã§ããŸãã 代ããã«ãç¹å®ã®ã¿ã¹ã¯ããšã«ãå€ãè¯ããªã¬ãŒã·ã§ãã«ã®ãã¹ãŠã®åé¡ããªããšãããŠè§£æ±ºããããšããã«ãæé©ãªããŒã¹ãéžæãããŸãã ãŸããããšãã°ããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã䜿çšãããšããããžã§ã¯ãå
šäœã®ã¯ãªãŒã³ã¢ãŒããã¯ãã£ãæãªãããšãªããåäžã®ãµãŒãã¹å
ã§ç¹å®ã®DBMSãšã®äœæ¥ãåé¢ããæå€§ã®ã¡ãªãããåŒãåºãããšãã§ããŸãã ãã®çµæãã ãªã¬ãŒã·ã§ãã« ãïŒããããªãå ŽåïŒ+ã ããŒããªã¥ãŒDB ã+ã ã¯ã€ãã«ã©ã DB ã+ã ããã¥ã¡ã³ãæåDB ã+ã æ€çŽ¢ãšã³ãžã³DB ã+ã ã°ã©ãDB ã+ã ãã®ä»DB ã =ã æåïŒ ãã ããã«ããããã®ããŒã¿ããŒã¹ã®ã€ã³ã¹ã¿ã³ã¹ïŒã€ã³ã¹ã¿ã³ã¹ïŒã®æ°ã¯å¢å ããŠããŸã-ã·ã£ãŒãã£ã³ã°ãã¬ããªã±ãŒã·ã§ã³ã忣DBMSã ããã«ããããã¯ãã¹ãŠãéçºããã¹ããæ¬çªãªã©ã®ããŸããŸãªç°å¢ã§ãæ¡åŒµããããç¶æãããå¿
èŠããããŸãã
æ ¹æ ã®ãªãããã«ãããŒã¿ããŒã¹ç®¡çããã³éçºã®åéã®ãœãªã¥ãŒã·ã§ã³ã«é¢ããå·šå€§äŒæ¥ã®æè¿ã®ã¢ã³ã±ãŒãããã®æç²ãåŒçšããŸããQuest Software- DBAåé¡ïŒDB管çã®ãã¬ã³ã ïŒããŠã³ããŒãããã«ã¯ãç°¡åãªç»é²ãå¿
èŠã§ãããããã ãã®äŸ¡å€ããããŸãïŒïŒ
- 質å2ïŒã ããªãã®äŒç€Ÿã§å®è¡ãããŠãããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã®ã€ã³ã¹ã¿ã³ã¹ã¯ããã€ã§ããïŒ ã-çµæã«ãããšãåçè
ã®24ïŒ
ã100ãã500ã®ã€ã³ã¹ã¿ã³ã¹ã䜿çšãã19ïŒ
ã500ãè¶
ããŠããŸãã
- 質å4ïŒã ããªãã®äŒç€Ÿã§ã¯ããã€ã®ç°ãªãDBMSïŒSQLããã³NoSQLïŒã䜿çšãããŠããŸããïŒ ã-56ïŒ
ã2ã3ã®ç°ãªãDBMSã䜿çšãã40ïŒ
ã5ãè¶
ããåçè
ã®4ïŒ
ã®ã¿ã䜿çšããŠããŸã DBMS
- 質åçªå·18ïŒã ãããžã§ã¯ãå
ã®ããŒã¿ããŒã¹ã€ã³ã¹ã¿ã³ã¹ã®æ°ã¯ã©ããªããŸããïŒ ã-åçè
ã®2/3ãæ¯å¹Žã®å¢å ãææããŠããŸãã
- 質å30ïŒçµæïŒïŒã ä»åŸ3幎éã§DBAãçŽé¢ããäž»ãªåé¡ã¯äœã§ããïŒ ã
- 51ïŒ
-ã DBMSã€ã³ã¹ã¿ã³ã¹ã®æ°ãå¢ãã ã
- 40ïŒ
-ã æ°ããéãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã管çããæ©èœ ã
- 32ïŒ
-ã ITäºç®ã®åæžãïŒäºæ³ã©ãããæåã®2ã€ã®åé¡ã«ããèšãäžãããŸãïŒ
ããã®æºåã¯ã§ããŠããŸããïŒ
ç¹å®ã®DBMSã广çã«äœ¿çšããã«ã¯ãIDEãããŒãžã£ãŒãDBãããŒãžã£ãŒãç£èŠãã¢ããªã³ã°ãã¹ããŒãç§»è¡ããŒã«ãªã©ãç¹å¥ãªããŒã«ãå¿
èŠã§ããããšã¯åšç¥ã®äºå®ã§ãã ãã ãããããã®ããŒã«ãšç°å¢ã®å€§éšåã¯ãåäžã®ãªã¬ãŒã·ã§ãã«DBMSããã¹ãŠã®ãããžã§ã¯ãã«ååã§ãããã ã¢ãžã£ã€ã« ããã DevOps ããã CI / CD ããªã©ã®æµè¡èªã§æ ããæä»£ã«çºæããéçºãããŸãããçŸããªãã£ãã ãã以æ¥ãã»ãšãã©å€ãã£ãŠããªã ããŒã¿ããŒã¹ã®éçºãšä¿å®ã®åéã¯åžžã«ééçã§ä¿å®çã§ãããã»ãšãã©ã®éçºè
ã¯ãããå€ããŠè€éã§çè§£ã§ããªããã®ã«é¢é£ä»ããŠããŸãã 仿¥ãæã倿§ãªDBMSã®ããã€ããšãã®ã€ã³ã¹ã¿ã³ã¹ã®æ°å/æ°çŸãã»ãŒãã¹ãŠã®ãããžã§ã¯ããšã³ãããŒã§åæã«åäœããŠãããšããéçºè
ãšDBAã®éåžžã®æ¥åžžçãªåé¡ã¯ããã«æ·±å»ã«ãªã£ãŠããŸãã
åŸæ¥ãããŒã¿ããŒã¹ãæäœããããã®æãäžè¬çã§äžå¯æ¬ ãªããŒã«ã¯ããã¹ãŠã®çš®é¡ã®IDEã§ãã éåžžãããã¯ãåäžã®äœæ¥ç°å¢ã§ã®éçºãšç®¡çã®ããã®æã倿§ãªæ©èœãäž»ã«ã°ã©ãã£ã«ã«ãªã€ã³ã¿ãŒãã§ãŒã¹ã®äžã§çµã¿åãããå
æ¬çãªãœãªã¥ãŒã·ã§ã³ã§ãããããŒã¿ããŒã¹ãšã®äœæ¥ãããçç£çã§å¿«é©ã«ããŸã-ç®çã®ã¡ãã¥ãŒé
ç®ãã¯ãªãã¯ããã ãã§ãã 確ãã«ã EMS SQL Manager ã Toad ã dbForge ã ãã®ä»ã®å€ãã®ã¯ãŒã«ãªãã®ãªãã§ãã人ã¯ã»ãšãã©ããŸããã
ãã®ãããªãããã¯ã¹ãã®äž»ãªåé¡ã®1ã€ã¯ãæ°æ©èœãšæ°ããDBMSïŒåžå Žã«åºãããšãæ¢ããªãïŒã®ãã¬ãã·ã£ãŒã®äžã§ãããªãè€éã«ãªããæ¯åããè€éã«ãªãç¶ããããšã§ãã ããã«ã䜿çšäžïŒå€ãã®å Žåãç¹å®ã®DBMSã®æ©èœããã¹ã¿ãŒããå¿
èŠã¯ãããŸããããIDEèªäœã®ããªãã¯ãšæ©èœãç¿åŸããå¿
èŠã¯ãããŸããïŒããã³å®è£
ïŒãããã£ãŠããã®ãããªã·ã¹ãã ã¯éåžžééãããéåžžã«æåã§ãïŒã®äž¡æ¹ã§ãã ãªãŒãã³ãœãŒã¹DB IDEã®æèŠã§ããå€ãã®ïŒç§ãå«ãïŒææã®DBeaverã§ãã ã ãã®EnterpriseããŒãžã§ã³ã§ã®ã¿ NoSQLãœãªã¥ãŒã·ã§ã³ïŒããã³çŸåšããããªãã§å®è¡ããŠãããããžã§ã¯ãïŒããµããŒãããŠããŸãã ããããã¹ãŠã«å ããŠãéåžžã«å¿
èŠã§è峿·±ãDBMSæ©èœã®ãµããŒãã¯ãIDEéçºè
ããããããã·ã¥ããå¿
èŠããããšèãããŸã§ïŒãŸãã¯ãã«ãŠã³ãããŠããã·ã¥ããããšãããŸã£ããã§ããªãïŒãæåŸ
ã§ããªããšããéäŸç€ºçãªãªã¹ã¯ãæ®ã£ãŠããŸãã
ãã®ç¶æ³ã«å¯Ÿå¿ããŠããŠãŒã¶ãŒèªèº«ãæ°ããDBMSã«å¿
èŠãªæ©èœããµããŒããçŸãããŸã§åŸ
ããã«ãèªåèªèº«ããããžã§ã¯ãã«æé©ãªæ¹æ³ã§ãå
¥ã£ãŠããåé¡ãåå¥ã«è§£æ±ºããŸãã GitHubã¯ãããŸããŸãªçšåºŠã®è€éãã®ãœãªã¥ãŒã·ã§ã³ã«æºã¡ãŠããŸãã åºæ¬çã«ããããã¯ãã¹ãŠã®å Žåã®SQLã¹ã¯ãªããã®ã»ããã§ãïŒ dataegret / pg-utils ã NikolayS / postgres_dba ã gwenshap / Oracle-DBA-Scripts ã ktaranov / sqlserver-kit ã lestatkim / opensql ïŒã ãŸãã¯ããããã®ãããªpg_activityãpgcenterãªã©ã®ã³ã³ãœãŒã«ãŠãŒãã£ãªãã£ã ãŸããå®å
šã«ç¬ç«ããã¯ã©ã€ã¢ã³ããšç£èŠããŒã«ïŒ pg_web ã pg_hero ïŒããå§ãŸããããšãã°ãåçŽã«ã·ã¹ãã ããŒãã«äžã®htmlã©ãããŒïŒ pg_web_stats ã pg_stats_viewer ïŒã§çµãããããããçš®é¡ã®WebããŒã¹ã®ããŒã«ã ãã®çµæããããã°ã©ããŒã®ããã®ããã°ã©ããŒãããDBAã®ããã®DBAããªã©ã®ãœãªã¥ãŒã·ã§ã³ã®ã¯ã©ã¹å
šäœã圢æããããã®å©ããåããŠãDBMSãŠãŒã¶ãŒã¯ãäºãã®çµéšãçŽæ¥å
±æããŸãã
ã³ãŒããšããŠã®ãã¹ãŠ
ãµãŒããŒç®¡çãšãœãããŠã§ã¢æ§æç®¡çã§ã以åã«ãåæ§ã®ç¶æ³ã芳å¯ãããŠããŸããã ãã®åŸãæ°ããèŠä»¶ãšæè¡ãçµ¶ããåºçŸããã«ã€ããŠããããžã§ã¯ãã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãèããè€éã«ãªãå§ããããã§å®è¡ããããµãŒããŒãšãœãããŠã§ã¢ã®æ°ãåçã«å¢å ããŸããã ãŸããæ°ããããžãã¹æ©èœãåãããœãããŠã§ã¢ãããé »ç¹ã«ããããŠç¶ç¶çã«é¡§å®¢ã«æäŸããå¿
èŠããããŸããã ãã®çµæžå
šäœãæ§æããã³ç®¡çããããã®æ¢åã®ããŒã«ã¯è²§åŒ±ãªä»äºãããŸããããã®çµæãã€ã³ãã©ã¹ãã©ã¯ãã£ãç¹å¥ãªDSLã§æ§æããããã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãã¢ãããŒããšAnsibleãChefãSaltãPââuppetãªã©ã®ããŒã«ãç»å ŽããŸããã ããã«ãããæè»æ§ãšåµé æ§ã®èªç±ãåŸãããŸãã ãããŠããã®ãããªDSLã®ã³ãŒãã¯ãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ã³ãŒãïŒJavaãCïŒãRubyãŸãã¯ãã®ä»ã®ããã°ã©ãã³ã°èšèªïŒãšãšãã«æšæºã®ã©ã€ããµã€ã¯ã«ã«åå ããŸããã€ãŸããããŒãžã§ã³ç®¡çã·ã¹ãã ã«æ ŒçŽãããŸãïŒãã¹ãŠã®çµæ-ãã©ã³ãããã©ãŒã¯ãã³ãŒãã¬ãã¥ãŒïŒãã¢ã»ã³ããªãµãŒããŒã§ã®ãã«ããèªåãã¹ãã®å®è¡ãªã©ã
å°æ¥ããã®ã¢ãããŒãã®åœ±é¿ã¯ä»ã®åéã§ãé¡èã«ãªããŸããã
ãŸããŸãå€ãã®äººã
ãã³ãŒããæžãããšãæããªããªãããããæšæºã«ãªãã€ã€ãããŸãã ããã«ãããããæè»ãªæ§æãå¯èœã«ãªããäžè¬çãªãããŒã§äžè¬çãªããŒã«ïŒããŒãžã§ã³ç®¡çãã¡ããªãã¯ãèŠèŠåãã¬ããŒãããã¹ããªã©ïŒã䜿çšããããšãã§ããŸãã å€ãã®å°çšããŒã«ã§ã¯ãã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ããããæè»ãªããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ãããŸããŸãªDSLããã³æ§æãã¡ã€ã«ã«çœ®ãæããããããè£è¶³ãããŸãã
ãã®ãããã¯ã«é¢ãã詳现ã¯ãAlexander TarasovïŒ aatarasoff ïŒ "Everything as a Code"ã®ã¬ããŒãã«èšèŒãããŠããŸãã
ã³ãŒããšããŠã®ããŒã¿ããŒã¹
ãããŠãããŒã¿ããŒã¹ã®åºå€§ãªäžçã§ããã¯ã©ãã§ããïŒ Googleã«ã ã³ãŒããšããŠã®ããŒã¿ããŒã¹ ããšããç°¡åãªãã¬ãŒãºãå
¥åããã®ã§ãDZoneã«æçš¿ãããïŒãã ãäœïŒïŒ-ã ããŒã¿ããŒã¹ãšããŠã®ããŒã¿ããŒã¹ïŒæ¬æ°ãªã³ã³ã»ãã ããé€ããŠãè峿·±ããã®ã¯èŠã€ãããŸããã§ããã
ããŒã¿ããŒã¹ãã¡ãŒã¹ãã®ã¢ãããŒãã«ã€ããŠå€ãã®ããšã話ããŸãã ããŒã¿ãäŒæ¥ã®æã貎éãªè³ç£ã§ãããšããäºå®ã«ã€ããŠå€ãã®ããšã話ããŸãã ãããããã³ããŒã¹ã圌ã®ãã¬ãŒã³ããŒã·ã§ã³ã® 3çªç®ã®ã¹ã©ã€ãã§æç€ºããã³ã³ã»ããã¯ã©ãã§ããããã ããŒã¿ããŒã¹ãã³ãŒããšããŠæ±ããšã©ããªããŸããïŒ
é
åçã§ãããã¹ã©ã€ãïŒ5ããã³ïŒ6ïŒæ®å¿µãªããããããªã¯èŠã€ãããŸããã§ããïŒããŒã¿ããŒã¹ã¹ããŒãããã³ãŒããä»ããŠã管çãã2ã€ã®ã¢ãããŒãã«ã€ããŠèª¬æããŸããã€ã³ã¯ãªã¡ã³ã¿ã«ãã€ã°ã¬ãŒã·ã§ã³ïŒLiquibaseãFlywayïŒããã³ã¹ãçDDLã¹ã¯ãªããïŒ Redgate ïŒã§ãã ãããã£ãŠãåè·¯ãã³ãŒãã§ãããVCSã®å¶åŸ¡äžã«ããããã«ããµãŒããŒã§çµã¿ç«ãŠãããèªåãã¹ããå®è¡ãããŸãã
ããŒã¿ããŒã¹ãæ±ãåéã§ã®èãæ¹ãå€ããã«ã¯äœãå¿
èŠã§ããïŒ ããŒã¿ããŒã¹ãéæ³ã®ã¢ãŒãã£ãã¡ã¯ããŸãã¯äžæã®ã¹ã¯ãªãããšããŠæ±ãã®ããããã¢ããªã±ãŒã·ã§ã³ã®éåžžã®ã³ãŒããèŠãã®ãšåãè§åºŠãããããèŠãå¿
èŠããããŸãã
åã³å匷ãèšããŸãããç§ã¯ãã§ã«ç§ã®ç®ã«æ¶ãæµ®ãã¹ãŠããŸãã æ®å¿µãªãããã¬ããŒããšæçš¿èªäœã¯ããã³ãŒããšããŠãã ããŒã¿ããŒã¹ã¹ããŒããžã®å€æŽã®ã¿ãèæ
®ããŸã ïŒ ããŒã¿ããŒã¹ã¹ããŒãã®ç§»è¡ïŒã
ã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ã³ãŒããå®ç©ãšããŠæ±ããŸãã ãããŠãããã¯çµ¶å¯Ÿã«çå®ã§ããã³ãŒãã¯ããããã¢ããªã±ãŒã·ã§ã³ã®äžå¿ã§ãã ãããã ããŒã¿ããŒã¹ã®å€æŽãããŒãžã§ã³ç®¡çã·ã¹ãã ã®ç®¡çäžã«ãããèªååããããªã³ããã³ãã§ãªãªãŒã¹ããæºåãã§ããŠããŠãã¡ã€ã³ã³ãŒãã®ããã«ãDevOps-lawsãã«åŸãã¹ãã§ã¯ãªãã§ããããã
ããããã¡ãã£ãšåŸ
ã£ãŠ...
ããŒã¿ããŒã¹ã¯ã¹ããŒãã ãã§ã¯ãããŸããïŒ
ææ°ã®DBMSã®ã»ãšãã©ã¯ç¬èªã®ã¯ãšãªèšèªãæäŸãããã®å©ããåããŠãæ ŒçŽãããŠããããŒã¿ïŒããããDMLïŒãåãåã£ãŠå€æŽããã ãã§ãªãããã®ã¹ããŒãïŒããããDDLïŒãæäœããã ãã§ãªããäžè¬çã«ãããåãåããŸãïŒç§ã¯ãã®èšèãæããŠããŸããïŒçŸåšã®ããŒã¿ããŒã¹ãšãã®ç¶æ
ã«é¢ããã¡ã¿æ
å ±ïŒã·ã¹ãã ããŒãã«ãšãã¥ãŒããïŒããã³ãã®ã»ãšãã©ãã¹ãŠã®æäœïŒããŒã¿ããŒã¹ã®èµ·åã忢ãèªã¿åãå°çšãžã®è»¢éãçµ±èšã®åéãã¡ã¢ãªã®ç®¡çãªã©ïŒãå®è¡ããŸãã ãŸãããã®ãããªã³ãŒãã¯ãåã®æ®µèœã§èª¬æããæŠå¿µã«ãéåžžã«ããé©åããŠããŸãã
ãããŠãããŒã¿ããŒã¹ãšã¯ãšãªèšèªã«é¢ããŠèšãã°ãæåã«æãæµ®ãã¶ã®ã¯ãã¡ããã å€ããŠè¯ãSQLã§ãã ããããNoSQLãœãªã¥ãŒã·ã§ã³ã®éèŠã倧å¹
ã«å¢å ããŠããçŸåšãè¿ãå°æ¥ã«ïŒãããŠãã»ãšãã©ã坿¥ã«é¢é£ããŠãããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã«ãïŒé Œãã«ããããšãã§ããŸããïŒ
ãçµå±ã®ãšãããSQLããã¹ãŠã§ããïŒ...ã
ããªãã¯ç§ã«æ£ããå°ããããšãã§ããŸã-ã ã»ããã®å€ãé¢ä¿ããšã³ã¿ãŒãã©ã€ãºã®è¡ãªãŸãããã ãã§åœŒãã®äººçãçãå»¶ã³ããšãããç§ã¯ããã§NoSQLãšã¹ããŒãã¬ã¹ããŒã¿ããŒã¹ã®æä»£ã«ã©ããªçš®é¡ã®SQLã«ã€ããŠè©±ããŠããã®ã§ããã åæã®HabrïŒãã¯ãããžãŒã®äžçã®ãã¬ã³ãã®ãªããã¹ãã¹ããšããŠïŒã¯ããã€ãŠSQLãšãªã¬ãŒã·ã§ãã«ããŒãã«ã«é¢ããåŠå®æ§ã§æºããããã¹ããŒãã£ãŒãªæ»ãäºç€ºããŸããïŒæç¥šæ°ã¯æ¬åŒ§å
ã«ç€ºãããã³ã¡ã³ãæ°ã¯ã¹ã©ãã·ã¥ã§ç€ºãããŸãïŒã
ãã ãã12æ³é ãããHabréã®é°å²æ°ã¯èããå€ãããŸããã
åæã«ãåSQLãšåãªã¬ãŒã·ã§ãã«ã®ææ
ã¯åŒãç¶ãçºçããŸããããããã«å¯Ÿããã³ãã¥ããã£ã®åå¿ã¯ãŸã£ããç°ãªããŸãã
ãããã®ææ
ã®ç¢ºèªã¯ãKonstantin Osipov ïŒ kostja ïŒã«ãããNewSQLïŒSQLã¯ã©ãã«ãè¡ããŸãããããã³Andrey Nikolayenkoã«ãããNon-Relational SQLãã«ããæè¿ã®ã¬ããŒãã«èšèŒãããŠããŸã ã ç§ã¯äž¡æ¹ã®å£°æã®èŠçŽãæäŸãã責任ãè² ããŸãïŒ
- ã NoSQLã®SQL ã -SQL ïŒå¥åŠãªããšã«ïŒã¯NoSQLç°å¢ã§éåžžã«å¿«é©ã§ãã ã»ãšãã©ãã¹ãŠã®NoSQLããŒã¿ããŒã¹ã§ã¯ãCassandraããã³ScyllaDBã®CQL ãAerospikeã®AQL ãCouchbaseã®N1QL ãããã³æ¬æ ŒçãªïŒãŸãã¯å¯èœãªéãè¿ãïŒANSI SQLãªã©ãããçš®ã®sqlã«äŒŒãã¯ãšãªèšèªã䜿çšã§ããŸãã Tarantool ã ClickHouse ã CrateDBã®ããã« ã
- ãã¯ã©ãŠãå
ã®SQL ã-ã¯ã©ãŠããžã£ã€ã¢ã³ãã¯ã Amazon RDS ã Amazon Aurora ã Oracle Cloud ã Google Cloud SQL ã Microsoft SQL Azure ã Alibaba Cloud ApsaraDB ã Yandex Managed Databasesãªã© ãããŸããŸãªSQLã¹ãã¢ããµããŒãããŠããŸã ã
- ã BigDataã®SQL ã -SQLã¯Hadoopã€ã³ãã©ã¹ãã©ã¯ãã£ã«é·ãç·å¯ã«çµ±åãããŠããŸãã 2009幎ã«HiveãHiveQLãšãšãã«ç»å Žãã幎ã
ããã§ã«çŽæ¥ãµããŒããããŠããSQL- Impala ïŒ2011ïŒã Spark ïŒ2013ïŒã Kudu ïŒ2014ïŒã Presto ïŒ2015ïŒã Phoenix ïŒ2017ïŒããµããŒããããœãªã¥ãŒã·ã§ã³ãç»å Žãå§ããŸããã
- ã SQL in Streaming ã -SQL㯠ãã¹ããªãŒãã³ã°ããŒã¿ãã³ãã©ãŒã®ã»ãšãã©ã®æšæºã«ãªããŸããïŒ Flink ã Samza ã Storm ã Apex ããããŠæè¿ã§ã¯Kafka ã
- ã SQL in NewSQL ã-å€ãã®ææ°DBMSã¯ãSQLã®å¹
åºããµããŒãïŒ CockroachDB ã FoundationDB ã MemSQL ïŒãå«ãNoSQLãšåŸæ¥ã®ãªã¬ãŒã·ã§ãã«ãœãªã¥ãŒã·ã§ã³ã®äž¡æ¹ã®å©ç¹ãå
ŒãåããNewSQLã®æ¹åã§ç©æ¥µçã«éçºããŠããŸãã
åçã§ãã£ãšè°è«ãå¿
èŠã§ãïŒããå°ãè°è«ããŸããããã¹ãŠãæç¢ºã§ããã°ãæ¬¡ã®æ®µèœã«å®å
šã«é²ãããšãã§ããŸãã
衚èšãªãã®ããŒã¿ããŒã¹å±¥æŽïŒ

ãŸããæè¿ãå€ãã®æ°ããDBMSãç»å ŽããŸããããããã¯ãããç¥ããããã¹ãããããªã¬ãŒã·ã§ãã«DBMSã®ãã¢ããªã³ãã§ãã ããšãã°ãPostgresããŒã¹ïŒ Timescaleããã³ToroDB ïŒãMySQLããŒã¹ïŒ RadonDB ïŒãããã«sqlliteïŒåžžã«ã·ã³ãã«ã§ä¿¡é Œæ§ã®é«ãçµã¿èŸŒã¿ããŒã¹ãšããŠäœçœ®ä»ããããŠããïŒã«åºã¥ããrqliteãç»å ŽããŸãã-ã軜é忣ãªã¬ãŒã·ã§ãã«ã¹ãã¬ãŒãžãã ãŸãã¯ãããã€ãã®äžè¬çãªããŒã¹ïŒããšãã°ã InfiniDBããã³TiDBçšã®MySQLïŒã®ã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ããŸãã æ°ããããŒã¿ã¢ãã«ã§ã¯ãæ§æãšç®¡çã®æ¹æ³ãç¥ã£ãŠããåã䜿ãæ
£ãããã©ãããã©ãŒã ã«ãšã©ãŸã£ãŠããããããã®ã¢ãããŒãã¯åªããŠããŸãã
ãŸãã絶察ã«ãã¹ããŒãããªãŒããªäººã®ããã«ã Eclipse JNoSQLã®ãããªå
±éã®æ±çšèšèªã ã¢ã© SQLããããã®ãµããããžã§ã¯ãJNoSQL Aphroditeãäœæãã詊ã¿ããããŸãã
NoSQLéåã®åµèšè
ã®1ã€ã§ããGoogleããSQLããŸããŸãéèŠããŠããŸãã æåã¯Spannerã§ããããçŸåšBigQueryã¯ç©æ¥µçã«éçºããŠããŸãïŒ

SQLã€ã³ã¿ãŒãã§ã€ã¹ã¯ãããŒã¿ãŠã§ã¢ããŠã¹ãšããã»ããµã ãã§ãªããååŸããŸãã ããšãã°ã osquery ïŒFacebookèªäœïŒãšfsqlãSQLã§äœ¿çšãããšãããããOSããå€ãã®æçšãªæ
å ±ãååŸãããããã¡ã€ã«ã·ã¹ãã ã§ããŸããŸãªæäœãå®è¡ãããã§ããŸãã

äžè¬ã«ãSQLã¯ããªã¬ãŒã·ã§ãã«æ¡ä»¶ãã¯ããã«è¶
ãããã®ãå«ããçŸä»£ã®æ¡ä»¶ã§ã¯éåžžã«å¿«é©ã§ãã ã»ãšãã©ãã¹ãŠã®ããŒã¿ãœãŒã¹ã¯ãSQLãŸãã¯SQLã«äŒŒãèšèªã§ãéä¿¡ãã§ãããªããžããªã®ããŒã¿ãŸãã¯ã¡ã¿ããŒã¿ã«é¢ããå¿
èŠãªæ
å ±ãååŸããä»»æã®æäœïŒäœæãåé€ãéå§ã忢ãªã©ïŒãå®è¡ã§ããŸãã
ãã以éïŒäŸ¿å®äžãèš±å¯ãåŸãŠïŒãSQLããšã¯ããåããæšæºãªã¬ãŒã·ã§ãã«SQLã ãã§ãªãããã®ãã¹ãŠã®ãµãã¿ã€ãïŒãªã¬ãŒã·ã§ãã«ããé ãé¢ãããã®ãå«ãïŒãããã³å®éã«ã¯çµã¿èŸŒã¿QL DBãããã«ãããäœã圹ã«ç«ã€ããšãã§ããŸãã
ãªãã§ãããªããšïŒ
ãŸãã92幎ç®ã«ã¯çŽ æŽãããANSIèŠæ Œãç»å ŽããŸãããããã«ããããªã¬ãŒã·ã§ãã«DBMSã¯ããã®å
éšæ§é ãç¹å¥ãªã¹ããŒã ïŒ æ
å ±ã¹ããŒãïŒã§èšè¿°ã§ããªããã°ãªããŸããã T.O. ãµãŒãã¹ã®ããŒãã«/ãã¥ãŒã«æšæºã®ã¯ãšãªèšèªã䜿çšãããšãä»»æã®ããŒã¿ããŒã¹ã®ã¡ã¿ããŒã¿ãååŸã§ããŸã-ã¹ããŒããããŒãã«ãã€ã³ããã¯ã¹ãåãªã©ãå«ãæ¹æ³ãããããå®éã«ã¯ãããã¯åäžã®ããŒã¿ã¹ããŒãã«éãããæšæºå€ïŒãããã»ã¹ãã»ãã·ã§ã³ãã¯ãšãªå®è¡èšç»ããã£ã¹ã¯ãµãã·ã¹ãã ãã¡ã¢ãªäœ¿çšçãªã©ã«é¢ããæ
å ±ãååŸã§ããŸãã
ãã®æšæºã¯ãååäžçŽã»ã©åã«ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã«ã®ã¿ç»å Žãããšããäºå®ã«ãããããããã»ãšãã©ãã¹ãŠã®ææ°ã®NoSQLããã³NewSQLããŒã¿ããŒã¹ãåæ§ã®ãã®ãå®è£
ããŠããŸãã ããšãã°ãCassandraã«ã¯ã ããã€ãã®ã·ã¹ãã ã¹ããŒã ïŒãŸãã¯keyspace'ov-systemãsystem_authãsystem_schemaãsystem_tracesïŒããããæ¢ã«èšåããCQLã䜿çšããŠã¢ã¯ã»ã¹ã§ããŸãã ClickHouseã«ã¯ç¹å¥ãªãã·ã¹ãã ãã¹ããŒã ããããŸãã CockroachDBã®éçºè
ã¯éåžžãæšæºã®information_schemaãå®è£
ããããã«æ¯ãèããŸããã ãããŠãMongoã®ããã¥ã¡ã³ãã§ããã ã·ã¹ãã ã³ã¬ã¯ã·ã§ã³ã«æºè¶³ããŠããŸã ã
åæã«ããã®ãããªäœç³»ç衚çŸã®æ°ãšæ¡åŒµã¯çµ¶ããå¢å ããŠããŸãã ããšãã°ãPostgresqlïŒæãã¢ã¯ãã£ããªã³ãã¥ããã£ã®1ã€ãæã€ããŒã¿ããŒã¹ãšããŠïŒã§ã¯ãinformation_schemaèªäœãç¬èªã®pg_catalogã¹ããŒã ãããã³pg_stat衚çŸã®å®è£
ã«å ããŠã pg_stat_statementsããã³pg_buffercache衚çŸã®åœ¢åŒã§ããã€ãã®å
¬åŒã®æ¡åŒµæ©èœããããŸãã pg_active_session_history ã pg_store_plans ã pg_stat_kcacheãªã©ã®è¿œå ã®ãµãŒãããŒãã£ãã¥ãŒãšåæ§ã
ã»ãšãã©ãã¹ãŠã®ããŒãã¯ããã®æ§é ãç¶æ
ã衚瀺ããã·ã¹ãã ããŒãã«ã«å¯Ÿå¿ããŠããŸãã ã€ãŸããããŒã¿ããŒã¹èªäœã¯ãã¯ãšãªèšèªãéããŠãã®å
éšæ§é ãšç¶æ
ã«ã€ããŠç¥ãããšãã§ããŸãã ããã«ãå€ãã®DBMSã¯ãã¯ãšãªèšèªã䜿çšããŠæçšãªã¡ã¿ããŒã¿ãååŸããã ãã§ãªããäœããã®æäœã忢ãããéå§ãããã¯ãªã¢ãããçµ±èšãåéãããªã©ã®å
¬åŒæäœãå®è¡ããæ©äŒãæäŸããŸããããŒãã«ãŸãã¯åã ãã§ãªããããšãã°ã»ãã·ã§ã³ïŒ " alter session set sql_trace = true "ïŒãããŒã¿ãã¡ã€ã«ïŒ " alter tablespace add datafile "ïŒããŸãã¯ã·ã¹ãã å
šäœïŒ " alter system kill session "ïŒãªã©ã®ä»ã®ãªããžã§ã¯ãã«ãã
ãããã®ããŒãã«ãšã¯ãšãªã®ç¥èã¯ãéçºãšç®¡çã®äž¡æ¹ãããã³æ¬¡ã®æ°ããDBMSã®éçºã«åœ¹ç«ã¡ãŸãã äžéšã®ããŒã¿ããŒã¹ã§ã¯ãã®ãããªæ©èœãé«åºŠã«éçºãããŠãããã»ãšãã©ãã¹ãŠããã³ãŒããã§å®è¡ã§ããããšã¯æããã§ãããä»ã®ããŒã¿ããŒã¹ã§ã¯ã¯ããã«æ§ããã§ãããDBMSéçºè
ã補åã§ãã®ãããªæ©èœãéçºããåŸåãããããšã¯ééããããŸãããããããå¹ççã«æäœããŸãã
çµè«ãšå±¥æŽæžã®ä»£ããã«
æ®å¿µãªãããSQLã¯é·ãéããäœã¬ãã«ãèšèªãã€ãŸãããŒã¿ããŒã¹ã®äžçš®ã®ããã€ãã³ãŒãããšããŠå€ãã®äººã«ãã£ãããšèªèãããŠããŸããã ããã¯åãå
¥ããããŸããããŸããäžéšã®ç€ŸäŒã§ã¯ããæã§æžããããšããäžè¬çã«äœããã®æ¹æ³ã§åœŒã«é£çµ¡ããããšã¯ãéåžžã«åå£ã§ãã 倿°ã®DBããŒã«ãšãã¬ãŒã ã¯ãŒã¯èªäœãã·ã¹ãã ã«å¯ŸããŠã ããªãããŒã§è€é㪠ãSQLã¯ãšãªãçæããã³å®è¡ãããã®ããã»ã¹ãã芳å¯ã§ããªããšããäºå®ã«é·ãéæ
£ããŠããŸããã ãããããŠã©ãŒã ãã¥ãŒãã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ãšã³ãŒããžã§ãã¬ãŒã¿ãŒã®å¿«é©ãŸãŒã³ãé¢ããéåžžã®ã³ãŒãã®èгç¹ããDBMSãèŠãŠã¿ãŸãããã ããã«ãããã«å¿
èŠãªãã®ã¯ãã¹ãŠæã£ãŠããŸãã
ã±ãŒã¹ã«ç§»ããŸãã DBMSã®ãŠãŒã¶ãŒã¯ãå€ãã®èšèªã«éŠŽæã¿ã®ããã·ã³ãã«ã§çè§£ããããã³ãŒãã®åœ¢ã§ãããŒã¿ããŒã¹ãæäœããã»ãŒãã¹ãŠã®åŽé¢ã説æããæ©äŒããããŸãã ããã¯ANSI SQLã§ã¯ãªãã䜿çšããããŒã¿ããŒã¹ã«å¿ããŠãSQLã«äŒŒãæ¹èšããŸãã¯ç¬èªã®çµã¿èŸŒã¿QLãŸãã¯APIã§ããå ŽåããããŸãã ããã¯ã©ã®ããã«åœ¹ç«ã¡ãŸããïŒ
- ããŒã«ã«çžãããããšãªããããŒã¿ããŒã¹ã«é¢ããæ
å ±ãé©åãªåœ¢åŒã§ååŸããããããŒã¿ããŒã¹ã«å¯ŸããŠæäœãå®è¡ãããã§ããŸãã
- ãªããªã ãŸã éåžžã®ã³ãŒãã§ãããããä»ã®ãå®éã®ãã³ãŒããšåæ§ã«æ±ãå¿
èŠããããŸãã ã€ãŸããæ¿èªãããæšæºã«åŸã£ãŠçè§£ãæ§é åãããã³ãã©ãŒããããããæšæºã³ãŒãã©ã€ããµã€ã¯ã«ã®ãã¹ãŠã®æ®µéã«åå ããå¿
èŠããããŸããVCSã®ç®¡çäžã«ãããã³ãŒãã¬ãã¥ãŒãåããCI / CDãã€ãã©ã€ã³ã«åå ããŸãã ãSQLããªãã¯ããšåŒã°ãããã©ã«ãå
ã®ã©ããã«ããã€ããŠããŸãã ããã«ãããããŒã ã®å質ãšäŸ¡å€ãåäžããŸãã
ãã®ããŒãã«é¢ããããªãã®æèŠã¯è峿·±ãã§ããã³ã¡ã³ãã«æžããŠãã ãã-ç§ãã¡ã¯è°è«ããŸãã
æ¬¡ã®æçš¿ã§ã¯ãäžèšã®ã¢ã€ãã¢ãå
·äœçãªäŸã§èª¬æãããšãšãã«ãCROCã§ããããç ç©¶ãããžã§ã¯ãã®äžéšãšããŠéçºãããŠããå®éšçãªãªãŒãã³ãœãŒã¹ã®ã°ã©ãã£ã«ã«DBãããŒãžã£ãŒã«ã©ã®ããã«é©çšãããã«ã€ããŠã話ããŸãã