Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Bigtable£ºÒ»¸ö·Ö²¼Ê½µÄ½á¹¹»¯Êý¾Ý´æ´¢ÏµÍ³
 
×÷ÕߣºAlex À´Ô´£ºCSDN ·¢²¼ÓÚ£º2015-7-23
  3049  次浏览      27
 

ÕªÒª

BigtableÊÇÒ»¸ö·Ö²¼Ê½µÄ½á¹¹»¯Êý¾Ý´æ´¢ÏµÍ³£¬Ëü±»Éè¼ÆÓÃÀ´´¦Àíº£Á¿Êý¾Ý£ºÍ¨³£ÊÇ·Ö²¼ÔÚÊýǧ̨ÆÕͨ·þÎñÆ÷ÉϵÄPB¼¶µÄÊý¾Ý¡£Google µÄºÜ¶àÏîĿʹÓÃBigtable´æ´¢Êý¾Ý£¬°üÀ¨WebË÷Òý¡¢Google Earth¡¢Google Finance¡£ÕâЩӦÓöÔBigtableÌá³öµÄÒªÇó²îÒì·Ç³£´ó£¬ÎÞÂÛÊÇÔÚÊý¾ÝÁ¿ÉÏ£¨´ÓURLµ½ÍøÒ³µ½ÎÀÐÇͼÏñ£©»¹ÊÇÔÚÏìÓ¦ËÙ¶ÈÉÏ£¨´Óºó¶ËµÄÅúÁ¿´¦Àíµ½ÊµÊ±Êý¾Ý·þÎñ£©¡£¾¡¹ÜÓ¦ÓÃÐèÇó²îÒìºÜ´ó£¬µ«ÊÇ£¬Õë¶ÔGoogleµÄÕâЩ²úÆ·£¬Bigtable»¹Êdzɹ¦µÄÌṩÁËÒ»¸öÁé»îµÄ¡¢¸ßÐÔÄܵĽâ¾ö·½°¸¡£±¾ÂÛÎÄÃèÊöÁËBigtableÌṩµÄ¼òµ¥µÄÊý¾ÝÄ£ÐÍ£¬ÀûÓÃÕâ¸öÄ£ÐÍ£¬Óû§¿ÉÒÔ¶¯Ì¬µÄ¿ØÖÆÊý¾ÝµÄ·Ö²¼ºÍ¸ñʽ£»ÎÒÃÇ»¹½«ÃèÊöBigtableµÄÉè¼ÆºÍʵÏÖ¡£

1 ½éÉÜ

ÔÚ¹ýÈ¥Á½Äê°ëʱ¼äÀÎÒÃÇÉè¼Æ¡¢ÊµÏÖ²¢²¿ÊðÁËÒ»¸ö·Ö²¼Ê½µÄ½á¹¹»¯Êý¾Ý´æ´¢ÏµÍ³ ¡ª ÔÚGoogle£¬ÎÒÃdzÆÖ®ÎªBigtable¡£BigtableµÄÉè¼ÆÄ¿µÄÊǿɿ¿µÄ´¦ÀíPB¼¶±ðµÄÊý¾Ý£¬²¢ÇÒÄܹ»²¿Êðµ½ÉÏǧ̨»úÆ÷ÉÏ¡£BigtableÒѾ­ÊµÏÖÁËÏÂÃæµÄ¼¸¸öÄ¿±ê£ºÊÊÓÃÐԹ㷺¡¢¿ÉÀ©Õ¹¡¢¸ßÐÔÄܺ͸߿ÉÓÃÐÔ¡£BigtableÒѾ­ÔÚ³¬¹ý60¸öGoogleµÄ²úÆ·ºÍÏîÄ¿Éϵõ½ÁËÓ¦Ó㬰üÀ¨ Google Analytics¡¢Google Finance¡¢Orkut¡¢Personalized Search¡¢WritelyºÍGoogle Earth¡£ÕâЩ²úÆ·¶ÔBigtableÌá³öÁËåÄÒìµÄÐèÇó£¬ÓеÄÐèÒª¸ßÍÌÍÂÁ¿µÄÅú´¦Àí£¬ÓеÄÔòÐèÒª¼°Ê±ÏìÓ¦£¬¿ìËÙ·µ»ØÊý¾Ý¸ø×îÖÕÓû§¡£ËüÃÇʹÓÃµÄ Bigtable¼¯ÈºµÄÅäÖÃÒ²ÓкܴóµÄ²îÒ죬Óеļ¯ÈºÖ»Óм¸Ì¨·þÎñÆ÷£¬¶øÓеÄÔòÐèÒªÉÏǧ̨·þÎñÆ÷¡¢´æ´¢¼¸°ÙTBµÄÊý¾Ý¡£

ÔÚºÜ¶à·½Ãæ£¬BigtableºÍÊý¾Ý¿âºÜÀàËÆ£ºËüʹÓÃÁ˺ܶàÊý¾Ý¿âµÄʵÏÖ²ßÂÔ¡£²¢ÐÐÊý¾Ý¿â¡¾14¡¿ºÍÄÚ´æÊý¾Ý¿â¡¾13¡¿ÒѾ­¾ß±¸¿ÉÀ©Õ¹ÐԺ͸ßÐÔÄÜ£¬µ«ÊÇBigtableÌṩÁËÒ»¸öºÍÕâЩϵͳÍêÈ«²»Í¬µÄ½Ó¿Ú¡£Bigtable²»Ö§³ÖÍêÕûµÄ¹ØÏµÊý¾ÝÄ£ÐÍ£»ÓëÖ®Ïà·´£¬BigtableΪ¿Í»§ÌṩÁ˼òµ¥µÄÊý¾ÝÄ£ÐÍ£¬ÀûÓÃÕâ¸öÄ£ÐÍ£¬¿Í»§¿ÉÒÔ¶¯Ì¬¿ØÖÆÊý¾ÝµÄ·Ö²¼ºÍ¸ñʽ(alex ×¢£ºÒ²¾ÍÊǶÔBigTable¶øÑÔ£¬Êý¾ÝÊÇûÓиñʽµÄ£¬ÓÃÊý¾Ý¿âÁìÓòµÄÊõÓï˵£¬¾ÍÊÇÊý¾ÝûÓÐSchema£¬Óû§×Ô¼ºÈ¥¶¨ÒåSchema)£¬Óû§Ò²¿ÉÒÔ×Ô¼ºÍƲâ(alex×¢£ºreason about)µ×²ã´æ´¢Êý¾ÝµÄλÖÃÏà¹ØÐÔ(alex×¢£ºÎ»ÖÃÏà¹ØÐÔ¿ÉÒÔÕâÑùÀí½â£¬±ÈÈçÊ÷×´½á¹¹£¬¾ßÓÐÏàͬǰ׺µÄÊý¾ÝµÄ´æ·ÅλÖýӽü¡£ÔÚ¶ÁÈ¡µÄʱºò£¬¿ÉÒÔ°ÑÕâЩÊý¾ÝÒ»´Î¶ÁÈ¡³öÀ´)¡£Êý¾ÝµÄϱêÊÇÐкÍÁеÄÃû×Ö£¬Ãû×Ö¿ÉÒÔÊÇÈÎÒâµÄ×Ö·û´®¡£Bigtable½«´æ´¢µÄÊý¾Ý¶¼ÊÓΪ×Ö·û´®£¬µ«ÊÇBigtable±¾Éí²»È¥½âÎöÕâЩ×Ö·û´®£¬¿Í»§³ÌÐòͨ³£»áÔڰѸ÷Öֽṹ»¯»òÕß°ë½á¹¹»¯µÄÊý¾Ý´®Ðл¯µ½ÕâЩ×Ö·û´®Àͨ¹ý×ÐϸѡÔñÊý¾ÝµÄģʽ£¬¿Í»§¿ÉÒÔ¿ØÖÆÊý¾ÝµÄλÖÃÏà¹ØÐÔ¡£×îºó£¬¿ÉÒÔͨ¹ýBigTableµÄģʽ²ÎÊýÀ´¿ØÖÆÊý¾ÝÊÇ´æ·ÅÔÚÄÚ´æÖС¢»¹ÊÇÓ²ÅÌÉÏ¡£

µÚ¶þ½ÚÃèÊö¹ØÓÚÊý¾ÝÄ£Ð͸ü¶àϸ½Ú·½ÃæµÄ¶«Î÷£»µÚÈý½Ú¸ÅÒª½éÉÜÁ˿ͻ§¶ËAPI£»µÚËĽڼòÒª½éÉÜÁËBigTableµ×²ãʹÓõÄGoogleµÄ»ù´¡¿ò¼Ü£»µÚÎå½ÚÃèÊöÁËBigTableʵÏֵĹؼü²¿·Ö£»µÚ6½ÚÃèÊöÁËÎÒÃÇΪÁËÌá¸ßBigTableµÄÐÔÄܲÉÓõÄһЩ¾«Ï¸µÄµ÷ÓÅ·½·¨£»µÚ7½ÚÌṩÁËBigTableµÄÐÔÄÜÊý¾Ý£»µÚ8½Ú½²ÊöÁ˼¸¸öGoogleÄÚ²¿Ê¹ÓÃBigTableµÄÀý×Ó£»µÚ9½ÚÊÇÎÒÃÇÔÚÉè¼ÆºÍºóÆÚÖ§³Ö¹ý³ÌÖеõ½Ò»Ð©¾­ÑéºÍ½Ìѵ£»×îºó£¬ÔÚµÚ10½ÚÁгöÎÒÃǵÄÏà¹ØÑо¿¹¤×÷£¬µÚ11½ÚÊÇÎÒÃǵĽáÂÛ¡£

2 Êý¾ÝÄ£ÐÍ

BigtableÊÇÒ»¸öÏ¡ÊèµÄ¡¢·Ö²¼Ê½µÄ¡¢³Ö¾Ã»¯´æ´¢µÄ¶àά¶ÈÅÅÐòMap(alex×¢£º¶ÔÓÚ³ÌÐòÔ±À´Ëµ£¬MapÓ¦¸Ã²»Ó÷­ÒëÁ˰ɡ£MapÓÉkeyºÍvalue×é³É£¬ºóÃæÎÒÃÇÖ±½ÓʹÓÃkeyºÍvalue£¬²»ÔÙÁíÍâ·­ÒëÁË)¡£MapµÄË÷ÒýÊÇÐйؼü×Ö¡¢Áйؼü×ÖÒÔ¼°Ê±¼ä´Á£»MapÖеÄÿ¸övalue¶¼ÊÇÒ»¸öδ¾­½âÎöµÄbyteÊý×é¡£

(row:string, column:string,time:int64)->string

ÎÒÃÇÔÚ×Ðϸ·ÖÎöÁËÒ»¸öÀàËÆBigtableµÄϵͳµÄÖÖÖÖDZÔÚÓÃ;֮ºó£¬¾ö¶¨Ê¹ÓÃÕâ¸öÊý¾ÝÄ£ÐÍ¡£ÎÒÃÇÏȾٸö¾ßÌåµÄÀý×Ó£¬Õâ¸öÀý×Ó´ÙʹÎÒÃÇ×öÁ˺ܶàÉè¼Æ¾ö²ß£»¼ÙÉèÎÒÃÇÏëÒª´æ´¢º£Á¿µÄÍøÒ³¼°Ïà¹ØÐÅÏ¢£¬ÕâЩÊý¾Ý¿ÉÒÔÓÃÓںܶ಻ͬµÄÏîÄ¿£¬ÎÒÃǹÃÇÒ³ÆÕâ¸öÌØÊâµÄ±íΪWebtable¡£ÔÚWebtableÀÎÒÃÇʹÓÃURL×÷ΪÐйؼü×Ö£¬Ê¹ÓÃÍøÒ³µÄijЩÊôÐÔ×÷ΪÁÐÃû£¬ÍøÒ³µÄÄÚÈÝ´æÔÚ¡°contents:¡±ÁÐÖУ¬²¢ÓûñÈ¡¸ÃÍøÒ³µÄʱ¼ä´Á×÷Ϊ±êʶ(alex×¢£º¼´°´ÕÕ»ñȡʱ¼ä²»Í¬£¬´æ´¢Á˶à¸ö°æ±¾µÄÍøÒ³Êý¾Ý)£¬ÈçͼһËùʾ¡£

ͼһ:Ò»¸ö´æ´¢WebÍøÒ³µÄÀý×ӵıíµÄƬ¶Ï¡£ÐÐÃûÊÇÒ»¸ö·´ÏòURL¡£contentsÁÐ×å´æ·ÅµÄÊÇÍøÒ³µÄÄÚÈÝ£¬anchorÁÐ×å´æ·ÅÒýÓøÃÍøÒ³µÄêÁ´½ÓÎı¾(alex×¢:Èç¹û²»ÖªµÀHTMLµÄAnchor£¬ÇëGoogleÒ»°Ñ)¡£CNN µÄÖ÷Ò³±»Sports IllustraterºÍMY-lookµÄÖ÷Ò³ÒýÓã¬Òò´Ë¸ÃÐаüº¬ÁËÃûΪ¡°anchor:cnnsi.com¡±ºÍ ¡°anchhor:my.look.ca¡±µÄÁС£Ã¿¸öêÁ´½ÓÖ»ÓÐÒ»¸ö°æ±¾(alex ×¢:×¢Òâʱ¼ä´Á±êʶÁËÁеİ汾£¬t9ºÍt8·Ö±ð±êʶÁËÁ½¸öêÁ´½ÓµÄ°æ±¾)£»¶øcontentsÁÐÔòÓÐÈý¸ö°æ±¾£¬·Ö±ðÓÉʱ¼ä´Á t3£¬t5£¬ºÍt6±êʶ¡£

ÐÐ

±íÖеÄÐйؼü×Ö¿ÉÒÔÊÇÈÎÒâµÄ×Ö·û´®(Ŀǰ֧³Ö×î´ó64KBµÄ×Ö·û´®£¬µ«ÊǶԴó¶àÊýÓû§£¬10-100¸ö×Ö½Ú¾Í×ã¹»ÁË)¡£¶Ôͬһ¸öÐйؼü×ֵĶÁ»òÕßд²Ù×÷¶¼ÊÇÔ­×ÓµÄ(²»¹Ü¶Á»òÕßдÕâÒ»ÐÐÀï¶àÉÙ¸ö²»Í¬ÁÐ)£¬Õâ¸öÉè¼Æ¾ö²ßÄܹ»Ê¹Óû§ºÜÈÝÒ×µÄÀí½â³ÌÐòÔÚ¶Ôͬһ¸öÐнøÐв¢·¢¸üвÙ×÷ʱµÄÐÐΪ¡£

Bigtableͨ¹ýÐйؼü×ÖµÄ×Öµä˳ÐòÀ´×éÖ¯Êý¾Ý¡£±íÖеÄÿ¸öÐж¼¿ÉÒÔ¶¯Ì¬·ÖÇø¡£Ã¿¸ö·ÖÇø½Ð×öÒ»¸ö¡±Tablet¡±£¬TabletÊÇÊý¾Ý·Ö²¼ºÍ¸ºÔؾùºâµ÷ÕûµÄ×îСµ¥Î»¡£ÕâÑù×öµÄ½á¹ûÊÇ£¬µ±²Ù×÷Ö»¶ÁÈ¡ÐÐÖкÜÉÙ¼¸ÁеÄÊý¾ÝʱЧÂʺܸߣ¬Í¨³£Ö»ÐèÒªºÜÉÙ¼¸´Î»úÆ÷¼äµÄͨÐż´¿ÉÍê³É¡£Óû§¿ÉÒÔͨ¹ýÑ¡ÔñºÏÊʵÄÐйؼü×Ö£¬ÔÚÊý¾Ý·ÃÎÊʱÓÐЧÀûÓÃÊý¾ÝµÄλÖÃÏà¹ØÐÔ£¬´Ó¶ø¸üºÃµÄÀûÓÃÕâ¸öÌØÐÔ¡£¾ÙÀýÀ´Ëµ£¬ÔÚWebtableÀͨ¹ý·´×ªURLÖÐÖ÷»úÃûµÄ·½Ê½£¬¿ÉÒÔ°Ñͬһ¸öÓòÃûϵÄÍøÒ³¾Û¼¯ÆðÀ´×éÖ¯³ÉÁ¬ÐøµÄÐС£¾ßÌåÀ´Ëµ£¬ÎÒÃÇ¿ÉÒÔ°Ñmaps.google.com/index.htmlµÄÊý¾Ý´æ·ÅÔڹؼü×Ö com.google.maps/index.htmlÏ¡£°ÑÏàͬµÄÓòÖеÄÍøÒ³´æ´¢ÔÚÁ¬ÐøµÄÇøÓò¿ÉÒÔÈûùÓÚÖ÷»úºÍÓòÃûµÄ·ÖÎö¸ü¼ÓÓÐЧ¡£

ÁÐ×å

Áйؼü×Ö×é³ÉµÄ¼¯ºÏ½Ð×ö¡°ÁÐ×å¡°£¬ÁÐ×åÊÇ·ÃÎÊ¿ØÖƵĻù±¾µ¥Î»¡£´æ·ÅÔÚͬһÁÐ×åϵÄËùÓÐÊý¾Ýͨ³£¶¼ÊôÓÚͬһ¸öÀàÐÍ(ÎÒÃÇ¿ÉÒÔ°Ñͬһ¸öÁÐ×åϵÄÊý¾ÝѹËõÔÚÒ»Æð)¡£ÁÐ×åÔÚʹÓÃ֮ǰ±ØÐëÏÈ´´½¨£¬È»ºó²ÅÄÜÔÚÁÐ×åÖÐÈκεÄÁйؼü×ÖÏ´æ·ÅÊý¾Ý£»ÁÐ×å´´½¨ºó£¬ÆäÖеÄÈκÎÒ»¸öÁйؼü×Ö϶¼¿ÉÒÔ´æ·ÅÊý¾Ý¡£¸ù¾ÝÎÒÃǵÄÉè¼ÆÒâͼ£¬Ò»ÕűíÖеÄÁÐ×å²»ÄÜÌ«¶à(×î¶à¼¸°Ù¸ö)£¬²¢ÇÒÁÐ×åÔÚÔËÐÐÆÚ¼äºÜÉٸı䡣ÓëÖ®Ïà¶ÔÓ¦µÄ£¬Ò»Õűí¿ÉÒÔÓÐÎÞÏÞ¶à¸öÁС£

Áйؼü×ÖµÄÃüÃûÓï·¨ÈçÏÂ:ÁÐ×å:ÏÞ¶¨´Ê¡£ ÁÐ×åµÄÃû×Ö±ØÐëÊǿɴòÓ¡µÄ×Ö·û´®£¬¶øÏÞ¶¨´ÊµÄÃû×Ö¿ÉÒÔÊÇÈÎÒâµÄ×Ö·û´®¡£±ÈÈ磬WebtableÓиöÁÐ×ålanguage£¬languageÁÐ×åÓÃÀ´´æ·Å×«Ð´ÍøÒ³µÄÓïÑÔ¡£ÎÒÃÇÔÚlanguageÁÐ×åÖÐֻʹÓÃÒ»¸öÁйؼü×Ö£¬ÓÃÀ´´æ·Åÿ¸öÍøÒ³µÄÓïÑÔ±êʶID¡£WebtableÖÐÁíÒ»¸öÓÐÓõÄÁÐ×åÊÇanchor£»Õâ¸öÁÐ×åµÄÿһ¸öÁйؼü×Ö´ú±íÒ»¸öêÁ´½Ó£¬ÈçͼһËùʾ¡£AnchorÁÐ×åµÄÏÞ¶¨´ÊÊÇÒýÓøÃÍøÒ³µÄÕ¾µãÃû£»AnchorÁÐ×åÿÁеÄÊý¾ÝÏî´æ·ÅµÄÊÇÁ´½ÓÎı¾¡£

·ÃÎÊ¿ØÖÆ¡¢´ÅÅ̺ÍÄÚ´æµÄʹÓÃͳ¼Æ¶¼ÊÇÔÚÁÐ×å²ãÃæ½øÐеġ£ÔÚÎÒÃǵÄWebtableµÄÀý×ÓÖУ¬ÉÏÊöµÄ¿ØÖÆÈ¨ÏÞÄܰïÖúÎÒÃǹÜÀí²»Í¬ÀàÐ͵ÄÓ¦ÓÃ:ÎÒÃÇÔÊÐíһЩӦÓÿÉÒÔÌí¼ÓеĻù±¾Êý¾Ý¡¢Ò»Ð©Ó¦ÓÿÉÒÔ¶ÁÈ¡»ù±¾Êý¾Ý²¢´´½¨¼Ì³ÐµÄÁÐ×塢һЩӦÓÃÔòÖ»ÔÊÐíä¯ÀÀÊý¾Ý(ÉõÖÁ¿ÉÄÜÒòΪÒþ˽µÄÔ­Òò²»ÄÜä¯ÀÀËùÓÐÊý¾Ý)¡£

ʱ¼ä´Á

ÔÚBigtableÖУ¬±íµÄÿһ¸öÊý¾ÝÏî¶¼¿ÉÒÔ°üº¬Í¬Ò»·ÝÊý¾ÝµÄ²»Í¬°æ±¾£»²»Í¬°æ±¾µÄÊý¾Ýͨ¹ýʱ¼ä´ÁÀ´Ë÷Òý¡£Bigtableʱ¼ä´ÁµÄÀàÐÍÊÇ64λÕûÐÍ¡£Bigtable¿ÉÒÔ¸øÊ±¼ä´Á¸³Öµ£¬ÓÃÀ´±íʾ¾«È·µ½ºÁÃëµÄ¡°ÊµÊ±¡±Ê±¼ä£»Óû§³ÌÐòÒ²¿ÉÒÔ¸øÊ±¼ä´Á¸³Öµ¡£Èç¹ûÓ¦ÓóÌÐòÐèÒª±ÜÃâÊý¾Ý°æ±¾³åÍ»£¬ÄÇôËü±ØÐë×Ô¼ºÉú³É¾ßÓÐΨһÐÔµÄʱ¼ä´Á¡£Êý¾ÝÏîÖУ¬²»Í¬°æ±¾µÄÊý¾Ý°´ÕÕʱ¼ä´Áµ¹ÐòÅÅÐò£¬¼´×îеÄÊý¾ÝÅÅÔÚ×îÇ°Ãæ¡£

ΪÁ˼õÇá¶à¸ö°æ±¾Êý¾ÝµÄ¹ÜÀí¸ºµ££¬ÎÒÃǶÔÿһ¸öÁÐ×åÅäÓÐÁ½¸öÉèÖòÎÊý£¬Bigtableͨ¹ýÕâÁ½¸ö²ÎÊý¿ÉÒÔ¶Ô·ÏÆú°æ±¾µÄÊý¾Ý×Ô¶¯½øÐÐÀ¬»øÊÕ¼¯¡£Óû§¿ÉÒÔÖ¸¶¨Ö»±£´æ×îºón¸ö°æ±¾µÄÊý¾Ý£¬»òÕßÖ»±£´æ¡°×㹻С±µÄ°æ±¾µÄÊý¾Ý(±ÈÈ磬ֻ±£´æ×î½ü7ÌìµÄÄÚÈÝдÈëµÄÊý¾Ý)¡£

ÔÚWebtableµÄ¾ÙÀýÀcontents:Áд洢µÄʱ¼ä´ÁÐÅÏ¢ÊÇÍøÂçÅÀ³æ×¥È¡Ò»¸öÒ³ÃæµÄʱ¼ä¡£ÉÏÃæÌá¼°µÄÀ¬»øÊÕ¼¯»úÖÆ¿ÉÒÔÈÃÎÒÃÇÖ»±£Áô×î½üÈý¸ö°æ±¾µÄÍøÒ³Êý¾Ý¡£

3 API

BigtableÌṩÁ˽¨Á¢ºÍɾ³ý±íÒÔ¼°ÁÐ×åµÄAPIº¯Êý¡£Bigtable»¹ÌṩÁËÐ޸ļ¯Èº¡¢±íºÍÁÐ×åµÄÔªÊý¾ÝµÄAPI£¬±ÈÈçÐ޸ķÃÎÊȨÏÞ¡£

// Open the table
Table *T = OpenOrDie(¡°/bigtable/web/webtable¡±);
// Write a new anchor and delete an old anchor
RowMutation r1(T, ¡°com.cnn.www¡±);
r1.Set(¡°anchor:www.c-span.org¡±, ¡°CNN¡±);
r1.Delete(¡°anchor:www.abc.com¡±);
Operation op;
Apply(&op, &r1);
Figure 2: Writing to Bigtable.

¿Í»§³ÌÐò¿ÉÒÔ¶ÔBigtable½øÐÐÈçϵIJÙ×÷:дÈë»òÕßɾ³ýBigtableÖеÄÖµ¡¢´Óÿ¸öÐÐÖвéÕÒÖµ¡¢»òÕß±éÀú±íÖеÄÒ»¸öÊý¾Ý×Ó¼¯¡£Í¼2ÖеģÃ++´úÂëʹÓÃRowMutation³éÏó¶ÔÏó½øÐÐÁËһϵÁеĸüвÙ×÷¡£(ΪÁ˱£³ÖʾÀý´úÂëµÄ¼ò½à£¬ÎÒÃǺöÂÔÁËһЩϸ½ÚÏà¹Ø´úÂë)¡£µ÷ÓÃApplyº¯Êý¶Ô£×ebtable½øÐÐÁËÒ»¸öÔ­×ÓÐ޸IJÙ×÷:ËüΪwww.cnn.comÔö¼ÓÁËÒ»¸öêµã£¬Í¬Ê±É¾³ýÁËÁíÍâÒ»¸öêµã¡£

Scanner scanner(T);
ScanStream *stream;
stream = scanner.FetchColumnFamily(¡°anchor¡±);
stream->SetReturnAllVersions();
scanner.Lookup(¡°com.cnn.www¡±);
for (; !stream->Done(); stream->Next()) {
printf(¡°%s %s %lld %s\n¡±,
scanner.RowName(),
stream->ColumnName(),
stream->MicroTimestamp(),
stream->Value());
}
Figure 3: Reading from Bigtable.

ͼ3ÖеÄC++´úÂëʹÓÃScanner³éÏó¶ÔÏó±éÀúÒ»¸öÐÐÄÚµÄËùÓÐêµã¡£¿Í»§³ÌÐò¿ÉÒÔ±éÀú¶à¸öÁÐ×壬Óм¸ÖÖ·½·¨¿ÉÒÔ¶ÔɨÃèÊä³öµÄÐС¢ÁкÍʱ¼ä´Á½øÐÐ ÏÞÖÆ¡£ÀýÈ磬ÎÒÃÇ¿ÉÒÔÏÞÖÆÉÏÃæµÄɨÃ裬ÈÃËüÖ»Êä³öÄÇЩƥÅäÕýÔò±í´ïʽ*.cnn.comµÄêµã£¬»òÕßÄÇЩʱ¼ä´ÁÔÚµ±Ç°Ê±¼äǰ10ÌìµÄêµã¡£

Bigtable»¹Ö§³ÖһЩÆäËüµÄÌØÐÔ£¬ÀûÓÃÕâÐ©ÌØÐÔ£¬Óû§¿ÉÒÔ¶ÔÊý¾Ý½øÐиü¸´ÔӵĴ¦Àí¡£Ê×ÏÈ£¬BigtableÖ§³Öµ¥ÐÐÉϵÄÊÂÎñ´¦Àí£¬ÀûÓÃÕâ¸ö¹¦ ÄÜ£¬Óû§¿ÉÒÔ¶Ô´æ´¢ÔÚÒ»¸öÐйؼü×ÖϵÄÊý¾Ý½øÐÐÔ­×ÓÐԵĶÁ-¸üÐÂ-д²Ù×÷¡£ËäÈ»BigtableÌṩÁËÒ»¸öÔÊÐíÓû§¿çÐÐÅúÁ¿Ð´ÈëÊý¾ÝµÄ½Ó¿Ú£¬µ« ÊÇ£¬BigtableĿǰ»¹²»Ö§³ÖͨÓõĿçÐÐÊÂÎñ´¦Àí¡£Æä´Î£¬BigtableÔÊÐí°ÑÊý¾ÝÏîÓÃ×öÕûÊý¼ÆÊýÆ÷¡£×îºó£¬BigtableÔÊÐíÓû§ÔÚ·þÎñÆ÷µÄµØ Ö·¿Õ¼äÄÚÖ´Ðнű¾³ÌÐò¡£½Å±¾³ÌÐòʹÓÃGoogle¿ª·¢µÄSawzall¡¾28¡¿Êý¾Ý´¦ÀíÓïÑÔ¡£ËäȻĿǰÎÒÃÇ»ùÓÚµÄSawzallÓïÑÔµÄAPIº¯Êý»¹²»ÔÊÐí ¿Í»§µÄ½Å±¾³ÌÐòдÈëÊý¾Ýµ½Bigtable£¬µ«ÊÇËüÔÊÐí¶àÖÖÐÎʽµÄÊý¾Ýת»»¡¢»ùÓÚÈÎÒâ±í´ïʽµÄÊý¾Ý¹ýÂË¡¢ÒÔ¼°Ê¹ÓöàÖÖ²Ù×÷·ûµÄ½øÐÐÊý¾Ý»ã×Ü¡£

Bigtable¿ÉÒÔºÍMapReduce¡¾12¡¿Ò»ÆðʹÓã¬MapReduceÊÇGoogle¿ª·¢µÄ´ó¹æÄ£²¢ÐмÆËã¿ò¼Ü¡£ÎÒÃÇÒѾ­¿ª·¢ÁËһЩ WrapperÀ࣬ͨ¹ýʹÓÃÕâЩWrapperÀ࣬Bigtable¿ÉÒÔ×÷ΪMapReduce¿ò¼ÜµÄÊäÈëºÍÊä³ö¡£

4 BigTable¹¹¼þ

BigtableÊǽ¨Á¢ÔÚÆäËüµÄ¼¸¸öGoogle»ù´¡¹¹¼þÉϵġ£BigTableʹÓÃGoogleµÄ·Ö²¼Ê½Îļþϵͳ(GFS)¡¾17¡¿´æ´¢ÈÕÖ¾ ÎļþºÍÊý¾ÝÎļþ¡£BigTable¼¯ÈºÍ¨³£ÔËÐÐÔÚÒ»¸ö¹²ÏíµÄ»úÆ÷³ØÖУ¬³ØÖеĻúÆ÷»¹»áÔËÐÐÆäËüµÄ¸÷ÖÖ¸÷ÑùµÄ·Ö²¼Ê½Ó¦ÓóÌÐò£¬BigTableµÄ½ø³Ì¾­³£Òª ºÍÆäËüÓ¦ÓõĽø³Ì¹²Ïí»úÆ÷¡£BigTableÒÀÀµ¼¯Èº¹ÜÀíϵͳÀ´µ÷¶ÈÈÎÎñ¡¢¹ÜÀí¹²ÏíµÄ»úÆ÷ÉϵÄ×ÊÔ´¡¢´¦Àí»úÆ÷µÄ¹ÊÕÏ¡¢ÒÔ¼°¼àÊÓ»úÆ÷µÄ״̬¡£

BigTableÄÚ²¿´æ´¢Êý¾ÝµÄÎļþÊÇGoogle SSTable¸ñʽµÄ¡£SSTableÊÇÒ»¸ö³Ö¾Ã»¯µÄ¡¢ÅÅÐòµÄ¡¢²»¿É¸ü¸ÄµÄMap½á¹¹£¬¶øMapÊÇÒ»¸ökey-valueÓ³ÉäµÄÊý¾Ý½á¹¹£¬keyºÍ valueµÄÖµ¶¼ÊÇÈÎÒâµÄByte´®¡£¿ÉÒÔ¶ÔSSTable½øÐÐÈçϵIJÙ×÷:²éѯÓëÒ»¸ökeyÖµÏà¹ØµÄvalue£¬»òÕß±éÀúij¸ökeyÖµ·¶Î§ÄÚµÄËùÓÐµÄ key-value¶Ô¡£´ÓÄÚ²¿¿´£¬SSTableÊÇһϵÁеÄÊý¾Ý¿é(ͨ³£Ã¿¸ö¿éµÄ´óСÊÇ64KB£¬Õâ¸ö´óСÊÇ¿ÉÒÔÅäÖõÄ)¡£SSTableʹÓÿéË÷Òý(ͨ ³£´æ´¢ÔÚSSTableµÄ×îºó)À´¶¨Î»Êý¾Ý¿é£»ÔÚ´ò¿ªSSTableµÄʱºò£¬Ë÷Òý±»¼ÓÔØµ½Äڴ档ÿ´Î²éÕÒ¶¼¿ÉÒÔͨ¹ýÒ»´Î´ÅÅÌËÑË÷Íê³É:Ê×ÏÈʹÓöþ·Ö²éÕÒ·¨ ÔÚÄÚ´æÖеÄË÷ÒýÀïÕÒµ½Êý¾Ý¿éµÄλÖã¬È»ºóÔÙ´ÓÓ²Å̶ÁÈ¡ÏàÓ¦µÄÊý¾Ý¿é¡£Ò²¿ÉÒÔÑ¡Ôñ°ÑÕû¸öSSTable¶¼·ÅÔÚÄÚ´æÖУ¬ÕâÑù¾Í²»±Ø·ÃÎÊÓ²ÅÌÁË¡£

BigTable»¹ÒÀÀµÒ»¸ö¸ß¿ÉÓõġ¢ÐòÁл¯µÄ·Ö²¼Ê½Ëø·þÎñ×é¼þ£¬½Ð×öChubby¡¾8¡¿¡£ Ò»¸öChubby·þÎñ°üÀ¨ÁË5¸ö»î¶¯µÄ¸±±¾£¬ÆäÖеÄÒ»¸ö¸±±¾±»Ñ¡ÎªMaster£¬²¢ÇÒ ´¦ÀíÇëÇó¡£Ö»ÓÐÔÚ´ó¶àÊý¸±±¾¶¼ÊÇÕý³£ÔËÐе쬲¢Çұ˴ËÖ®¼äÄܹ»»¥ÏàͨÐŵÄÇé¿öÏ£¬Chubby·þÎñ²ÅÊÇ¿ÉÓõġ£µ±Óи±±¾Ê§Ð§µÄʱºò£¬ChubbyʹÓà PaxosËã·¨¡¾9,23¡¿À´±£Ö¤¸±±¾µÄÒ»ÖÂÐÔ¡£ChubbyÌṩÁËÒ»¸öÃû×ֿռ䣬ÀïÃæ°üÀ¨ÁËĿ¼ºÍСÎļþ¡£Ã¿¸öĿ¼»òÕßÎļþ¿ÉÒÔµ±³ÉÒ»¸öËø£¬¶ÁдÎļþµÄ ²Ù×÷¶¼ÊÇÔ­×ӵġ£Chubby¿Í»§³ÌÐò¿âÌṩ¶ÔChubbyÎļþµÄÒ»ÖÂÐÔ»º´æ¡£Ã¿¸öChubby¿Í»§³ÌÐò¶¼Î¬»¤Ò»¸öÓëChubby·þÎñµÄ»á»°¡£Èç¹û¿Í»§³Ì Ðò²»ÄÜÔÚ×âÔ¼µ½ÆÚµÄʱ¼äÄÚÖØÐÂÇ©¶©»á»°µÄ×âÔ¼£¬Õâ¸ö»á»°¾Í¹ýÆÚʧЧÁË(alex ×¢:ÓÖÓõ½ÁËlease¡£ Ô­ÎÄÊÇ:A client¡¯s session expires if it is unable to renew its session lease within the lease expiration time.)¡£µ±Ò»¸ö»á»°Ê§Ð§Ê±£¬ËüÓµÓеÄËøºÍ´ò¿ªµÄÎÄ ¼þ¾ä±ú¶¼Ê§Ð§ÁË¡£Chubby¿Í»§³ÌÐò¿ÉÒÔÔÚÎļþºÍĿ¼ÉÏ×¢²á»Øµ÷º¯Êý£¬µ±Îļþ»òĿ¼¸Ä±ä¡¢»òÕ߻Ự¹ýÆÚʱ£¬»Øµ÷º¯Êý»á֪ͨ¿Í»§³ÌÐò¡£

BigtableʹÓÃChubbyÍê³ÉÒÔÏµļ¸¸öÈÎÎñ:È·±£ÔÚÈκθø¶¨µÄʱ¼äÄÚ×î¶àÖ»ÓÐÒ»¸ö»î¶¯µÄMaster¸±±¾£»´æ´¢BigTableÊý¾Ý µÄ×ÔÒýµ¼Ö¸ÁîµÄλÖÃ(²Î¿¼5.1½Ú)£»²éÕÒTablet·þÎñÆ÷£¬ÒÔ¼°ÔÚTablet·þÎñÆ÷ʧЧʱ½øÐÐÉÆºó(5.2½Ú)£»´æ´¢BigTableµÄģʽÐÅÏ¢ (ÿÕűíµÄÁÐ×åÐÅÏ¢)£»ÒÔ¼°´æ´¢·ÃÎÊ¿ØÖÆÁÐ±í¡£Èç¹ûChubby³¤Ê±¼äÎÞ·¨·ÃÎÊ£¬BigTable¾Í»áʧЧ¡£×î½üÎÒÃÇÔÚʹÓÃ11¸öChubby·þÎñʵÀýµÄ 14¸öBigTable¼¯ÈºÉϲâÁ¿ÁËÕâ¸öÓ°Ïì¡£ÓÉÓÚChubby²»¿ÉÓöøµ¼ÖÂBigTableÖеIJ¿·ÖÊý¾Ý²»ÄÜ·ÃÎÊµÄÆ½¾ù±ÈÂÊÊÇ0.0047% (Chubby²»ÄÜ·ÃÎʵÄÔ­Òò¿ÉÄÜÊÇChubby±¾ÉíʧЧ»òÕßÍøÂçÎÊÌâ)¡£µ¥¸ö¼¯ÈºÀÊÜChubbyʧЧӰÏì×î´óµÄ°Ù·Ö±ÈÊÇ0.0326%(James×¢,ÓÉÓÚChubbyµÄ¿ÉÓÃÐÔ¶øÊܵ½Ó°ÏìµÄ×î´ó±ÈÀýÊÇ0.0326%)(alex×¢:ÓеãĪÃûÆäÃԭÎÄÊÇ: The percentage for the single cluster that was most affected by Chubby unavailability was 0.0326%.)¡£

5 ½éÉÜ

Bigtable°üÀ¨ÁËÈý¸öÖ÷ÒªµÄ×é¼þ:Á´½Óµ½¿Í»§³ÌÐòÖеĿ⡢һ¸öMaster·þÎñÆ÷ºÍ¶à¸öTablet·þÎñÆ÷¡£Õë¶Ôϵͳ¹¤×÷¸ºÔصı仯Çé ¿ö£¬BigTable¿ÉÒÔ¶¯Ì¬µÄÏò¼¯ÈºÖÐÌí¼Ó(»òÕßɾ³ý)Tablet·þÎñÆ÷¡£

Master·þÎñÆ÷Ö÷Òª¸ºÔðÒÔϹ¤×÷:ΪTablet·þÎñÆ÷·ÖÅäTablets¡¢¼ì ²âмÓÈëµÄ»òÕß¹ýÆÚʧЧµÄTable·þÎñÆ÷¡¢¶ÔTablet·þÎñÆ÷½øÐиºÔؾùºâ¡¢ÒÔ¼°¶Ô±£´æÔÚGFSÉϵÄÎļþ½øÐÐÀ¬»øÊÕ¼¯¡£³ý´ËÖ®Í⣬Ëü»¹´¦Àí¶ÔģʽµÄÏà ¹ØÐ޸IJÙ×÷£¬ÀýÈ罨Á¢±íºÍÁÐ×å¡£

ÿ¸öTablet·þÎñÆ÷¶¼¹ÜÀíÒ»¸öTabletµÄ¼¯ºÏ(ͨ³£Ã¿¸ö·þÎñÆ÷ÓдóÔ¼ÊýÊ®¸öÖÁÉÏǧ¸öTablet)¡£Ã¿¸öTablet·þÎñÆ÷¸ºÔð´¦ÀíËü Ëù¼ÓÔØµÄTabletµÄ¶Áд²Ù×÷£¬ÒÔ¼°ÔÚTablets¹ý´óʱ£¬¶ÔÆä½øÐзָ

ºÍºÜ¶àSingle-MasterÀàÐ͵ķֲ¼Ê½´æ´¢ÏµÍ³¡¾17.21¡¿ÀàËÆ£¬¿Í»§¶Ë¶ÁÈ¡µÄÊý¾Ý¶¼²»¾­¹ýMaster·þÎñÆ÷:¿Í»§³ÌÐòÖ±½ÓºÍ Tablet·þÎñÆ÷ͨÐŽøÐжÁд²Ù×÷¡£ÓÉÓÚBigTableµÄ¿Í»§³ÌÐò²»±ØÍ¨¹ýMaster·þÎñÆ÷À´»ñÈ¡TabletµÄλÖÃÐÅÏ¢£¬Òò´Ë£¬´ó¶àÊý¿Í»§³ÌÐòÉõ ÖÁÍêÈ«²»ÐèÒªºÍMaster·þÎñÆ÷ͨÐÅ¡£ÔÚʵ¼ÊÓ¦ÓÃÖУ¬Master·þÎñÆ÷µÄ¸ºÔØÊǺÜÇáµÄ¡£

Ò»¸öBigTable¼¯Èº´æ´¢Á˺ܶà±í£¬Ã¿¸ö±í°üº¬ÁËÒ»¸öTabletµÄ¼¯ºÏ£¬¶øÃ¿¸öTablet°üº¬ÁËij¸ö·¶Î§ÄÚµÄÐеÄËùÓÐÏà¹ØÊý¾Ý¡£³õʼ״ ̬Ï£¬Ò»¸ö±íÖ»ÓÐÒ»¸öTablet¡£Ëæ×űíÖÐÊý¾ÝµÄÔö³¤£¬Ëü±»×Ô¶¯·Ö¸î³É¶à¸öTablet£¬È±Ê¡Çé¿öÏ£¬Ã¿¸öTabletµÄ³ß´ç´óÔ¼ÊÇ100MBµ½ 200MB¡£

5.1 TabletµÄλÖÃ

ÎÒÃÇʹÓÃÒ»¸öÈý²ãµÄ¡¢ÀàËÆ£Â+Ê÷[10]µÄ½á¹¹´æ´¢TabletµÄλÖÃÐÅÏ¢(Èçͼ4)¡£

µÚÒ»²ãÊÇÒ»¸ö´æ´¢ÔÚChubbyÖеÄÎļþ£¬Ëü°üº¬ÁËRoot TabletµÄλÖÃÐÅÏ¢¡£Root Tablet°üº¬ÁËÒ»¸öÌØÊâµÄMETADATA±íÀïËùÓеÄTabletµÄλÖÃÐÅÏ¢¡£METADATA±íµÄÿ¸öTablet°üº¬ÁËÒ»¸öÓû§TabletµÄ¼¯ ºÏ¡£Root Tabletʵ¼ÊÉÏÊÇMETADATA±íµÄµÚÒ»¸öTablet£¬Ö»²»¹ý¶ÔËüµÄ´¦Àí±È½ÏÌØÊâ ¡ª Root TabletÓÀÔ¶²»»á±»·Ö¸î ¡ª Õâ¾Í±£Ö¤ÁËTabletµÄλÖÃÐÅÏ¢´æ´¢½á¹¹²»»á³¬¹ýÈý²ã¡£

ÔÚMETADATA±íÀïÃæ£¬Ã¿¸öTabletµÄλÖÃÐÅÏ¢¶¼´æ·ÅÔÚÒ»¸öÐйؼü×ÖÏÂÃæ£¬¶øÕâ¸öÐйؼü×ÖÊÇÓÉTabletËùÔڵıíµÄ±êʶ·ûºÍTablet µÄ×îºóÒ»ÐбàÂë¶ø³ÉµÄ¡£METADATAµÄÿһÐж¼´æ´¢ÁË´óÔ¼1KBµÄÄÚ´æÊý¾Ý¡£ÔÚÒ»¸ö´óСÊÊÖеġ¢ÈÝÁ¿ÏÞÖÆÎª128MBµÄMETADATA TabletÖУ¬²ÉÓÃÕâÖÖÈý²ã½á¹¹µÄ´æ´¢Ä£Ê½£¬¿ÉÒÔ±êʶ2^34¸öTabletµÄµØÖ·(Èç¹ûÿ¸öTablet´æ´¢128MBÊý¾Ý£¬ÄÇôһ¹²¿ÉÒÔ´æ´¢ 2^61×Ö½ÚÊý¾Ý)¡£

¿Í»§³ÌÐòʹÓõĿâ»á»º´æTabletµÄλÖÃÐÅÏ¢¡£Èç¹û¿Í»§³ÌÐòûÓлº´æÄ³¸öTabletµÄµØÖ·ÐÅÏ¢£¬»òÕß·¢ÏÖËü»º´æµÄµØÖ·ÐÅÏ¢²»ÕýÈ·£¬¿Í»§³ÌÐò¾ÍÔÚ Ê÷×´µÄ´æ´¢½á¹¹ÖеݹéµÄ²éѯTabletλÖÃÐÅÏ¢£»Èç¹û¿Í»§¶Ë»º´æÊǿյģ¬ÄÇôѰַËã·¨ÐèҪͨ¹ýÈý´ÎÍøÂçÀ´»ØÍ¨ÐÅѰַ£¬ÕâÆäÖаüÀ¨ÁËÒ»´ÎChubby¶Á²Ù ×÷£»Èç¹û¿Í»§¶Ë»º´æµÄµØÖ·ÐÅÏ¢¹ýÆÚÁË£¬ÄÇôѰַËã·¨¿ÉÄÜÐèÒª×î¶à£¶´ÎÍøÂçÀ´»ØÍ¨ÐŲÅÄܸüÐÂÊý¾Ý£¬ÒòΪֻÓÐÔÚ»º´æÖÐûÓв鵽Êý¾ÝµÄʱºò²ÅÄÜ·¢ÏÖÊý¾Ý¹ýÆÚ(alex×¢:ÆäÖеÄÈý´ÎͨÐÅ·¢ÏÖ»º´æ¹ýÆÚ£¬ÁíÍâÈý´Î¸üлº´æÊý¾Ý)(¼Ù ÉèMETADATAµÄTabletûÓб»Æµ·±µÄÒÆ¶¯)¡£¾¡¹ÜTabletµÄµØÖ·ÐÅÏ¢ÊÇ´æ·ÅÔÚÄÚ´æÀïµÄ£¬¶ÔËüµÄ²Ù×÷²»±Ø·ÃÎÊGFSÎļþϵͳ£¬µ«ÊÇ£¬Í¨³£ÎÒÃÇ »áͨ¹ýԤȡTabletµØÖ·À´½øÒ»²½µÄ¼õÉÙ·ÃÎʵĿªÏú:ÿ´ÎÐèÒª´ÓMETADATA±íÖжÁȡһ¸öTabletµÄÔªÊý¾ÝµÄʱºò£¬Ëü¶¼»á¶à¶ÁÈ¡¼¸¸ö TabletµÄÔªÊý¾Ý¡£

ÔÚMETADATA±íÖл¹´æ´¢Á˴μ¶ÐÅÏ¢(alex ×¢:secondary information)£¬°üÀ¨Ã¿¸öTabletµÄʼþÈÕÖ¾(ÀýÈ磬ʲôʱºòÒ»¸ö·þÎñÆ÷¿ªÊ¼Îª¸Ã TabletÌṩ·þÎñ)¡£ÕâЩÐÅÏ¢ÓÐÖúÓÚÅŲé´íÎóºÍÐÔÄÜ·ÖÎö¡£

5.2 Tablet·ÖÅä

ÔÚÈκÎÒ»¸öʱ¿Ì£¬Ò»¸öTabletÖ»ÄÜ·ÖÅä¸øÒ»¸öTablet·þÎñÆ÷¡£Master·þÎñÆ÷¼Ç¼Á˵±Ç°ÓÐÄÄЩ»îÔ¾µÄTablet·þÎñÆ÷¡¢ÄÄЩ Tablet·ÖÅ䏸ÁËÄÄЩTablet·þÎñÆ÷¡¢ÄÄЩTablet»¹Ã»Óб»·ÖÅä¡£µ±Ò»¸öTablet»¹Ã»Óб»·ÖÅä¡¢²¢ÇÒ¸ÕºÃÓÐÒ»¸öTablet·þÎñÆ÷ÓÐ×ã¹» µÄ¿ÕÏпռä×°ÔØ¸ÃTabletʱ£¬Master·þÎñÆ÷»á¸øÕâ¸öTablet·þÎñÆ÷·¢ËÍÒ»¸ö×°ÔØÇëÇ󣬰ÑTablet·ÖÅ䏸Õâ¸ö·þÎñÆ÷¡£

BigTableʹÓÃChubby¸ú×ټǼTablet·þÎñÆ÷µÄ״̬¡£µ±Ò»¸öTablet·þÎñÆ÷Æô¶¯Ê±£¬ËüÔÚChubbyµÄÒ»¸öÖ¸¶¨Ä¿Â¼Ï½¨Á¢Ò»¸ö ÓÐΨһÐÔÃû×ÖµÄÎļþ£¬²¢ÇÒ»ñÈ¡¸ÃÎļþµÄ¶ÀÕ¼Ëø¡£Master·þÎñÆ÷ʵʱ¼à¿Ø×ÅÕâ¸öĿ¼(·þÎñÆ÷Ŀ¼)£¬Òò´ËMaster·þÎñÆ÷Äܹ»ÖªµÀÓÐеÄTablet ·þÎñÆ÷¼ÓÈëÁË¡£Èç¹ûTablet·þÎñÆ÷¶ªÊ§ÁËChubbyÉϵĶÀÕ¼Ëø ¡ª ±ÈÈçÓÉÓÚÍøÂç¶Ï¿ªµ¼ÖÂTablet·þÎñÆ÷ºÍChubbyµÄ»á»°¶ªÊ§ ¡ª Ëü¾ÍÍ£Ö¹¶ÔTabletÌṩ·þÎñ¡£(ChubbyÌṩÁËÒ»ÖÖ¸ßЧµÄ»úÖÆ£¬ÀûÓÃÕâÖÖ»úÖÆ£¬Tablet·þÎñÆ÷Äܹ»ÔÚ²»Ôö¼ÓÍøÂ縺µ£µÄÇé¿öÏÂÖªµÀËüÊÇ·ñ»¹³ÖÓÐ Ëø)¡£Ö»ÒªÎļþ»¹´æÔÚ£¬Tablet·þÎñÆ÷¾Í»áÊÔÍ¼ÖØÐ»ñµÃ¶Ô¸ÃÎļþµÄ¶ÀÕ¼Ëø£»Èç¹ûÎļþ²»´æÔÚÁË£¬ÄÇôTablet·þÎñÆ÷¾Í²»ÄÜÔÙÌṩ·þÎñÁË£¬Ëü»á×ÔÐÐÍË ³ö(alex×¢:so it kills itself)¡£µ±Tablet·þÎñÆ÷ÖÕֹʱ(±ÈÈ磬¼¯ÈºµÄ¹ÜÀíϵͳ½«ÔËÐиÃTablet ·þÎñÆ÷µÄÖ÷»ú´Ó¼¯ÈºÖÐÒÆ³ý)£¬Ëü»á³¢ÊÔÊÍ·ÅËü³ÖÓеÄÎļþËø£¬ÕâÑùÒ»À´£¬Master·þÎñÆ÷¾ÍÄܾ¡¿ì°ÑTablet·ÖÅäµ½ÆäËüµÄTablet·þÎñÆ÷¡£

Master·þÎñÆ÷¸ºÔð¼ì²éÒ»¸öTablet·þÎñÆ÷ÊÇ·ñÒѾ­²»ÔÙΪËüµÄTabletÌṩ·þÎñÁË£¬²¢ÇÒÒª¾¡¿ìÖØÐ·ÖÅäËü¼ÓÔØµÄTablet¡£ Master·þÎñÆ÷ͨ¹ýÂÖѯTablet·þÎñÆ÷ÎļþËøµÄ״̬À´¼ì²âºÎʱTablet·þÎñÆ÷²»ÔÙΪTabletÌṩ·þÎñ¡£Èç¹ûÒ»¸öTablet·þÎñÆ÷±¨¸æËü ¶ªÊ§ÁËÎļþËø£¬»òÕßMaster·þÎñÆ÷×î½ü¼¸´Î³¢ÊÔºÍËüͨÐŶ¼Ã»Óеõ½ÏìÓ¦£¬Master·þÎñÆ÷¾Í»á³¢ÊÔ»ñÈ¡¸ÃTablet·þÎñÆ÷ÎļþµÄ¶ÀÕ¼Ëø£»Èç¹û Master·þÎñÆ÷³É¹¦»ñÈ¡Á˶ÀÕ¼Ëø£¬ÄÇô¾Í˵Ã÷ChubbyÊÇÕý³£ÔËÐе쬶øTablet·þÎñÆ÷ҪôÊÇå´»úÁË¡¢ÒªÃ´ÊDz»ÄܺÍChubbyͨÐÅÁË£¬Òò ´Ë£¬Master·þÎñÆ÷¾Íɾ³ý¸ÃTablet·þÎñÆ÷ÔÚChubbyÉϵķþÎñÆ÷ÎļþÒÔÈ·±£Ëü²»ÔÙ¸øTabletÌṩ·þÎñ¡£Ò»µ©Tablet·þÎñÆ÷ÔÚ ChubbyÉϵķþÎñÆ÷Îļþ±»É¾³ýÁË£¬Master·þÎñÆ÷¾Í°Ñ֮ǰ·ÖÅ䏸ËüµÄËùÓеÄTablet·ÅÈëδ·ÖÅäµÄTablet¼¯ºÏÖС£ÎªÁËÈ·±£ Bigtable¼¯ÈºÔÚMaster·þÎñÆ÷ºÍChubbyÖ®¼äÍøÂç³öÏÖ¹ÊÕϵÄʱºòÈÔÈ»¿ÉÒÔʹÓã¬Master·þÎñÆ÷ÔÚËüµÄChubby»á»°¹ýÆÚºóÖ÷¶¯ÍË ³ö¡£µ«ÊDz»¹ÜÔõÑù£¬ÈçͬÎÒÃÇÇ°ÃæËùÃèÊöµÄ£¬Master·þÎñÆ÷µÄ¹ÊÕϲ»»á¸Ä±äÏÖÓÐTabletÔÚTablet·þÎñÆ÷ÉϵķÖÅä״̬¡£

µ±¼¯Èº¹ÜÀíϵͳÆô¶¯ÁËÒ»¸öMaster·þÎñÆ÷Ö®ºó£¬Master·þÎñÆ÷Ê×ÏÈÒªÁ˽⵱ǰTabletµÄ·ÖÅä״̬£¬Ö®ºó²ÅÄܹ»Ð޸ķÖÅä״̬¡£ Master·þÎñÆ÷ÔÚÆô¶¯µÄʱºòÖ´ÐÐÒÔϲ½Öè:(1)Master·þÎñÆ÷´ÓChubby»ñȡһ¸öΨһµÄMasterËø£¬ÓÃÀ´×èÖ¹´´½¨ÆäËüµÄMaster·þ ÎñÆ÷ʵÀý£»(2)Master·þÎñÆ÷ɨÃèChubbyµÄ·þÎñÆ÷ÎļþËø´æ´¢Ä¿Â¼£¬»ñÈ¡µ±Ç°ÕýÔÚÔËÐеķþÎñÆ÷ÁÐ±í£»(3)Master·þÎñÆ÷ºÍËùÓеÄÕýÔÚÔËÐÐ µÄTablet±í·þÎñÆ÷ͨÐÅ£¬»ñȡÿ¸öTablet·þÎñÆ÷ÉÏTabletµÄ·ÖÅäÐÅÏ¢£»(4)Master·þÎñÆ÷ɨÃèMETADATA±í»ñÈ¡ËùÓÐµÄ TabletµÄ¼¯ºÏ¡£ÔÚɨÃèµÄ¹ý³ÌÖУ¬µ±Master·þÎñÆ÷·¢ÏÖÁËÒ»¸ö»¹Ã»ÓзÖÅäµÄTablet£¬Master·þÎñÆ÷¾Í½«Õâ¸öTablet¼ÓÈëδ·ÖÅäµÄ Tablet¼¯ºÏµÈ´ýºÏÊʵÄʱ»ú·ÖÅä¡£

¿ÉÄÜ»áÓöµ½Ò»ÖÖ¸´ÔÓµÄÇé¿ö:ÔÚMETADATA±íµÄTablet»¹Ã»Óб»·ÖÅä֮ǰÊDz»Äܹ»É¨ÃèËüµÄ¡£Òò´Ë£¬ÔÚ¿ªÊ¼É¨Ãè֮ǰ(²½Öè4)£¬Èç¹ûÔÚµÚÈý²½ µÄɨÃè¹ý³ÌÖз¢ÏÖRoot Tablet»¹Ã»ÓзÖÅ䣬Master·þÎñÆ÷¾Í°ÑRoot Tablet¼ÓÈ뵽δ·ÖÅäµÄTablet¼¯ºÏ¡£Õâ¸ö¸½¼Ó²Ù×÷È·±£ÁËRoot Tablet»á±»·ÖÅä¡£ÓÉÓÚRoot Tablet°üÀ¨ÁËËùÓÐMETADATAµÄTabletµÄÃû×Ö£¬Òò´ËMaster·þÎñÆ÷ɨÃèÍêRoot TabletÒԺ󣬾͵õ½ÁËËùÓеÄMETADATA±íµÄTabletµÄÃû×ÖÁË¡£

±£´æÏÖÓÐTabletµÄ¼¯ºÏÖ»ÓÐÔÚÒÔÏÂʼþ·¢Éúʱ²Å»á¸Ä±ä:½¨Á¢ÁËÒ»¸öбí»òÕßɾ³ýÁËÒ»¸ö¾É±í¡¢Á½¸öTablet±»ºÏ²¢ÁË¡¢»òÕßÒ»¸öTablet±» ·Ö¸î³ÉÁ½¸öСµÄTablet¡£Master·þÎñÆ÷¿ÉÒÔ¸ú×ټǼËùÓÐÕâЩʼþ£¬ÒòΪ³ýÁË×îºóÒ»¸öʼþÍâµÄÁ½¸öʼþ¶¼ÊÇÓÉËüÆô¶¯µÄ¡£Tablet·Ö¸îʼþÐèÒª ÌØÊâ´¦Àí£¬ÒòΪËüÊÇÓÉTablet·þÎñÆ÷Æô¶¯¡£ÔÚ·Ö¸î²Ù×÷Íê³ÉÖ®ºó£¬Tablet·þÎñÆ÷ͨ¹ýÔÚMETADATA±íÖмǼеÄTabletµÄÐÅÏ¢À´Ìá½»Õâ¸ö ²Ù×÷£»µ±·Ö¸î²Ù×÷Ìá½»Ö®ºó£¬Tablet·þÎñÆ÷»á֪ͨMaster·þÎñÆ÷¡£Èç¹û·Ö¸î²Ù×÷ÒÑÌá½»µÄÐÅϢûÓÐ֪ͨµ½Master·þÎñÆ÷(¿ÉÄÜÁ½¸ö·þÎñÆ÷ÖÐÓÐÒ» ¸öå´»úÁË)£¬Master·þÎñÆ÷ÔÚÒªÇóTablet·þÎñÆ÷×°ÔØÒѾ­±»·Ö¸îµÄ×Ó±íµÄʱºò»á·¢ÏÖÒ»¸öеÄTablet¡£Í¨¹ý¶Ô±ÈMETADATA±íÖÐ TabletµÄÐÅÏ¢£¬Tablet·þÎñÆ÷»á·¢ÏÖMaster·þÎñÆ÷ÒªÇóÆä×°ÔØµÄTablet²¢²»ÍêÕû£¬Òò´Ë£¬Tablet·þÎñÆ÷»áÖØÐÂÏòMaster·þÎñ Æ÷·¢ËÍ֪ͨÐÅÏ¢¡£

5.3 Tablet·þÎñ

Èçͼ5Ëùʾ£¬TabletµÄ³Ö¾Ã»¯×´Ì¬ÐÅÏ¢±£´æÔÚGFSÉÏ¡£¸üвÙ×÷Ìá½»µ½REDOÈÕÖ¾ÖÐ(alex×¢:Updates are committed to a commit log that stores redo records)¡£ÔÚÕâЩ¸üвÙ×÷ÖУ¬×î½üÌá½»µÄÄÇЩ´æ·ÅÔÚÒ»¸öÅÅÐòµÄ»º´æÖУ¬ÎÒÃdzÆÕâ¸ö»º´æÎª memtable£»½ÏÔçµÄ¸üдæ·ÅÔÚһϵÁÐSSTableÖС£ÎªÁ˻ָ´Ò»¸öTablet£¬Tablet·þÎñÆ÷Ê×ÏÈ´ÓMETADATA±íÖжÁÈ¡ËüµÄÔªÊý¾Ý¡£ TabletµÄÔªÊý¾Ý°üº¬ÁË×é³ÉÕâ¸öTabletµÄSSTableµÄÁÐ±í£¬ÒÔ¼°Ò»ÏµÁеÄRedo Point(alex×¢:a set of redo points)£¬Õâ ЩRedo PointÖ¸Ïò¿ÉÄܺ¬ÓиÃTabletÊý¾ÝµÄÒÑÌá½»µÄÈÕÖ¾¼Ç¼¡£Tablet·þÎñÆ÷°ÑSSTableµÄË÷Òý¶Á½øÄڴ棬֮ºóͨ¹ýÖØ¸´Redo PointÖ®ºóÌá½»µÄ¸üÐÂÀ´Öؽ¨memtable¡£

µ±¶ÔTablet·þÎñÆ÷½øÐÐд²Ù×÷ʱ£¬Tablet·þÎñÆ÷Ê×ÏÈÒª¼ì²éÕâ¸ö²Ù×÷¸ñʽÊÇ·ñÕýÈ·¡¢²Ù×÷·¢ÆðÕßÊÇ·ñÓÐÖ´ÐÐÕâ¸ö²Ù×÷µÄȨÏÞ¡£È¨ÏÞÑéÖ¤µÄ·½·¨ÊÇ Í¨¹ý´ÓÒ»¸öChubbyÎļþÀï¶ÁÈ¡³öÀ´µÄ¾ßÓÐдȨÏ޵IJÙ×÷ÕßÁбíÀ´½øÐÐÑéÖ¤(Õâ¸öÎļþ¼¸ºõÒ»¶¨»á´æ·ÅÔÚChubby¿Í»§»º´æÀï)¡£³É¹¦µÄÐ޸IJÙ×÷»á¼Ç¼ÔÚ Ìá½»ÈÕÖ¾Àï¡£¿ÉÒÔ²ÉÓÃÅúÁ¿Ìá½»·½Ê½(alex×¢:group commit)À´Ìá¸ß°üº¬´óÁ¿Ð¡µÄÐ޸IJÙ×÷µÄÓ¦ÓóÌÐòµÄÍÌÍÂÁ¿¡¾13£¬16¡¿¡£µ±Ò»¸öд²Ù×÷Ìá½»ºó£¬Ð´µÄÄÚÈݲåÈëµ½ memtableÀïÃæ¡£

µ±¶ÔTablet·þÎñÆ÷½øÐжÁ²Ù×÷ʱ£¬Tablet·þÎñÆ÷»á×÷ÀàËÆµÄÍêÕûÐÔºÍȨÏÞ¼ì²é¡£Ò»¸öÓÐЧµÄ¶Á²Ù×÷ÔÚÒ»¸öÓÉһϵÁÐSSTableºÍ memtableºÏ²¢µÄÊÓͼÀïÖ´ÐС£ÓÉÓÚSSTableºÍmemtableÊǰ´×ÖµäÅÅÐòµÄÊý¾Ý½á¹¹£¬Òò´Ë¿ÉÒÔ¸ßЧÉú³ÉºÏ²¢ÊÓͼ¡£

µ±½øÐÐTabletµÄºÏ²¢ºÍ·Ö¸îʱ£¬ÕýÔÚ½øÐеĶÁд²Ù×÷Äܹ»¼ÌÐø½øÐС£

5.4 Compactions

(alex×¢:Õâ¸ö´Êͦ¼òµ¥£¬µ«ÊÇÔÚÕâ½ÚÀïÃæÍ¦ÄÑ·­ÒëµÄ¡£Ó¦ ¸ÃÊǿռäËõ¼õµÄÒâ˼£¬µ«ÊÇËÆºõÓÖ²»ÄÜÍêÈ«¸ÅÀ¨ËüÔÚÉÏÏÂÎÄÖеÄÒâ˼£¬¸É´à£¬²»·­ÒëÁË)

Ëæ×Åд²Ù×÷µÄÖ´ÐУ¬memtableµÄ´óС²»¶ÏÔö¼Ó¡£µ±memtableµÄ³ß´çµ½´ïÒ»¸öÃÅÏÞÖµµÄʱºò£¬Õâ¸ömemtable¾Í»á±»¶³½á£¬È»ºó´´½¨Ò» ¸öеÄmemtable£»±»¶³½áסmemtable»á±»×ª»»³ÉSSTable£¬È»ºóдÈëGFS(alex×¢:ÎÒÃdzÆÕâÖÖCompactionÐÐΪΪMinor Compaction)¡£Minor Compaction¹ý³ÌÓÐÁ½¸öÄ¿µÄ:shrink(alex×¢:shrinkÊÇÊý¾Ý¿âÓÃÓ±íʾ¿Õ¼äÊÕËõ)Tablet ·þÎñÆ÷ʹÓõÄÄڴ棬ÒÔ¼°ÔÚ·þÎñÆ÷ÔÖÄѻָ´¹ý³ÌÖУ¬¼õÉÙ±ØÐë´ÓÌá½»ÈÕÖ¾Àï¶ÁÈ¡µÄÊý¾ÝÁ¿¡£ÔÚCompaction¹ý³ÌÖУ¬ÕýÔÚ½øÐеĶÁд²Ù×÷ÈÔÄܼÌÐø¡£

ÿһ´ÎMinor Compaction¶¼»á´´½¨Ò»¸öеÄSSTable¡£Èç¹ûMinor Compaction¹ý³Ì²»Í£Ö͵ijÖÐø½øÐÐÏÂÈ¥£¬¶Á²Ù×÷¿ÉÄÜÐèÒªºÏ²¢À´×Ô¶à¸öSSTableµÄ¸üУ»·ñÔò£¬ÎÒÃÇͨ¹ý¶¨ÆÚÔÚºǫִ́ÐÐMerging Compaction¹ý³ÌºÏ²¢Îļþ£¬ÏÞÖÆÕâÀàÎļþµÄÊýÁ¿¡£Merging Compaction¹ý³Ì¶ÁȡһЩSSTableºÍmemtableµÄÄÚÈÝ£¬ºÏ²¢³ÉÒ»¸öеÄSSTable¡£Ö»ÒªMerging Compaction¹ý³ÌÍê³ÉÁË£¬ÊäÈëµÄÕâЩSSTableºÍmemtable¾Í¿ÉÒÔɾ³ýÁË¡£

ºÏ²¢ËùÓеÄSSTable²¢Éú³ÉÒ»¸öеÄSSTableµÄMerging Compaction¹ý³Ì½Ð×÷Major Compaction¡£ÓÉ·ÇMajor Compaction²úÉúµÄSSTable¿ÉÄܺ¬ÓÐÌØÊâµÄɾ³ýÌõÄ¿£¬ÕâЩɾ³ýÌõÄ¿Äܹ»Òþ²ØÔھɵġ¢µ«ÊÇÒÀÈ»ÓÐЧµÄSSTableÖÐÒѾ­É¾³ýµÄÊý¾Ý(alex×¢:ÁîÈ˷ѽⰡ£¬Ô­ÎÄÊÇSSTables produced by non-major compactions can contain special deletion entries that suppress deleted data in older SSTables that are still live)¡£¶øMajor Compaction¹ý³ÌÉú³ÉµÄSSTable²»°üº¬ÒѾ­É¾³ýµÄÐÅÏ¢»òÊý¾Ý¡£BigtableÑ­»·É¨ÃèËüËùÓеÄTablet£¬²¢ÇÒ¶¨ÆÚ¶ÔËüÃÇÖ´ÐÐ Major Compaction¡£Major Compaction»úÖÆÔÊÐíBigtable»ØÊÕÒѾ­É¾³ýµÄÊý¾ÝÕ¼ÓеÄ×ÊÔ´£¬²¢ÇÒÈ·±£BigTableÄܼ°Ê±Çå³ýÒѾ­É¾³ýµÄÊý¾Ý(alex×¢:ʵ¼ÊÊÇ»ØÊÕ×ÊÔ´¡£Êý¾Ýɾ³ýºó£¬ËüÕ¼ÓеĿռ䲢²»ÄÜÂíÉÏÖØ¸´ÀûÓã»Ö»ÓÐ¿Õ¼ä »ØÊÕºó²ÅÄÜÖØ¸´Ê¹ÓÃ)£¬Õâ¶Ô´æ·ÅÃô¸ÐÊý¾ÝµÄ·þÎñÊǷdz£ÖØÒª¡£

6 ÓÅ»¯

ÉÏÒ»ÕÂÎÒÃÇÃèÊöÁËBigtableµÄʵÏÖ£¬ÎÒÃÇ»¹ÐèÒªºÜ¶àÓÅ»¯¹¤×÷²ÅÄÜʹBigtableµ½´ïÓû§ÒªÇóµÄ¸ßÐÔÄÜ¡¢¸ß¿ÉÓÃÐԺ͸߿ɿ¿ÐÔ¡£±¾ÕÂÃèÊö ÁËBigtableʵÏֵįäËü²¿·Ö£¬ÎªÁ˸üºÃµÄÇ¿µ÷ÕâЩÓÅ»¯¹¤×÷£¬ÎÒÃǽ«ÉîÈëϸ½Ú¡£

¾Ö²¿ÐÔȺ×é

¿Í»§³ÌÐò¿ÉÒÔ½«¶à¸öÁÐ×å×éºÏ³ÉÒ»¸ö¾Ö²¿ÐÔȺ×å¡£¶ÔTabletÖеÄÿ¸ö¾Ö²¿ÐÔȺ×é¶¼»áÉú³ÉÒ»¸öµ¥¶ÀµÄSSTable¡£½«Í¨³£²»»áÒ»Æð·ÃÎʵÄÁÐ×å ·Ö¸î³É²»Í¬µÄ¾Ö²¿ÐÔȺ×é¿ÉÒÔÌá¸ß¶ÁÈ¡²Ù×÷µÄЧÂÊ¡£ÀýÈ磬ÔÚWebtable±íÖУ¬ÍøÒ³µÄÔªÊý¾Ý(±ÈÈçÓïÑÔºÍChecksum)¿ÉÒÔÔÚÒ»¸ö¾Ö²¿ÐÔȺ×éÖУ¬Íø Ò³µÄÄÚÈÝ¿ÉÒÔÔÚÁíÍâÒ»¸öȺ×é:µ±Ò»¸öÓ¦ÓóÌÐòÒª¶ÁÈ¡ÍøÒ³µÄÔªÊý¾ÝµÄʱºò£¬ËüûÓбØÒªÈ¥¶ÁÈ¡ËùÓеÄÒ³ÃæÄÚÈÝ¡£

´ËÍ⣬¿ÉÒÔÒÔ¾Ö²¿ÐÔȺ×éΪµ¥Î»É趨һЩÓÐÓõĵ÷ÊÔ²ÎÊý¡£±ÈÈ磬¿ÉÒÔ°ÑÒ»¸ö¾Ö²¿ÐÔȺ×éÉ趨Ϊȫ²¿´æ´¢ÔÚÄÚ´æÖС£Tablet·þÎñÆ÷ÒÀÕÕ¶èÐÔ¼ÓÔØµÄ ²ßÂÔ½«É趨Ϊ·ÅÈëÄÚ´æµÄ¾Ö²¿ÐÔȺ×éµÄSSTable×°ÔØ½øÄÚ´æ¡£¼ÓÔØÍê³ÉÖ®ºó£¬·ÃÎÊÊôÓڸþֲ¿ÐÔȺ×éµÄÁÐ×åµÄʱºò¾Í²»±Ø¶ÁȡӲÅÌÁË¡£Õâ¸öÌØÐÔ¶ÔÓÚÐèҪƵ·± ·ÃÎʵÄС¿éÊý¾ÝÌØ±ðÓÐÓÃ:ÔÚBigtableÄÚ²¿£¬ÎÒÃÇÀûÓÃÕâ¸öÌØÐÔÌá¸ßMETADATA±íÖоßÓÐλÖÃÏà¹ØÐÔµÄÁÐ×åµÄ·ÃÎÊËÙ¶È¡£

ѹËõ

¿Í»§³ÌÐò¿ÉÒÔ¿ØÖÆÒ»¸ö¾Ö²¿ÐÔȺ×éµÄSSTableÊÇ·ñÐèҪѹËõ£»Èç¹ûÐèҪѹËõ£¬ÄÇôÒÔʲô¸ñʽÀ´Ñ¹Ëõ¡£Ã¿¸öSSTableµÄ¿é(¿éµÄ´óСÓɾֲ¿ÐÔȺ ×éµÄÓÅ»¯²ÎÊýÖ¸¶¨)¶¼Ê¹ÓÃÓû§Ö¸¶¨µÄѹËõ¸ñʽÀ´Ñ¹Ëõ¡£ËäÈ»·Ö¿éѹËõÀË·ÑÁËÉÙÁ¿¿Õ¼ä(alex×¢:Ïà±ÈÓÚ¶ÔÕû¸öSSTable½øÐÐѹËõ£¬·Ö¿éѹËõѹËõÂʽϵÍ)£¬µ«ÊÇ£¬ÎÒÃÇÔÚÖ»¶ÁÈ¡SSTable µÄһС²¿·ÖÊý¾ÝµÄʱºò¾Í²»±Ø½âѹÕû¸öÎļþÁË?ܶà¿Í»§³ÌÐòʹÓÃÁË¡°Á½±?µÄ¡¢¿É¶¨ÖƵÄѹËõ·½Ê½¡£µÚÒ»±é²ÉÓÃBentley and McIlroy¡¯s·½Ê½[6]£¬ÕâÖÖ·½Ê½ÔÚÒ»¸öºÜ´óµÄɨÃè´°¿ÚÀï¶Ô³£¼ûµÄ³¤×Ö·û´®½øÐÐѹËõ£»µÚ¶þ±éÊDzÉÓÿìËÙѹËõËã·¨£¬¼´ÔÚÒ»¸ö16KBµÄСɨÃè´°¿ÚÖÐѰ ÕÒÖØ¸´Êý¾Ý¡£Á½¸öѹËõµÄËã·¨¶¼ºÜ¿ì£¬ÔÚÏÖÔڵĻúÆ÷ÉÏ£¬Ñ¹ËõµÄËÙÂÊ´ïµ½100-200MB/s£¬½âѹµÄËÙÂÊ´ïµ½400-1000MB/s¡£

ËäÈ»ÎÒÃÇÔÚÑ¡ÔñѹËõËã·¨µÄʱºòÖØµã¿¼ÂǵÄÊÇËٶȶø²»ÊÇѹËõµÄ¿Õ¼ä£¬µ«ÊÇÕâÖÖÁ½±éµÄѹËõ·½Ê½ÔÚ¿Õ¼äѹËõÂÊÉϵıíÏÖÒ²ÊÇÁîÈ˾ªÌ¾¡£±ÈÈ磬ÔÚ WebtableµÄÀý×ÓÀÎÒÃÇʹÓÃÕâÖÖѹËõ·½Ê½À´´æ´¢ÍøÒ³ÄÚÈÝ¡£ÔÚÒ»´Î²âÊÔÖУ¬ÎÒÃÇÔÚÒ»¸öѹËõµÄ¾Ö²¿ÐÔȺ×éÖд洢ÁË´óÁ¿µÄÍøÒ³¡£Õë¶ÔʵÑéµÄÄ¿µÄ£¬ÎÒÃÇû Óд洢ÿ¸öÎĵµËùÓа汾µÄÊý¾Ý£¬ÎÒÃǽö½ö´æ´¢ÁËÒ»¸ö°æ±¾µÄÊý¾Ý¡£¸ÃģʽµÄ¿Õ¼äѹËõ±È´ïµ½ÁË10:1¡£Õâ±È´«Í³µÄGzipÔÚѹËõHTMLÒ³ÃæÊ±3:1»òÕß 4:1µÄ¿Õ¼äѹËõ±ÈºÃµÄ¶à£»¡°Á½±é¡±µÄѹËõģʽÈç´Ë¸ßЧµÄÔ­ÒòÊÇÓÉÓÚWebtableµÄÐеĴæ·Å·½Ê½:´Óͬһ¸öÖ÷»ú»ñÈ¡µÄÒ³Ãæ¶¼´æÔÚÁÙ½üµÄµØ·½¡£ÀûÓÃÕâ¸ö ÌØÐÔ£¬Bentley-McIlroyËã·¨¿ÉÒÔ´ÓÀ´×Ôͬһ¸öÖ÷»úµÄÒ³ÃæÀïÕÒµ½´óÁ¿µÄÖØ¸´ÄÚÈÝ¡£²»½ö½öÊÇWebtable£¬ÆäËüµÄºÜ¶àÓ¦ÓóÌÐòҲͨ¹ýÑ¡ÔñºÏ ÊʵÄÐÐÃûÀ´½«ÏàËÆµÄÊý¾Ý¾Û´ØÔÚÒ»Æð£¬ÒÔ»ñÈ¡½Ï¸ßµÄѹËõÂÊ¡£µ±ÎÒÃÇÔÚBigtableÖд洢ͬһ·ÝÊý¾ÝµÄ¶à¸ö°æ±¾µÄʱºò£¬Ñ¹ËõЧÂÊ»á¸ü¸ß¡£

ͨ¹ý»º´æÌá¸ß¶Á²Ù×÷µÄÐÔÄÜ

ΪÁËÌá¸ß¶Á²Ù×÷µÄÐÔÄÜ£¬Tablet·þÎñÆ÷ʹÓöþ¼¶»º´æµÄ²ßÂÔ¡£É¨Ã軺´æÊǵÚÒ»¼¶»º´æ£¬Ö÷Òª»º´æTablet·þÎñÆ÷ͨ¹ýSSTable½Ó¿Ú»ñÈ¡µÄ Key-Value¶Ô£»Block»º ´æÊǶþ¼¶»º´æ£¬»º´æµÄÊÇ´ÓGFS¶ÁÈ¡µÄSSTableµÄBlock¡£¶ÔÓÚ¾­³£ÒªÖظ´¶ÁÈ¡ÏàͬÊý¾ÝµÄÓ¦ÓóÌÐòÀ´Ëµ£¬É¨Ã軺´æ·Ç³£ÓÐЧ£»¶ÔÓÚ¾­³£Òª¶ÁÈ¡¸Õ¸Õ¶Á ¹ýµÄÊý¾Ý¸½½üµÄÊý¾ÝµÄÓ¦ÓóÌÐòÀ´Ëµ£¬Block»º´æ¸üÓÐÓÃ(ÀýÈ磬˳Ðò¶Á£¬»òÕßÔÚÒ»¸öÈȵãµÄÐеľֲ¿ÐÔȺ×éÖÐËæ»ú¶ÁÈ¡²»Í¬µÄÁÐ)¡£

Bloom¹ýÂËÆ÷

(alex×¢:Bloom£¬Óֽв¼Â¡¹ýÂËÆ÷£¬Ê²Ã´Òâ˼£¿Çë²Î ¿¼GoogleºÚ°å±¨http://googlechinablog.com/2007/07/bloom-filter.htmlÇëÎñ±ØÏÈÈÏÕæÔĶÁ)

Èç5.3½ÚËùÊö£¬Ò»¸ö¶Á²Ù×÷±ØÐë¶ÁÈ¡¹¹³ÉTablet״̬µÄËùÓÐSSTableµÄÊý¾Ý¡£Èç¹ûÕâЩSSTable²»ÔÚÄÚ´æÖУ¬ÄÇô¾ÍÐèÒª¶à´Î·ÃÎÊÓ² ÅÌ¡£ÎÒÃÇͨ¹ýÔÊÐí¿Í»§³ÌÐò¶ÔÌØ¶¨¾Ö²¿ÐÔȺ×éµÄSSTableÖ¸¶¨Bloom¹ýÂËÆ÷¡¾7¡¿£¬À´¼õÉÙÓ²ÅÌ·ÃÎʵĴÎÊý¡£ÎÒÃÇ¿ÉÒÔʹÓÃBloom¹ýÂËÆ÷²éѯһ¸ö SSTableÊÇ·ñ°üº¬ÁËÌØ¶¨ÐкÍÁеÄÊý¾Ý¡£¶ÔÓÚÄ³Ð©ÌØ¶¨Ó¦ÓóÌÐò£¬ÎÒÃÇÖ»¸¶³öÁËÉÙÁ¿µÄ¡¢ÓÃÓÚ´æ´¢Bloom¹ýÂËÆ÷µÄÄÚ´æµÄ´ú¼Û£¬¾Í»»À´Á˶Á²Ù×÷ÏÔÖø¼õÉÙ µÄ´ÅÅÌ·ÃÎʵĴÎÊý¡£Ê¹ÓÃBloom¹ýÂËÆ÷Ò²ÒþʽµÄ´ïµ½Á˵±Ó¦ÓóÌÐò·ÃÎʲ»´æÔÚµÄÐлòÁÐʱ£¬´ó¶àÊýʱºòÎÒÃǶ¼²»ÐèÒª·ÃÎÊÓ²Å̵ÄÄ¿µÄ¡£

CommitÈÕÖ¾µÄʵÏÖ

Èç¹ûÎÒÃǰѶÔÿ¸öTabletµÄ²Ù×÷µÄCommitÈÕÖ¾¶¼´æÔÚÒ»¸öµ¥¶ÀµÄÎļþµÄ»°£¬ÄÇô¾Í»á²úÉú´óÁ¿µÄÎļþ£¬²¢ÇÒÕâЩÎļþ»á²¢ÐеÄдÈëGFS¡£¸ù¾Ý GFS·þÎñÆ÷µ×²ãÎļþϵͳʵÏֵķ½°¸£¬Òª°ÑÕâЩÎļþдÈ벻ͬµÄ´ÅÅÌÈÕÖ¾Îļþʱ(alex×¢:different physical log files)£¬»áÓдóÁ¿µÄ´ÅÅÌSeek²Ù×÷¡£ÁíÍ⣬ÓÉ ÓÚÅúÁ¿Ìá½»(alex×¢:group commit)ÖÐ ²Ù×÷µÄÊýĿһ°ã±È½ÏÉÙ£¬Òò´Ë£¬¶Ôÿ¸öTabletÉèÖõ¥¶ÀµÄÈÕÖ¾ÎļþÒ²»á¸øÅúÁ¿Ìá½»±¾Ó¦¾ßÓеÄÓÅ»¯Ð§¹û´øÀ´ºÜ´óµÄ¸ºÃæÓ°Ï졣ΪÁ˱ÜÃâÕâЩÎÊÌ⣬ÎÒÃÇÉèÖÃÿ ¸öTablet·þÎñÆ÷Ò»¸öCommitÈÕÖ¾Îļþ£¬°ÑÐ޸IJÙ×÷µÄÈÕÖ¾ÒÔ×·¼Ó·½Ê½Ð´Èëͬһ¸öÈÕÖ¾Îļþ£¬Òò´ËÒ»¸öʵ¼ÊµÄÈÕÖ¾ÎļþÖлìºÏÁ˶Զà¸öTabletÐÞ¸Ä µÄÈÕÖ¾¼Ç¼¡£

ʹÓõ¥¸öÈÕÖ¾ÏÔÖøÌá¸ßÁËÆÕͨ²Ù×÷µÄÐÔÄÜ£¬µ«Êǽ«»Ö¸´µÄ¹¤×÷¸´ÔÓ»¯ÁË¡£µ±Ò»¸öTablet·þÎñÆ÷å´»úʱ£¬Ëü¼ÓÔØµÄTablet½«»á±»ÒƵ½ºÜ¶àÆäËüµÄ Tablet·þÎñÆ÷ÉÏ:ÿ¸öTablet·þÎñÆ÷¶¼×°ÔغÜÉٵöÔ­À´µÄ·þÎñÆ÷µÄTablet¡£µ±»Ö¸´Ò»¸öTabletµÄ״̬µÄʱºò£¬ÐµÄTablet·þÎñ Æ÷Òª´ÓÔ­À´µÄTablet·þÎñÆ÷дµÄÈÕÖ¾ÖÐÌáÈ¡Ð޸IJÙ×÷µÄÐÅÏ¢£¬²¢ÖØÐÂÖ´ÐС£È»¶ø£¬ÕâЩTabletÐ޸IJÙ×÷µÄÈÕÖ¾¼Ç¼¶¼»ìºÏÔÚͬһ¸öÈÕÖ¾ÎļþÖеġ£Ò»ÖÖ ·½·¨ÐµÄTablet·þÎñÆ÷¶ÁÈ¡ÍêÕûµÄCommitÈÕÖ¾Îļþ£¬È»ºóÖ»ÖØ¸´Ö´ÐÐËüÐèÒª»Ö¸´µÄTabletµÄÏà¹ØÐ޸IJÙ×÷¡£Ê¹ÓÃÕâÖÖ·½·¨£¬¼ÙÈçÓÐ100̨ Tablet·þÎñÆ÷£¬Ã¿Ì¨¶¼¼ÓÔØÁËʧЧµÄTablet·þÎñÆ÷ÉϵÄÒ»¸öTablet£¬ÄÇô£¬Õâ¸öÈÕÖ¾Îļþ¾ÍÒª±»¶ÁÈ¡100´Î(ÿ¸ö·þÎñÆ÷¶Áȡһ´Î)¡£

ΪÁ˱ÜÃâ¶à´Î¶ÁÈ¡ÈÕÖ¾Îļþ£¬ÎÒÃÇÊ×ÏȰÑÈÕÖ¾°´Õչؼü×Ö(table£¬row name£¬log sequence number)ÅÅÐò¡£ÅÅÐòÖ®ºó£¬¶Ôͬһ¸öTabletµÄÐ޸IJÙ×÷µÄÈÕÖ¾¼Ç¼¾ÍÁ¬Ðø´æ·ÅÔÚÁËÒ»Æð£¬Òò´Ë£¬ÎÒÃÇÖ»ÒªÒ»´Î´ÅÅÌSeek²Ù×÷¡¢Ö®ºó˳Ðò¶ÁÈ¡¾Í¿ÉÒÔ ÁË¡£ÎªÁ˲¢ÐÐÅÅÐò£¬ÎÒÃÇÏȽ«ÈÕÖ¾·Ö¸î³É64MBµÄ¶Î£¬Ö®ºóÔÚ²»Í¬µÄTablet·þÎñÆ÷¶Ô¶Î½øÐв¢ÐÐÅÅÐò¡£Õâ¸öÅÅÐò¹¤×÷ÓÉMaster·þÎñÆ÷À´Ð­Í¬´¦Àí£¬²¢ ÇÒÔÚÒ»¸öTablet·þÎñÆ÷±íÃ÷×Ô¼ºÐèÒª´ÓCommitÈÕÖ¾Îļþ»Ö¸´Tabletʱ¿ªÊ¼Ö´ÐС£

ÔÚÏòGFSÖÐдCommitÈÕÖ¾µÄʱºò¿ÉÄÜ»áÒýÆðϵͳµßô¤£¬Ô­ÒòÊǶàÖÖ¶àÑùµÄ(±ÈÈ磬д²Ù×÷ÕýÔÚ½øÐеÄʱºò£¬Ò»¸öGFS·þÎñÆ÷å´»úÁË£»»òÕßÁ¬½ÓÈý¸ö GFS¸±±¾ËùÔڵķþÎñÆ÷µÄÍøÂçÓµÈû»òÕß¹ýÔØÁË)¡£ÎªÁËÈ·±£ÔÚGFS¸ºÔظ߷åʱÐ޸IJÙ×÷»¹ÄÜ˳Àû½øÐУ¬Ã¿¸öTablet·þÎñÆ÷ʵ¼ÊÉÏÓÐÁ½¸öÈÕ־дÈëỊ̈߳¬Ã¿ ¸öÏ̶߳¼Ð´×Ô¼ºµÄÈÕÖ¾Îļþ£¬²¢ÇÒÔÚÈκÎʱ¿Ì£¬Ö»ÓÐÒ»¸öÏß³ÌÊǹ¤×÷µÄ¡£Èç¹ûÒ»¸öÏ̵߳ÄÔÚдÈëµÄʱºòЧÂʺܵͣ¬Tablet·þÎñÆ÷¾ÍÇл»µ½ÁíÍâÒ»¸öỊ̈߳¬ÐÞ¸Ä ²Ù×÷µÄÈÕÖ¾¼Ç¼¾ÍдÈëµ½Õâ¸öÏ̶߳ÔÓ¦µÄÈÕÖ¾ÎļþÖС£Ã¿¸öÈÕÖ¾¼Ç¼¶¼ÓÐÒ»¸öÐòÁкţ¬Òò´Ë£¬ÔÚ»Ö¸´µÄʱºò£¬Tablet·þÎñÆ÷Äܹ»¼ì²â³ö²¢ºöÂÔµôÄÇЩÓÉÓÚÏß³Ì Çл»¶øµ¼ÖµÄÖØ¸´µÄ¼Ç¼¡£

Tablet»Ö¸´ÌáËÙ

µ±Master·þÎñÆ÷½«Ò»¸öTablet´ÓÒ»¸öTablet·þÎñÆ÷ÒÆµ½ÁíÍâÒ»¸öTablet·þÎñÆ÷ʱ£¬Ô´Tablet·þÎñÆ÷»á¶ÔÕâ¸ö Tablet×öÒ»´ÎMinor Compaction¡£Õâ¸öCompaction²Ù×÷¼õÉÙÁËTablet·þÎñÆ÷µÄÈÕÖ¾ÎļþÖÐûÓй鲢µÄ¼Ç¼£¬´Ó¶ø¼õÉÙÁ˻ָ´µÄʱ¼ä¡£Compaction Íê³ÉÖ®ºó£¬¸Ã·þÎñÆ÷¾ÍֹͣΪ¸ÃTabletÌṩ·þÎñ¡£ÔÚÐ¶ÔØTablet֮ǰ£¬Ô´Tablet·þÎñÆ÷»¹»áÔÙ×öÒ»´Î(ͨ³£»áºÜ¿ì)Minor Compaction£¬ÒÔÏû³ýÇ°ÃæÔÚÒ»´ÎѹËõ¹ý³ÌÖÐÓÖ²úÉúµÄδ¹é²¢µÄ¼Ç¼¡£µÚ¶þ´ÎMinor CompactionÍê³ÉÒÔºó£¬Tablet¾Í¿ÉÒÔ±»×°Ôص½ÐµÄTablet·þÎñÆ÷ÉÏÁË£¬²¢ÇÒ²»ÐèÒª´ÓÈÕÖ¾ÖнøÐлָ´¡£

ÀûÓò»±äÐÔ

ÎÒÃÇÔÚʹÓÃBigtableʱ£¬³ýÁËSSTable»º´æÖ®ÍâµÄÆäËü²¿·Ö²úÉúµÄSSTable¶¼ÊDz»±äµÄ£¬ÎÒÃÇ¿ÉÒÔÀûÓÃÕâÒ»µã¶Ôϵͳ½øÐмò»¯¡£ÀýÈ磬 µ±´ÓSSTable¶ÁÈ¡Êý¾ÝµÄʱºò£¬ÎÒÃDz»±Ø¶ÔÎļþϵͳ·ÃÎʲÙ×÷½øÐÐͬ²½¡£ÕâÑùÒ»À´£¬¾Í¿ÉÒԷdz£¸ßЧµÄʵÏÖ¶ÔÐеIJ¢ÐвÙ×÷¡£memtableÊÇΨһһ¸öÄÜ ±»¶ÁºÍд²Ù×÷ͬʱ·ÃÎʵĿɱäÊý¾Ý½á¹¹¡£ÎªÁ˼õÉÙÔÚ¶Á²Ù×÷ʱµÄ¾ºÕù£¬ÎÒÃǶÔÄÚ´æ±í²ÉÓÃCOW(Copy-on-write)»úÖÆ£¬ÕâÑù¾ÍÔÊÐí¶Áд²Ù×÷²¢ÐÐÖ´ ÐС£

ÒòΪSSTableÊDz»±äµÄ£¬Òò´Ë£¬ÎÒÃÇ¿ÉÒÔ°ÑÓÀ¾Ãɾ³ý±»±ê¼ÇΪ¡°É¾³ý¡±µÄÊý¾ÝµÄÎÊÌ⣬ת»»³É¶Ô·ÏÆúµÄSSTable½øÐÐÀ¬»øÊÕ¼¯µÄÎÊÌâÁË¡£Ã¿¸ö TabletµÄSSTable¶¼ÔÚMETADATA±íÖÐ×¢²áÁË¡£Master·þÎñÆ÷²ÉÓá°±ê¼Ç-ɾ³ý¡±µÄÀ¬»ø»ØÊÕ·½Ê½É¾³ýSSTable¼¯ºÏÖÐ·ÏÆúµÄ SSTable¡¾25¡¿£¬METADATA±íÔò±£´æÁËRoot SSTableµÄ¼¯ºÏ¡£

×îºó£¬SSTableµÄ²»±äÐÔʹµÃ·Ö¸îTabletµÄ²Ù×÷·Ç³£¿ì½Ý¡£ÎÒÃDz»±ØÎªÃ¿¸ö·Ö¸î³öÀ´µÄTablet½¨Á¢ÐµÄSSTable¼¯ºÏ£¬¶øÊǹ²ÏíÔ­ À´µÄTabletµÄSSTable¼¯ºÏ¡£

7 ÐÔÄÜÆÀ¹À

ΪÁ˲âÊÔBigtableµÄÐÔÄܺͿÉÀ©Õ¹ÐÔ£¬ÎÒÃǽ¨Á¢ÁËÒ»¸ö°üÀ¨N̨Tablet·þÎñÆ÷µÄBigtable¼¯Èº£¬ÕâÀïNÊǿɱäµÄ¡£Ã¿Ì¨ Tablet·þÎñÆ÷ÅäÖÃÁË1GBµÄÄڴ棬Êý¾ÝдÈëµ½Ò»¸ö°üÀ¨1786̨»úÆ÷¡¢Ã¿Ì¨»úÆ÷ÓÐ2¸öIDEÓ²Å̵ÄGFS¼¯ÈºÉÏ¡£ÎÒÃÇʹÓÃN̨¿Í»§»úÉú³É¹¤×÷¸ºÔزâ ÊÔBigtable¡£(ÎÒÃÇʹÓúÍTablet·þÎñÆ÷ÏàͬÊýÄ¿µÄ¿Í»§»úÒÔÈ·±£¿Í»§»ú²»»á³ÉΪƿ¾±¡£) ÿ̨¿Í»§»úÅäÖÃ2GZË«ºËOpteron´¦ÀíÆ÷£¬ÅäÖÃÁË×ãÒÔÈÝÄÉËùÓнø³Ì¹¤×÷Êý¾Ý¼¯µÄÎïÀíÄڴ棬ÒÔ¼°Ò»ÕÅGigabitµÄÒÔÌ«Íø¿¨¡£ÕâЩ»úÆ÷¶¼Á¬ÈëÒ»¸öÁ½ ²ãµÄ¡¢Ê÷×´µÄ½»»»ÍøÂçÀÔÚ¸ù½ÚµãÉϵĴø¿í¼ÓÆðÀ´ÓдóÔ¼100-200Gbps¡£ËùÓеĻúÆ÷²ÉÓÃÏàͬµÄÉ豸£¬Òò´Ë£¬ÈκÎÁ½Ì¨»úÆ÷¼äÍøÂçÀ´»ØÒ»´ÎµÄʱ¼ä¶¼Ð¡ ÓÚ1ms¡£

Tablet·þÎñÆ÷¡¢Master·þÎñÆ÷¡¢²âÊÔ»ú¡¢ÒÔ¼°GFS·þÎñÆ÷¶¼ÔËÐÐÔÚͬһ×é»úÆ÷ÉÏ¡£Ã¿Ì¨»úÆ÷¶¼ÔËÐÐÒ»¸öGFSµÄ·þÎñÆ÷¡£ÆäËüµÄ»úÆ÷Ҫô ÔËÐÐTablet·þÎñÆ÷¡¢ÒªÃ´ÔËÐпͻ§³ÌÐò¡¢ÒªÃ´ÔËÐÐÔÚ²âÊÔ¹ý³ÌÖУ¬Ê¹ÓÃÕâ×é»úÆ÷µÄÆäËüµÄÈÎÎñÆô¶¯µÄ½ø³Ì¡£

RÊDzâÊÔ¹ý³ÌÖУ¬Bigtable°üº¬µÄ²»Í¬µÄÁйؼü×ÖµÄÊýÁ¿¡£ÎÒÃǾ«ÐÄÑ¡ÔñRµÄÖµ£¬±£Ö¤Ã¿´Î»ù×¼²âÊÔ¶Ôÿ̨Tablet·þÎñÆ÷¶Á/дµÄÊý¾ÝÁ¿ ¶¼ÔÚ1GB×óÓÒ¡£

ÔÚÐòÁÐдµÄ»ù×¼²âÊÔÖУ¬ÎÒÃÇʹÓõÄÁйؼü×ֵķ¶Î§ÊÇ0µ½R-1¡£Õâ¸ö·¶Î§ÓÖ±»»®·ÖΪ10N¸ö´óСÏàͬµÄÇø¼ä?ËÐĵ÷¶È³ÌÐò°ÑÕâÐ©Çø¼ä·ÖÅ䏸N¸ö ¿Í»§¶Ë£¬·ÖÅ䷽ʽÊÇ:Ö»Òª¿Í»§³ÌÐò´¦ÀíÍêÉÏÒ»¸öÇø¼äµÄÊý¾Ý£¬µ÷¶È³ÌÐò¾Í°ÑºóÐøµÄ¡¢ÉÐδ´¦ÀíµÄÇø¼ä·ÖÅ䏸Ëü¡£ÕâÖÖ¶¯Ì¬·ÖÅäµÄ·½Ê½ÓÐÖúÓÚ¼õÉÙ¿Í»§»úÉÏͬʱÔËÐÐ µÄÆäËü½ø³Ì¶ÔÐÔÄܵÄÓ°Ïì¡£ÎÒÃÇÔÚÿ¸öÁйؼü×ÖÏÂдÈëÒ»¸öµ¥¶ÀµÄ×Ö·û´®¡£Ã¿¸ö×Ö·û´®¶¼ÊÇËæ»úÉú³ÉµÄ¡¢Òò´ËҲûÓб»Ñ¹Ëõ(alex×¢:²Î¿¼µÚ6½ÚµÄѹËõС½Ú)¡£ÁíÍ⣬²»Í¬Áйؼü×ÖϵÄ×Ö·û´®Ò²ÊDz»Í¬µÄ£¬Òò´ËÒ²¾Í²»´æÔÚ¿çÐеÄѹËõ¡£Ëæ»úдÈë»ù×¼²âÊÔ²É ÓÃÀàËÆµÄ·½·¨£¬³ýÁËÐйؼü×ÖÔÚдÈëǰÏÈ×öHash£¬Hash²ÉÓð´RȡģµÄ·½Ê½£¬ÕâÑù¾Í±£Ö¤ÁËÔÚÕû¸ö»ù×¼²âÊÔ³ÖÐøµÄʱ¼äÄÚ£¬Ð´ÈëµÄ¹¤×÷¸ºÔؾùÔȵķֲ¼ÔÚÁÐ ´æ´¢¿Õ¼äÄÚ¡£

ÐòÁжÁµÄ»ù×¼²âÊÔÉú³ÉÁйؼü×ֵķ½Ê½ÓëÐòÁÐдÏàͬ£¬²»Í¬ÓÚÐòÁÐдÔÚÁйؼü×ÖÏÂдÈë×Ö·û´®µÄÊÇ£¬ÐòÁжÁÊǶÁÈ¡Áйؼü×ÖϵÄ×Ö·û´®(ÕâЩ×Ö·û´®ÓÉÖ® ǰÐòÁÐд»ù×¼²âÊÔ³ÌÐòдÈë)¡£Í¬ÑùµÄ£¬Ëæ»ú¶ÁµÄ»ù×¼²âÊÔºÍËæ»úдÊÇÀàËÆµÄ¡£

ɨÃè»ù×¼²âÊÔºÍÐòÁжÁÀàËÆ£¬µ«ÊÇʹÓõÄÊÇBigTableÌṩµÄ¡¢´ÓÒ»¸öÁз¶Î§ÄÚɨÃèËùÓеÄvalueÖµµÄAPI¡£ÓÉÓÚÒ»´ÎRPCµ÷ÓþʹÓÒ»¸ö Tablet·þÎñÆ÷È¡»ØÁË´óÁ¿µÄValueÖµ£¬Òò´Ë£¬Ê¹ÓÃɨÃ跽ʽµÄ»ù×¼²âÊÔ³ÌÐò¿ÉÒÔ¼õÉÙRPCµ÷ÓõĴÎÊý¡£

Ëæ»ú¶Á(ÄÚ´æ)»ù×¼²âÊÔºÍËæ»ú¶ÁÀàËÆ£¬³ýÁ˰üº¬»ù×¼²âÊÔÊý¾ÝµÄ¾Ö²¿ÐÔȺ×é±»ÉèÖÃΪ¡°in-memory¡±£¬Òò´Ë£¬¶Á²Ù×÷Ö±½Ó´ÓTablet·þÎñ Æ÷µÄÄÚ´æÖжÁÈ¡Êý¾Ý£¬²»ÐèÒª´ÓGFS¶ÁÈ¡Êý¾Ý¡£Õë¶ÔÕâ¸ö²âÊÔ£¬ÎÒÃǰÑÿ̨Tablet·þÎñÆ÷´æ´¢µÄÊý¾Ý´Ó1GB¼õÉÙµ½100MB£¬ÕâÑù¾Í¿ÉÒÔ°ÑÊý¾ÝÈ«²¿¼Ó ÔØµ½Tablet·þÎñÆ÷µÄÄÚ´æÖÐÁË¡£

ͼ6ÖÐÓÐÁ½¸öÊÓͼ£¬ÏÔʾÁËÎÒÃǵĻù×¼²âÊÔµÄÐÔÄÜ£»Í¼ÖеÄÊý¾ÝºÍÇúÏßÊǶÁ/д 1000-byte valueֵʱȡµÃµÄ¡£Í¼Öеıí¸ñÏÔʾÁËÿ¸öTablet·þÎñÆ÷ÿÃëÖÓ½øÐеIJÙ×÷µÄ´ÎÊý£»Í¼ÖеÄÇúÏßÏÔʾÁËÿÃëÖÖËùÓеÄTablet·þÎñÆ÷ÉϲÙ×÷´ÎÊýµÄ×Ü ºÍ¡£

µ¥¸öTablet·þÎñÆ÷µÄÐÔÄÜ

ÎÒÃÇÊ×ÏÈ·ÖÎöϵ¥¸öTablet·þÎñÆ÷µÄÐÔÄÜ¡£Ëæ»ú¶ÁµÄÐÔÄÜ±ÈÆäËü²Ù×÷ÂýÒ»¸ö»ò¶à¸öÊýÁ¿¼¶(»òÒÔÉÏ,James×¢´Ë´¦×öÁËСÐíµ÷Õû)(alex×¢:by the order of magnitude or more) ¡£ ÿ¸öËæ»ú¶Á²Ù×÷¶¼ÒªÍ¨¹ýÍøÂç´ÓGFS´«Êä64KBµÄSSTableµ½Tablet·þÎñÆ÷£¬¶øÎÒÃÇֻʹÓÃÆäÖдóСÊÇ1000 byteµÄÒ»¸övalueÖµ¡£Tablet·þÎñÆ÷ÿÃë´óÔ¼Ö´ÐÐ1200´Î¶Á²Ù×÷£¬Ò²¾ÍÊÇÿÃë´óÔ¼´ÓGFS¶ÁÈ¡75MBµÄÊý¾Ý¡£Õâ¸ö´«Êä´ø¿í×ãÒÔÕ¼Âú Tablet·þÎñÆ÷µÄCPUʱ¼ä£¬ÒòΪÆäÖаüÀ¨ÁËÍøÂçЭÒéÕ»µÄÏûºÄ¡¢SSTable½âÎö¡¢ÒÔ¼°BigTable´úÂëÖ´ÐУ»Õâ¸ö´ø¿íÒ²×ãÒÔÕ¼ÂúÎÒÃÇϵͳÖÐÍø ÂçµÄÁ´½Ó´ø¿í¡£´ó¶àÊý²ÉÓÃÕâÖÖ·ÃÎÊģʽBigTableÓ¦ÓóÌÐò»á¼õСBlockµÄ´óС£¬Í¨³£»á¼õµ½8KB¡£

ÄÚ´æÖеÄËæ»ú¶Á²Ù×÷ËÙ¶È¿ìºÜ¶à£¬Ô­ÒòÊÇ£¬ËùÓÐ1000-byteµÄ¶Á²Ù×÷¶¼ÊÇ´ÓTablet·þÎñÆ÷µÄ±¾µØÄÚ´æÖжÁÈ¡Êý¾Ý£¬²»ÐèÒª´ÓGFS¶ÁÈ¡ 64KBµÄBlock¡£

Ëæ»úºÍÐòÁÐд²Ù×÷µÄÐÔÄܱÈËæ»ú¶ÁÒªºÃЩ£¬Ô­ÒòÊÇÿ¸öTablet·þÎñÆ÷Ö±½Ó°ÑдÈë²Ù×÷µÄÄÚÈÝ×·¼Óµ½Ò»¸öCommitÈÕÖ¾ÎļþµÄβ²¿£¬²¢ÇÒ²ÉÓÃÅúÁ¿Ìá ½»µÄ·½Ê½£¬Í¨¹ý°ÑÊý¾ÝÒÔÁ÷µÄ·½Ê½Ð´Èëµ½GFSÀ´Ìá¸ßÐÔÄÜ¡£Ëæ»úдºÍÐòÁÐдÔÚÐÔÄÜÉÏûÓÐÌ«´óµÄ²îÒ죬ÕâÁ½ÖÖ·½Ê½µÄд²Ù×÷ʵ¼ÊÉ϶¼ÊǰѲÙ×÷ÄÚÈݼǼµ½Í¬Ò»¸ö Tablet·þÎñÆ÷µÄCommitÈÕÖ¾ÎļþÖС£

ÐòÁжÁµÄÐÔÄܺÃÓÚËæ»ú¶Á£¬ÒòΪÿȡ³ö64KBµÄSSTableµÄBlockºó£¬ÕâЩÊý¾Ý»á»º´æµ½Block»º´æÖУ¬ºóÐøµÄ64´Î¶Á²Ù×÷Ö±½Ó´Ó»º´æ¶Á È¡Êý¾Ý¡£

ɨÃèµÄÐÔÄܸü¸ß£¬ÕâÊÇÓÉÓÚ¿Í»§³ÌÐòÿһ´ÎRPCµ÷Óö¼»á·µ»Ø´óÁ¿µÄvalueµÄÊý¾Ý£¬ËùÒÔ£¬RPCµ÷ÓõÄÏûºÄ»ù±¾µÖÏûÁË¡£

ÐÔÄÜÌáÉý

Ëæ×ÅÎÒÃǽ«ÏµÍ³ÖеÄTablet·þÎñÆ÷´Ó1̨Ôö¼Óµ½500̨£¬ÏµÍ³µÄÕûÌåÍÌÍÂÁ¿ÓÐÁËÃλðãµÄÔö³¤£¬Ôö³¤µÄ±¶Âʳ¬¹ýÁË100¡£±ÈÈç£¬Ëæ×ÅTablet ·þÎñÆ÷µÄÊýÁ¿Ôö¼ÓÁË500±¶£¬ÄÚ´æÖеÄËæ»ú¶Á²Ù×÷µÄÐÔÄÜÔö¼ÓÁË300±¶¡£Ö®ËùÒÔ»áÓÐÕâÑùµÄÐÔÄÜÌáÉý£¬Ö÷ÒªÊÇÒòΪÕâ¸ö»ù×¼²âÊÔµÄÆ¿¾±Êǵ¥Ì¨Tablet·þÎñ Æ÷µÄCPU¡£

¾¡¹ÜÈç´Ë£¬ÐÔÄܵÄÌáÉý»¹²»ÊÇÏßÐԵġ£ÔÚ´ó¶àÊýµÄ»ù×¼²âÊÔÖÐÎÒÃÇ¿´µ½£¬µ±Tablet·þÎñÆ÷µÄÊýÁ¿´Ó1̨Ôö¼Óµ½50̨ʱ£¬Ã¿Ì¨·þÎñÆ÷µÄÍÌÍÂÁ¿»áÓÐÒ»¸ö Ã÷ÏÔµÄϽµ¡£ÕâÊÇÓÉÓÚ¶ą̀·þÎñÆ÷¼äµÄ¸ºÔز»¾ùºâÔì³ÉµÄ£¬´ó¶àÊýÇé¿öÏÂÊÇÓÉÓÚÆäËüµÄ³ÌÐòÇÀÕ¼ÁËCPU¡£ ÎÒÃǸºÔؾùºâµÄËã·¨»á¾¡Á¿±ÜÃâÕâÖÖ²»¾ùºâ£¬µ«ÊÇ»ùÓÚÁ½¸öÖ÷ÒªÔ­Òò£¬Õâ¸öËã·¨²¢²»ÄÜÍêÃÀµÄ¹¤×÷:Ò»¸öÊǾ¡Á¿¼õÉÙTabletµÄÒÆ¶¯µ¼ÖÂÖØÐ¸ºÔؾùºâÄÜÁ¦ÊÜÏÞ (Èç¹ûTablet±»Òƶ¯ÁË£¬ÄÇôÔÚ¶Ìʱ¼äÄÚ ¡ª Ò»°ãÊÇ1ÃëÄÚ ¡ª Õâ¸öTabletÊDz»¿ÉÓõÄ)£¬ÁíÒ»¸öÊÇÎÒÃǵĻù×¼²âÊÔ³ÌÐò²úÉúµÄ¸ºÔØ»áÓв¨¶¯(alex×¢:the load generated by our benchmarks shifts around as the benchmark progresses)¡£

Ëæ»ú¶Á»ù×¼²âÊԵIJâÊÔ½á¹ûÏÔʾ£¬Ëæ»ú¶ÁµÄÐÔÄÜËæTablet·þÎñÆ÷ÊýÁ¿Ôö¼ÓµÄÌáÉý·ù¶È×îС(ÕûÌåÍÌÍÂÁ¿Ö»ÌáÉýÁË100±¶£¬¶ø·þÎñÆ÷µÄÊýÁ¿È´Ôö¼ÓÁË 500±¶)¡£ÕâÊÇÒòΪÿ¸ö1000-byteµÄ¶Á²Ù×÷¶¼»áµ¼ÖÂÒ»¸ö64KB´óµÄBlockÔÚÍøÂçÉÏ´«Êä¡£ÕâÑùµÄÍøÂç´«ÊäÁ¿ÏûºÄÁËÎÒÃÇÍøÂçÖи÷ÖÖ¹²ÏíµÄ 1GBµÄÁ´Â·£¬½á¹ûµ¼ÖÂËæ×ÅÎÒÃÇÔö¼Ó·þÎñÆ÷µÄÊýÁ¿£¬Ã¿Ì¨·þÎñÆ÷ÉϵÄÍÌÍÂÁ¿¼±¾çϽµ¡£

8 ʵ¼ÊÓ¦ÓÃ

½ØÖ¹µ½2006Äê8Ô£¬GoogleÄÚ²¿Ò»¹²ÓÐ388¸ö·Ç²âÊÔÓõÄBigtable¼¯ÈºÔËÐÐÔÚ¸÷ÖÖ¸÷ÑùµÄ·þÎñÆ÷¼¯ÈºÉÏ£¬ºÏ¼Æ´óÔ¼ÓÐ24500¸ö Tablet·þÎñÆ÷¡£±í1ÏÔʾÁËÿ¸ö¼¯ÈºÉÏTablet·þÎñÆ÷µÄ´óÖ·ֲ¼Çé¿ö¡£ÕâЩ¼¯ÈºÖУ¬Ðí¶àÓÃÓÚ¿ª·¢Ä¿µÄ£¬Òò´Ë»áÓÐÒ»¶ÎʱÆÚ±È½Ï¿ÕÏС£Í¨¹ý¹Û²ìÒ»¸öÓÉ 14¸ö¼¯Èº¡¢8069¸öTablet·þÎñÆ÷×é³ÉµÄ¼¯Èº×飬ÎÒÃÇ¿´µ½ÕûÌåµÄÍÌÍÂÁ¿³¬¹ýÁËÿÃë1200000´ÎÇëÇ󣬷¢Ë͵½ÏµÍ³µÄRPCÇëÇóµ¼ÖµÄÍøÂç¸ºÔØ´ï µ½ÁË741MB/s£¬ÏµÍ³·¢³öµÄRPCÇëÇóÍøÂç¸ºÔØ´óÔ¼ÊÇ16GB/s¡£

±í2ÌṩÁËһЩĿǰÕýÔÚʹÓõıíµÄÏà¹ØÊý¾Ý¡£Ò»Ð©±í´æ´¢µÄÊÇÓû§Ïà¹ØµÄÊý¾Ý£¬ÁíÍâһЩ´æ´¢µÄÔòÊÇÓÃÓÚÅú´¦ÀíµÄÊý¾Ý£»ÕâЩ±íÔÚ×ܵĴóС¡¢ ÿ¸öÊý¾ÝÏîµÄƽ¾ù´óС¡¢´ÓÄÚ´æÖжÁÈ¡µÄÊý¾ÝµÄ±ÈÀý¡¢±íµÄSchemaµÄ¸´Ôӳ̶ÈÉ϶¼ÓкܴóµÄ²î±ð¡£±¾½ÚµÄÆäÓಿ·Ö£¬ÎÒÃǽ«Ö÷ÒªÃèÊöÈý¸ö²úÆ·Ñз¢ÍŶÓÈçºÎʹ ÓÃBigtableµÄ¡£

8.1 Google Analytics

Google AnalyticsÊÇÓÃÀ´°ïÖúWebÕ¾µãµÄ¹ÜÀíÔ±·ÖÎöËûÃÇÍøÕ¾µÄÁ÷Á¿Ä£Ê½µÄ·þÎñ¡£ËüÌṩÁËÕûÌå×´¿öµÄͳ¼ÆÊý¾Ý£¬±ÈÈçÿÌìµÄ¶ÀÁ¢·ÃÎʵÄÓû§ÊýÁ¿¡¢Ã¿Ììÿ¸ö URLµÄä¯ÀÀ´ÎÊý£»Ëü»¹ÌṩÁËÓû§Ê¹ÓÃÍøÕ¾µÄÐÐΪ±¨¸æ£¬±ÈÈç¸ù¾ÝÓû§Ö®Ç°·ÃÎʵÄÄ³Ð©Ò³Ãæ£¬Í³¼Æ³ö¼¸³ÉµÄÓû§¹ºÂòÁËÉÌÆ·¡£

ΪÁËʹÓÃÕâ¸ö·þÎñ£¬WebÕ¾µãµÄ¹ÜÀíÔ±Ö»ÐèÒªÔÚËûÃǵÄWebÒ³ÃæÖÐǶÈëһС¶ÎJavaScript½Å±¾¾Í¿ÉÒÔÁË¡£Õâ¸öJavascript³ÌÐòÔÚÒ³ Ãæ±»·ÃÎʵÄʱºòµ÷Óá£Ëü¼Ç¼Á˸÷ÖÖGoogle AnalyticsÐèҪʹÓõÄÐÅÏ¢£¬±ÈÈçÓû§µÄ±êʶ¡¢»ñÈ¡µÄÍøÒ³µÄÏà¹ØÐÅÏ¢¡£Google Analytics»ã×ÜÕâЩÊý¾Ý£¬Ö®ºóÌṩ¸øWebÕ¾µãµÄ¹ÜÀíÔ±¡£

ÎÒÃÇ´ÖÂÔµÄÃèÊöÒ»ÏÂGoogle AnalyticsʹÓõÄÁ½¸ö±í¡£Row Click±í(´óÔ¼ÓÐ200TBÊý¾Ý)µÄÿһÐдæ·ÅÁËÒ»¸ö×îÖÕÓû§µÄ»á»°¡£ÐеÄÃû×ÖÊÇÒ»¸ö°üº¬WebÕ¾µãÃû×ÖÒÔ¼°Óû§»á»°´´½¨Ê±¼äµÄÔª×é¡£ÕâÖÖģʽ±£Ö¤ÁË ¶Ôͬһ¸öWebÕ¾µãµÄ·ÃÎʻỰÊÇ˳ÐòµÄ£¬»á»°°´Ê±¼ä˳Ðò´æ´¢¡£Õâ¸ö±í¿ÉÒÔѹËõµ½Ô­À´³ß´çµÄ14%¡£

Summary±í(´óÔ¼ÓÐ20TBµÄÊý¾Ý)°üº¬Á˹ØÓÚÿ¸öWebÕ¾µãµÄ¡¢¸÷ÖÖÀàÐ͵ÄÔ¤¶¨Òå»ã×ÜÐÅÏ¢¡£Ò»¸öÖÜÆÚÐÔÔËÐеÄMapReduceÈÎÎñ¸ù¾Ý Raw Click±íµÄÊý¾ÝÉú³ÉSummary±íµÄÊý¾Ý¡£Ã¿¸öMapReduce¹¤×÷½ø³Ì¶¼´ÓRaw Click±íÖÐÌáÈ¡×îеĻỰÊý¾Ý¡£ÏµÍ³µÄÕûÌåÍÌÍÂÁ¿ÊÜÏÞÓÚGFSµÄÍÌÍÂÁ¿¡£Õâ¸ö±íµÄÄܹ»Ñ¹Ëõµ½Ô­ÓгߴçµÄ29%¡£

8.2 Google Earth

Googleͨ¹ýÒ»×é·þÎñΪÓû§ÌṩÁ˸߷ֱæÂʵĵØÇò±íÃæÎÀÐÇͼÏñ£¬·ÃÎʵķ½Ê½¿ÉÒÔʹͨ¹ý»ùÓÚWebµÄGoogle Maps·ÃÎʽӿÚ(maps.google.com)£¬Ò²¿ÉÒÔͨ¹ýGoogle Earth¶¨ÖƵĿͻ§¶ËÈí¼þ·ÃÎÊ¡£ÕâЩÈí¼þ²úÆ·ÔÊÐíÓû§ä¯ÀÀµØÇò±íÃæµÄͼÏñ:Óû§¿ÉÒÔÔÚ²»Í¬µÄ·Ö±æÂÊÏÂÆ½ÒÆ¡¢²é¿´ºÍ×¢ÊÍÕâЩÎÀÐÇͼÏñ¡£Õâ¸öϵͳʹÓÃÒ»¸ö±í ´æ´¢Ô¤´¦ÀíÊý¾Ý£¬Ê¹ÓÃÁíÍâÒ»×é±í´æ´¢Óû§Êý¾Ý¡£

Êý¾ÝÔ¤´¦ÀíÁ÷Ë®ÏßʹÓÃÒ»¸ö±í´æ´¢Ô­Ê¼Í¼Ïñ¡£ÔÚÔ¤´¦Àí¹ý³ÌÖУ¬Í¼Ïñ±»Çå³ý£¬Í¼ÏñÊý¾ÝºÏ²¢µ½×îÖյķþÎñÊý¾ÝÖС£Õâ¸ö±í°üº¬ÁË´óÔ¼70TBµÄÊý¾Ý£¬ËùÒÔÐè Òª´Ó´ÅÅ̶ÁÈ¡Êý¾Ý¡£Í¼ÏñÒѾ­±»¸ßЧѹËõ¹ýÁË£¬Òò´Ë´æ´¢ÔÚBigtableºó²»ÐèÒªÔÙѹËõÁË¡£

Imagery±íµÄÿһÐж¼´ú±íÁËÒ»¸öµ¥¶ÀµÄµØÀíÇøÓò¡£Ðж¼ÓÐÃû³Æ£¬ÒÔÈ·±£ÅþÁÚµÄÇøÓò´æ´¢ÔÚÁËÒ»Æð¡£Imagery±íÖÐÓÐÒ»¸öÁÐ×åÓÃÀ´¼Ç¼ÿ¸öÇøÓò µÄÊý¾ÝÔ´¡£Õâ¸öÁÐ×å°üº¬ÁË´óÁ¿µÄÁÐ:»ù±¾ÉÏÊÐÿ¸öÁжÔÓ¦Ò»¸öԭʼͼƬµÄÊý¾Ý¡£ÓÉÓÚÿ¸öµØÀíÇøÓò¶¼ÊÇÓɺÜÉٵļ¸ÕÅͼƬ¹¹³ÉµÄ£¬Òò´ËÕâ¸öÁÐ×åÊǷdz£Ï¡ÊèµÄ¡£

Êý¾ÝÔ¤´¦ÀíÁ÷Ë®Ï߸߶ÈÒÀÀµÔËÐÐÔÚBigtableÉϵÄMapReduceÈÎÎñ´«ÊäÊý¾Ý¡£ÔÚÔËÐÐijЩMapReduceÈÎÎñµÄʱºò£¬Õû¸öϵͳÖÐÿ̨ Tablet·þÎñÆ÷µÄÊý¾Ý´¦ÀíËÙ¶ÈÊÇ1MB/s¡£

Õâ¸ö·þÎñϵͳʹÓÃÒ»¸ö±íÀ´Ë÷ÒýGFSÖеÄÊý¾Ý¡£Õâ¸ö±íÏà¶Ô½ÏС(´óÔ¼ÊÇ500GB)£¬µ«ÊÇÕâ¸ö±í±ØÐëÔÚ±£Ö¤½ÏµÍµÄÏìÓ¦ÑÓʱµÄǰÌáÏ£¬Õë¶Ôÿ¸öÊý¾ÝÖÐ ÐÄ£¬Ã¿Ãë´¦Àí¼¸Íò¸ö²éѯÇëÇó¡£ Òò´Ë£¬Õâ¸ö±í±ØÐëÔÚÉϰٸöTablet·þÎñÆ÷ÉÏ´æ´¢Êý¾Ý£¬²¢ÇÒʹÓÃin-memoryµÄÁÐ×å¡£

8.3 ¸öÐÔ»¯²éѯ

¸öÐÔ»¯²éѯ(www.google.com/psearch) ÊÇÒ»¸öË«Ïò·þÎñ£»Õâ¸ö·þÎñ¼Ç¼Óû§µÄ²éѯºÍµã»÷£¬Éæ¼°µ½¸÷ÖÖGoogleµÄ·þÎñ£¬±ÈÈçWeb²éѯ¡¢Í¼ÏñºÍÐÂÎÅ¡£Óû§¿ÉÒÔä¯ÀÀËûÃDzéѯµÄÀúÊ·£¬Öظ´ËûÃÇ֮ǰ µÄ²éѯºÍµã»÷£»Óû§Ò²¿ÉÒÔ¶¨ÖÆ»ùÓÚGoogleÀúʷʹÓÃϰ¹ßģʽµÄ¸öÐÔ»¯²éѯ½á¹û¡£

¸öÐÔ»¯²éѯʹÓÃBigtable´æ´¢Ã¿¸öÓû§µÄÊý¾Ý¡£Ã¿¸öÓû§¶¼ÓÐÒ»¸öΨһµÄÓû§id£¬Ã¿¸öÓû§idºÍÒ»¸öÁÐÃû°ó¶¨¡£Ò»¸öµ¥¶ÀµÄÁÐ×å±»ÓÃÀ´´æ´¢¸÷ÖÖ ÀàÐ͵ÄÐÐΪ(±ÈÈ磬ÓиöÁÐ×å¿ÉÄÜÊÇÓÃÀ´´æ´¢ËùÓеÄWeb²éѯµÄ)¡£Ã¿¸öÊý¾ÝÏî¶¼±»ÓÃ×÷BigtableµÄʱ¼ä´Á£¬¼Ç¼ÁËÏàÓ¦µÄÓû§ÐÐΪ·¢ÉúµÄʱ¼ä¡£¸öÐÔ»¯ ²éѯʹÓÃÒÔBigtableΪ´æ´¢µÄMapReduceÈÎÎñÉú³ÉÓû§µÄÊý¾Ýͼ±í¡£ÕâЩÓû§Êý¾Ýͼ±íÓÃÀ´¸öÐÔ»¯µ±Ç°µÄ²éѯ½á¹û¡£

¸öÐÔ»¯²éѯµÄÊý¾Ý»á¸´ÖƵ½¼¸¸öBigtableµÄ¼¯ÈºÉÏ£¬ÕâÑù¾ÍÔöÇ¿ÁËÊý¾Ý¿ÉÓÃÐÔ£¬Í¬Ê±¼õÉÙÁËÓɿͻ§¶ËºÍBigtable¼¯Èº¼äµÄ¡°¾àÀ롱Ôì³ÉµÄÑÓ Ê±¡£¸öÐÔ»¯²éѯµÄ¿ª·¢ÍŶÓ×î³õ½¨Á¢ÁËÒ»¸ö»ùÓÚBigtableµÄ¡¢¡°¿Í»§²à¡±µÄ¸´ÖÆ»úÖÆÎªËùÓеĸ´ÖƽڵãÌṩһÖÂÐÔ±£ÕÏ¡£ÏÖÔÚµÄϵͳÔòʹÓÃÁËÄÚ½¨µÄ¸´ÖÆ×Ó ÏµÍ³¡£

¸öÐÔ»¯²éѯ´æ´¢ÏµÍ³µÄÉè¼ÆÔÊÐíÆäËüµÄÍŶÓÔÚËüÃÇ×Ô¼ºµÄÁÐÖмÓÈëеÄÓû§Êý¾Ý£¬Òò´Ë£¬ºÜ¶àGoogle·þÎñʹÓøöÐÔ»¯²éѯ´æ´¢ÏµÍ³±£´æÓû§¼¶µÄÅäÖòΠÊýºÍÉèÖá£ÔÚ¶à¸öÍŶÓÖ®¼ä·ÖÏíÊý¾ÝµÄ½á¹ûÊDzúÉúÁË´óÁ¿µÄÁÐ×塣ΪÁ˸üºÃµÄÖ§³ÖÊý¾Ý¹²Ïí£¬ÎÒÃǼÓÈëÁËÒ»¸ö¼òµ¥µÄÅä¶î»úÖÆ(alex×¢:quota£¬²Î¿¼AIXµÄÅä¶î»úÖÆ)ÏÞÖÆÓû§ÔÚ ¹²Ïí±íÖÐʹÓõĿռ䣻Åä¶îҲΪʹÓøöÐÔ»¯²éѯϵͳ´æ´¢Óû§¼¶ÐÅÏ¢µÄ²úÆ·ÍÅÌåÌṩÁ˸ôÀë»úÖÆ¡£

9 ¾­Ñé½Ìѵ

ÔÚÉè¼Æ¡¢ÊµÏÖ¡¢Î¬»¤ºÍÖ§³ÖBigtableµÄ¹ý³ÌÖУ¬ÎÒÃǵõ½Á˺ܶàÓÐÓõľ­ÑéºÍһЩÓÐȤµÄ½Ìѵ¡£

Ò»¸ö½ÌѵÊÇ£¬ÎÒÃÇ·¢ÏÖ£¬ºÜ¶àÀàÐ͵ĴíÎ󶼻ᵼÖ´óÐÍ·Ö²¼Ê½ÏµÍ³ÊÜËð£¬ÕâЩ´íÎó²»½ö½öÊÇͨ³£µÄÍøÂçÖжϡ¢»òÕߺܶà·Ö²¼Ê½Ð­ÒéÖÐÉèÏëµÄfail- stopÀàÐ͵ĴíÎó(alex×¢:fail-stop failture£¬Ö¸Ò»µ©ÏµÍ³fail¾Ístop£¬²»Êä³öÈκÎÊý¾Ý£»fail-fast failture£¬Ö¸fail²»ÂíÉÏstop£¬ÔÚ¶Ìʱ¼äÄÚreturn´íÎóÐÅÏ¢£¬È»ºóÔÙstop)¡£±ÈÈ磬ÎÒÃÇÓöµ½¹ýÏÂÃæÕâЩÀàÐ͵ĴíÎóµ¼ÖµÄÎÊÌâ:ÄÚ´æÊý¾ÝË𻵡¢ÍøÂçÖжϡ¢Ê±ÖÓÆ«²î¡¢»úÆ÷¹ÒÆð¡¢À©Õ¹µÄºÍ·Ç¶Ô³ÆµÄÍøÂç·ÖÇø(alex×¢:extended and asymmetric network partitions£¬²»Ã÷°×ʲôÒâ˼¡£partitionÒ²ÓÐÖжϵÄÒâ˼£¬µ«ÊÇÎÒ²»ÖªµÀÈçºÎÓÃÔÚÕâÀï)(ÕâÀïÓ¦¸Ã¾ÍÊÇÖ¸ÍøÂç·ÖÇø°É,partitionÔÚÕâÀïÃ÷ÏÔÊÇÃû´Ê,ËùÒÔ²»´ó»áÊÇ¡±Öжϡ±)¡¢ÎÒÃÇʹÓÃµÄÆäËüϵͳµÄ Bug(±ÈÈçChubby)¡¢GFSÅä¶îÒç³ö¡¢¼Æ»®Äںͼƻ®ÍâµÄÓ²¼þά»¤¡£ÎÒÃÇÔÚ½â¾öÕâЩÎÊÌâµÄ¹ý³ÌÖÐѧµ½Á˺ܶྭÑ飬ÎÒÃÇͨ¹ýÐÞ¸ÄЭÒéÀ´½â¾öÕâЩÎÊÌâ¡£ ±ÈÈ磬ÎÒÃÇÔÚÎÒÃǵÄRPC»úÖÆÖмÓÈëÁËChecksum¡£ÎÒÃÇÔÚÉè¼ÆÏµÍ³µÄ²¿·Ö¹¦ÄÜʱ£¬²»¶ÔÆäËü²¿·Ö¹¦ÄÜ×öÈκεļÙÉ裬ÕâÑùµÄ×ö·¨½â¾öÁËÆäËüµÄһЩÎÊÌâ¡£ ±ÈÈ磬ÎÒÃDz»ÔÙ¼ÙÉèÒ»¸öÌØ¶¨µÄChubby²Ù×÷Ö»·µ»Ø´íÎóÂ뼯ºÏÖеÄÒ»¸öÖµ¡£

ÁíÍâÒ»¸ö½ÌѵÊÇ£¬ÎÒÃÇÃ÷°×ÁËÔÚ³¹µ×Á˽âÒ»¸öÐÂÌØÐԻᱻÈçºÎʹÓÃÖ®ºó£¬ÔÙ¾ö¶¨ÊÇ·ñÌí¼ÓÕâ¸öÐÂÌØÐÔÊǷdz£ÖØÒªµÄ¡£±ÈÈ磬ÎÒÃÇ¿ªÊ¼¼Æ»®ÔÚÎÒÃǵÄAPIÖÐÖ§ ³Öͨ³£·½Ê½µÄÊÂÎñ´¦Àí¡£µ«ÊÇÓÉÓÚÎÒÃÇ»¹²»»áÂíÉÏÓõ½Õâ¸ö¹¦ÄÜ£¬Òò´Ë£¬ÎÒÃDz¢Ã»ÓÐȥʵÏÖËü¡£ÏÖÔÚ£¬BigtableÉÏÒѾ­ÓÐÁ˺ܶàµÄʵ¼ÊÓ¦Óã¬ÎÒÃÇ¿ÉÒÔ¼ì²é ËüÃÇÕæÊµµÄÐèÇó£»ÎÒÃÇ·¢ÏÖ£¬´ó¶àÊÇÓ¦ÓóÌÐò¶¼Ö»ÊÇÐèÒªµ¥¸öÐÐÉϵÄÊÂÎñ¹¦ÄÜ¡£ÓÐЩӦÓÃÐèÒª·Ö²¼Ê½µÄÊÂÎñ¹¦ÄÜ£¬·Ö²¼Ê½ÊÂÎñ´ó¶àÊýÇé¿öÏÂÓÃÓÚά»¤¶þ¼¶Ë÷Òý£¬Òò´Ë ÎÒÃÇÔö¼ÓÁËÒ»¸öÌØÊâµÄ»úÖÆÈ¥Âú×ãÕâ¸öÐèÇó¡£ÐµĻúÖÆÔÚͨÓÃÐÔÉϱȷֲ¼Ê½ÊÂÎñ²îºÜ¶à£¬µ«ÊÇËü¸üÓÐЧ(ÌØ±ðÊÇÔÚ¸üвÙ×÷µÄÉæ¼°ÉϰÙÐÐÊý¾ÝµÄʱºò)£¬¶øÇҷdz£·û ºÏÎÒÃǵġ°¿çÊý¾ÝÖÐÐÄ¡±¸´ÖÆ·½°¸µÄÓÅ»¯²ßÂÔ¡£

»¹ÓÐÒ»¸ö¾ßÓÐʵ¼ùÒâÒåµÄ¾­Ñé:ÎÒÃÇ·¢ÏÖϵͳ¼¶µÄ¼à¿Ø¶ÔBigtable·Ç³£ÖØÒª(±ÈÈ磬¼à¿ØBigtable×ÔÉíÒÔ¼°Ê¹ÓÃBigtableµÄ¿Í»§³Ì Ðò)¡£±ÈÈ磬ÎÒÃÇÀ©Õ¹ÁËÎÒÃǵÄRPCϵͳ£¬Òò´Ë¶ÔÓÚÒ»¸öRPCµ÷ÓõÄÀý×Ó£¬Ëü¿ÉÒÔÏêϸ¼Ç¼´ú±íÁËRPCµ÷ÓõĺܶàÖØÒª²Ù×÷¡£Õâ¸öÌØÐÔÔÊÐíÎÒÃǼì²âºÍÐÞÕýºÜ ¶àµÄÎÊÌ⣬±ÈÈçTabletÊý¾Ý½á¹¹ÉϵÄËøµÄÄÚÈÝ¡¢ÔÚÐ޸IJÙ×÷Ìύʱ¶ÔGFSµÄдÈë·Ç³£ÂýµÄÎÊÌâ¡¢ÒÔ¼°ÔÚMETADATA±íµÄTablet²»¿ÉÓÃʱ£¬¶Ô METADATA±íµÄ·ÃÎÊ¹ÒÆðµÄÎÊÌâ¡£¹ØÓÚ¼à¿ØµÄÓÃ;µÄÁíÍâÒ»¸öÀý×ÓÊÇ£¬Ã¿¸öBigtable¼¯Èº¶¼ÔÚChubbyÖÐ×¢²áÁË¡£Õâ¿ÉÒÔ°ïÖúÎÒÃǸú×ÙËùÓеļ¯ Ⱥ״̬¡¢¼à¿ØËüÃǵĴóС¡¢¼ì²é¼¯ÈºÔËÐеÄÎÒÃÇÈí¼þµÄ°æ±¾¡¢¼à¿Ø¼¯ÈºÁ÷ÈëÊý¾ÝµÄÁ÷Á¿£¬ÒÔ¼°¼ì²éÊÇ·ñÓÐÒý·¢¼¯Èº¸ßÑÓʱµÄDZÔÚÒòËØ¡£

¶ÔÎÒÃÇÀ´Ëµ£¬×¹óµÄ¾­ÑéÊǼòµ¥Éè¼ÆµÄ¼ÛÖµ¡£¿¼Âǵ½ÎÒÃÇϵͳµÄ´úÂëÁ¿(´óÔ¼100000ÐÐÉú²ú´úÂë(alex×¢:non-test code))£¬ÒÔ¼°Ëæ×Åʱ¼äµÄÍÆÒÆ£¬ÐµĴúÂëÒÔ¸÷ÖÖÄÑÒÔÔ¤Áϵķ½Ê½¼ÓÈëϵͳ£¬ÎÒÃÇ·¢ÏÖ¼ò½àµÄÉè¼ÆºÍ±àÂë¸øÎ¬»¤ºÍµ÷ÊÔ´øÀ´µÄ¾Þ´óºÃ´¦¡£ Õâ·½ÃæµÄÒ»¸öÀý×ÓÊÇÎÒÃǵÄTablet·þÎñÆ÷³ÉԱЭÒé¡£ÎÒÃǵÚÒ»°æµÄЭÒéºÜ¼òµ¥:Master·þÎñÆ÷ÖÜÆÚÐԵĺÍTablet·þÎñÆ÷Ç©¶©×âÔ¼£¬Tablet ·þÎñÆ÷ÔÚ×âÔ¼¹ýÆÚµÄʱºòKillµô×Ô¼ºµÄ½ø³Ì¡£²»ÐÒµÄÊÇ£¬Õâ¸öЭÒéÔÚÓöµ½ÍøÂçÎÊÌâʱ»á´ó´ó½µµÍϵͳµÄ¿ÉÓÃÐÔ£¬Ò²»á´ó´óÔö¼ÓMaster·þÎñÆ÷»Ö¸´µÄʱ¼ä¡£ ÎÒÃǶà´ÎÖØÐÂÉè¼ÆÕâ¸öЭÒ飬ֱµ½ËüÄܹ»ºÜºÃµÄ´¦ÀíÉÏÊöÎÊÌâ¡£µ«ÊÇ£¬¸ü²»ÐÒµÄÊÇ£¬×îÖÕµÄЭÒé¹ýÓÚ¸´ÔÓÁË£¬²¢ÇÒÒÀÀµÒ»Ð©ChubbyºÜÉÙ±»Óõ½µÄÌØÐÔ¡£ÎÒÃÇ·¢ ÏÖÎÒÃÇÀË·ÑÁË´óÁ¿µÄʱ¼äÔÚµ÷ÊÔһЩ¹Å¹ÖµÄÎÊÌâ(alex×¢:obscure corner cases)£¬ÓÐЩÊÇBigtable´úÂëµÄÎÊÌ⣬ÓÐЩÊÂChubby´úÂëµÄÎÊÌâ¡£×îºó£¬ÎÒÃÇÖ»ºÃ·ÏÆúÁËÕâ ¸öЭÒ飬֨ÐÂÖÆ¶©ÁËÒ»¸öеġ¢¸ü¼òµ¥¡¢Ö»Ê¹ÓÃChubby×î¹ã·ºÊ¹ÓõÄÌØÐÔµÄЭÒé¡£

10 Ïà¹Ø¹¤×÷

Boxwood¡¾24¡¿ÏîÄ¿µÄÓÐЩ×é¼þÔÚijЩ·½ÃæºÍChubby¡¢GFSÒÔ¼°BigtableÀàËÆ£¬ÒòΪËüÒ²ÌṩÁËÖîÈç·Ö²¼Ê½Ð­Òé¡¢Ëø¡¢·Ö²¼Ê½ Chunk´æ´¢ÒÔ¼°·Ö²¼Ê½B-tree´æ´¢¡£BoxwoodÓëGoogleµÄijЩ×é¼þ¾¡¹Ü¹¦ÄÜÀàËÆ£¬µ«ÊÇBoxwoodµÄ×é¼þÌṩ¸üµ×²ãµÄ·þÎñ¡£ BoxwoodÏîÄ¿µÄÄ¿µÄÊÇÌṩ´´½¨ÀàËÆÎļþϵͳ¡¢Êý¾Ý¿âµÈ¸ß¼¶·þÎñµÄ»ù´¡¹¹¼þ£¬¶øBigtableµÄÄ¿µÄÊÇÖ±½ÓΪ¿Í»§³ÌÐòµÄÊý¾Ý´æ´¢ÐèÇóÌṩ֧³Ö¡£

ÏÖÔÚÓв»ÉÙÏîÄ¿ÒѾ­¹¥¿ËÁ˺ܶàÄÑÌ⣬ʵÏÖÁËÔÚ¹ãÓòÍøÉϵķֲ¼Ê½Êý¾Ý´æ´¢»òÕ߸߼¶·þÎñ£¬Í¨³£ÊÇ¡°Internet¹æÄ£¡±µÄ¡£ÕâÆäÖаüÀ¨ÁË·Ö²¼Ê½µÄ Hash±í£¬ÕâÏ×÷ÓÉһЩÀàËÆCAN¡¾29¡¿¡¢Chord¡¾32¡¿¡¢Tapestry¡¾37¡¿ºÍPastry¡¾30¡¿µÄÏîÄ¿ÂÊÏÈ·¢Æð¡£ÕâЩϵͳµÄÖ÷Òª¹Ø ×¢µãºÍBigtable²»Í¬£¬±ÈÈçÓ¦¶Ô¸÷ÖÖ²»Í¬µÄ´«Êä´ø¿í¡¢²»¿ÉÐŵÄЭ×÷Õß¡¢Æµ·±µÄ¸ü¸ÄÅäÖõȣ»ÁíÍ⣬ȥÖÐÐÄ»¯ºÍByzantineÔÖÄÑÈßÓà(alex×¢:Byzantine£¬¼´°ÝռͥʽµÄ·ç¸ñ£¬Ò²¾ÍÊÇÒ»ÖÖ¸´ÔÓ¹îÃØµÄ·ç¸ñ¡£ Byzantine Fault±íʾ:¶ÔÓÚ´¦ÀíÀ´Ëµ£¬µ±·¢´íÎóʱ´¦ÀíÆ÷²¢²»Í£Ö¹½ÓÊÕÊä³ö£¬Ò²²»Í£Ö¹Êä³ö£¬´í¾Í´íÁË£¬Ö»¹ÜË㣬¶ÔÓÚÕâÖÖ´íÎóÀ´Ëµ£¬ÕâÑù¿ÉÕæÊǹ»Âé·³ÁË£¬ÒòΪÓû§¸ù ±¾²»ÖªµÀ´íÎó·¢ÉúÁË£¬Ò²¾Í¸ù±¾Ì¸²»ÉÏ´¦Àí´íÎóÁË¡£ÔÚ¶à´¦ÀíÆ÷µÄÇé¿öÏ£¬ÕâÖÖ´íÎó¿ÉÄܵ¼ÖÂÔËËãÕýÈ·½á¹ûµÄ´¦ÀíÆ÷Ò²²úÉú´íÎóµÄ½á¹û£¬ÕâÑùÊÂÇé¾Í¸üÂé·³ÁË£¬ËùÒÔ Ò»¶¨Òª±ÜÃâ´¦ÀíÆ÷²úÉúÕâÖÖ´íÎó¡£)Ò²²»ÊÇBigtableµÄÄ¿µÄ¡£

¾ÍÌṩ¸øÓ¦ÓóÌÐò¿ª·¢Õߵķֲ¼Ê½Êý¾Ý´æ´¢Ä£ÐͶøÑÔ£¬ÎÒÃÇÏàÐÅ£¬·Ö²¼Ê½B-Tree»òÕß·Ö²¼Ê½Hash±íÌṩµÄKey-value pair·½Ê½µÄÄ£ÐÍÓкܴóµÄ¾ÖÏÞÐÔ¡£Key-value pairÄ£ÐÍÊǺÜÓÐÓõÄ×é¼þ£¬µ«ÊÇËüÃDz»Ó¦¸ÃÊÇÌṩ¸ø¿ª·¢ÕßΨһµÄ×é¼þ¡£ÎÒÃÇÑ¡ÔñµÄÄ£ÐÍÌṩµÄ×é¼þ±È¼òµ¥µÄKey-value pair·á¸»µÄ¶à£¬ËüÖ§³ÖÏ¡ÊèµÄ¡¢°ë½á¹¹»¯µÄÊý¾Ý¡£ÁíÍ⣬ËüÒ²×ã¹»¼òµ¥£¬Äܹ»¸ßЧµÄ´¦ÀíÆ½ÃæÎļþ£»ËüÒ²ÊÇ͸Ã÷µÄ(ͨ¹ý¾Ö²¿ÐÔȺ×é)£¬ÔÊÐíÎÒÃǵÄʹÓÃÕß¶Ôϵ ͳµÄÖØÒªÐÐΪ½øÐе÷Õû¡£

ÓÐЩÊý¾Ý¿â³§ÉÌÒѾ­¿ª·¢³öÁ˲¢ÐеÄÊý¾Ý¿âϵͳ£¬Äܹ»´æ´¢º£Á¿µÄÊý¾Ý¡£OracleµÄRAC¡¾27¡¿Ê¹Óù²Ïí´ÅÅÌ´æ´¢Êý¾Ý(BigtableʹÓà GFS)£¬²¢ÇÒÓÐÒ»¸ö·Ö²¼Ê½µÄËø¹ÜÀíϵͳ(BigtableʹÓÃChubby)¡£IBM²¢Ðа汾µÄDB2¡¾4¡¿»ùÓÚÒ»ÖÖÀàËÆÓÚBigtableµÄ¡¢²»¹²Ïí Èκζ«Î÷µÄ¼Ü¹¹(a shared-nothing architecture)¡¾33¡¿¡£Ã¿¸öDB2µÄ·þÎñÆ÷¶¼¸ºÔð´¦Àí´æ´¢ÔÚÒ»¸ö¹ØÏµÐÍÊý¾Ý¿âÖеıíÖеÄÐеÄÒ»¸ö×Ó¼¯¡£ÕâЩ²úÆ·¶¼ÌṩÁËÒ»¸ö´øÓÐÊÂÎñ¹¦ÄÜµÄ ÍêÕûµÄ¹ØÏµÄ£ÐÍ¡£

BigtableµÄ¾Ö²¿ÐÔȺ×éÌṩÁËÀàËÆÓÚ»ùÓÚÁеĴ洢·½°¸ÔÚѹËõºÍ´ÅÅ̶ÁÈ¡·½Ãæ¾ßÓеÄÐÔÄÜ£»ÕâЩÒÔÁжø²»ÊÇÐеķ½Ê½×éÖ¯Êý¾ÝµÄ·½°¸°üÀ¨C- Store¡¾1£¬34¡¿¡¢ÉÌÒµ²úÆ·Sybase IQ¡¾15£¬36¡¿¡¢SenSage¡¾31¡¿¡¢KDB+¡¾22¡¿£¬ÒÔ¼°MonetDB/X100¡¾38¡¿µÄColumnDM´æ´¢²ã¡£ÁíÍâÒ»ÖÖÔÚÆ½ÃæÎļþÖÐ Ìṩ´¹Ö±ºÍˮƽÊý¾Ý·ÖÇø¡¢²¢ÇÒÌṩºÜºÃµÄÊý¾ÝѹËõÂʵÄϵͳÊÇAT&TµÄDaytonaÊý¾Ý¿â¡¾19¡¿¡£¾Ö²¿ÐÔȺ×é²»Ö§³ÖAilamakiϵͳÖÐÃè ÊöµÄCPU»º´æ¼¶±ðµÄÓÅ»¯¡¾2¡¿¡£

Bigtable²ÉÓÃmemtableºÍSSTable´æ´¢¶Ô±íµÄ¸üÐµķ½·¨ÓëLog-Structured Merge Tree¡¾26¡¿´æ´¢Ë÷ÒýÊý¾Ý¸üÐµķ½·¨ÀàËÆ¡£ÕâÁ½¸öϵͳÖУ¬ÅÅÐòµÄÊý¾ÝÔÚдÈëµ½´ÅÅÌǰ¶¼ÏÈ´æ·ÅÔÚÄÚ´æÖУ¬¶ÁÈ¡²Ù×÷±ØÐë´ÓÄÚ´æºÍ´ÅÅÌÖкϲ¢Êý¾Ý²úÉú×îÖÕµÄ ½á¹û¼¯¡£

C-StoreºÍBigtableÓкܶàÏàËÆµã:Á½¸öϵͳ¶¼²ÉÓÃShared-nothing¼Ü¹¹£¬¶¼ÓÐÁ½ÖÖ²»Í¬µÄÊý¾Ý½á¹¹£¬Ò»ÖÖÓÃÓÚµ±Ç°µÄд²Ù ×÷£¬ÁíÍâÒ»ÖÖ´æ·Å¡°³¤Ê±¼äʹÓá±µÄÊý¾Ý£¬²¢ÇÒÌṩһÖÖ»úÖÆÔÚÁ½¸ö´æ´¢½á¹¹¼ä°áÔËÊý¾Ý¡£Á½¸öϵͳÔÚAPI½Ó¿Úº¯ÊýÉÏÓкܴóµÄ²»Í¬:C-Store²Ù×÷¸üÏñ¹Ø ϵÐÍÊý¾Ý¿â£¬¶øBigtableÌṩÁ˵Ͳã´ÎµÄ¶Áд²Ù×÷½Ó¿Ú£¬²¢ÇÒÉè¼ÆµÄÄ¿±êÊÇÄܹ»Ö§³Öÿ̨·þÎñÆ÷ÿÃëÊýǧ´Î²Ù×÷¡£C-StoreͬʱҲÊǸö¡°¶ÁÐÔÄÜÓÅ»¯ µÄ¹ØÏµÐÍÊý¾Ý¿â¡±£¬¶øBigtable¶Ô¶ÁºÍдÃܼ¯ÐÍÓ¦Óö¼ÌṩÁ˺ܺõÄÐÔÄÜ¡£

BigtableÒ²±ØÐë½â¾öËùÓеÄShared-nothingÊý¾Ý¿âÐèÒªÃæ¶ÔµÄ¡¢ÀàÐÍÏàËÆµÄһЩ¸ºÔغÍÄÚ´æ¾ùºâ·½ÃæµÄÄÑÌâ(±ÈÈ磬 ¡¾11£¬35¡¿)¡£ÎÒÃǵÄÎÊÌâÔÚijÖ̶ֳÈÉϼòµ¥Ò»Ð©:(1)ÎÒÃDz»ÐèÒª¿¼ÂÇͬһ·ÝÊý¾Ý¿ÉÄÜÓжà¸ö¿½±´µÄÎÊÌ⣬ͬһ·ÝÊý¾Ý¿ÉÄÜÓÉÓÚÊÓͼ»òË÷ÒýµÄÔ­ÒòÒÔ²»Í¬µÄ ÐÎʽ±íÏÖ³öÀ´£»(2)ÎÒÃÇÈÃÓû§¾ö¶¨ÄÄЩÊý¾ÝÓ¦¸Ã·ÅÔÚÄÚ´æÀï¡¢ÄÄЩ·ÅÔÚ´ÅÅÌÉÏ£¬¶ø²»ÊÇÓÉϵͳ¶¯Ì¬µÄÅжϣ»(3)ÎÒÃǵÄϵͳÖÐûÓи´ÔӵIJéѯִÐлòÓÅ»¯¹¤ ×÷¡£

11 ½áÂÛ

ÎÒÃÇÒѾ­½²ÊöÍêÁËBigtable£¬GoogleµÄÒ»¸ö·Ö²¼Ê½µÄ½á¹¹»¯Êý¾Ý´æ´¢ÏµÍ³¡£BigtableµÄ¼¯Èº´Ó2005Äê4Ô¿ªÊ¼ÒѾ­Í¶ÈëʹÓÃÁË£¬ ÔÚ´Ë֮ǰ£¬ÎÒÃÇ»¨ÁË´óÔ¼7ÈËÄêÉè¼ÆºÍʵÏÖÕâ¸öϵͳ¡£½ØÖ¹µ½2006Äê4Ô£¬ÒѾ­Óг¬¹ý60¸öÏîĿʹÓÃBigtableÁË¡£ÎÒÃǵÄÓû§¶ÔBigtableÌá ¹©µÄ¸ßÐÔÄܺ͸߿ÉÓÃÐÔºÜÂúÒâ£¬Ëæ×Åʱ¼äµÄÍÆÒÆ£¬ËûÃÇ¿ÉÒÔ¸ù¾Ý×Ô¼ºµÄϵͳ¶Ô×ÊÔ´µÄÐèÇóÔö¼ÓÇé¿ö£¬Í¨¹ý¼òµ¥µÄÔö¼Ó»úÆ÷£¬À©Õ¹ÏµÍ³µÄ³ÐÔØÄÜÁ¦¡£

ÓÉÓÚBigtableÌṩµÄ±à³Ì½Ó¿Ú²¢²»³£¼û£¬Ò»¸öÓÐȤµÄÎÊÌâÊÇ:ÎÒÃǵÄÓû§ÊÊӦеĽӿÚÓжàÄÑ£¿ÐµÄʹÓÃÕßÓÐʱ²»Ì«È·¶¨Ê¹ÓÃBigtable½Ó¿Ú µÄ×î¼Ñ·½·¨£¬ÌرðÊÇÔÚËûÃÇÒѾ­Ï°¹ßÓÚʹÓÃÖ§³ÖͨÓÃÊÂÎñµÄ¹ØÏµÐÍÊý¾Ý¿âµÄ½Ó¿ÚµÄÇé¿öÏ¡£µ«ÊÇ£¬GoogleÄÚ²¿ºÜ¶à²úÆ·¶¼³É¹¦µÄʹÓÃÁËBigtableµÄÊ ʵ֤Ã÷ÁË£¬ÎÒÃǵÄÉè¼ÆÔÚʵ¼ùÖÐÐÐÖ®ÓÐЧ¡£

ÎÒÃÇÏÖÔÚÕýÔÚ¶ÔBigtable¼ÓÈëһЩеÄÌØÐÔ£¬±ÈÈçÖ§³Ö¶þ¼¶Ë÷Òý£¬ÒÔ¼°Ö§³Ö¶àMaster½ÚµãµÄ¡¢¿çÊý¾ÝÖÐÐĸ´ÖƵÄBigtableµÄ»ù´¡¹¹ ¼þ¡£ÎÒÃÇÏÖÔÚÒѾ­¿ªÊ¼½«Bigtable²¿ÊðΪ·þÎñ¹©ÆäËüµÄ²úÆ·ÍŶÓʹÓã¬ÕâÑù²»Í¬µÄ²úÆ·ÍŶӾͲ»ÐèҪά»¤ËûÃÇ×Ô¼ºµÄBigtable¼¯ÈºÁË¡£Ëæ×Å·þÎñ¼¯ ȺµÄÀ©Õ¹£¬ÎÒÃÇÐèÒªÔÚBigtableϵͳÄÚ²¿´¦Àí¸ü¶àµÄ¹ØÓÚ×ÊÔ´¹²ÏíµÄÎÊÌâÁË¡¾3£¬5¡¿¡£

×îºó£¬ÎÒÃÇ·¢ÏÖ£¬½¨ÉèGoogle×Ô¼ºµÄ´æ´¢½â¾ö·½°¸´øÀ´Á˺ܶàÓÅÊÆ¡£Í¨¹ýΪBigtableÉè¼ÆÎÒÃÇ×Ô¼ºµÄÊý¾ÝÄ£ÐÍ£¬ÊÇÎÒÃǵÄϵͳ¼«¾ßÁé»îÐÔ¡£Áí Í⣬ÓÉÓÚÎÒÃÇÈ«Ãæ¿ØÖÆ×ÅBigtableµÄʵÏÖ¹ý³Ì£¬ÒÔ¼°BigtableʹÓõ½µÄÆäËüµÄGoogleµÄ»ù´¡¹¹¼þ£¬Õâ¾ÍÒâζ×ÅÎÒÃÇÔÚϵͳ³öÏÖÆ¿¾±»òЧÂÊµÍ ÏµÄÇé¿öʱ£¬Äܹ»¿ìËٵĽâ¾öÕâЩÎÊÌâ¡£

   
3049 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

MySQLË÷Òý±³ºóµÄÊý¾Ý½á¹¹
MySQLÐÔÄܵ÷ÓÅÓë¼Ü¹¹Éè¼Æ
SQL ServerÊý¾Ý¿â±¸·ÝÓë»Ö¸´
ÈÃÊý¾Ý¿â·ÉÆðÀ´ 10´óDB2ÓÅ»¯
oracleµÄÁÙʱ±í¿Õ¼äдÂú´ÅÅÌ
Êý¾Ý¿âµÄ¿çƽ̨Éè¼Æ

²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿â
¸ß¼¶Êý¾Ý¿â¼Ü¹¹Éè¼ÆÊ¦
HadoopÔ­ÀíÓëʵ¼ù
Oracle Êý¾Ý²Ö¿â
Êý¾Ý²Ö¿âºÍÊý¾ÝÍÚ¾ò
OracleÊý¾Ý¿â¿ª·¢Óë¹ÜÀí

GE Çø¿éÁ´¼¼ÊõÓëʵÏÖÅàѵ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Nodejs¸ß¼¶Ó¦Óÿª·¢
ÖÐÊ¢Òæ»ª ׿Խ¹ÜÀíÕß±ØÐë¾ß±¸µÄÎåÏîÄÜÁ¦
ijÐÅÏ¢¼¼Êõ¹«Ë¾ PythonÅàѵ
ij²©²ÊITϵͳ³§ÉÌ Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
ÖйúÓÊ´¢ÒøÐÐ ²âÊÔ³ÉÊì¶ÈÄ£Ðͼ¯³É(TMMI)
ÖÐÎïÔº ²úÆ·¾­ÀíÓë²úÆ·¹ÜÀí