ããããã¹ã¯åšäœã®çãããããã«ã¡ã¯ã ãã€ãã®ããã«ãæ°ããã³ãŒã¹ã®éå§ã«å
ç«ã£ãŠèå³æ·±ãå
容ãå
±æãç¶ããŸãã æ¬æ¥ã¯ãç¹ã«çããã®ããã«ãã³ãŒã¹ã®éå§ã«åãã㊠Google Cloud Spanner ã«é¢ããèšäºãå
¬éããŸããã
æåã«åºçãããã®ã¯
Lightspeed ã¯ãäžçäžã®å°å£²æ¥è
ãã¬ã¹ãã©ã³çµå¶è
ããªã³ã©ã€ã³è²©å£²è
ã«ããŸããŸãªã¯ã©ãŠãããŒã¹ã® POS ãœãªã¥ãŒã·ã§ã³ãæäŸããäŒæ¥ãšããŠãããŸããŸãªãã©ã³ã¶ã¯ã·ã§ã³ãåæãæ€çŽ¢ã®ãŠãŒã¹ã±ãŒã¹ã«ããã€ãã®ç°ãªãã¿ã€ãã®ããŒã¿ããŒã¹ ãã©ãããã©ãŒã ã䜿çšããŠããŸãã ãããã®ããŒã¿ããŒã¹ ãã©ãããã©ãŒã ã«ã¯ããããç¬èªã®é·æãšçæããããããGoogle ã Cloud Spanner ãåžå Žã«å°å
¥ãããšããäºå®äžç¡å¶éã®æ°Žå¹³æ¹åã®ã¹ã±ãŒã©ããªãã£ã 99,999% ã®ãµãŒãã¹ ã¬ãã« ã¢ã°ãªãŒã¡ã³ã (SLA) ãªã©ããªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã®äžçã§ã¯èŠãããªãææãªæ©èœãæäŸãããŸããã â ç§ãã¡ã¯ãããæã«å
¥ããæ©äŒãéãããã«ã¯ãããŸããã§ããïŒ
Cloud Spanner ã®äœ¿çšçµéšãšäœ¿çšããè©äŸ¡åºæºã®å
æ¬çãªæŠèŠãæäŸããããã«ã次ã®ãããã¯ã«ã€ããŠèª¬æããŸãã
- åœç€Ÿã®è©äŸ¡åºæº
- Cloud Spanner ã®æŠèŠ
- ç§ãã¡ã®è©äŸ¡
- æã ã®èª¿æ»çµæ
1. åœç€Ÿã®è©äŸ¡åºæº
Cloud Spanner ã®è©³çŽ°ãåžå Žã®ä»ã®ãœãªã¥ãŒã·ã§ã³ãšã®é¡äŒŒç¹ãšçžéç¹ã«å ¥ãåã«ããŸããã€ã³ãã©ã¹ãã©ã¯ãã£å ã®ã©ãã« Cloud Spanner ããããã€ããããæ€èšããéã«å¿µé ã«çœ®ããŠããäž»ãªãŠãŒã¹ã±ãŒã¹ã«ã€ããŠè©±ããŸãããã
- (äž»æµã®) åŸæ¥ã® SQL ããŒã¿ããŒã¹ ãœãªã¥ãŒã·ã§ã³ã®ä»£æ¿ãšããŠ
- OLAP ãµããŒãã䜿çšãã OLTP ãœãªã¥ãŒã·ã§ã³ã®äœ¿çšæ¹æ³
泚æïŒ æ¯èŒãããããããããããã«ããã®èšäºã§ã¯ Cloud Spanner ã GCP Cloud SQL ããã³ Amazon AWS RDS ãœãªã¥ãŒã·ã§ã³ ãã¡ããªãŒã® MySQL ããªã¢ã³ããšæ¯èŒããŸãã
åŸæ¥ã® SQL ããŒã¿ããŒã¹ ãœãªã¥ãŒã·ã§ã³ã®ä»£æ¿ãšã㊠Cloud Spanner ã䜿çšãã
ç°å¢ã®äžã§ äŒçµ±ç㪠ããŒã¿ããŒã¹ã§ã¯ãããŒã¿ããŒã¹ ã¯ãšãªã®å¿çæéã (äž»ã«ãŠãŒã¶ãŒæ°ããªã¯ãšã¹ãã®å¢å ã«ãã) äºåã«å®çŸ©ãããã¢ããªã±ãŒã·ã§ã³ã®ãããå€ã«è¿ã¥ããããè¶ ãããããå Žåãå¿çæéã蚱容ã¬ãã«ãŸã§ççž®ããæ¹æ³ãããã€ããããŸãã ãã ãããããã®ãœãªã¥ãŒã·ã§ã³ã®ã»ãšãã©ã«ã¯æåä»å ¥ãå¿ èŠã§ãã
ããšãã°ãæåã«å®è¡ããã¹ãããã¯ãããŸããŸãªããã©ãŒãã³ã¹é¢é£ã®ããŒã¿ããŒã¹ ãã©ã¡ãŒã¿ãŒã確èªããã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¹ã±ãŒã¹ ãã¿ãŒã³ã«æãããé©åããããã«èª¿æŽããããšã§ãã ããã§ååã§ãªãå Žåã¯ãããŒã¿ããŒã¹ãåçŽæ¹åãŸãã¯æ°Žå¹³æ¹åã«æ¡åŒµããããšãéžæã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ãåçŽã«ã¹ã±ãŒãªã³ã°ããã«ã¯ãéåžžãããã»ããµ/ã³ã¢ãRAMãé«éã¹ãã¬ãŒãžãªã©ãè¿œå ããããšã«ãã£ãŠããµãŒã㌠ã€ã³ã¹ã¿ã³ã¹ãã¢ããã°ã¬ãŒãããå¿ èŠããããŸããããŒããŠã§ã¢ ãªãœãŒã¹ãè¿œå ãããšãäž»ã«ç§åäœã®ãã©ã³ã¶ã¯ã·ã§ã³ã§æž¬å®ãããããŒã¿ããŒã¹ ããã©ãŒãã³ã¹ãšãOLTP ã·ã¹ãã ã®ãã©ã³ã¶ã¯ã·ã§ã³ ã¬ã€ãã³ã·ãåäžããŸãã MySQL ãªã©ã®ãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ ã·ã¹ãã (ãã«ãã¹ã¬ãã ã¢ãããŒãã䜿çšãã) ã¯ãåçŽæ¹åã«ååã«æ¡åŒµã§ããŸãã
ãã®ã¢ãããŒãã«ã¯ããã€ãã®æ¬ ç¹ããããŸãããæãæãããªã®ã¯åžå Žã®æ倧ãµãŒã㌠ãµã€ãºã§ãã æ倧ã®ãµãŒã㌠ã€ã³ã¹ã¿ã³ã¹ã®å¶éã«éãããšãæ®ããããªãã·ã§ã³ã¯æ°Žå¹³ã¹ã±ãŒãªã³ã°ã® XNUMX ã€ã ãã«ãªããŸãã
æ°Žå¹³ã¹ã±ãŒãªã³ã°ã¯ãããå€ãã®ãµãŒããŒãã¯ã©ã¹ã¿ãŒã«è¿œå ããã¢ãããŒãã§ãããçæ³çã«ã¯ãµãŒããŒã®æ°ãè¿œå ãããã«ã€ããŠããã©ãŒãã³ã¹ãçŽç·çã«åäžããŸãã éåæ° äŒçµ±ç㪠ããŒã¿ããŒã¹ ã·ã¹ãã ã¯æ°Žå¹³æ¹åã«ããŸãæ¡åŒµã§ããªããããŸã£ããæ¡åŒµã§ããŸããã ããšãã°ãMySQL ã¯ã¹ã¬ãŒã ãªãŒããŒãè¿œå ããããšã§èªã¿åãæäœã«å¯ŸããŠæ°Žå¹³æ¹åã«ã¹ã±ãŒãªã³ã°ã§ããŸãããæžã蟌ã¿ã«å¯ŸããŠã¯æ°Žå¹³æ¹åã«ã¹ã±ãŒãªã³ã°ã§ããŸããã
äžæ¹ãCloud Spanner ã¯ãã®æ§è³ªäžãæå°éã®ä»å ¥ã§ç°¡åã«æ°Žå¹³æ¹åã«ã¹ã±ãŒãªã³ã°ã§ããŸãã
ãã«æ©èœ ãµãŒãã¹ãšããŠã® DBMS ããŸããŸãªè§åºŠããè©äŸ¡ããå¿ èŠããããŸãã åºç€ãšããŠãã¯ã©ãŠãã§æã人æ°ã®ãã DBMS (Google ã®å Žå㯠GCP Cloud SQLãAmazon ã®å Žå㯠AWS RDS) ãæ¡çšããŸããã ç§ãã¡ã®è©äŸ¡ã§ã¯ã次ã®ã«ããŽãªã«çŠç¹ãåœãŠãŸããã
- æ©èœãããã³ã°: ãšã¯ã¹ãã³ã SQLãDDLãDMLã æ¥ç¶ã©ã€ãã©ãª/ã³ãã¯ã¿ããã©ã³ã¶ã¯ã·ã§ã³ ãµããŒããªã©ã
- éçºãµããŒã: éçºãšãã¹ããç°¡åã
- 管çãµããŒã: ã€ã³ã¹ã¿ã³ã¹ç®¡ç - ã€ã³ã¹ã¿ã³ã¹ã®ã¹ã±ãŒã«ã¢ãã/ããŠã³ãã¢ããã°ã¬ãŒããªã©ã SLAãããã¯ã¢ãããšãªã«ããªã ã»ãã¥ãªãã£/ã¢ã¯ã»ã¹å¶åŸ¡ã
OLAP 察å¿ã® OLTP ãœãªã¥ãŒã·ã§ã³ãšã㊠Cloud Spanner ã䜿çšãã
Google 㯠Cloud Spanner ãåæåŠççšã«èšèšãããŠãããšã¯æèšããŠããŸããããOLAP ã¯ãŒã¯ããŒãçšã«èšèšããã Apache Impala ã KuduãYugaByte ãªã©ã®ä»ã®ãšã³ãžã³ãšäžéšã®å±æ§ãå ±æããŠããŸãã
ããšã Cloud Spanner ã«ãïŒå€ããå°ãªããïŒäœ¿çšå¯èœãª OLAP æ©èœã»ãããåããäžè²«ããã¹ã±ãŒã«ã¢ãŠã HTAPïŒãã€ããªãã ãã©ã³ã¶ã¯ã·ã§ã³/åæåŠçïŒãšã³ãžã³ãå«ãŸããŠããå¯èœæ§ããããã§ãã£ããšããŠãã泚ç®ã«å€ãããšèããŠããŸãã
ããã念é ã«çœ®ããŠã次ã®ã«ããŽãªãæ€èšããŸããã
- ããŒã¿ã®ããŒããã€ã³ããã¯ã¹ãããŒãã£ã·ã§ãã³ã°ã®ãµããŒã
- ã¯ãšãªã®ããã©ãŒãã³ã¹ãš DML
2. Cloud Spanner ã®æŠèŠ
Google Spanner ã¯ãGoogle ãããã€ãã®èªç€ŸãµãŒãã¹ã«äœ¿çšããŠããã¯ã©ã¹ã¿ãŒåãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ç®¡çã·ã¹ãã (RDBMS) ã§ãã Google ã¯ã2017 幎åãã« Google Cloud Platform ãŠãŒã¶ãŒã«å¯ŸããŠäžè¬æäŸãéå§ããŸããã
Cloud Spanner ã®å±æ§ã®äžéšã次ã«ç€ºããŸãã
- äžè²«æ§ã®é«ãã¹ã±ãŒã©ãã«ãª RDBMS ã¯ã©ã¹ã¿ãŒ: ããŒããŠã§ã¢ã®æå»åæã䜿çšããŠããŒã¿ã®äžè²«æ§ã確ä¿ããŸãã
- ã¯ãã¹ããŒãã« ãã©ã³ã¶ã¯ã·ã§ã³ã®ãµããŒã: ãã©ã³ã¶ã¯ã·ã§ã³ã¯è€æ°ã®ããŒãã«ã«ãŸãããããšãã§ããŸããã(Apache HBase ã Apache Kudu ãšã¯ç°ãªã) å¿ ãããåäžã®ããŒãã«ã«éå®ãããããã§ã¯ãããŸããã
- äž»ããŒããŒã¹ã®ããŒãã«: ãã¹ãŠã®ããŒãã«ã«ã¯å®£èšãããäž»ã㌠(PC) ãå¿
èŠã§ããäž»ããŒã¯ããŒãã«å
ã®è€æ°ã®åã§æ§æãããŸãã 衚圢åŒã®ããŒã¿ã¯ PC ã®é åºã§ä¿åããããããPC ã®æ€çŽ¢ãéåžžã«å¹ççãã€é«éã«ãªããŸãã ä»ã® PC ããŒã¹ã®ã·ã¹ãã ãšåæ§ã«ãå®è£
ã¯ãç®çãéæããããã«ãäºåã«èšèšããããŠãŒã¹ã±ãŒã¹ã念é ã«çœ®ããŠã¢ãã«åããå¿
èŠããããŸãã
æé«ã®ããã©ãŒãã³ã¹ . - ã¹ãã©ã€ãåãããããŒãã«: ããŒãã«ã¯çžäºã«ç©ççãªäŸåé¢ä¿ãæã€ããšãã§ããŸãã åããŒãã«ã®è¡ã¯ã芪ããŒãã«ã®è¡ãšç §åã§ããŸãã ãã®ã¢ãããŒãã«ããã顧客ãšãã®è«æ±æžãåãå Žæã«é 眮ãããªã©ãããŒã¿ ã¢ããªã³ã°æ®µéã§ç¹å®ã§ããé¢ä¿ã®æ€çŽ¢ãé«éåãããŸãã
- ã€ã³ããã¯ã¹: Cloud Spanner ã¯ã»ã«ã³ã㪠ã€ã³ããã¯ã¹ããµããŒãããŠããŸãã ã€ã³ããã¯ã¹ã¯ãã€ã³ããã¯ã¹ä»ãåãšãã¹ãŠã® PC åã§æ§æãããŸãã å¿ èŠã«å¿ããŠãã€ã³ããã¯ã¹ã«ä»ã®ã€ã³ããã¯ã¹ã®ãªãåãå«ããããšãã§ããŸãã ã€ã³ããã¯ã¹ã芪ããŒãã«ãšã€ã³ã¿ãŒãªãŒãããŠãã¯ãšãªãé«éåã§ããŸãã ã€ã³ããã¯ã¹ã«æ ŒçŽãããè¿œå åã®æ倧æ°ãªã©ãããã€ãã®å¶éãã€ã³ããã¯ã¹ã«é©çšãããŸãã ãŸããã€ã³ããã¯ã¹ã䜿çšããã¯ãšãªã¯ãä»ã® RDBMS ã»ã©åçŽã§ã¯ãªãå ŽåããããŸãã
ãCloud Spanner ã¯ããŸãã«ã€ã³ããã¯ã¹ãèªåçã«éžæããŸãã ç¹ã«ãã¯ãšãªãã»ã«ã³ã㪠ã€ã³ããã¯ã¹ã«ä¿åãããŠããªãåããªã¯ãšã¹ãããå ŽåãCloud Spanner ã¯ã»ã«ã³ã㪠ã€ã³ããã¯ã¹ãèªåçã«éžæããŸããã
- ãµãŒãã¹ ã¬ãã« ã¢ã°ãªãŒã¡ã³ã (SLA): 99,99% ã® SLA 㧠99,999 ã€ã®ãªãŒãžã§ã³ã«å°å ¥ã 99,999% ã® SLA ãåãããã«ããªãŒãžã§ã³å±éã SLA èªäœã¯åãªãåæã§ããããããªãçš®é¡ã®ä¿èšŒã§ããããŸããããGoogle ã®äººã ã¯ãã®ãããªåŒ·åãªäž»åŒµãè¡ãããã®ç¢ºããªããŒã¿ãæã£ãŠãããšç§ã¯ä¿¡ããŠããŸãã (åèãŸã§ã«ã26,3% ãšã¯ãXNUMX ãæããã XNUMX ç§éãµãŒãã¹ãå©çšã§ããªãããšãæå³ããŸãã)
- ãã£ãšïŒ
https://cloud.google.com/spanner/
泚æïŒ Apache Tephra ãããžã§ã¯ãã¯ãæ¡åŒµããããã©ã³ã¶ã¯ã·ã§ã³ ãµããŒãã Apache HBase ã«è¿œå ããŸã (ãããçŸåšã¯ããŒã¿çãšã㊠Apache Phoenix ã«å®è£ ãããŠããŸã)ã
3. åœç€Ÿã®è©äŸ¡
ãããã£ãŠãé«ãäžè²«æ§ãšéåžžã«é«ã SLA ãç¶æããªãããäºå®äžç¡å¶éã®æ°Žå¹³ã¹ã±ãŒãªã³ã°ãå¯èœã§ãããšãããCloud Spanner ã®å©ç¹ã«ã€ããŠã® Google ã®äž»åŒµã誰ããèªãã ããšããããŸãã ãããã«ããããããã®èŠä»¶ãéæããã®ã¯éåžžã«å°é£ã§ãããç§ãã¡ã®ç®æšã¯ãããã®èŠä»¶ã«åè«ããããšã§ã¯ãããŸããã 代ããã«ãã»ãšãã©ã®ããŒã¿ããŒã¹ ãŠãŒã¶ãŒãæ°ã«ããä»ã®ç¹ãã€ãŸãããªãã£ãšäœ¿ããããã«çŠç¹ãåœãŠãŸãããã
Cloud Spanner ã Sharded MySQL ã®ä»£æ¿ãšããŠè©äŸ¡ããŸãã
ã¯ã©ãŠãåžå Žã§æã人æ°ã®ãã OLTP DBMS ã® XNUMX ã€ã§ãã Google Cloud SQL ãš Amazon AWS RDS ã«ã¯ãéåžžã«å€ãã®æ©èœãåãã£ãŠããŸãã ãã ãããããã®ããŒã¿ããŒã¹ãåäžããŒãã®ãµã€ãºãè¶ ããŠæ¡åŒµããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããŒãã£ã·ã§ãã³ã°ãå®è¡ããå¿ èŠããããŸãã ãã®ã¢ãããŒãã«ãããã¢ããªã±ãŒã·ã§ã³ãšç®¡çã®äž¡æ¹ãããã«è€éã«ãªããŸãã è€æ°ã®ã·ã£ãŒãã XNUMX ã€ã®ã€ã³ã¹ã¿ã³ã¹ã«çµåããã·ããªãªã« Spanner ãã©ã®ããã«é©åããã®ãããŸããã©ã®æ©èœ (ããå Žå) ãç ç²ã«ããå¿ èŠãããã®ãââãæ€èšããŸããã
SQLãDMLãDDL ã®ãµããŒããããã³ã³ãã¯ã¿ãšã©ã€ãã©ãª?
ãŸããããŒã¿ããŒã¹ãå§ãããšãã¯ãããŒã¿ ã¢ãã«ãäœæããå¿ èŠããããŸãã JDBC Spanner ããæ°ã«å ¥ãã® SQL ããŒã«ã«æ¥ç¶ã§ãããšèããŠããå Žåã¯ãJDBC Spanner ã䜿çšããŠããŒã¿ã®ã¯ãšãªã¯å®è¡ã§ããŸãããããŒãã«ã®äœæãå€æŽ (DDL)ããŸãã¯æ¿å ¥/æŽæ°/åé€ã«ã¯äœ¿çšã§ããªãããšãããããŸããæäœ (DML)ã Google ã®å ¬åŒ JDBC ã¯ããããã®ã©ã¡ãããµããŒãããŠããŸããã
ããã©ã€ããŒã¯çŸåšãDML ãŸã㯠DDL ã¹ããŒãã¡ã³ãããµããŒãããŠããŸãããã
ã¹ããã®ããã¥ã¡ã³ã
GCP ã³ã³ãœãŒã«ã§ãç¶æ³ã¯æ¹åãããŸãããéä¿¡ã§ããã®ã¯ SELECT ã¯ãšãªã®ã¿ã§ãã 幞ããªããšã«ããã©ã³ã¶ã¯ã·ã§ã³ãå«ã DML ããã³ DDL ããµããŒããã JDBC ãã©ã€ããŒãã³ãã¥ããã£ããæäŸãããŠããŸãã
Cloud Spanner ã«ã¹ã¿ã API ã®äœ¿çšãã»ãŒå¿ é ã§ããããïŒJDBC ã« DDL ãš DML ããªãããïŒãæ¥ç¶ããŒã«ãããŒã¿ããŒã¹ ãã€ã³ãã£ã³ã° ãã¬ãŒã ã¯ãŒã¯ïŒSpring MVC ãªã©ïŒãªã©ã®é¢é£ã³ãŒãé åã«ããã€ãã®å¶éãçããŸãã éåžžãJDBC ã䜿çšããå Žåããã¹ããããé©åã«åäœãããæ°ã«å ¥ãã®æ¥ç¶ããŒã« (HikariCPãDBCPãC3PO ãªã©) ãèªç±ã«éžæã§ããŸãã ã«ã¹ã¿ã Spanner API ã®å Žåã¯ãèªåã§äœæãããã¬ãŒã ã¯ãŒã¯/ãã€ã³ãã£ã³ã° ããŒã«/ã»ãã·ã§ã³ã«äŸåããå¿ èŠããããŸãã
äž»ããŒïŒPCïŒäžå¿ã®èšèšã«ãããCloud Spanner 㯠PC çµç±ã§ããŒã¿ã«ã¢ã¯ã»ã¹ããéã«éåžžã«é«éã«ãªããŸãããã¯ãšãªã®åé¡ãçºçããŸãã
- äž»ããŒã®å€ãæŽæ°ããããšã¯ã§ããŸããã ãŸãå ã® PC ãããšã³ããªãåé€ããæ°ããå€ã䜿çšããŠåæ¿å ¥ããå¿ èŠããããŸãã (ããã¯ãä»ã® PC æåã®ããŒã¿ããŒã¹/ã¹ãã¬ãŒãž ãšã³ãžã³ãšäŒŒãŠããŸãã)
- UPDATE ããã³ DELETE ã¹ããŒãã¡ã³ã㯠WHERE 㧠PC ãæå®ããå¿ èŠãããããã空㮠DELETE all ã¹ããŒãã¡ã³ãã¯äœ¿çšã§ããŸãããåžžã«ãµãã¯ãšãªãå¿ èŠã§ããäŸ: UPDATE xxx WHERE id IN (SELECT id FROM table1)
- èªåã€ã³ã¯ãªã¡ã³ã ãªãã·ã§ã³ããPC ãã£ãŒã«ãã®ã·ãŒã±ã³ã¹ãèšå®ããé¡äŒŒã®ãªãã·ã§ã³ããããŸããã ãããæ©èœããã«ã¯ã察å¿ããå€ãã¢ããªã±ãŒã·ã§ã³åŽã§äœæããå¿ èŠããããŸãã
ã»ã«ã³ããªã€ã³ããã¯ã¹?
Google Cloud Spanner ã«ã¯ã»ã«ã³ã㪠ã€ã³ããã¯ã¹ã®ãµããŒããçµã¿èŸŒãŸããŠããŸãã ããã¯ãä»ã®ãã¯ãããžãŒã«ã¯å¿ ãããååšããªãéåžžã«åªããæ©èœã§ãã çŸåšãApache Kudu ã¯ã»ã«ã³ã㪠ã€ã³ããã¯ã¹ããŸã£ãããµããŒãããŠããŸããããŸããApache HBase ã¯ã€ã³ããã¯ã¹ãçŽæ¥ãµããŒãããŠããŸããããApache Phoenix ãéããŠã€ã³ããã¯ã¹ãè¿œå ã§ããŸãã
Kudu ãš HBase ã®ã€ã³ããã¯ã¹ã¯ãäž»ããŒã®æ§æãç°ãªãå¥åã®ããŒãã«ãšããŠã¢ãã«åã§ããŸããã芪ããŒãã«ããã³é¢é£ããã€ã³ããã¯ã¹ ããŒãã«ã«å¯ŸããŠå®è¡ãããæäœã®ã¢ãããã¯æ§ã¯ã¢ããªã±ãŒã·ã§ã³ ã¬ãã«ã§å®è¡ããå¿ èŠããããæ£ããå®è£ ããã®ã¯ç°¡åã§ã¯ãããŸããã
Cloud Spanner ã®ã¬ãã¥ãŒã§è¿°ã¹ãããã«ããã®ã€ã³ããã¯ã¹ã¯ MySQL ã€ã³ããã¯ã¹ãšã¯ç°ãªãå ŽåããããŸãã ãããã£ãŠãã¯ãšãªãšãããã¡ã€ãªã³ã°ãæ§ç¯ãããšãã¯ãå¿ èŠãªå Žæã§é©åãªã€ã³ããã¯ã¹ã䜿çšãããããã«ç¹å¥ãªæ³šæãæãå¿ èŠããããŸãã
è¡šçŸïŒ
ããŒã¿ããŒã¹å ã§éåžžã«äººæ°ããã䟿å©ãªãªããžã§ã¯ãã¯ãã¥ãŒã§ãã ãããã¯å€ãã®ãŠãŒã¹ã±ãŒã¹ã«åœ¹ç«ã¡ãŸãã ç§ã®ãæ°ã«å ¥ãã® XNUMX ã€ã¯ãè«çæœè±¡åå±€ãšã»ãã¥ãªãã£å±€ã§ãã æ®å¿µãªãããCloud Spanner ã¯ãã¥ãŒããµããŒãããŠããŸããã ãã ãããã¥ãŒãå®è¡å¯èœãªãœãªã¥ãŒã·ã§ã³ãšãªãå¯èœæ§ãããåã¬ãã«ã§ã®ã¢ã¯ã»ã¹èš±å¯ã®ç²åºŠããªããããããã¯éšåçã«ã®ã¿å¶éãããŸãã
å²ãåœãŠãšå¶éã®è©³çŽ°ã«ã€ããŠã¯ãCloud Spanner ã®ããã¥ã¡ã³ããåç
§ããŠãã ãã (
éçºãµããŒãïŒ
Cloud Spanner ã¯ãAPI ãæäœããããã®ããªãé©åãªããã°ã©ãã³ã°èšèªãµããŒããæäŸããŸãã å ¬åŒã«ãµããŒããããŠããã©ã€ãã©ãªã¯ãC#ãGoãJavaãnode.jsãPHPãPythonãRuby ã®åéã§ãã ããã¥ã¡ã³ãã¯éåžžã«è©³çŽ°ã«èšèŒãããŠããŸãããä»ã®é«åºŠãªãã¯ãããžãŒãšåæ§ã«ãã³ãã¥ããã£ã¯æãäžè¬çãªããŒã¿ããŒã¹ ãã¯ãããžãŒã«æ¯ã¹ãŠéåžžã«å°ãããããããŸãäžè¬çã§ã¯ãªã䜿çšäŸãåé¡ã®è§£æ±ºã«å€ãã®æéãè²»ããããå¯èœæ§ããããŸãã
ã§ã¯ãå°åã®çºå±ãæ¯æŽããããšã¯ã©ãã§ããããïŒ
ãªã³ãã¬ãã¹ã§ Cloud Spanner ã€ã³ã¹ã¿ã³ã¹ãäœæããæ¹æ³ã¯èŠã€ãããŸããã§ããã å
¥æããäžã§æãè¿ããã®ã¯ Docker ã€ã¡ãŒãžã§ããã
è¡æ¿ã®ãµããŒãïŒ
Cloud Spanner ã€ã³ã¹ã¿ã³ã¹ã®äœæã¯éåžžã«ç°¡åã§ãã ãã«ããªãŒãžã§ã³ã®ã€ã³ã¹ã¿ã³ã¹ãäœæãããåäžãªãŒãžã§ã³ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããããéžæãããªãŒãžã§ã³ãšããŒãã®æ°ãæå®ããã ãã§ãã XNUMX å以å ã«ã€ã³ã¹ã¿ã³ã¹ãèµ·åããŠå®è¡ãããŸãã
ããã€ãã®åºæ¬çãªææšã«ã¯ãGoogle ã³ã³ãœãŒã«ã® Spanner ããŒãžããçŽæ¥ã¢ã¯ã»ã¹ã§ããŸãã Stackdriver ãéããŠããã«è©³çŽ°ãªãã¥ãŒãå©çšã§ããææšã®ãããå€ãã¢ã©ãŒã ããªã·ãŒãèšå®ããããšãã§ããŸãã
ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹?
MySQL ã¯ããŠãŒã¶ãŒã®æš©é/ããŒã«ã«å¯ŸããŠåºç¯å²ãã€éåžžã«è©³çŽ°ãªèšå®ãæäŸããŸãã ç¹å®ã®ããŒãã«ããŸãã¯ãã®åã®ãµãã»ããã®ã¿ãžã®ã¢ã¯ã»ã¹ãç°¡åã«æ§æã§ããŸãã Cloud Spanner ã¯ãGoogle ã® Identity & Access Management (IAM) ããŒã«ã䜿çšããŸãããã®ããŒã«ã§ã¯ãéåžžã«é«ãã¬ãã«ã§ã®ããªã·ãŒãšæš©éã®èšå®ã®ã¿ãå¯èœã§ãã æã詳现ãªãªãã·ã§ã³ã¯ããŒã¿ããŒã¹ ã¬ãã«ã®è§£æ±ºã§ãããããã¯ã»ãšãã©ã®å®çšŒåãŠãŒã¹ ã±ãŒã¹ã«ã¯é©åããŸããã ãã®å¶éã«ãããSpanner ãªãœãŒã¹ã®äžæ£äœ¿çšãé²ãããã«ãã³ãŒããã€ã³ãã©ã¹ãã©ã¯ãã£ããŸãã¯ãã®äž¡æ¹ã«è¿œå ã®ã»ãã¥ãªãã£å¯Ÿçãè¿œå ããå¿ èŠããããŸãã
ããã¯ã¢ãã?
ç°¡åã«èšããšãCloud Spanner ã«ã¯ããã¯ã¢ããããããŸããã Google ã®é«ã SLA èŠä»¶ã«ãããããŒããŠã§ã¢ãããŒã¿ããŒã¹ã®é害ã人çºçãšã©ãŒãã¢ããªã±ãŒã·ã§ã³ã®æ¬ é¥ãªã©ã«ãã£ãŠããŒã¿ã倱ãããªãããšãä¿èšŒãããŠããŸãããé«å¯çšæ§ã¯å¥å šãªããã¯ã¢ããæŠç¥ã®ä»£ããã«ã¯ãªããªããšããã«ãŒã«ã¯èª°ããç¥ã£ãŠããŸãã çŸåšãããŒã¿ãããã¯ã¢ããããå¯äžã®æ¹æ³ã¯ãããã°ã©ã ã«ãã£ãŠããŒã¿ããŒã¹ããå¥ã®ã¹ãã¬ãŒãžç°å¢ã«ããŒã¿ãã¹ããªãŒãã³ã°ããããšã§ãã
ã¯ãšãªã®ããã©ãŒãã³ã¹?
Yahoo! ã䜿çšããŠããŒã¿ãããŒãããã¯ãšãªããã¹ãããŸããã ã¯ã©ãŠã ãµãŒãã¹ã®ãã³ãããŒã¯ã 以äžã®è¡šã¯ã95% ã®èªã¿åããš 5% ã®æžã蟌ã¿æ¯çãæ〠YCSB ã¯ãŒã¯ããŒã B ã瀺ããŠããŸãã
* è² è·ãã¹ã㯠n1-standard-32 Compute Engine (CE) (32 vCPUã120 GB ã¡ã¢ãª) ã§å®è¡ããããã¹ã ã€ã³ã¹ã¿ã³ã¹ããã¹ãã®ããã«ããã¯ã«ãªãããšã¯ãããŸããã§ããã
** åäžã® YCSB ã€ã³ã¹ã¿ã³ã¹ã®æ倧ã¹ã¬ããæ°ã¯ 400 ã§ããåèš 2400 ã®ã¹ã¬ãããååŸããã«ã¯ãYCSB ãã¹ãã®åèš XNUMX ã€ã®äžŠåã€ã³ã¹ã¿ã³ã¹ãå®è¡ããå¿
èŠããããŸããã
ãã³ãããŒã¯çµæãç¹ã« CPU è² è·ãš TPS ã®çµã¿åãããèŠããšãCloud Spanner ãéåžžã«ããŸãã¹ã±ãŒã«ããŠããããšãã¯ã£ãããšããããŸãã å€æ°ã®ã¹ã¬ããã«ãã£ãŠçããéãè² è·ã¯ãCloud Spanner ã¯ã©ã¹ã¿å ã®å€æ°ã®ããŒãã«ãã£ãŠçžæ®ºãããŸãã ç¹ã« 2400 ã¹ã¬ããã§å®è¡ããŠããå Žåãã¬ã€ãã³ã·ãŒã¯ããªãé«ãèŠããŸãããããæ£ç¢ºãªæ°å€ãååŸããã«ã¯ãã³ã³ãã¥ãŒãã£ã³ã° ãšã³ãžã³ã® 6 ã€ã®å°ããªã€ã³ã¹ã¿ã³ã¹ã§åãã¹ãããå¿ èŠãããå ŽåããããŸãã åã€ã³ã¹ã¿ã³ã¹ã¯ã6 ã€ã®äžŠåãã¹ããæ〠XNUMX ã€ã®å€§èŠæš¡ãª CE ã€ã³ã¹ã¿ã³ã¹ã§ã¯ãªããXNUMX ã€ã® YCSB ãã¹ããå®è¡ããŸãã ããããããšã§ãCloud Spanner ãªã¯ãšã¹ãã®ã¬ã€ãã³ã·ãšãCloud Spanner ãšãã¹ããå®è¡ãã CE ã€ã³ã¹ã¿ã³ã¹ã®éã®ãããã¯ãŒã¯æ¥ç¶ã«ãã£ãŠè¿œå ãããã¬ã€ãã³ã·ãåºå¥ãããããªããŸãã
Cloud Spanner 㯠OLAP ãšããŠã©ã®ããã«æ©èœããŸãã?
ããŒãã£ã·ã§ãã³ã°ïŒ
ããŒã¿ãç©ççããã³/ãŸãã¯è«ççã«ç¬ç«ããã»ã°ã¡ã³ã (ããŒãã£ã·ã§ã³ãšåŒã°ãã) ã«åå²ããããšã¯ãã»ãšãã©ã® OLAP ãšã³ãžã³ã§èŠãããéåžžã«äžè¬çãªæŠå¿µã§ãã ããŒãã£ã·ã§ã³ã«ãããã¯ãšãªã®ããã©ãŒãã³ã¹ãšããŒã¿ããŒã¹ã®ä¿å®æ§ãå€§å¹ ã«åäžããŸãã ããŒãã£ã·ã§ãã³ã°ã®è©³çŽ°ã«ã€ããŠã¯å¥ã®èšäºã«ãªãã®ã§ãããŒãã£ã·ã§ãã³ã°ãšãµãããŒãã£ã·ã§ãã³ã° ã¹ããŒã ã®éèŠæ§ã«ã€ããŠã ãèšåããŠãããŸãã ããŒã¿ãããŒãã£ã·ã§ã³ã«åå²ããããã«ãµãããŒãã£ã·ã§ã³ã«åå²ããæ©èœã¯ãåæã¯ãšãªã®ããã©ãŒãã³ã¹ã®éµãšãªããŸãã
Cloud Spanner ã¯ããŒãã£ã·ã§ã³èªäœããµããŒãããŠããŸããã ããŒã¿ãå éšçã«ãããã split-s ã¯äž»ããŒã®ç¯å²ã«åºã¥ããŸãã ããŒãã£ã·ã§ãã³ã°ã¯ãCloud Spanner ã¯ã©ã¹ã¿å ã®è² è·ãåæ£ããããã«èªåçã«å®è¡ãããŸãã Cloud Spanner ã®éåžžã«äŸ¿å©ãªæ©èœã¯ã芪ããŒãã«ã®ããŒã¹ããŒã (å¥ã®ããŒãã«ãšã€ã³ã¿ãŒãªãŒããããŠããªãããŒãã«) ã®åå²ã§ãã Spanner ã¯ã次ã®ãã®ãå«ãŸããŠãããã©ãããèªåçã«æ€åºããŸãã split ä»ã®ããŒã¿ãããé »ç¹ã«èªã¿åãããããŒã¿ split-ããããããŠãããªãå¥ãã決æãããããããŸããã ããããããšã§ãããå€ãã®ããŒãããªã¯ãšã¹ãã«é¢äžãããããšãã§ããã¹ã«ãŒããããå¹æçã«åäžããŸãã
ããŒã¿ã®ããŒãïŒ
äžæ¬ããŒã¿ã® Cloud Spanner ã¡ãœããã¯ãéåžžã®èªã¿èŸŒã¿ã®å Žåãšåãã§ãã æ倧ã®ããã©ãŒãã³ã¹ãéæããã«ã¯ã次ã®ãããªããã€ãã®ã¬ã€ãã©ã€ã³ã«åŸãå¿ èŠããããŸãã
- ããŒã¿ãäž»ããŒã§äžŠã¹æ¿ããŸãã
- 10ã§å²ããŸã*ããŒãæ° å¥ã ã®ã»ã¯ã·ã§ã³ã
- ããŒã¿ã䞊è¡ããŠããŒãããäžé£ã®äœæ¥ã¿ã¹ã¯ãäœæããŸãã
ãã®ããŒã¿ã®èªã¿èŸŒã¿ã§ã¯ããã¹ãŠã® Cloud Spanner ããŒãã䜿çšãããŸãã
YCSB ã¯ãŒã¯ããŒã A ã䜿çšããŠã10 äžè¡ã®ããŒã¿ã»ãããçæããŸããã
* è² è·ãã¹ã㯠n1-standard-32 ã³ã³ãã¥ãŒãã£ã³ã° ãšã³ãžã³ (32 vCPUã120 GB ã¡ã¢ãª) ã§å®è¡ããããã¹ã ã€ã³ã¹ã¿ã³ã¹ããã¹ãã®ããã«ããã¯ã«ãªãããšã¯ãããŸããã§ããã
**åäžããŒãã®ã»ããã¢ããã¯ãå®çšŒåã¯ãŒã¯ããŒãã«ã¯æšå¥šãããŸããã
åè¿°ããããã«ãCloud Spanner ã¯è² è·ã«åºã¥ããŠåå²ãèªåçã«åŠçããããããã¹ããæ°åé£ç¶ããŠç¹°ãè¿ããšçµæãåäžããŸãã ããã§ç€ºããçµæã¯ãç§ãã¡ãåŸãæè¯ã®çµæã§ãã äžã®æ°å€ãèŠããšãã¯ã©ã¹ã¿å ã®ããŒãæ°ãå¢å ããã«ã€ã㊠Cloud Spanner ãã©ã®ããã«ïŒé©åã«ïŒæ¡åŒµãããããããããŸãã é¡èãªæ°å€ã¯ãå¹³åã¬ã€ãã³ã·ãŒãéåžžã«äœãããšã§ããããã¯ãäžã®ã»ã¯ã·ã§ã³ã§èª¬æããæ··åã¯ãŒã¯ããŒã (95% ã®èªã¿åããš 5% ã®æžã蟌ã¿) ã®çµæãšã¯å¯Ÿç §çã§ãã
ã¹ã±ãŒãªã³ã°ïŒ
Cloud Spanner ããŒãã®æ°ã®å¢æžã¯ãã¯ã³ã¯ãªãã¯ã®ã¿ã¹ã¯ã§ãã ããŒã¿ããã°ããããŒããããå Žåã¯ãã€ã³ã¹ã¿ã³ã¹ãæ倧ãŸã§ããŒã¹ãã (ãã®å ŽåãUS-EAST ãªãŒãžã§ã³ã® 25 ããŒãã§ãã)ããã¹ãŠã®ããŒã¿ãããŒããããããéåžžã®ããŒãã«é©ããããŒãã®æ°ãæžããããšãæ€èšã§ããŸããããŒã¿ããŒã¹ã2TB/ããŒãã®å¶éãåç §ããŸãã
ã¯ããã«å°ããããŒã¿ããŒã¹ã§ãã£ãŠãããã®å¶éãããããšã«æ°ã¥ããŸããã è² è·ãã¹ããæ°åå®è¡ããåŸãããŒã¿ããŒã¹ã®ãµã€ãºã¯çŽ 155 GB ã«ãªãã1 ããŒã ã€ã³ã¹ã¿ã³ã¹ã«ã¹ã±ãŒã«ããŠã³ãããšã次ã®ãšã©ãŒãçºçããŸããã
ã€ã³ã¹ã¿ã³ã¹ã 25 ãã 2 ã«ã¹ã±ãŒã«ããŠã³ããããšã«æåããŸããããXNUMX ã€ã®ããŒãã§è¡ãè©°ãŸããŸããã
Cloud Spanner ã¯ã©ã¹ã¿å ã®ããŒãæ°ã®å¢æžã¯ãREST API ã䜿çšããŠèªååã§ããŸãã ããã¯ãå¿ããå€åæéäžã®ã·ã¹ãã è² è·ã®å¢å ã軜æžããã®ã«ç¹ã«åœ¹ç«ã¡ãŸãã
OLAP ã¯ãšãªã®ããã©ãŒãã³ã¹ã¯?
ç§ãã¡ã¯åœåãSpanner ã®ãã®éšåã®è©äŸ¡ã«ããªãã®æéãè²»ããäºå®ã§ããã æ°åã® SELECT COUNT ã®åŸããã¹ãã¯çããSpanner 㯠OLAP ã«é©ãããšã³ãžã³ã§ã¯ãªãããšãããã«ããããŸããã ã¯ã©ã¹ã¿ãŒå ã®ããŒãã®æ°ã«é¢ä¿ãªãã10 äžè¡ã®ããŒãã«ã®è¡æ°ãéžæããã ã㧠55 ïœ 60 ç§ããããŸããã ããã«ãäžéçµæãä¿åããããã«ããå€ãã®ã¡ã¢ãªãå¿ èŠãšããã¯ãšãªã¯ãOOM ãšã©ãŒã§å€±æããŸããã
SELECT COUNT(DISTINCT(field0)) FROM usertable; â (10M distinct values)-> SpoolingHashAggregateIterator ran out of memory during new row.
TPC-H ã¯ãšãªã®æ°å€ã®äžéšã¯ãTodd Lipcon ã®èšäºã«èšèŒãããŠããŸãã
4. ç§ãã¡ã®çµè«
Cloud Spanner ã®æ©èœã®çŸç¶ãèãããšãç¹ã«ããŒãºãæ¡å€§ããå Žåã«ãæ¢åã® OLTP ãœãªã¥ãŒã·ã§ã³ã®åçŽãªä»£æ¿ãšãªããšã¯èãã«ããã§ãã Cloud Spanner ã®æ¬ ç¹ãå æãããœãªã¥ãŒã·ã§ã³ãæ§ç¯ããã«ã¯ãããªãã®æéãè²»ããå¿ èŠããããŸãã
Cloud Spanner ã®è©äŸ¡ãéå§ãããšããç§ãã¡ã¯ãã®ç®¡çæ©èœãä»ã® Google SQL ãœãªã¥ãŒã·ã§ã³ãšåçããå°ãªããšãããã»ã©é ããªããã®ã§ããããšãæåŸ ããŠããŸããã ããããããã¯ã¢ãããå®å šã«æ¬ åŠããŠããŠããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã®å¶åŸ¡ãéåžžã«éãããŠããããšã«ã¯é©ããŸããã èšããŸã§ããªãããã¥ãŒããªããããŒã«ã«éçºç°å¢ããªãããµããŒããããŠããªãã·ãŒã±ã³ã¹ãDML ããã³ DDL ãµããŒãã®ãªã JDBC ãªã©ããããŸãã
ããã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ ããŒã¿ããŒã¹ãæ¡åŒµããå¿ èŠããã人ã¯ã©ãã«è¡ãã®ã§ãããã? åžå Žã«ã¯ããã¹ãŠã®ãŠãŒã¹ã±ãŒã¹ã«é©åããåäžã®ãœãªã¥ãŒã·ã§ã³ã¯ãªãããã§ãã å€ãã®ã¯ããŒãºã ãœãŒã¹ ãœãªã¥ãŒã·ã§ã³ãšãªãŒãã³ ãœãŒã¹ ãœãªã¥ãŒã·ã§ã³ (ãã®èšäºã§äžéšãåãäžããŠããŸã) ããããããããã«ç¬èªã®é·æãšçæããããŸããã99,999% ã® SLA ãšé«ãäžè²«æ§ãåãã SaaS ãæäŸãããã®ã¯ãããŸããã é«ã SLA ãäž»ãªç®æšã§ãããã«ã¹ã¿ã ãã«ãã¯ã©ãŠã ãœãªã¥ãŒã·ã§ã³ãæ§ç¯ããã€ããããªãå Žåã¯ãCloud Spanner ãæ¢ããŠãããœãªã¥ãŒã·ã§ã³ã«ãªãå¯èœæ§ããããŸãã ãã ãããã®å¶éããã¹ãŠèªèããŠããå¿ èŠããããŸãã
å
¬å¹³ãæãããã«èšããšãCloud Spanner 㯠2017 幎ã®æ¥ã«äžè¬å
¬éãããã°ãããªã®ã§ãçŸåšã®æ¬ ç¹ã®äžéšãæçµçã«ã¯ (ããŸãããã°) 解æ¶ãããå¯èœæ§ããããšäºæ³ããã®ã劥åœã§ããã解æ¶ãããã°ã²ãŒã ãã§ã³ãžã£ãŒãšãªãå¯èœæ§ããããŸãã çµå±ã®ãšãããCloud Spanner 㯠Google ã®åãªããµã€ã ãããžã§ã¯ãã§ã¯ãããŸããã Google ã¯ããããä»ã® Google 補åã®åºç€ãšããŠäœ¿çšããŸãã ãŸããGoogle ãæè¿ãGoogle Cloud Storage ã® Megastore ã Cloud Spanner ã«çœ®ãæãããšããGoogle Cloud Storage ã¯ã°ããŒãã« ã¹ã±ãŒã«ã§ã®ãªããžã§ã¯ãã®ãªã¹ãã®äžè²«æ§ãé«ããããšãã§ããŸãã (ããã¯ãŸã åœãŠã¯ãŸããŸãã)
ã§ãããããŸã åžæã¯ãããŸãâŠç§ãã¡ã¯é¡ã£ãŠããŸãã
ããã ãã§ãã ç§ãã¡ãèšäºã®èè ãšåãããã«æåŸ ãç¶ããŠããŸãããããã«ã€ããŠã©ãæããŸããïŒ ã³ã¡ã³ãã«æžããŠãã ãã
çæ§ããã²ãè¶ããã ããã
åºæïŒ habr.com