ÕªÒª
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µÄ»ù´¡¹¹¼þ£¬Õâ¾ÍÒâζ×ÅÎÒÃÇÔÚϵͳ³öÏÖÆ¿¾±»òЧÂʵÍ
ϵÄÇé¿öʱ£¬Äܹ»¿ìËٵĽâ¾öÕâЩÎÊÌâ¡£
|