ACIDãšBASEããŒã¿ããŒã¹äžè²«æ§ã¢ãã«ã®åºæ¬çãªéãããã®ãã¬ãŒããªãããããŠçžäºæ¥ç¶ãããã°ããŒãã«ãªããžã¿ã«äžçã§ã¢ããªã±ãŒã·ã§ã³ã«äžãã圱é¿ã«ã€ããŠè§£èª¬ããŸãã
ACID vs BASE: ã°ããŒãã«ãªããžã¿ã«ç°å¢ã«ãããããŒã¿ããŒã¹äžè²«æ§ã¢ãã«ã®çè§£
仿¥ã®è¶ æ¥ç¶ç€ŸäŒã§ã¯ãããŒã¿ã¯å€§éžãè¶ããŠæµããã¢ããªã±ãŒã·ã§ã³ã¯äžçäžã®ãŠãŒã¶ãŒããŒã¹ã«ãµãŒãã¹ãæäŸããŠãããããŒã¿ã®äžè²«æ§ã確ä¿ããããšãæãéèŠã§ãããããã忣ã·ã¹ãã ã®æ§è³ªãã®ãã®ãããã®äžè²«æ§ãç¶æããäžã§è€éãªèª²é¡ããããããŸããããã§ç»å Žããã®ããACIDãšBASEãšããããŒã¿ããŒã¹äžè²«æ§ã¢ãã«ã®æŠå¿µã§ãããããã®åºæ¬çãªéãããã¬ãŒããªãããããŠãããããããã圱é¿ãçè§£ããããšã¯ãçŸä»£ã®ããžã¿ã«ã©ã³ãã¹ã±ãŒããèªæµ·ãããã¹ãŠã®éçºè ãã¢ãŒããã¯ããããŒã¿å°éå®¶ã«ãšã£ãŠæ¥µããŠéèŠã§ãã
ãã©ã³ã¶ã¯ã·ã§ã³æŽåæ§ã®æ±: ACID
ACIDã¯ãååæ§ (Atomicity)ãäžè²«æ§ (Consistency)ãç¬ç«æ§ (Isolation)ããããŠæ°žç¶æ§ (Durability) ã衚ãé åèªã§ããããã4ã€ã®ç¹æ§ã¯ãåŸæ¥ã®ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ïŒSQLããŒã¿ããŒã¹ïŒã«ãããä¿¡é Œæ§ã®é«ããã©ã³ã¶ã¯ã·ã§ã³åŠçã®åºç€ã圢æããŸããACIDæºæ ã®ã·ã¹ãã ã¯ããšã©ãŒã黿ºé害ããã®ä»ã®ã·ã¹ãã é害ãçºçããå Žåã§ããããŒã¿ããŒã¹ãã©ã³ã¶ã¯ã·ã§ã³ã確å®ã«åŠçãããããŒã¿ããŒã¹ãæå¹ãªç¶æ ã«ä¿ãããããšãä¿èšŒããããã«èšèšãããŠããŸãã
ååæ§: ãªãŒã«ã»ãªã¢ã»ããã·ã³ã°
ååæ§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãåäžã®äžå¯åãªäœæ¥åäœãšããŠæ±ãããããšãä¿èšŒããŸãããã©ã³ã¶ã¯ã·ã§ã³å ã®ãã¹ãŠã®æäœãæåè£ã«å®äºãããããããã¯ãŸã£ããå®è¡ãããªããã®ã©ã¡ããã§ãããã©ã³ã¶ã¯ã·ã§ã³ã®äžéšã倱æããå Žåããã©ã³ã¶ã¯ã·ã§ã³å šäœãããŒã«ããã¯ãããããŒã¿ããŒã¹ã¯ãã©ã³ã¶ã¯ã·ã§ã³éå§åã®ç¶æ ã«æ»ããŸãã
äŸïŒ ããå£åº§ãããéãåŒãèœãšãããå¥ã®å£åº§ã«å ¥éãããéè¡æ¯èŸŒãæ³åããŠã¿ãŠãã ãããååæ§ã¯ãåŒãèœãšããšå ¥éã®äž¡æ¹ã®æäœãè¡ãããããã©ã¡ããè¡ãããªããã®ãããããä¿èšŒããŸããèªåã®å£åº§ãããéãåŒãèœãšãããã®ã«ãåå人ã®å£åº§ã«ã¯å ¥éãããªããšããç¶æ³ã«ã¯ãªããŸããã
äžè²«æ§: ããŒã¿æŽåæ§ã®ç¶æ
äžè²«æ§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ãããŒã¿ããŒã¹ãããæå¹ãªç¶æ ããå¥ã®æå¹ãªç¶æ ãžãšç§»è¡ãããããšãä¿èšŒããŸããã€ãŸãããã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãäž»ããŒå¶çŽãå€éšããŒå¶çŽããã®ä»ã®æŽåæ§å¶çŽãå«ããå®çŸ©ããããã¹ãŠã®ã«ãŒã«ã«åŸããªããã°ãªããŸããããã©ã³ã¶ã¯ã·ã§ã³ããããã®ã«ãŒã«ã®ããããã«éåããå Žåããã®ãã©ã³ã¶ã¯ã·ã§ã³ã¯ããŒã«ããã¯ãããŸãã
äŸïŒ Eã³ããŒã¹ã·ã¹ãã ã§ã顧客ãååã®æ³šæãè¡ã£ãå Žåãäžè²«æ§ã®ç¹æ§ã«ãããååã®åšåº«æ°ãæ£ããæžå°ããããšãä¿èšŒãããŸããåšåº«æ°ãè¶ ããååã販売ããããšãããã©ã³ã¶ã¯ã·ã§ã³ã¯ãççŸããŠãããšèŠãªãããããŒã«ããã¯ãããŸãã
ç¬ç«æ§: å¹²æžãªã
ç¬ç«æ§ã¯ãåæã«å®è¡ããããã©ã³ã¶ã¯ã·ã§ã³ãäºãã«éé¢ãããããšãä¿èšŒããŸããããã¯ããããã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ãä»ã®ãã©ã³ã¶ã¯ã·ã§ã³ã®å®è¡ã«åœ±é¿ãäžããªãããšãæå³ããŸããåãã©ã³ã¶ã¯ã·ã§ã³ã¯ãããããããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããŠããå¯äžã®ãã©ã³ã¶ã¯ã·ã§ã³ã§ãããã®ããã«ãç¬ç«ããŠå®è¡ãããŠããããã«èŠããŸããããã«ãããããŒãã£ãªãŒããéåçŸãªãŒãããã¡ã³ãã ãªãŒããšãã£ãåé¡ã鲿¢ãããŸãã
äŸïŒ 2人ã®ãŠãŒã¶ãŒãåæã«é£è¡æ©ã®æåŸã®ç©ºåžãäºçŽããããšããå Žåãç¬ç«æ§ã«ããã1人ã®ãŠãŒã¶ãŒã®ã¿ãåžã®äºçŽã«æåããããšãä¿èšŒãããŸããããäžæ¹ã®ãŠãŒã¶ãŒã«ã¯åžãå©çšã§ããªããªã£ãããšã衚瀺ãããäºéäºçŽã鲿¢ãããŸãã
æ°žç¶æ§: 倿Žã®æç¶
æ°žç¶æ§ã¯ãäžåºŠãã©ã³ã¶ã¯ã·ã§ã³ãã³ãããããããšãåé»ãã¯ã©ãã·ã¥ãªã©ã®ã·ã¹ãã é害ãçºçããå Žåã§ãããã®ã³ãããç¶æ ãç¶æãããããšãä¿èšŒããŸããã³ããããããããŒã¿ã¯ãéåžžãããŒããã©ã€ããSSDãªã©ã®äžæ®çºæ§ã¹ãã¬ãŒãžã«æ°žç¶çã«ä¿åãããã·ã¹ãã ãåèµ·åããåŸã§ãå埩ã§ããŸãã
äŸïŒ ãªã³ã©ã€ã³ã§ååãæ£åžžã«è³Œå ¥ãã確èªã¡ãŒã«ãåãåã£ãåŸããã®ååŒãæ°žç¶çã§ãããšç¢ºä¿¡ã§ããŸããããšãEã³ããŒã¹ãµã€ãã®ãµãŒããŒãçªç¶ã·ã£ããããŠã³ããŠããã·ã¹ãã ããªã³ã©ã€ã³ã«æ»ãã°ãããªãã®è³Œå ¥èšé²ã¯ååšãç¶ããŸãã
æè»ãªä»£æ¿æ¡: BASE
BASEã¯ãç¹ã«é«å¯çšæ§ãšå€§èŠæš¡ãªã¹ã±ãŒã©ããªãã£ãç®æããŠèšèšãããNoSQLããŒã¿ããŒã¹ãå°ãããšãå€ããç°ãªãäžé£ã®ååã§ããBASEã¯ãBasically AvailableïŒåºæ¬çã«å©çšå¯èœïŒãSoft stateïŒãœãããªç¶æ ïŒããããŠEventual consistencyïŒçµææŽåæ§ïŒã®é åèªã§ããããã¯ã忣ã·ã¹ãã ã®çŸå®ãèªèãã峿ã®äžè²«æ§ãããå¯çšæ§ãšåæèæ§ãåªå ããŸãã
Basically Available: åžžã«ã¢ã¯ã»ã¹å¯èœ
Basically AvailableïŒåºæ¬çã«å©çšå¯èœïŒãšã¯ãã·ã¹ãã ãå®å šã«äžè²«ããç¶æ ã§ãªããŠãããªã¯ãšã¹ãã«å¿çããããšãæå³ããŸããã·ã¹ãã ã®äžéšãæ éãããå©çšã§ããªããªã£ããããå Žåã§ããéçšå¯èœã§ã¢ã¯ã»ã¹å¯èœãªç¶æ ãç¶æããããšãç®æããŸããããã¯ãå³å¯ãªäžè²«æ§ãç¶æããããã«æäœã忢ããå¯èœæ§ãããACIDãšã®å€§ããªéãã§ãã
äŸïŒ ãœãŒã·ã£ã«ã¡ãã£ã¢ã®ãã£ãŒãã¯ãäžéšã®ããã¯ãšã³ããµãŒããŒãäžæçã«ããŠã³ããŠããŠããæçš¿ã衚瀺ãç¶ãããããããŸããããã£ãŒãããã¹ãŠã®ãŠãŒã¶ãŒããã®çµ¶å¯Ÿçãªææ°ã®æŽæ°ãåæ ããŠããªããããããŸãããããµãŒãã¹ã¯é²èЧãã€ã³ã¿ã©ã¯ã·ã§ã³ã®ããã«å©çšå¯èœãªãŸãŸã§ãã
Soft State: å€åããç¶æ
Soft stateïŒãœãããªç¶æ ïŒãšã¯ãæç€ºçãªå ¥åããªããŠããæéã®çµéãšãšãã«ã·ã¹ãã ã®ç¶æ ãå€åããå¯èœæ§ããããšããäºå®ãæããŸããããã¯çµææŽåæ§ã¢ãã«ã«ãããã®ã§ããããŒã¿ãããããŒãã§æŽæ°ãããŠãããŸã ä»ã®ããŒãã«äŒæããŠããªãå¯èœæ§ããããäžæçãªäžæŽåãçããŸãããæçµçã«ã¯è§£æ±ºãããŸãã
äŸïŒ 忣åãœãŒã·ã£ã«ãã©ãããã©ãŒã ã§ãããã£ãŒã«åçãæŽæ°ãããšãæ°ããåçã衚瀺ããããŸã§ã®çæéãä»ã®ãŠãŒã¶ãŒã«ã¯å€ãåçãèŠããããšããããŸããã·ã¹ãã ã®ïŒããªãã®ãããã£ãŒã«åçã®ïŒç¶æ ã¯ã倿ŽãäŒæããŠããéçšã«ããããããœãããªç¶æ ã§ãã
Eventual Consistency: æéããããŠåæã«éãã
Eventual consistencyïŒçµææŽåæ§ïŒã¯ãBASEã®äžæ žãšãªãååã§ããããã¯ãããããŒã¿é ç®ã«æ°ããªæŽæ°ãè¡ãããªããã°ãæçµçã«ã¯ãã®é ç®ãžã®ãã¹ãŠã®ã¢ã¯ã»ã¹ãæåŸã«æŽæ°ãããå€ãè¿ãããã«ãªãããšãããã®ã§ããç°¡åã«èšãã°ãã·ã¹ãã ã¯æçµçã«äžè²«æ§ããšããç¶æ ã«ãªããŸããããããã©ããããæ©ãããã€èµ·ãããã®ä¿èšŒã¯ãããŸãããããã«ããã忣ç°å¢ã§ã®é«ãå¯çšæ§ãšããã©ãŒãã³ã¹ãå¯èœã«ãªããŸãã
äŸïŒ ã°ããŒãã«ãªEã³ããŒã¹ãµã€ãã§ååäŸ¡æ Œã®æŽæ°ãè¡ããããšããŸãããããã¯ãŒã¯ã®é å»¶ã忣ããŒã¿ã¹ãã¬ãŒãžã®ãããç°ãªãå°åã®ç°ãªããŠãŒã¶ãŒã«ã¯ããã°ããã®éãå€ãäŸ¡æ Œã衚瀺ããããããããŸãããããããæçµçã«ã¯ã倿Žãé¢é£ãããã¹ãŠã®ãµãŒããŒã«äŒæãããšããã¹ãŠã®ãŠãŒã¶ãŒã«æŽæ°ãããäŸ¡æ Œã衚瀺ãããããã«ãªããŸãã
CAPå®ç: äžå¯é¿ã®ãã¬ãŒããªã
ACIDãšBASEã®éžæã¯ããã°ãã°CAPå®çïŒããªã¥ãŒã¯ãŒã®å®çãšããŠãç¥ãããïŒã«ãã£ãŠæ ä»ããããŸãããã®å®çã¯ã忣ããŒã¿ã¹ãã¢ã以äžã®3ã€ã®ä¿èšŒã®ãã¡ãåæã«2ã€ããå€ããæäŸããããšã¯äžå¯èœã§ãããšè¿°ã¹ãŠããŸãã
- äžè²«æ§ (Consistency, C): ãã¹ãŠã®èªã¿åãããææ°ã®æžã蟌ã¿ããŒã¿ãŸãã¯ãšã©ãŒãåãåãããšã
- å¯çšæ§ (Availability, A): ãã¹ãŠã®ãªã¯ãšã¹ãããïŒãšã©ãŒã§ãªãïŒå¿çãåãåãããšããã ãããããææ°ã®æžã蟌ã¿ããŒã¿ãå«ãã§ããä¿èšŒã¯ãªãã
- åæèæ§ (Partition Tolerance, P): ããŒãéã®ãããã¯ãŒã¯ã«ãã£ãŠä»»æã®æ°ã®ã¡ãã»ãŒãžã倱ããããïŒãŸãã¯é å»¶ãããïŒããŠããã·ã¹ãã ãåäœãç¶ããããšã
ã©ã®ãããªåæ£ã·ã¹ãã ã§ãããããã¯ãŒã¯ã®åæã¯é¿ããããŸããããããã£ãŠãæ¬åœã®ãã¬ãŒããªãã¯ãåæãçºçããéã®ãäžè²«æ§ããšãå¯çšæ§ãã®éã«ãããŸãã
- CPã·ã¹ãã : ãããã¯äžè²«æ§ãšåæèæ§ãåªå ããŸããåæãçºçããå Žåããã¹ãŠã®ããŒããåãäžè²«ããããŒã¿ãè¿ãããšãä¿èšŒããããã«ãå¯çšæ§ãç ç²ã«ããŸãã
- APã·ã¹ãã : ãããã¯å¯çšæ§ãšåæèæ§ãåªå ããŸããåæãçºçããå Žåãå©çšå¯èœãªç¶æ ãç¶æããŸãããå€ãããŒã¿ãè¿ãå¯èœæ§ããããçµææŽåæ§ã«åããåŸåããããŸãã
匷åãªACIDç¹æ§ãæã€åŸæ¥ã®SQLããŒã¿ããŒã¹ã¯ããã°ãã°CPã·ã¹ãã ã«åŸããå³å¯ãªäžè²«æ§ãç¶æããããã«ãããã¯ãŒã¯åæã«çŽé¢ããéã«å¯çšæ§ãç ç²ã«ããŸããå€ãã®NoSQLããŒã¿ããŒã¹ã¯ãBASEååã«åŸããAPã·ã¹ãã ã«åŸããå¯çšæ§ãåªå ããäžæçãªäžæŽåã蚱容ããŸãã
ACID vs. BASE: äž»ãªéãã®ãŸãšã
以äžã¯ãACIDãšBASEã®äž»ãªéãããŸãšãã衚ã§ãã
| ç¹åŸŽ | ACID | BASE |
|---|---|---|
| äž»ãªç®æš | ããŒã¿æŽåæ§ãšä¿¡é Œæ§ | é«å¯çšæ§ãšã¹ã±ãŒã©ããªã㣠|
| äžè²«æ§ã¢ãã« | 匷ãäžè²«æ§ïŒå³æïŒ | çµææŽåæ§ |
| åææã®å¯çšæ§ | å¯çšæ§ãç ç²ã«ããå Žåããã | å¯çšæ§ãåªå ãã |
| ããŒã¿ã®ç¶æ | åžžã«äžè²« | äžæçã«äžæŽåã«ãªãããšãããïŒãœãããªç¶æ ïŒ |
| ãã©ã³ã¶ã¯ã·ã§ã³ã®çš®é¡ | è€éãªè€æ°ã¹ãããã®ãã©ã³ã¶ã¯ã·ã§ã³ããµããŒã | éåžžã¯åçŽãªæäœããµããŒããè€éãªãã©ã³ã¶ã¯ã·ã§ã³ã®ç®¡çã¯å°é£ |
| å žåçãªãŠãŒã¹ã±ãŒã¹ | éèã·ã¹ãã ãEã³ããŒã¹ã®ãã§ãã¯ã¢ãŠããåšåº«ç®¡ç | ãœãŒã·ã£ã«ã¡ãã£ã¢ãã£ãŒãããªã¢ã«ã¿ã€ã åæãã³ã³ãã³ã管çã·ã¹ãã ãå€§èŠæš¡ããŒã¿ãŠã§ã¢ããŠãžã³ã° |
| åºç€æè¡ | ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ (SQL) | NoSQLããŒã¿ããŒã¹ (äŸ: Cassandra, DynamoDB, ç¹å®æ§æã®MongoDB) |
ã©ã¡ããéžã¶ã¹ãã: ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã«ãããå®è·µçãªèæ ®äºé
ACIDã¢ãã«ãšBASEã¢ãã«ïŒãŸãã¯ãã€ããªããã¢ãããŒãïŒã®ã©ã¡ããæ¡çšãããã®æ±ºå®ã¯ãã¢ããªã±ãŒã·ã§ã³ãšãã®äžçäžã®ãŠãŒã¶ãŒã®ç¹å®ã®èŠä»¶ã«å€§ããäŸåããŸãã
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã§ACIDãéžæããå Žå:
ACIDã¯ãããŒã¿ã®æ£ç¢ºæ§ãšå³æã®äžè²«æ§ãè²ããªãå Žåã«æšå¥šãããéžæè¢ã§ããããã¯ä»¥äžã®ãããªå Žåã«éèŠã§ãã
- éèååŒ: ééç䟡å€ãæ£ç¢ºã§ãããè³éã誀ã£ãŠå€±ããããäœãåºããããããªãããšãä¿èšŒããããšãæãéèŠã§ããã°ããŒãã«ãªéè¡ã·ã¹ãã ãæ±ºæžã²ãŒããŠã§ã€ãååŒãã©ãããã©ãŒã ã¯ACIDç¹æ§ã«å€§ããäŸåããŠããŸããäŸãã°ãåœå¢ãè¶ããééã¯ã¢ãããã¯ã§ãªããã°ãªãããåå人ã®å£åº§ã«å ¥éãããã®ãšæ£ç¢ºã«åæã«éé人ã®å£åº§ããåŒãèœãšãããããšãä¿èšŒããäžéç¶æ ãèŠãããå¯èœã«ãªã£ããããªãããã«ããå¿ èŠããããŸãã
- åšåº«ç®¡ç: ã°ããŒãã«ãªå°å£²æ¥ã§ã¯ãéå°è²©å£²ãé²ãããã«æ£ç¢ºãªãªã¢ã«ã¿ã€ã ã®åšåº«ãäžå¯æ¬ ã§ãããã³ãã³ã®é¡§å®¢ãæåŸã®1ç¹ãè³Œå ¥å®äºããã°ããã®å Žåãæ±äº¬ã®é¡§å®¢ããããè³Œå ¥ã§ããŠã¯ãªããŸããã
- äºçŽã·ã¹ãã : åšåº«ç®¡çãšåæ§ã«ãç°ãªãã¿ã€ã ãŸãŒã³ã®ãŠãŒã¶ãŒããã®åæãªã¯ãšã¹ãããã£ãŠããèªç©ºåžã®åº§åžãããã«ã®éšå±ãäžåºŠããäºçŽãããªãããšãä¿èšŒããã«ã¯ã峿 Œãªãã©ã³ã¶ã¯ã·ã§ã³æŽåæ§ãå¿ èŠã§ãã
- éèŠãªããŒã¿æŽåæ§: ããŒã¿ã®ç ŽæãäžæŽåãæ·±å»ãªééçæå€±ãæ³ç責任ããŸãã¯é倧ãªè©å€ã®æå®³ã«ã€ãªããå¯èœæ§ã®ããã¢ããªã±ãŒã·ã§ã³ã¯ãACIDæºæ ããæ©æµãåããŸãã
å®è·µçãªæŽå¯: ã°ããŒãã«å±éã®ããã«ACIDæºæ ã®ã·ã¹ãã ãå®è£ ããéã¯ã忣ãã©ã³ã¶ã¯ã·ã§ã³ãå°ççã«é¢ãããŠãŒã¶ãŒéã®æœåšçãªãããã¯ãŒã¯é å»¶ãããã©ãŒãã³ã¹ã«ã©ã®ããã«åœ±é¿ããããèæ ®ããŠãã ããããããã®åœ±é¿ã軜æžããããã«ãããŒã¿ããŒã¹ã¹ããŒããæ éã«èšèšããã¯ãšãªãæé©åããŸãã
ã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã§BASEãéžæããå Žå:
BASEã¯ã峿ã®äžè²«æ§ãç ç²ã«ããŠã§ããé«ãå¯çšæ§ãšã¹ã±ãŒã©ããªãã£ãå¿ èŠãšããã¢ããªã±ãŒã·ã§ã³ã«æé©ã§ããããã¯ä»¥äžã®ãããªå Žåã«äžè¬çã§ãã
- ãœãŒã·ã£ã«ã¡ãã£ã¢ãšã³ã³ãã³ããã©ãããã©ãŒã : ãŠãŒã¶ãŒã¯äžæãªããã£ãŒãã«ã¢ã¯ã»ã¹ããæŽæ°ãæçš¿ããã³ã³ãã³ããé²èЧã§ããããšãæåŸ ããŸããåäººã®æçš¿ã®å°ãå€ãããŒãžã§ã³ãèŠãããšã¯èš±å®¹ã§ããŸããããã©ãããã©ãŒã ã«ã¢ã¯ã»ã¹ã§ããªããªãããšã¯èš±å®¹ã§ããŸãããäŸãã°ããªãŒã¹ãã©ãªã¢ã®ããã°æçš¿ã«æ°ããã³ã¡ã³ãã衚瀺ãããå Žåããã©ãžã«ã®èªè ã«è¡šç€ºããããŸã§ã«ã¯å°ãæéãããããããããŸããããä»ã®ã³ã¡ã³ããæçš¿èªäœãèªãèœåã¯åŠšããããã¹ãã§ã¯ãããŸããã
- ã¢ãã®ã€ã³ã¿ãŒããã (IoT) ããŒã¿: äžçäžã®ã»ã³ãµãŒãã倧éã®ããŒã¿ãçæããããã€ã¹ã«ã¯ããã®æ å ±ãç¶ç¶çã«åã蟌ãã§ä¿åã§ããã·ã¹ãã ãå¿ èŠã§ããçµææŽåæ§ã«ãããæç¶çãªãããã¯ãŒã¯æ¥ç¶ã§ãããŒã¿ããã£ããã£ã§ããŸãã
- ãªã¢ã«ã¿ã€ã åæãšãã®ã³ã°: å³æã®æ£ç¢ºæ§ãæãŸããäžæ¹ã§ãäž»ãªç®æšã¯ãã°ãã°å€§éã®ããŒã¿ã¹ããªãŒã ãåŠçãåæããããšã§ããç°ãªãå°åéã§ã®ããŒã¿éçŽã«ãããããããªé å»¶ã¯ãé垞蚱容ãããŸãã
- ããŒãœãã©ã€ãŒãŒã·ã§ã³ãšæšå¥š: ãŠãŒã¶ãŒã®å¥œã¿ãè¡åã¯åžžã«å€åããŠããŸããããŒãœãã©ã€ãºãããæšå¥šãæäŸããã·ã¹ãã ã¯ããµãŒãã¹ãå¿çæ§ãç¶æããŠããéãããããã«é ããæŽæ°ã蚱容ã§ããŸãã
å®è·µçãªæŽå¯: BASEã䜿çšããå ŽåãçµææŽåæ§ã®åœ±é¿ãç©æ¥µçã«ç®¡çããŸããç«¶å解決ã¡ã«ããºã ãããŒãžã§ãã³ã°ãããã³æœåšçãªããŒã¿ã®å€ãã瀺åãããŠãŒã¶ãŒåãã®ã€ã³ãžã±ãŒã¿ãªã©ã®æŠç¥ãå®è£ ããŠããŠãŒã¶ãŒã®æåŸ ã管çããŸãã
ãã€ããªããã¢ãããŒããšææ°ã®ãœãªã¥ãŒã·ã§ã³
äžçã¯åžžã«çœé»ã¯ã£ããããŠããããã§ã¯ãããŸãããå€ãã®ææ°ã¢ããªã±ãŒã·ã§ã³ã¯ãACIDãšBASEã®äž¡æ¹ã®ååã®é·æãçµã¿åããããã€ããªããã¢ãããŒããæŽ»çšããŠããŸãã
- ããªã°ãããã»ããŒã·ã¹ãã³ã¹: çµç¹ã¯ãã°ãã°ãã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãéšåã«ç°ãªãããŒã¿ããŒã¹æè¡ã䜿çšããŸããäžæ žãšãªãéèãµãŒãã¹ã«ã¯ACIDæºæ ã®SQLããŒã¿ããŒã¹ã䜿çšãããŠãŒã¶ãŒåãã®æŽ»åãã£ãŒãã«ã¯BASEæåã®NoSQLããŒã¿ããŒã¹ã䜿çšãããããããŸããã
- 調æŽå¯èœãªäžè²«æ§ãæã€ããŒã¿ããŒã¹: äžéšã®NoSQLããŒã¿ããŒã¹ã§ã¯ãéçºè ãèªã¿åãæäœã«å¿ èŠãªäžè²«æ§ã¬ãã«ã調æŽã§ããŸããéèŠãªèªã¿åãã«ã¯ãã匷ãäžè²«æ§ããããã»ã©éèŠã§ãªããã®ã«ã¯ãã匱ãäžè²«æ§ãéžæããããã©ãŒãã³ã¹ãšæ£ç¢ºæ§ã®ãã©ã³ã¹ãåãããšãã§ããŸããäŸãã°ãApache Cassandraã§ã¯ãèªã¿æžãæäœã®äžè²«æ§ã¬ãã«ïŒäŸïŒONEãQUORUMãALLïŒãæå®ã§ããŸãã
- 忣ãã©ã³ã¶ã¯ã·ã§ã³ã®ããã®Saga: è€æ°ã®ãµãŒãã¹ã«ãŸããããããçš®ã®ACIDã®ãããªä¿èšŒãå¿ èŠãšããè€éãªããžãã¹ããã»ã¹ã«ã¯ãSagaãã¿ãŒã³ãæ¡çšã§ããŸããSagaã¯ããŒã«ã«ãã©ã³ã¶ã¯ã·ã§ã³ã®ã·ãŒã±ã³ã¹ã§ãããåãã©ã³ã¶ã¯ã·ã§ã³ã¯åäžãµãŒãã¹å ã®ããŒã¿ãæŽæ°ããŸããåããŒã«ã«ãã©ã³ã¶ã¯ã·ã§ã³ã¯ãSagaå ã®æ¬¡ã®ããŒã«ã«ãã©ã³ã¶ã¯ã·ã§ã³ãããªã¬ãŒããã¡ãã»ãŒãžãŸãã¯ã€ãã³ããå ¬éããŸããããŒã«ã«ãã©ã³ã¶ã¯ã·ã§ã³ã倱æããå ŽåãSagaã¯å è¡ãããã©ã³ã¶ã¯ã·ã§ã³ãå ã«æ»ãããã®è£åãã©ã³ã¶ã¯ã·ã§ã³ãå®è¡ããŸããããã«ãããåäžã®ã¢ããªã·ãã¯ãªACIDãã©ã³ã¶ã¯ã·ã§ã³ã«é Œãããšãªãã忣ã·ã¹ãã å šäœã§äžè²«æ§ã管çããæ¹æ³ãæäŸãããŸãã
çµè«: ã°ããŒãã«ãªããŒã¿äžè²«æ§ã®ããã®ã¢ãŒããã¯ãã£èšèš
ACIDãšBASEã®éžæã¯åãªãæè¡çãªè©³çްã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ã®ä¿¡é Œæ§ãã¹ã±ãŒã©ããªãã£ããããŠã°ããŒãã«èŠæš¡ã§ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«æ·±ã圱é¿ãäžããæŠç¥çãªæ±ºå®ã§ãã
ACIDã¯æºãããªãããŒã¿æŽåæ§ãšãã©ã³ã¶ã¯ã·ã§ã³ã®ä¿¡é Œæ§ãæäŸããããããªäžæŽåã§ãæ·±å»ãªçµæãæãå¯èœæ§ãããããã·ã§ã³ã¯ãªãã£ã«ã«ãªã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäžå¯æ¬ ã§ãããã®åŒ·ã¿ã¯ããã¹ãŠã®æäœãå®ç§ã§ãããããŒã¿ããŒã¹ã®ç¶æ ãåžžã« pristineïŒæž æµïŒã§ããããšãä¿èšŒããç¹ã«ãããŸãã
äžæ¹ãBASEã¯ãããã¯ãŒã¯ã®è€éãã«çŽé¢ããéã®å¯çšæ§ãšå埩åãéèŠããåžžã«ã¢ã¯ã»ã¹å¯èœã§ããããšãæ±ããããäžæçãªããŒã¿ã®ã°ãã€ãã蚱容ã§ããã¢ããªã±ãŒã·ã§ã³ã«æé©ã§ãããã®åã¯ãå°é£ãªç¶æ³äžã§ãäžçäžã®ãŠãŒã¶ãŒã®ããã«ã·ã¹ãã ã皌åããç¶ããã¢ã¯ã»ã¹å¯èœã«ä¿ã€ç¹ã«ãããŸãã
ã°ããŒãã«ãªã¢ããªã±ãŒã·ã§ã³ãèšèšã»æ§ç¯ããéã«ã¯ãèŠä»¶ãæ éã«è©äŸ¡ããŠãã ããïŒ
- ã©ã®çšåºŠã®ããŒã¿äžè²«æ§ãæ¬åœã«å¿ èŠã§ããïŒ ãŠãŒã¶ãŒã¯ææ°ã®æŽæ°ãèŠãã®ã«ããããªé å»¶ã蚱容ã§ããŸããããããšãå³æã®æ£ç¢ºæ§ãäžå¯æ¬ ã§ããïŒ
- ç¶ç¶çãªå¯çšæ§ã¯ã©ãã»ã©éèŠã§ããïŒ äžè²«æ§ãã§ãã¯ã«ããããŠã³ã¿ã€ã ã¯ãææçºçããããŒã¿ã®å€ããããæå®³ã倧ããã§ããïŒ
- äºæ³ãããè² è·ãšãŠãŒã¶ãŒã®å°ççååžã¯ã©ã®ããã«ãªã£ãŠããŸããïŒ ã°ããŒãã«ãªè² è·ã®äžã§ã®ã¹ã±ãŒã©ããªãã£ãšããã©ãŒãã³ã¹ã¯éèŠãªèæ ®äºé ã§ãã
ACIDãšBASEã®åºæ¬ååãçè§£ããCAPå®çããããã圱é¿ãèæ ®ããããšã§ãã°ããŒãã«ãªããžã¿ã«ãªãŒãã£ãšã³ã¹ã®å€æ§ãªããŒãºã«å¿ãããå ç¢ã§ä¿¡é Œæ§ãé«ããã¹ã±ãŒã©ãã«ãªããŒã¿ã·ã¹ãã ãèšèšããããã®æ å ±ã«åºã¥ããæ±ºå®ãäžãããšãã§ããŸãã广çãªã°ããŒãã«ããŒã¿ç®¡çãžã®éã¯ããã°ãã°ãããã®ãã¬ãŒããªããä¹ãããªããå€ãã®å Žåãäž¡æ¹ã®äžçã®é·æã掻çšãããã€ããªããæŠç¥ãæ¡çšããããšãå«ã¿ãŸãã