Amazonã®Dynamoã®è«æãèªãã§ã¿ã(1/3)
Amazonã社å ã§éçºãããµã¼ãã¹ã§å©ç¨ãã¦ããDynamoã¨ããã¹ãã¬ã¼ã¸ãµã¼ãã¹ãããã®ã ãã©ãããã«ã¤ãã¦ã®è«æãå ¬éããã¦ããã®ã§èªãã ã®ã§ã¾ã¨ãã¦ã¿ãã
ãã®è«æãæ¸ããã¡ã³ãã¼ã«ã¯Amazonã®CTOã§ããWerner VogelsããAWSã§DynamoDBãElastiCacheãSQSãSNSãªã©ã®è£½åã®ããã¼ã¸ã¡ã³ãããã¦ããSwami Sivasubramanianããå«ã¾ãã¦ããã
Dynamoãã²ã¨ãã¨ã§è¡¨ãã¨åæ£åã§Key Valueã¹ãã¬ã¼ã¸ã§ããã¼ã¿ã®ä¸è²«æ§ã«é¢ãã¦ã¯çµææ´åæ§ãä¿è¨¼ãããµã¼ãã¹ã ããªããAWSã§æä¾ããã¦ããDynamoDBã¨ã¯å¥ç©ãªã®ã§æ³¨æã
åæã¯こちらããåç
§ã§ãããä»åã®ãã¹ãä¸ã®å¼ç¨(å³ãæåãã)ã¯ãã¹ã¦ãã¡ãããå¼ç¨ãã¦ããã
ã¾ããæ¢ã«æ¥æ¬èªè¨³ãããã¦ããæ¹ãããã£ãããã®ã§åæããã®ã¾ã¾æ¥æ¬èªã§ãã¿ãã人ã¯こちらãåç
§ã®ãã¨ï¼
è«æã¯ä»¥ä¸ã®7ã¤ã®ãã¼ãã«åããã¦ããã®ã ããçµæ§é·ãã®ã§ä»åã¯3ç« ã¾ã§èªãã§ã®ã¾ã¨ãã«ããã
ãã¶ããå
¨é¨ã§3åãããã«ãªãããã
1. Abstract(æ¦è¦)
2. Background(çµç·¯)
3. Related Work(åèã«ããã·ã¹ãã ããµã¼ãã¹)
4. System Architecture(ã¢ã¼ããã¯ãã£)
5. Implementation(å®è£
)
6. Experiences & Lessons Learned(éçºãéç¨ãçµã¦ã®ã©ã¼ãã³ã°)
7. Conclusions(çµè«)
ããããä»åã®ãã¹ãã®æ¬ç·¨ãé·ããªãã®ã§å ã«ã¾ã¨ããæ¸ãã¦ããã
å ã«ã¾ã¨ã
- ã³ã³ã»ãããã²ã¨ãã¨ã§ããã¨100%æ¸ãè¾¼ã¿å¯è½ã§ã¹ã±ã¼ã©ãã«ãªåæ£åNoSQLã
- Dynamoã¯Amazonã®ä¸é¨ã®ãµã¼ãã¹ã§å©ç¨ããããã«éçºãããããªã¬ã¼ã·ã§ãã«ãã¼ã¿ãã¼ã¹ã¯ä½¿ã£ã¦ãããããããã使ã£ã¦ãããããå¯ç¨æ§ãå¿ è¦ã§ãã¼ã¿ã¸ã®ã¢ã¯ã»ã¹ããã¼ããªã¥ã¼ã§è¦ä»¶ãæºãããã¨ãããã«å©ç¨ããã¦ããã
- Dynamoã®ã´ã¼ã«ã¯"é«ãæ¡å¼µæ§"ã"é«ãå¯ç¨æ§"ã"ä½ãéç¨è² è·"ã®3ç¹ãæºãããã¨ã«ãããCAPã®å®çã§ããã¨ãA(å¯ç¨æ§)ã¨P(åæèæ§)ã«éç¹ãèµ·ããC(ä¸è²«æ§)ã諦ãã¦ãããããã«S(æ¡å¼µæ§)ã足ãããã®ãã¨ããã¤ã¡ã¼ã¸ãACIDç¹æ§ã«é¢ãã¦è¨ãã¨Atomicã¨Isolationã¯æ示çã«è¦ä»¶ããé¤å¤ããã¦ãã
- ã¢ã¼ããã¯ãã£ã¨ãã¦ã¯åæ£ããã·ã¥ãã¼ãã«åã®P2Pãããã¯ã¼ã¯ã®ä¸ã«æ§ç¯ããã¦ãããæ»æãªã©ãæ³å®ããã«ãããã²ã¨ã¤ã®éãããããã¯ã¼ã¯ä¸ã«é ç½®ããããã¨ãåæã¨ãã¦ããã
ããããå ã¯è«æã«æ²¿ã£ã¦èªã¿ãªãã解説ããªããã¨ããæãã
1. Abstract
Dynamoã¯"Always-on"ã®ã¦ã¼ã¶ã¼ä½é¨ãå®ç¾ããããã«ããã¤ãã®ã¢ãã¾ã³ã®ã³ã¢ãµã¼ãã¹ã§ãå©ç¨ããã¦ããããã®ãµã¼ãã¹ã¬ãã«ãå®ç¾ããããã«ãDynamoã¯æ§ã ãªé害ãèµ·ãããã¨ãåæã«ããã¦ããã®ãªãã§ä¸è²«æ§ãä¿ã£ããµã¼ãã¹ãæä¾ã§ããããã«è¨è¨ããã¦ããã
ãåç¥ã®ã¨ããAmazonã¯ä¸çä¸ã§å¤æ°ã®ã¦ã¼ã¶ã¼ã«å©ç¨ããã¦ããã®ã§ä¿¡é ¼æ§ãæ¡å¼µæ§ãã¨ã¦ãéè¦ãªã·ã¹ãã è¦ä»¶ã«ãªã£ã¦ããã¨ãã話ãAWSã§ããããªãã ãã©ãé害çãä¸ãããã¨ããã¢ããã¼ãã§ã¯ãªããé害ãèµ·ãããã¨ãåæã«ãé害ã«å¼·ãã¢ã¼ããã¯ãã£ããã¶ã¤ã³ãããã¨ããã³ã³ã»ãããDynamoã§ãæ¡ç¨ããã¦ããããã®ããã«ãä¸å¿ã¨ãªããã¹ã¿ãµã¼ãã¼ãªã©ããããã«ãäºãã«å¯¾ç§°ã§åçãªè²¬ä»»ããã¤ãµã¼ãã¼ç¾¤ããæ§æãããççµåãªã·ã¹ãã ãã¶ã¤ã³ã«éç¹ãããã¦ããã
ã¾ããDynamoã¯ãã¼ã¿ã¢ã¯ã»ã¹ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¨ãã¦ãã¼ããªã¥ã¼ã¢ã¯ã»ã¹ã®ã¿ãæä¾ãã¦ãããAmazonã§ãå¤æ°ã®ãªã¬ã¼ã·ã§ãã«ãã¼ã¿ãã¼ã¹ãå©ç¨ãã¦ãããããã£ã½ããå¤æ°ã®ã·ã¹ãã ï¼ä¾ãã°ãã¹ãã»ã©ã¼ãªã¹ããã·ã§ããã³ã°ã«ã¼ããã¦ã¼ã¶ã¼è¨å®ãã»ãã·ã§ã³ç®¡çã売ãä¸ãã©ã³ãã³ã°ãªã©ï¼ã¯ãã¼ããªã¥ã¼ã¢ã¯ã»ã¹ã®ã¿ã§ã·ã¹ãã ãå®ç¾ã§ãããã®ãããããããã£ãã¨ãããDynamoã®ã¿ã¼ã²ããã決ãã¦RDBã®ç½®ãæãããããã¨ãã話ã§ã¯ãªãã
Dynamoãç®æãã®ã¯"é«ãæ¡å¼µæ§"ã¨"é«ãå¯ç¨æ§"ã"æå°éã®ç®¡çã³ã¹ã"ã®3ç¹ã§ãããããããå®ç¾ããããã«æ¡ç¨ãã¦ããæè¡ããµããªããã¨ä»¥ä¸ã®ã¨ããã
- ã³ã³ã·ã¹ãã³ãããã·ã³ã°ã«ãããã¼ã¿ãã¼ãã£ã·ã§ãã³ã°
- ãªãã¸ã§ã¯ãã®ãã¼ã¸ã§ãã³ã°ã«ããä¸è²«æ§/æ´åæ§ã®ä¿è¨¼
- åæ£ãã¼ãéã§ã®å¯¾ç§°ãªã¬ããªã«åæã¨sloppy(èã) quorumã«ããä¸è²«æ§/æ´åæ§ã®ä¿è¨¼
- gossipãã¼ã¹ã®ãã¼ãæ¢ç´¢/é害æ¤ç¥
2. Background
2.1. åææ¡ä»¶ã¨ã·ã¹ãã è¦ä»¶
ã¯ã¨ãªã¢ãã«
ã¦ãã¼ã¯ãªãã¼ã§èå¥ããããªãã¸ã§ã¯ãã¸ã®readãªãã¬ã¼ã·ã§ã³ã¨writeãªãã¬ã¼ã·ã§ã³ãæä¾ãããè¤æ°ã®ãªãã¸ã§ã¯ããã¾ãããã¯ã¨ãªããªã¬ã¼ã·ã§ã³ã¯æä¾ãããªãããªãã¸ã§ã¯ãã¯ãã¤ããªã§ä¿åãããããããã®ãµã¤ãºã¯1MB以å ãæ³å®ããã
ACIDç¹æ§ã«ã¤ãã¦
Dynamoã¯é«ãå¯ç¨æ§ãå®ç¾ãããããå¼·ä¸è²«æ§ã§ã¯ãªããçµææ´åæ§ã®ä¿è¨¼ãæä¾ãã¦ãããã¾ããä¸åã®ç¬ç«æ§ã»åé¢æ§ãæã£ããã©ã³ã¶ã¯ã·ã§ã³ã¯æä¾ãããä¸åº¦ã«ã²ã¨ã¤ã®ãã¼ã®ã¢ãããã¼ãã®ã¿ã許å¯ããã
ç°å¢
Dynamoã¯ã³ã¢ãã£ãã£ãã¼ãã¦ã§ã¢ã®ä¸ã§åããã¨ãæ»æãªã©ãæ³å®ããã«ãããã²ã¨ã¤ã®éãããããã¯ã¼ã¯ç°å¢ã®ä¸ã§åä½ããããã¨ãåæã¨ããã
2.2 SLA
Amazonã®ãµã¼ãã¹å¿åã¤ã³ãã©ã¹ãã©ã¯ãã£ã®ä¸ã§ã¯SLAãé常ã«éè¦ãªå½¹å²ãæã¤ããªããªãAmazonã§ã¯ä¾ãã°1ã¤ã®ãã¼ã¸ãã¬ã³ããªã³ã°ããããã«è¤æ°é層ã§150以ä¸ã®ãµã¼ãã¹ã¸ã®ãªã¯ã¨ã¹ããå®è¡ããããã¨ãããããã ãä¸è¨ã®å³ã¯1ã¤ã®Webãã¼ã¸ãªã¯ã¨ã¹ãã«å¯¾ãã¦æ§ã ãªãµãã·ã¹ãã ã¸ã®ãªã¯ã¨ã¹ããçºçããæ§åã表ãã¦ãããããã¦ããããã®ãµãã·ã¹ãã ãSLAãæã¡ããããå®ã£ã¦ããã°ãæçµçã«ãã¼ã¸ã¬ã³ããªã³ã°ãã¦ã¼ã¶ã¼ã«å¯¾ãã¦ååã«ããçµé¨ã¨ãã¦æä¾ããããã¨ãã話ã
Amazonã®SLAã®ç¹å¾´ã¨ãã¦ã¯ãä¸è¬çã«ã¯SLAã«ã¯å¹³åå¤ãä¸éå¤ãå©ç¨ãããã¨ãå¤ãããããã§ã¯ãªããã¼ã»ã³ã¿ã¤ã«ãæ¡ç¨ãã¦ãããã¨ãããããã®ã»ããããå¤ãã®ã¦ã¼ã¶ã¼ã«å¯¾ãã¦é«ãæºè¶³åº¦ãæä¾ãããã¨ã«ãªããï¼ããã¯åå¼·ã«ãªããä»å¾ã¯ããããèãæ¹ãåãå ¥ãã¦ãããã¨ããã£ããï¼
2.3 è¨è¨ã®ãã¤ã³ã
ä¸è¬çãªãªã¬ã¼ã·ã§ãã«ãã¼ã¿ãã¼ã¹ã®ãã¼ã¿ã¬ããªã±ã¼ã·ã§ã³ã®å¤ãã¯åæåã®ãã®ã§ãã£ãããããããã®æ¹å¼ã§ã¯ãããã¯ã¼ã¯ã®åé¡ãèµ·ããã¨ãã¼ã¿ãå©ç¨ä¸è½ã«ãªã£ã¦ãã¾ããããã¯ãä¸è²«æ§ãä¿ã¤ããã«ãã¹ã¦ã®ã¬ããªã«ãæ¯è¼ã»æ¤è¨¼ãããã¼ã¿ãå®å ¨ã§ãããã¨ã確èªããªããã°ãªããªãã£ããããããã ããããã£ãäºæ ãããå¼·ä¸è²«æ§ã¨é«å¯ç¨æ§ã¯åæã«ã¯å®ç¾ã§ããªãããµã¼ãã¼ããããã¯ã¼ã¯ã®é害ãèµ·ããããç°å¢ã§ã¯æ¥½è¦³çã¬ããªã±ã¼ã·ã§ã³ãå©ç¨ããã»ããå¯ç¨æ§ãããããããããã¼ã¿ã®ã³ã³ããªã¯ããçºçããã®ã§ãããçºè¦ãã¦ä¿®æ£ããå¿ è¦ãåºã¦ããã
åè¿°ã®ã¨ããDynamoã¯çµææ´åæ§åãªã®ã§ãã®ã³ã³ããªã¯ãã®åé¡ã解決ãã¦ããå¿ è¦ããããè«æã§ã¯âãã¤âãâ誰ãâãããããã®ãã決ããã®ãéè¦ã ã¨æ¸ãã¦ããã
ã¾ããâãã¤âã«ã¤ãã¦ã ããããã¾ã§ã®å¤ãã®ã·ã¹ãã ã§ã¯ãã¼ã¿æ¸ãè¾¼ã¿æã«ãã®å¦çãè¡ã£ã¦ããã¨ãã話ãããã¯èªã¿è¾¼ã¿å¦çãã·ã³ãã«ã«ä¿ã¤ããã«ãããã£ãæ¹å¼ãåããã¦ããã¨ã®ãã¨ããããDynamoã¯åè¿°ã®ã¨ãã"Always Writable"ã§ãããã¨ãéè¦ãªã®ã§ãéã«èªã¿è¾¼ã¿æã«ãã®å¦çãè¡ããã¨ã«ãããæ¸ãè¾¼ã¿å¦çãã·ã³ãã«ã«ãã¦ãããçµæã¨ãã¦ããããã¯ã¼ã¯é害ããµã¼ãã¼é害ãèµ·ãã£ãéã«ããã¦ã¼ã¶ã¼ãååãã«ã¼ãã«å ¥ããããªããããªäºæ ãçºçããªãããã«ãªã£ã¦ãããããã
次ã«"誰ã"ã®è©±ãããã«ã¯ãã¢ããªã±ã¼ã·ã§ã³ããããã¯ããã¼ã¿ã¹ãã¢ï¼ã·ã¹ãã ï¼ãã®2ã¤ã®é¸æè¢ãããããã¼ã¿ã¹ãã¢ã«ãããè¡ãããå ´åãLast Write Winsãªã©ã®é常ã«åç´ãªæ¹å¼ããé¸æãããã¨ãã§ããªããä¸æ¹ãã¢ããªã±ã¼ã·ã§ã³å´ã§ããããã³ããªã³ã°ããã®ã§ããã°å¤ãã®ãã¸ãã¯ã®é¸æè¢ãæã¤ãã¨ãã§ãããããããå®è£ ããã®ã好ã¾ãªãéçºè ã¯å¤ããLast Write Winsãæ¡ç¨ããã¦ããã±ã¼ã¹ãå¤ãè¦ãããã¨ã®ãã¨ãã¾ã確ãã«ã¢ããªã±ã¼ã·ã§ã³ã¨ã³ã¸ãã¢ã¯æéãå¢ããã®ã§å«ããã ãããããã¼ã¿ã¹ãã¢ã¨ãããã·ã¹ãã ã®ä¸ã«ããã®ãã¸ãã¯ãé è½ãã¦ã»ããããã¨ããæ°æã¡ã¯ããããããæ°ããããã¡ãªã¿ã«Dynamoã§ã¯ãå¾åã®ç« ã«åºã¦ããããåºæ¬çã«ã¯Dynamoå´ã§è§£æ±ºããããã©ããã¦ã解決ã§ããªããããªã¨ãã¯å¼·å¶çã«ã·ã¹ãã å´ã§ä¸å®ã®æ¡ä»¶ã«æ²¿ã£ã¦æ±ºãã¦ãã¾ãããã¢ããªã±ã¼ã·ã§ã³å´ã«å§ããããé¸ã¶ãã¨ãã§ããããã«ãªã£ã¦ãã模æ§ã
ãã®ä»ã®éè¦ãªæè¡çãã¡ã¯ã¿ã¼ã¯ä»¥ä¸ã®ã¨ããã
ç¶ç¶çãªæ¡å¼µæ§
Dynamoã¯æ¢åã®ã·ã¹ãã ãã·ã¹ãã å ã®ãã¼ãã¸ã®å½±é¿ãæå°éã«æããªããã¹ãã¬ã¼ã¸ãã¼ãã®è¿½å ãã§ããå¿ è¦ãããã
対称æ§
Dynamoã®ã·ã¹ãã å ã®ãã¹ã¦ã®ãã¼ãã¯çãã責任ãæã¤ãç¹å¥ãªå½¹å²ã責任ãæã£ããã¼ããæã¤ã¨ã·ã¹ãã ã¯è¤éåããã
ä¸å¿ã®ãªãã¢ã¼ããã¯ãã£
対称æ§ãæã£ãã·ã¹ãã ãæ´ã«çªãè©°ããä¸å¿ããããªãP2Pãã¼ã¹ã®ã¢ã¼ããã¯ãã£ãç®æããä¸å¿ãæã¤ãã¨ã¯èé害æ§ãä¸ãããéã«ä¸å¿ããªããã¨ã«ãããã·ã¹ãã ã¯ããã·ã³ãã«ã§å¯ç¨æ§ã®é«ããæ¡å¼µæ§ã®é«ããã®ã¨ãªãã
ä¸å質æ§
ã·ã¹ãã ãæ§æããåãµã¼ãã¼ã¯ã¹ããã¯ãå¿ ãããä¸è´ãã¦ããªãã¦ãåé¡ãªãåä½ã§ãããã¨ã
3. Related Work(åèã«ããã·ã¹ãã ããµã¼ãã¹)
æ¡å¼µæ§ã¨å¯ç¨æ§ãä½µãæã¤åæ£åã¹ãã¬ã¼ã¸ã»ã·ã¹ãã ããã¶ã¤ã³ããä¸ã§åèã«ããã·ã¹ãã ãªã©ãç´¹ä»ããã¦ãããæ¯è¼ã®è¦³ç¹ã¨ãã¦ã¯
- IPãããã¯ã¼ã¯ã®ä¸ã«ãã·ã¹ãã ãæ§æããããã®ãªã¼ãã¼ã¬ã¤ã»ãããã¯ã¼ã¯ãã©ãæ§ç¯ããã
- ãã®ãããã¯ã¼ã¯ä¸ã§ã©ããã£ã¦ã¹ãã¬ã¼ã¸ã·ã¹ãã ãæ§ç¯ããã
- åæ£ããããã¼ãéã§ã®ã¬ããªã«ã®å ±æãä¸è²«æ§ã®ä¿ææ¹æ³
ãªã©ã«åºãã¦æ¯è¼ã»æ¤è¨ããã¦ãããçµæ§ãç¥ããªãã·ã¹ãã ãããã«ã¦ã§ã¢ãªã©ãããããã§ã¦ãã¦é¢ç½ãã£ãã
P2Pãããã¯ã¼ã¯
- Gnutella(http://rfc-gnutella.sourceforge.net/index.html), Freenet (https://freenetproject.org/)
- ãããã¯éæ§é åP2Pãããã¯ã¼ã¯ãPure P2Pãããã¯ã¼ã¯ã¨å¼ã°ãããã¢å士ã§ä»»æã«ãªã³ã¯ãæ§æããããéæ§é åãªã®ã§æ¢ç´¢ã¯ã¨ãªã¯ãããã¯ã¼ã¯ä¸ã«ãã©ããã£ã³ã°ããããGnutellaãªã¤ãããã»ã»ã»ããããæµè¡ã£ãå½æãP2Pã¨ããè¨èãèãã®ãåãã¦ã ã£ããªãã
- Pastry(http://www.freepastry.org/), Chord(https://github.com/sit/dht/wiki)
- ãããã¯æ§é åP2Pãããã¯ã¼ã¯ãåæ£ããã·ã¥ãã¼ãã«åã®ãããã¯ã¼ã¯ã¨å¼ã°ããPastryãChordã¨è¨ã£ãã¢ã«ã´ãªãºã ã¯éãããhopæ°ã§ç®çã®ãã¼ãã«å°éã§ãããã¨ãä¿è¨¼ãã¦ãããã¡ããã¨ã¢ã¼ããã¯ãã£ã¨ã確èªãã¦ããªããã©ãããããã®ãã¼ãããããã¯ãã¹ã¿ãã¼ãããããã¯ã¼ã¯ã®ãããã¸ã管çãã¦ããå½¢å¼ãIPã®ã«ã¼ãã£ã³ã°ã®ãããªã¤ã¡ã¼ã¸ãåè¿°ã®Pure P2Pãããã¯ã¼ã¯ãããé«ããããã¯ã¼ã¯å¹çãæå¾ ã§ããã
P2Pã¹ãã¬ã¼ã¸
- Ocenstore (http://oceanstore.cs.berkeley.edu/)
- å¤æ°ã®è¤è£½ããã¦å¤éåããããã¼ã¿ã«å¯¾ãã¦ã·ãªã¢ã«ãªã¢ãããã¼ãããµãã¼ããããã©ã³ã¶ã¯ã·ã§ãã«ã§æ°¸ç¶çãªã¹ãã¬ã¼ã¸ãµã¼ãã¹ãOceanstoreã¯å¤æ°ã®ä¸¦åæ¸ãè¾¼ã¿ã«ããçºçããã³ã³ããªã¯ãã解決ããããã«ãããããã®æ¸ãè¾¼ã¿ã«å¯¾ããçµ±ä¸çãªé åºä»ããå©ç¨ãã¦ãã¦ãã·ã¹ãã ã¯éæ§é åP2Pãããã¯ã¼ã¯ä¸ã«æ§æãããã
- PAST (http://research.microsoft.com/en-us/um/people/antr/PAST/)
- 対ãã¦PASTã¯æ§é åP2Pãããã¯ã¼ã¯ã§ããPastryä¸ã«æ§æããããªãã¸ã§ã¯ããå¤æ´ä¸å¯è½ãªå½¢ã§ä¿åããããããã©ããããã¤ã¯ãã½ããã®ããã¸ã§ã¯ãã®æ¨¡æ§ãåè¿°ã®ã¨ãããªãã¸ã§ã¯ãã¯å¤æ´ä¸å¯ãªã®ã§ãã¢ããªã±ã¼ã·ã§ã³ãã©ã¤ãã©ãªå´ã§ãªãã¸ã§ã¯ãã®ãã¼ã¸ã§ãã³ã°ã«ãããã¡ã¤ã«ã®æ´æ°ã£ã½ããã®ãå®è£ ãã¦ä½¿ãåæã®ãã®ãããã
3.2 åæ£ãã¡ã¤ã«ã·ã¹ãã ã¨åæ£ãã¼ã¿ãã¼ã¹
P2Pã¹ãã¬ã¼ã¸ã·ã¹ãã ã§ã¯åºæ¬çã«ã¯ãã©ãããªãã¼ã ã¹ãã¼ã¹ãããµãã¼ããããªãã®ã«å¯¾ããå ¸åçãªåæ£ãã¡ã¤ã«ã·ã¹ãã ã¯é層åã®ãã¼ã ã¹ãã¼ã¹ããµãã¼ãããã
- Ficus(http://www.isi.edu/~johnh/PAPERS/Popek90a/index.html), Coda(http://www.coda.cs.cmu.edu/)
- ãããã®ã·ã¹ãã ã¯ä¸è²«æ§ãç ç²ã«ãããã¼ã¿ãã¬ããªã±ã¼ããããã¨ã«ããå¯ç¨æ§ãé«ãã¦ãããæ´æ°ã®ã³ã³ããªã¯ãã¯ããããç¬èªã®æç¶ãã«ãã解決ãå³ã£ã¦ããã¨ã®ãã¨ã詳細ã¯æ¸ãã¦ãªãã£ãã
- Farsite(http://research.microsoft.com/en-us/projects/farsite/)
- Farsiteã¯NFSãªã©ã¨éããã¹ã¿ãµã¼ãã¼ããããªããã¡ã¤ã«ã·ã¹ãã ã§ãã¬ããªã±ã¼ã·ã§ã³ã«ããæ¡å¼µæ§ãå®ç¾ãã¦ãããããã¥ã¡ã³ãã®URLçã«MSã®ããã¸ã§ã¯ãã£ã½ãã
- Google File System(http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/ja//archive/gfs-sosp2003.pdf)
- ã¿ããªã ãããGFS(?)ãGFSã¯ã¡ã¿ãã¼ã¿ã管çãããã¹ã¿ã¼ãµã¼ãã¼ã¨å®ãã¼ã¿ã管çãããã£ã³ã¯ãµã¼ãã¼ç¾¤ããæãç«ã¤ãHDFSã®ãããã©ã¤ã¨ã¿ãªçãï¼æ£ããã¯éã§ãHDFSãGFSã®ãªã¼ãã³ã½ã¼ã¹çã§ããï¼
- Bayou
- Bayouã¯åæ£åã®ãªã¬ã¼ã·ã§ãã«ãã¼ã¿ãã¼ã¹ã§ãçµææ´åæ§ãé¸æãããã¨ã«ãããããã¯ã¼ã¯ãã¼ãã£ã·ã§ã³ã¸ã®èæ§ãåãã¦ããã
ãããã®ã·ã¹ãã ã®ãã¡ãBayouã¨Codaããã¦Ficusã¯ãããã¯ã¼ã¯ãã¼ãã£ã·ã§ã³ããããã¯ã¼ã¯é害ã¸ã®èæ§ãåãã¦ãããCodaã¨Ficusã¯ã·ã¹ãã å´ã§ã®ã³ã³ããªã¯ã解決ãå³ããBayouã¯ã¢ããªã±ã¼ã·ã§ã³å´ã§ã®ã³ã³ããªã¯ã解決ãå³ãè¨è¨ã«ãªã£ã¦ãããããããæ¹å¼ã¯ç°ãªããçµææ´åæ§ãä¿è¨¼ãã¦ãããDynamoããããã¨åæ§ã«ãããã¯ã¼ã¯ã«é¢é£ããåé¡ã¸ã®èæ§ãåããã
- FAB(http://web.mit.edu/prentice/PUBLIC_OLD/6.824/papers/FAB04.pdf)
- ãã®åæ£ãããã¯ã¹ãã¬ã¼ã¸ã¯å¤§ããªãã¡ã¤ã«ãè¤æ°ã®å°ããªãªãã¸ã§ã¯ãã«åå²ããããããã£ãã±ã¼ã¹ã«ããã¦ã¯Key Valuesã¹ãã¢ã¯å ã æ¯è¼çå°ããªãªãã¸ã§ã¯ããä¿åããããã«æå³ããã¦ããã®ã§æå©ããããã¡ãªã¿ã«ããã®éçºã«ã¯æ¥æ¬ã®æ¹ãæºãã£ã¦ãã模æ§ãHPã®ããã¸ã§ã¯ãï¼
- Antiquity(http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.165.1416)
- Antiquityã¯åºååæ£åã®ã¹ãã¬ã¼ã¸ã·ã¹ãã ã§ãããã¬ããªã«ããµã¼ãã¼ãä¿¡é ¼åºæ¥ããã¨ã確èªããããã«ã»ãã¥ã¢ãã°ã¨ããä»çµã¿ãçµã¿è¾¼ã¾ãã¦ããããããããDynamoã¯ãããã£ãæ¹å¼ã¯æ¡ç¨ãã¦ããªãããªããªããä¿¡é ¼åºæ¥ããããã¯ã¼ã¯å ã«æ§ç¯ããããã¨ãåæã¨ãã¦ããããã2007å¹´ã£ã¦çµæ§æ°ããã
- Bigtable(http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/ja//archive/bigtable-osdi06.pdf)
- sparseãªã½ã¼ãæ¸ã¿å¤æ¬¡å ããããæ ¼ç´ããã¢ããªã±ã¼ã·ã§ã³ã«å¯¾ãã¦å¤æ§ãªã¢ããªãã¥ã¼ããå©ç¨ãããã¼ã¿ã¢ã¯ã»ã¹ãæä¾ãããã¨æ¸ãããã¨é£ãããã©ãããããåæ£åã®NoSQLãHBaseã®éçºæã«åèã«ãã¦ããããããGFS -> HDFS, MapReduce -> Hadoopã«å ãã¦Bigtable -> HBaseãæ´çããã¨ãããããããããåè¿°ã®ã¨ããããªãæè»ãªã¯ã¨ãªãã§ããããã«ãªã£ã¦ããã®ãç¹å¾´ã対ãã¦Dynamoã¯é«å¯ç¨æ§ã¨Always Wrirtableã«ä¸»ç¼ãããã¦ããã®ã¨ããã¨ãã¨KVSçãªè¦ä»¶ã®ã¢ããªãåæã«èãããã¦ããã®ã§Key Valueã¢ã¯ã»ã¹ã®ã¿ãæä¾ããã
- ãªã¬ã¼ã·ã§ãã«ãã¼ã¿ãã¼ã¹
- ãã©ãã£ã·ã§ãã«ãªãªã¬ã¼ã·ã§ãã«ãã¼ã¿ãã¼ã¹ã¯å¼·ãä¸è²«æ§ããã¡ãããã°ã©ãã«å¯¾ãã¦é常ã«æå¿«ã§ç°¡æ½ãªããã°ã©ãã³ã°ã¢ãã«ãæä¾ãã¦ããããã©ãæ¡å¼µæ§ã¨å¯ç¨æ§ã®é¢ã§å£ãããããã®ã·ã¹ãã ã¯å¼·ä¸è²«æ§ãæä¾ããããã«å¯ç¨æ§ããããã¯ã¼ã¯ãã¼ãã£ã·ã§ã³ã¸ã®èæ§ãç ç²ã«ãã¦ãããå®éãä¾ãã°MySQLãæ¯ãè¿ã£ã¦ã¿ãã¨ããããã1å°æ§æã ã¨å¯ç¨æ§ãè½ã¡ãããã·ã£ã¼ãã£ã³ã°ããã¨ãã¦ãããããã®è²¬ä»»ç¯å²ãå¥ã«ãªã£ã¦ããã®ã§ãããã¯ã¼ã¯ãã¼ãã£ã·ã§ã³ã¸ã®èæ§ãä½ãããã®ããããã©ã³ã¶ã¯ã·ã§ãã«ã ããã¼ã¿ã®æ´åæ§ãæ°ã«ããªãã¦ãããããACIDï¼
3.3. Discussion
ããã¾ã§ã«åºã¦ãããDynamoã®ãã¶ã¤ã³è¦ä»¶ãã¾ã¨ããã¨ä¸è¨ã®5ã¤ã
- Always Writableã§ãããã¨ã並åæ¸ãè¾¼ã¿ã«å¯¾ãã¦ããã¹ã¦ã®æ¸ãè¾¼ã¿ãåãä»ãããã¨ã
- ä¿¡é ¼åºæ¥ããããã¯ã¼ã¯å ã«ã·ã¹ãã ãæ§æããããã¨
- è¤éãªã¹ãã¼ãã¯æä¾ãããKey Valueã¢ã¯ã»ã¹ã®ã¿ãæä¾ãããã¨
- ã¢ã¯ã»ã¹ã®99.9%ã«å¯¾ãæ°ç¾ms以å
ã®ä½ãã¬ã¤ãã³ã·ã§ã¬ã¹ãã³ã¹ãæä¾ãããã¨
- ã¡ãªã¿ã«ãã®é ç®ã§ã¡ãã£ã¨é¢ç½ããã¨ãæ¸ãã¦ãã£ãã®ã ãã©ã"Dynamoã¯Zero-hopãªåæ£ããã·ã¥ãã¼ãã«åã¹ãã¬ã¼ã¸ã¨è¨ã£ã¦ãã"ã¨æ¸ãã¦ãã£ããå®éãã®å¾ã®ç« ã§è¿°ã¹ããã¦ããã®ã ãã©ãåãã¼ããçããå½¹å²ãæã¡ããªãã¸ã§ã¯ãã®ãã±ã¼ã·ã§ã³ã¸ã®ç´æ¥ã®ã«ã¼ãã£ã³ã°æ å ±ãä¿æããã¢ã¼ããã¯ãã£ã«ãªã£ã¦ããã
ãã¹ã¿ãµã¼ãã¼ãªã©ãæã¤ã¨å¯ç¨æ§ãä½ããªããã·ã¹ãã ãè¤éã«ãªãã®ã§åãã¼ããçãã責任ç¯å²ããã¤èªå¾åã®P2Pã·ã¹ãã ã«ãããããããéæ§é åã®P2Pã§ã¯ãã¼ã¿ã®ä½ç½®ãä¿è¨¼ãããªãã®ã§ããã¼ã¿ã¢ã¯ã»ã¹ã¬ã¤ãã³ã·ãä¿è¨¼ã§ããªãã®ã§æ§é åã®P2P(åæ£ããã·ã¥ãã¼ãã«å)ãæ¡ç¨ããããã¨ããæµãã§ãã¾ã®ã¢ã¼ããã¯ãã£ã«è¾¿ãçããã®ã§ã¯ãªãããªã¨æ³åã
é·ããªã£ã¦ããã®ã§ä»æ¥ã®ãã¹ãã¯ããã¾ã§ã
ãã®ãã¨ã¯System ArchitectureãImplementationãªã©ãå®éã®Dynamoã®ãã¶ã¤ã³ãå®è£
ã®è©±ã«å
¥ã£ã¦ãããã
ãã¨ãã°ä»¥ä¸ã®ãããªè©±ã«è¨åãã¦è¡ãäºå®ã
èª²é¡ | æ¡ç¨æè¡ | å©ç¹ |
---|---|---|
ãã¼ã¿ãã¼ãã£ã·ã§ãã³ã° | ã³ã³ã·ã¹ãã³ãããã·ã³ã° | ç¶ç¶çæ¡å¼µæ§ |
æ¸ãè¾¼ã¿å¯ç¨æ§ | ãã¯ã¿ã¼ã¯ããã¯ã¨èªã¿è¾¼ã¿æã®ã³ã³ããªã¯ã解決 | ãã¼ã¸ã§ãã³ã°ã«ãããã¼ã¿ãµã¤ãºå¢å¤§ã®æå¶ |
ä¸æçãªåé¡ã®ãã³ããªã³ã° | Sloppy(èã) Quorumã¨ãã³ãä»ããã³ããªã¼ãã¼ | ä¸é¨ã®ãã¼ãããããã¯ã¼ã¯æãèµ·ãã£ãéã®èéå®³æ§ |
æ°¸ç¶çãªåé¡ã®ãã³ããªã³ã° | ãã¼ã¯ã«æ¨ãå©ç¨ããã¢ã³ãã¨ã³ãããã¼ã®å®ç¾ | çºæ£ããã¬ããªã«ãããã¯ã°ã©ã¦ã³ãã§åæã§ãã |
ã¡ã³ãã¼ãã¼ãã®æ¢ç´¢/çºè¦ãé害æ¤ç¥ | gossipãã¼ã¹ã®ã¡ã³ãã¼æ¤ç¥ãé害æ¤ç¥ãããã³ã« | ä¸å¿ã®ãªãã¢ã¼ããã¯ãã£ã®å®ç¾ã¨ãã¼ãæ å ±ã®äº¤æ |
ã¨ããæãã§ä¸èº«ã®è©±ã«ã¯ãã£ã¦ããã¾ãã
ã楽ãã¿ã«ï¼