Bigtableã¨åæ£KVS
é¦è¤ãããUNIX managineã«ãkey-valueã¹ãã¢ã¨ããååã«ã¯ããã¼ã¨å¤ã®ãã¢ï¼key-value pairï¼ãæ ¼ç´ãããã¼ã¿æ ¼ç´ã½ããã¦ã§ã¢ã¨ãããããã®æå³ãããªããã¨æ¸ããã¦ããããã«ãKVSã«ã¯RDBã®ãããªãã¼ã¹ã¨ãªããã¼ã¿ã¢ãã«ã¨ãå®ç¾©ãããããããããã¾ããããããRDBã¸ã®ã¢ã³ããã¼ã¼ã¨ãã¦ç»å ´ãã¦ããæ§ã ãªéãªã¬ã¼ã·ã§ãã«ãªãã¼ã¿ã¹ãã¢ã象徴ãããã¼ã¯ã¼ãã¨ãã¦ä½¿ãããã±ã¼ã¹ãå¤ãã¨æãã¾ãï¼ãããã£ãæå³ã§NoSQLã£ã¦ãã表ç¾ã¯çãå°ã¦ã¾ããï¼ã
ãªã®ã§ãBigtableãåæ£KVSãªã®ãã©ãããã¨ããåãã¯ãKVSã®å®ç¾©ãææ§ãªä»¥ä¸ãã¾ãæå³ã®ããåãã§ã¯ããã¾ãããããããæ§ã ãªKVSå®è£ ã¨Bigtableã¯ä½ãéãã®ããç¥ããã£ããã¨ãã¦æ°ã«ãªãã¾ããã
å¤æ©ããã®分散KVSの使い方ããï¼
ããã§è¨ãã¨ããã®åæ£KVSã«ã¯ãBigTableãCassandraãªã©ã®ãããããMulti dimensional sorted storeã¯å«ãã¦ããªãã ãããã®åæ£ãã¼ã¿ã¹ãã¢ã¯key-valueãããé«ç´ãªãã¼ã¿ã¢ãã«ãæã¡ãåç´ãªKVSã®å¹çä¸ã®åé¡ã解決ãããã¨ãã¦ããã
åæ£KVSãç 究ã»å®è£ ããã¦ããæ¹ããè¦ãã¨ãBigtableã¯ãé«ç´ãªãã¼ã¿ã¢ãã«ããæã¤ããã«ãï¼DHTçã§å®è£ ãããå¤ãã®ï¼ã®åæ£KVSã¨ã¯åºå¥ãã¦ãããã¨ãã趣æ¨ã¨æãã¾ãã
ä¸æ¹ãBigtable: A Distributed Storage System for Structured Dataã§ã¯ã
p1
2 Data Model A Bigtable is a sparse, distributed, persistent multidimensional sorted map. The map is indexed by a row key, column key, and a timestamp; each value in the map is an uninterpreted array of bytes. (row:string, column:string, time:int64) â string
ã¤ã¾ããBigtableã¯ã(row:string, column:string, time:int64)ãããã¼ã¨ãã¦å¤ãä¿æããmapã§ããã¨èª¬æãã¦ãã¾ããmapã§ããããç´ ç´ã«èããã¨ãã¼ã§å¤ãä¿åããKVSã§ãããåæ£åããã¦ããã®ã§åæ£KVSã¨è¨ããã¨æãã¾ãã
ãã ãä¸è¬çãªåæ£KVSã¨ç°ãªãç¹ã¯ãå¤æ©ãããææããã¦ããããã«ãmultidimensionalãã§ãããsortedãã§ããã¨ããç¹ã§ãã
multidimensionalï¼
ç´è¨³ããã¨ãå¤æ¬¡å ãã§ãããããã¯åç´ã«ã2次å ãã¼ãã«ã®åã ã®ã»ã«ï¼å¤ï¼ã«ã¤ãã¦å±¥æ´ãæ®ããã¨ããæå³ã§ãããã¨ãã¨Bigtableã¯Googleæ¤ç´¢ã®ããã«éçºããããã¼ã¿ã¹ãã¢ã§ãããWebã³ã³ãã³ãã®éå»ã®å±¥æ´ãæ®ãããã«multidimensionalã§ããç¹æ§ãçãããã¦ãã¾ããããããä¸è¿°ã®ã¨ããããã®å¤æ¬¡å ãæ§æããããã®ã¿ã¤ã ã¹ã¿ã³ãããã¼ã«å«ã¾ãã¦ãããæçµçã«ã¯åç´ãªæååãã¼ã¨å¤ã®ãã¢ã¨ãã¦ãã¼ã¿ã¹ãã¢ã«æ ¼ç´ããã¦ãã¾ãã
ã¾ããGoogle App Engineã§ã¯Bigtableã®multidimensionalãªæ©è½ãæä¾ãã¦ãã¾ãããã¾ãããã«ãã£ã¦ç¹ã«æ¬è³ªçãªæ©è½ã®æ¬ è½ãããã¾ããï¼ãããä¸ä¾¿ã¨ããçã欲ããã£ã¦ããã¨ãï¼ããã£ã¦ãmultidimensionalã§ããã¨ããç¹æ§ã¯ãBigtableã®æ¬è³ªçãªç¹æ§ã¨ã¯è¨ããªãã¨ç§ã¯æãã¾ãã
sortedï¼
sortedã¨ã¯è¨ã£ã¦ãããã¡ããBigtableã§ããã¼ã¿ãç©ççã«ã½ã¼ãããé çªã§æ ¼ç´ãã¦ããããã§ã¯ãªããsparseã«æ ¼ç´ããããã¼ã¿ã«å¯¾ãã¦ãè¡ï¼åï¼æéã§ã½ã¼ãæ¸ã¿ã®ãã¼ã¿ã¨ãã¦ã¢ã¯ã»ã¹ããããã®ã¤ã³ããã¯ã¹ãå¥éåãã¦ããã¨ããæå³ã§ãã
ããã¯Bigtableã®é常ã«ç¹å¾´çãªæ©è½ã§ãããããã®ãããã§ãç¯å²æ¤ç´¢ï¼ã¬ã³ã¸ã¹ãã£ã³ï¼ãã§ããåæ£KVSãã¨ãªã£ã¦ãã¾ããããBigtableã§ã¬ã³ã¸ã¹ãã£ã³ãã§ããªãã£ãããApp Engineã§GQLã¨ãJDOQLã«ããã¯ã¨ãªãå®è¡ãããã¨ãã§ããªãã£ãããããã¾ããã
ããããããªããããã¯Bigtableè«æã§ãæè¨ããã¦ããã
p12
In terms of the distributed data storage model that one might provide to application developers, we believe the key-value pair model provided by distributed B-trees or distributed hash tables is too limiting. Key-value pairs are a useful building block, but they should not be the only building block one provides to developers. The model we chose is richer than simple key-value pairs, and supports sparse semi-structured data. Nonetheless, it is still simple enough that it lends itself to a very efficient flat-file representation, and it is transparent enough (via locality groups) to allow our users to tune important behaviors of the system.
è¦ç¹ãã¾ã¨ããã¨ã
- åæ£B-treeãDHTã«ããkey-value pairã¢ãã«ã®ã¿ã§ã¯ã¢ããªéçºè ã«ã¨ã£ã¦å¶éã大ãããã
- key-value pairã¯ä¾¿å©ãªæ§æè¦ç´ ã ããããã ãã§ã¯è¶³ããªã
- ããã§Bigtableã§ã¯sparseãªåæ§é ãã¼ã¿ï¼ï¼ã¹ãã¼ãã¬ã¹ãªæ§é åãã¼ã¿ï¼ãæ±ããããããªãããªã¢ãã«ãæä¾ãã
- ãã¤ãé常ã«å¹ççãªãã©ãããã¡ã¤ã«æ§é ã«ä¿åããããï¼ãã¼ã«ãªãã£ã°ã«ã¼ãã«ããï¼ã·ã¹ãã ã®éè¦ãªæ¯ãèããã¦ã¼ã¶ã¼ã調æ´ãããã¨ãå¯è½
Bigtableï¼åæ£KVSãã¼ã¹ã®ã¬ã³ã¸ã¹ãã£ã³å¯è½ãªè¡¨å½¢å¼ãã¼ã¿ã¹ãã¢
ã¤ã¾ããKVSããã¼ã¹ã«ãããé«ç´ãªãã¼ã¿ã¢ãã«ï¼ï¼ã¬ã³ã¸ã¹ãã£ã³å¯è½ãªã½ã¼ãæ¸ã¿ã®ãã¼ãã«ï¼ãæä¾ãããã¨ãBigtableã®ãã½ãã¨ããããã§ããã¾ãããã¼ã«ãªãã£ã°ã«ã¼ãï¼ããªãã¡App Engineã§è¨ãã¨ããã®ãã¼ã®è¦ªåé¢ä¿ï¼ãããã°ã©ãã¼ã調æ´ãããã¨ã§ãDHTã®ããã«ãã¼ã¿ãå®å ¨ã«ã°ãã°ãã«åæ£ãããã®ã§ã¯ãªã1ãæã«éãã¦ãã¼ã«ãªãã£ãå®ç¾ããï¼ããã©ã¼ãã³ã¹ããã©ã³ã¶ã¯ã·ã§ã³ãç®çï¼ï¼ãã¨ãå¯è½ã«ãªã£ã¦ãã¾ãã
ã¨ããããã§ãBigtableã¯ãåæ£KVSãã¼ã¹ã®ã¬ã³ã¸ã¹ãã£ã³å¯è½ãªè¡¨å½¢å¼ãã¼ã¿ã¹ãã¢ãã¨ããç§ã®å°è±¡ã§ãã
ããã©ãããã®ã§å ¨é¨NoSQLã¨å¼ã³ã¾ãããï¼w
追è¨
ã¨ããã§GoogleãããBigtableãªã®ãBigTableãªã®ãããããªãã¦ãã ããï¼
Smalltalkã¨SmallTalkãJavaã¨JAVAã¨ããããããã¨ãããããæ°ã«ãªããã§ããããw
11/19追è¨
ãmultidimensionalãã®è§£éã«ã¤ãã¦ã¯ãèããå¤ããã¾ãã: http://d.hatena.ne.jp/kazunori_279/20091119/1258593439
12/14追è¨
Googleèªèº«ã¯Bigtableã®ãã¨ãåæ£KVSã¨æãã¦ããããã§ãï¼
How Entities and Indexes are Stored
Background App Engine's datastore is built on top of Bigtable, a large, distributed key-value store that is built to scale.