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ãŸãã¯ãã®ä»ã®ããã°ã©ãã³ã°èšèªïŒãšãšãã«æšæºã®ã©ã€ããµã€ã¯ã«ã«åå ããŸããã€ãŸããããŒãžã§ã³ç®¡çã·ã¹ãã ã«æ ŒçŽãããŸãïŒãã¹ãŠã®çµæ-ãã©ã³ãããã©ãŒã¯ãã³ãŒãã¬ãã¥ãŒïŒãã¢ã»ã³ããªãµãŒããŒã§ã®ãã«ããèªåãã¹ãã®å®è¡ãªã©ã
å°æ¥ããã®ã¢ãããŒãã®åœ±é¿ã¯ä»ã®åéã§ãé¡èã«ãªããŸããã
- ã ã³ãŒããšããŠãã¹ã ã- ã¹ãã㯠ã ãã¥ãŠãª ã ã¬ããªã³ã° ã ãã¹ããã³
- ã ã³ãŒããšããŠã®ãã€ãã©ã€ã³ ã- ãžã§ã³ãã³ã¹ãã€ãã©ã€ã³
- ã ã³ãŒããšããŠã®ããã¥ã¡ã³ã ã-MarkdownãAsciiDocãLaTeX
- ã å³ãšããŠã®ã³ãŒã ã -PlantUML ã Graphviz ã Mermaid ã ãããŒãã£ãŒã .js
- ã ã³ãŒããšããŠã®DNS ã -DNSControl ã OctoDNS
- ã ã³ãŒããšããŠã®ãã¬ãŒã³ããŒã·ã§ã³ ã -rename.js
ãŸããŸãå€ãã®äººã ãã³ãŒããæžãããšãæããªããªãããããæšæºã«ãªãã€ã€ãããŸãã ããã«ãããããæè»ãªæ§æãå¯èœã«ãªããäžè¬çãªãããŒã§äžè¬çãªããŒã«ïŒããŒãžã§ã³ç®¡çãã¡ããªãã¯ãèŠèŠåãã¬ããŒãããã¹ããªã©ïŒã䜿çšããããšãã§ããŸãã å€ãã®å°çšããŒã«ã§ã¯ãã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ããããæè»ãªããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ãããŸããŸãª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ãšãªã¬ãŒã·ã§ãã«ããŒãã«ã«é¢ããåŠå®æ§ã§æºããããã¹ããŒãã£ãŒãªæ»ãäºç€ºããŸããïŒæ祚æ°ã¯æ¬åŒ§å ã«ç€ºãããã³ã¡ã³ãæ°ã¯ã¹ã©ãã·ã¥ã§ç€ºãããŸãïŒã
- 2009- ãMongoDBãŸãã¯SQLãæããã®ããããæ¹æ³ã ïŒ +115 / 99 ïŒ
- 2010- NoSQLã³ã¬ã¯ã·ã§ã³ãã€ã³ã ïŒ +53/45 ïŒ
- 2011- ããªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã®éåœã¯ïŒã ïŒ +77 / 131 ïŒ
- 2012- ãNoSQLããŒã¿ããŒã¹ïŒæ¬è³ªãç解ããã ïŒ +129 / 75 ïŒ
ãã ãã12æ³é ãããHabréã®é°å²æ°ã¯èããå€ãããŸããã
- 2012- ãnoSQLã䜿çšããåã«èãã1000åã ïŒ +109 / 130 ïŒ
- 2013- ãNoSQLãšããã°ââããŒã¿-åŽåè ã欺ãïŒã ïŒ +75 / 286 ïŒ
- 2014- ãMongoDBã䜿çšããªãçç±ãïŒ+143/245ïŒ ïŒ +143 / 245 ïŒ
- 2017- ãSQLãNoSQLã«åãçç±ãšãä»åŸSQLããããããã®ã ïŒ +22 / 105 ïŒ
- 2018- ãããããæ©æ¢°åŠç¿ã¯å¿ èŠãããŸãããSQLãå¿ èŠã§ãã ïŒ +102 / 417 ïŒ
åæã«ãåSQLãšåãªã¬ãŒã·ã§ãã«ã®ææ ã¯åŒãç¶ãçºçããŸããããããã«å¯Ÿããã³ãã¥ããã£ã®åå¿ã¯ãŸã£ããç°ãªããŸãã
- 2014- ãRDBMSãŸãã¯RDBMSãšNoSQLã®æ¬ ç¹ã ïŒ -34 / 79 ïŒ
- 2015- ãå±¥æŽããã³ãããã®ã¯ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ã®æéã§ã¯ãªãã§ããïŒã ïŒ -7 / 309 ïŒ
ãããã®ææ ã®ç¢ºèªã¯ã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ãããŒãžã£ãŒã«ã©ã®ããã«é©çšãããã«ã€ããŠã話ããŸãã