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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
HBase - ²¢·¢¿ØÖÆ»úÖÆ½âÎö
 
  3332  次浏览      34
 2018-8-24
 
±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚÍøÒ×ÔÆ£¬½éÉÜÁËHBaseµÄÁ½ÖÖ»ùÓÚËøÊµÏÖµÄͬ²½»úÖÆ£¬ÐÐËøµÄʵÏÖÒÔ¼°¸÷ÖÖ¶ÁÐ´ËøµÄÓ¦Óó¡¾°¡£

×÷Ϊһ¿îÓÅÐãµÄ·ÇÄÚ´æÊý¾Ý¿â£¬HBaseºÍ´«Í³Êý¾Ý¿âÒ»ÑùÌṩÁËÊÂÎñµÄ¸ÅÄֻÊÇHBaseµÄÊÂÎñÊÇÐм¶ÊÂÎñ£¬¿ÉÒÔ±£Ö¤Ðм¶Êý¾ÝµÄÔ­×ÓÐÔ¡¢Ò»ÖÂÐÔ¡¢¸ôÀëÐÔÒÔ¼°³Ö¾ÃÐÔ£¬¼´Í¨³£Ëù˵µÄACIDÌØÐÔ¡£ÎªÁËʵÏÖÊÂÎñÌØÐÔ£¬HBase²ÉÓÃÁ˸÷ÖÖ²¢·¢¿ØÖƲßÂÔ£¬°üÀ¨¸÷ÖÖËø»úÖÆ¡¢MVCC»úÖÆµÈ¡£±¾ÎÄÊ×ÏȽéÉÜHBase µÄÁ½ÖÖ»ùÓÚËøÊµÏÖµÄͬ²½»úÖÆ£¬ÔÙ·Ö±ðÏêϸ½éÉÜÐÐËøµÄʵÏÖÒÔ¼°¸÷ÖÖ¶ÁÐ´ËøµÄÓ¦Óó¡¾°£¬×îºóÖØµã½éÉÜMVCC»úÖÆµÄʵÏÖ²ßÂÔ¡£

HBaseͬ²½»úÖÆ

HBaseÌṩÁËÁ½ÖÖͬ²½»úÖÆ£¬Ò»ÖÖÊÇ»ùÓÚCountDownLatchʵÏֵĻ¥³âËø£¬³£¼ûµÄʹÓó¡¾°ÊÇÐÐÊý¾Ý¸üÐÂʱËù³ÖµÄÐÐËø¡£ÁíÒ»ÖÖÊÇ»ùÓÚReentrant ReadWriteLock ʵÏֵĶÁÐ´Ëø£¬¸ÃËø¿ÉÒÔ¸øÁÙ½ç×ÊÔ´¼ÓÉÏread-lock »òÕßwrite-lock¡£ÆäÖÐread-lockÔÊÐí²¢·¢µÄ¶ÁÈ¡²Ù×÷£¬¶øwrite-lockÊÇÍêÈ«µÄ»¥³â²Ù×÷¡£

CountDownLatch

JavaÖУ¬CountDownLatchÊÇÒ»¸öͬ²½¸¨ÖúÀ࣬ÔÚÍê³ÉÒ»×éÆäËûÏß³ÌÖ´ÐеIJÙ×÷֮ǰ£¬ËüÔÊÐíÒ»¸ö»ò¶à¸öÏß³Ì×èÈûµÈ´ý¡£CountDownLatchʹÓøø¶¨µÄ¼ÆÊý³õʼ»¯£¬ºËÐĵÄÁ½¸ö·½·¨ÊÇcountDown()ºÍawait () £¬Ç°Õß¿ÉÒÔʵÏÖ¸ø¶¨¼ÆÊýµ¹ÊýÒ»´Î£¬ºóÕßÊǵȴý¼ÆÊýµ¹Êýµ½0£¬Èç¹ûûÓе½´ï0£¬¾ÍÒ»Ö±×èÈûµÈ´ý¡£ ½áºÏḬ̈߳²È«µÄmapÈÝÆ÷£¬»ùÓÚtest-and-set»úÖÆ£¬CountDownLatch¿ÉÒÔʵÏÖ»ù±¾µÄ»¥³âËø£¬Ô­ÀíÈçÏ£º

1. ³õʼ»¯£ºCountDownLatch³õʼ»¯¼ÆÊýΪ1

2. test¹ý³Ì£ºÏß³ÌÊ×ÏȽ«ÁÙ½ç×ÊÔ´×÷Ϊkey£¬latch×÷Ϊvalue³¢ÊÔ²åÈëḬ̈߳²È«µÄmapÖС£Èç¹û·µ»ØÊ§°Ü£¬±íʾÆäËûÏß³ÌÒѾ­³ÖÓÐÁ˸ÃËø£¬µ÷ÓÃawait·½·¨×èÈûµ½¸ÃlatchÉÏ£¬µÈ´ýÆäËûÏß³ÌÊÍ·ÅËø£»

3. set¹ý³Ì£ºÈç¹û·µ»Ø³É¹¦£¬¾Í±íʾÒѾ­³ÖÓиÃËø£¬ÆäËûÏ̱߳ØÈ»²åÈëʧ°Ü¡£³ÖÓиÃËøÖ®ºóÖ´Ðи÷ÖÖ²Ù×÷£¬Ö´ÐÐÍê³ÉÖ®ºóÊÍ·ÅËø£¬ÊÍ·ÅËøÊ×ÏȽ«mapÖжÔÓ¦µÄKeyValueÒÆ³ý£¬ÔÙµ÷ÓÃlatchµÄcountDown·½·¨£¬¸Ã·½·¨»á½«¼ÆÊý¼õ1£¬±äΪ0Ö®ºó¾Í»á»½ÐÑÆäËû×èÈûÏ̡߳£

ReentrantReadWriteLock

¶ÁÐ´Ëø·ÖΪ¶ÁËø¡¢Ð´Ëø£¬ºÍ»¥³âËøÏà±È¿ÉÒÔÌṩ¸ü¸ßµÄ²¢ÐÐÐÔ¡£¶ÁËøÔÊÐí¶à¸öÏß³ÌͬʱÒÔ¶ÁģʽռÓÐËø×ÊÔ´£¬¶øÐ´ËøÖ»ÄÜÓÉÒ»¸öÏß³ÌÒÔдģʽռÓС£Èç¹û¶ÁÐ´ËøÊÇд¼ÓËø×´Ì¬£¬ÔÚËøÊÍ·Å֮ǰ£¬ËùÓÐÊÔͼ¶Ô¸ÃËøÕ¼ÓеÄÏ̶߳¼»á±»×èÈû£»Èç¹ûÊǶÁ¼ÓËø×´Ì¬£¬ËùÓÐÆäËû¶Ô¸ÃËøµÄ¶ÁÇëÇ󶼻ᲢÐÐÖ´ÐУ¬µ«ÊÇдÇëÇó»á±»×èÈû¡£ÏÔ¶øÒ×¼û£¬¶ÁÐ´ËøÊʺÏÓÚ¶Á¶àдÉٵij¡¾°£¬Ò²ÒòΪ¶ÁËø¿ÉÒÔ¹²Ïí£¬Ð´ËøÖ»ÄÜij¸öÏ̶߳ÀÕ¼£¬¶ÁÐ´ËøÒ²±»³ÆÎª¹²Ïí£­¶ÀÕ¼Ëø£¬¼´¾­³£¼ûµ½µÄSËøºÍXËø¡£

JavaÖУ¬ReentrantReadWriteLockÊǶÁÐ´ËøµÄʵÏÖÀ࣬¸ÃÀàÖÐÓÐÁ½¸ö·½·¨readLock()ºÍwriteLock()·Ö±ðÓÃÀ´»ñÈ¡¶ÁËøºÍÐ´Ëø¡£

HBaseÖÐÐÐËøµÄ¾ßÌåʵÏÖ

HBase²ÉÓÃÐÐËøÊµÏÖ¸üеÄÔ­×ÓÐÔ£¬ÒªÃ´È«²¿¸üгɹ¦£¬ÒªÃ´Ê§°Ü¡£ËùÓжÔHBaseÐм¶Êý¾ÝµÄ¸üвÙ×÷£¬¶¼ÐèÒªÊ×ÏÈ»ñÈ¡¸ÃÐеÄÐÐËø£¬²¢ÇÒÔÚ¸üÐÂÍê³ÉÖ®ºóÊÍ·Å£¬µÈ´ýÆäËûÏ̻߳ñÈ¡¡£Òò´Ë£¬HBaseÖжÔͬһÐÐÊý¾ÝµÄ¸üвÙ×÷¶¼ÊÇ´®ÐвÙ×÷¡£

ÐÐËøÏà¹ØÊý¾Ý½á¹¹

ÈçÉÏͼËùʾ£¬HBaseÖÐÐÐËøÏà¹ØµÄÖ÷Òª½á¹¹ÓÐRowLockºÍRowLockContextÁ½¸öÀ࣬ÆäÖÐRowLockContextÀà´æ´¢ÐÐËøÏà¹ØÉÏÏÂÎÄÐÅÏ¢£¬°üÀ¨³ÖËøÏ̡߳¢±»Ëø¶ÔÏóÒÔ¼°¿ÉÒÔʵÏÖ»¥³âËøµÄCountDownLatch¶ÔÏóµÈµÈ£¬RowLockContextÊÇRowLockµÄÒ»¸öÊôÐÔ£¬³ý´ËÖ®Í⣬RowLock»¹°üº¬±íÕ÷ÐÐËøÊÇ·ñÒѾ­ÊͷŵÄrelease×ֶΡ£¾ßÌå×Ö¶ÎÈçÏÂͼËùʾ£º

¸üмÓËøÁ÷³Ì

1. Ê×ÏÈʹÓÃrowkeyÒÔ¼°×ÔÉíÏ̶߳ÔÏóÉú³ÉÐÐËøÉÏÏÂÎÄRowLockContext¶ÔÏó

2. ÔÙ½«rowkey×÷Ϊkey£¬RowLockContext¶ÔÏó×÷Ϊvalueµ÷ÓÃputIfAbsert·½·¨Ð´ÈëÈ«¾ÖmapÖС£keyµÄΨһÐÔ£¬±£Ö¤mapÖÐ×î¶àÖ»ÓÐÒ»¸öRowLockContext¡£putIfAbsent·½·¨»á·µ»ØÒ»¸öexistingContext¶ÔÏ󣬸öÔÏó±íʾkey²åÈëǰmapÖжÔÓ¦¸ÃkeyµÄvalueÖµ£¬¸ù¾ÝexistingContextÊÇ·ñΪnull¡¢ÊÇ·ñÊÇ×ÔÉíÏ̴߳´½¨£¬¿ÉÒÔ·ÖΪÈçÏÂÈýÖÖÇé¿ö£º

£¨1£©existingContext¶ÔÏóΪnull£¬±íʾ¸ÃÐÐËøÃ»Óб»ÆäËûÏ̳߳ÖÓУ¬¿ÉÒÔ¸ù¾Ý´´½¨µÄÉÏÏÂÎĶÔÏó³ÖÓиÃËø

£¨2£©existingContextÊÇ×ÔÉíÏ̴߳´½¨£¬±íʾ×ÔÉíÏß³ÌÒѾ­ÔÙ´´½¨RowLockContext¶ÔÏó£¬Ö±½ÓʹÓôæÔÚµÄRowLockContext¶ÔÏó³ÖÓиÃËø¡£ÕâÖÖÇé¿ö»á³öÏÖÔÚÅúÁ¿¸üÐÂÏß³ÌÖУ¬Ò»´ÎÅúÁ¿¸üпÉÄÜǰǰºóºó¶ÔijһÐÐÊý¾Ý¸üжà´Î£¬ÐèÒª¶à´Î³ÖÓиÃÐÐÊý¾ÝµÄÐÐËø£¬ÔÚHBaseÖÐÊDZ»ÔÊÐíµÄ¡£

£¨3£©existingContextÊÇÆäËûÏ̴߳´½¨£¬Ôò¸ÃÏ̻߳á×èÈûÔÚ´ËÉÏÏÂÎÄËù³ÖËøÉÏ£¬Ö±ÖÁËù³ÖÐÐËø±»ÊÍ·Å»òÕß×èÈû³¬Ê±¡£Èç¹ûËù³ÖÐÐËøÊÍ·Å£¬¸ÃÏ̻߳áÖØÐ¾ºÕùдȫ¾Ömap£¬Ò»µ©¾ºÕù³É¹¦¾Í³ÖÓиÃÐÐËø£¬·ñÔò¼ÌÐø×èÈû¡£¶øÈç¹û×èÈû³¬Ê±£¬¾Í»áÅ׳öÒì³££¬²»»áÔÙÈ¥¾ºÕù¸ÃËø¡£

ÊÍ·ÅÁ÷³Ì

ÔÚÏ̸߳üÐÂÍê³É²Ù×÷Ö®ºó£¬±ØÐëÔÚfinnally·½·¨ÖÐÖ´ÐÐÐÐËøÊͷŲÙ×÷£¬¼´µ÷ÓÃrowLock.release()·½·¨£¬¸Ã·½·¨Ö÷ÒªÖ´ÐÐÈçÏÂÁ½¸ö²Ù×÷£º

1. ´ÓlockedRowsÕâ¸öÈ«¾ÖmapÖн«¸Ãrow¶ÔÓ¦µÄRowLockContextÒÆ³ý

2. µ÷ÓÃlatch.countDown()·½·¨£¬»½ÐÑÆäËû×èÈûÔÚawaitÉϵȴý¸ÃÐÐËøµÄÏß³Ì

HBaseÖжÁÐ´ËøµÄʹÓÃ

HBaseÖгýÁËʹÓû¥³âËøÊµÏÖÐм¶Êý¾ÝµÄÒ»ÖÂÐÔÖ®Í⣬ҲʹÓöÁÐ´ËøÊµÏÖstore¼¶±ð²Ù×÷ÒÔ¼°region¼¶±ð²Ù×÷µÄ²¢·¢¿ØÖÆ¡£±ÈÈ磺

1. Region¸üжÁÐ´Ëø£ºHBaseÔÚÖ´ÐÐÊý¾Ý¸üвÙ×÷֮ǰ¶¼»á¼ÓÒ»°ÑRegion¼¶±ðµÄ¶ÁËø£¨¹²ÏíËø£©£¬ËùÓиüвÙ×÷Ïß³ÌÖ®¼ä²»»áÏ໥×èÈû£»È»¶ø£¬HBaseÔÚ½«memstoreÊý¾ÝÂäÅÌʱ»á¼ÓÒ»°ÑRegion¼¶±ðµÄÐ´Ëø£¨¶ÀÕ¼Ëø£©¡£Òò´Ë£¬ÔÚmemstoreÊý¾ÝÂäÅÌʱ£¬Êý¾Ý¸üвÙ×÷Ị̈߳¨Put²Ù×÷¡¢Append²Ù×÷¡¢Delete²Ù×÷£©¶¼»á×èÈûµÈ´ýÖÁ¸ÃÐ´ËøÊÍ·Å¡£

2. Region Close±£»¤Ëø£ºHBaseÔÚÖ´ÐÐclose²Ù×÷ÒÔ¼°split²Ù×÷ʱ»áÊ×ÏȼÓÒ»°ÑRegion¼¶±ðµÄÐ´Ëø£¨¶ÀÕ¼Ëø£©£¬×èÈû¶ÔregionµÄÆäËû²Ù×÷£¬±ÈÈçcompact²Ù×÷¡¢flush²Ù×÷ÒÔ¼°ÆäËû¸üвÙ×÷£¬ÕâЩ²Ù×÷¶¼»á³ÖÓÐÒ»°Ñ¶ÁËø£¨¹²ÏíËø£©

3. Store snapshot±£»¤Ëø£ºHBaseÔÚÖ´ÐÐflush memstoreµÄ¹ý³ÌÖÐÊ×ÏÈ»á»ùÓÚmemstore×ösnapshot£¬Õâ¸ö½×¶Î»á¼ÓÒ»°Ñstore¼¶±ðµÄÐ´Ëø£¨¶ÀÕ¼Ëø£©£¬ÓÃÒÔ×èÈûÆäËûÏ̶߳ԸÃmemstoreµÄ¸÷ÖÖ¸üвÙ×÷£»Çå³ýsnapshotʱҲÏàͬ£¬»á¼ÓÒ»°ÑÐ´Ëø×èÈûÆäËû¶Ô¸ÃmemstoreµÄ¸üвÙ×÷¡£

HBaseÖÐMVCC»úÖÆµÄʵÏÖ

ÈçÉÏÎÄËùÊö£¬HBase·Ö±ðÌṩÁËÐÐËøºÍ¶ÁÐ´ËøÀ´ÊµÏÖÐм¶Êý¾Ý¡¢Store¼¶±ðÒÔ¼°Region¼¶±ðµÄ²¢·¢¿ØÖÆ¡£³ý´ËÖ®Í⣬HBase»¹ÌṩÁËMVCC»úÖÆÊµÏÖÊý¾ÝµÄ¶Áд²¢·¢¿ØÖÆ¡£MVCC£¬¼´¶à°æ±¾²¢·¢¿ØÖƼ¼Êõ£¬ËüʹµÃÊÂÎñÒýÇæ²»ÔÙµ¥´¿µØÊ¹ÓÃÐÐËøÊµÏÖÊý¾Ý¶ÁдµÄ²¢·¢¿ØÖÆ£¬È¡¶ø´úÖ®µÄÊÇ£¬°ÑÐÐËøÓëÐеĶà¸ö°æ±¾½áºÏÆðÀ´£¬¾­¹ý¼òµ¥µÄËã·¨¾Í¿ÉÒÔʵÏÖ·ÇËø¶¨¶Á£¬½ø¶ø´ó´óµÄÌá¸ßϵͳµÄ²¢·¢ÐÔÄÜ¡£HBaseÕýÊÇʹÓÃÐÐËø £« MVCC±£Ö¤¸ßЧµÄ²¢·¢¶ÁдÒÔ¼°¶ÁдÊý¾ÝÒ»ÖÂÐÔ¡£

MVCC»úÖÆ¼ò½é

ÔÚÁ˽âHBaseÈçºÎʵÏÖMVCC֮ǰ£¬ÎÒÃÇÊ×ÏÈÐèÒªÁ˽⵱ǰ½ö»ùÓÚÐÐËøÊµÏֵĸüвÙ×÷¶ÔÓÚ¶ÁÇëÇóÓÐʲôӰÏì¡£ÏÂͼΪHBase»ùÓÚÐÐËøÊµÏÖµÄÊý¾Ý¸üÐÂʱÐòʾÒâͼ£º

ÉÏͼÖмòµ¥µØ±íÊöÁËÊý¾Ý¸üÐÂÁ÷³Ì£¨ºóÐøÎÄÕ»á¶ÔHBaseÊý¾ÝдÈë½øÐÐÉîÈëµÄ½éÉÜ£©£¬¼òµ¥À´Ëµ£¬Êý¾Ý¸üпÉÒÔ·ÖΪÈçϼ¸¸ö½×¶Î£º»ñÈ¡ÐÐËø¡¢¸üÐÂWAL¡¢Êý¾ÝдÈë±¾µØ»º´æmemstore¡¢ÊÍ·ÅÐÐËø¡£

ÈçÉÏͼËùʾ£¬Ç°ºó·Ö±ðÓÐÁ½´Î¶ÔͬһÐÐÊý¾ÝµÄ¸üвÙ×÷¡£¼ÙÈçµÚ¶þ´Î¸üйý³ÌÔÚ½«ÁдØcf1¸üÐÂΪt2_cf1Ö®ºóÖÐÓÐÒ»´Î¶ÁÇëÇó½øÀ´£¬´Ëʱ¶Áµ½µÄµÚÒ»ÁÐÊý¾Ý½«Êǵڶþ´Î¸üкóµÄÊý¾Ýt2_cf1£¬È»¶øµÚ¶þÁÐÊý¾ÝÈ´ÊǵÚÒ»´Î¸üкóµÄÊý¾Ýt1_cf2£¬ºÜÏÔÈ»£¬Ö»Õë¶Ô¸üÐвÙ×÷¼ÓÐÐËø»á²úÉú¶ÁÈ¡Êý¾Ý²»Ò»ÖµÄÇé¿ö¡£×î¼òµ¥µÄÊý¾Ý²»Ò»Ö½â¾ö·½°¸ÊǶÁдÏ̹߳«ÓÃÒ»°ÑÐÐËø£¬ÕâÑù¿ÉÒÔ±£Ö¤¶Áд֮¼ä»¥³â£¬µ«ÊǶÁдÏß³ÌͬʱÇÀÕ¼ÐÐËø±ØÈ»»á¼«´óµØÓ°ÏìÐÔÄÜ¡£

Ϊ´Ë£¬HBase²ÉÓÃMVCC½â¾ö·½°¸±ÜÃâ¶ÁÏß³ÌÈ¥»ñÈ¡ÐÐËø¡£MVCC½â¾ö·½°¸¶ÔÉÏÊöÊý¾Ý¸üвÙ×÷ʱÐòºÍ¶Á²Ù×÷¶¼½øÐÐÁËÒ»¶¨µÄÐÞÕý£¬Ö÷ÒªÐÂÔöÁËÒ»¸öдÐòºÅºÍ¶ÁÐòºÅ£¬Æäʵ¾ÍÊÇÊý¾ÝµÄ°æ±¾ºÅ¡£ÐÞÕýºóµÄ¸üвÙ×÷ʱÐòʾÒâͼΪ£º

ÈçÉÏͼËùʾ£¬ÐÞÕýºóµÄ¸üвÙ×÷Ö÷ÒªÐÂÔöÁË¡®»ñȡдÐòºÅ¡¯ºÍ¡¯½áÊøÐ´ÐòºÅ¡¯Á½¸ö²½Ö裬²¢ÇÒÿ¸öcellÊý¾Ýдmemstore²Ù×÷¶¼»áЯ´ø¸ÃдÐòºÅ¡£ÄǶÁÇëÇóÐèÒª¾­¹ýʲôÑùµÄÐÞÕýÄØ£¿HBaseµÄ×ö·¨ÈçÏ£º

£¨1£©Ã¿¸ö¶Á²Ù×÷¿ªÊ¼Ê±¶¼»á·ÖÅäÒ»¸ö¶ÁÐòºÅ£¬³ÆÎª¶ÁÈ¡µã

£¨2£©¶ÁÈ¡µãµÄÖµÊÇËùÓеÄд²Ù×÷Íê³ÉÐòºÅÖеÄ×î´óÕûÊý

£¨3£©Ò»´Î¶Á²Ù×÷µÄ½á¹û¾ÍÊǶÁÈ¡µã¶ÔÓ¦µÄËùÓÐcellÖµµÄ¼¯ºÏ

ÈçÏÂͼËùʾ£¬µÚÒ»´Î¸üлñÈ¡µÄдÐòºÅΪ1£¬µÚ¶þ´Î¸üлñÈ¡µÄдÐòºÅΪ2¡£¶ÁÇëÇó½øÀ´Ê±Ð´²Ù×÷Íê³ÉÐòºÅÖеÄ×î´óÕûÊýΪwn £½ 1£¬Òò´Ë¶ÔÓ¦µÄ¶ÁÈ¡µãΪwn £½ 1£¬¶ÁÈ¡µÄ½á¹ûΪwn £½ 1Ëù¶ÔÓ¦µÄËùÓÐcellÖµ¼¯ºÏ£¬¼´Îªt1_cf1ºÍt1_cf2£¬ÕâÑù¾Í¿ÉÒÔʵÏÖÒÔÎÞËøµÄ·½Ê½¶ÁÈ¡µ½Ò»ÖµÄÊý¾Ý¡£

HBaseÖÐMVCCʵÏÖ

HBaseÖУ¬MVCCµÄ¾ßÌåʵÏÖÀàΪMultiVersionConsistencyControl£¬¸ÃÀàά»¤ÁËÁ½¸ölongÐ͵ıäÁ¿¡¢Ò»¸öWriteEntry¶ÔÏóºÍÒ»¸öwriteQueue¶ÓÁУº

1. long memstoreRead£º¼Ç¼µ±Ç°È«¾ÖµÄ¶ÁÈ¡µã£¬¶ÁÇëÇó½øÀ´Ö®ºóÊ×ÏÈ»á»ñÈ¡¸Ã¶ÁÈ¡µã

2. long memstoreWrite£º¼Ç¼µ±Ç°È«¾ÖµÄдÐòºÅ£¬¸ù¾ÝËüΪÏÂÒ»¸ö¸üÐÂÏ̷߳ÖÅäеÄдÐòºÅ

3. writeEntry£º¼Ç¼¸üвÙ×÷µÄдÐòºÅ¶ÔÏó£¬Ö÷Òª°üº¬Á½¸ö±äÁ¿£¬Ò»¸öÊÇwriteNumber£¬±íʾдÐòºÅ£»Ò»¸öÊDz¼¶ûÀàÐ͵Äcompleted£¬±íʾ¸Ã´Î¸üÐÂÊÇ·ñÍê³É

4. writeQueue£ºµ±Ç°ËùÓиüвÙ×÷µÄдÐòºÅ¶ÔÏ󼯺Ï

»ñȡдÐòºÅ

¸ù¾ÝÉÏÎÄÖиüÐÂÊý¾ÝʱÐòͼ¿ÉÖª£¬¸üÐÂÏ̻߳ñÈ¡ÐÐËøÖ®ºó¾ÍÐèÒª»ñȡдÐòºÅ£¬¶ÔÓ¦µÄ·½·¨ÎªbeginMemstoreInsert£¬¸Ã·½·¨½«memstoreWrite¼Ó1£¬Éú³ÉwriteEntry¶ÔÏó²¢²åÈëµ½¶ÓÁÐwriteQueue£¬·µ»ØwriteEntry¶ÔÏó¡£Note£ºÉú³ÉµÄwriteEntry¶ÔÏóÖаüº¬Ð´ÐòºÅwriteNumber£¬¸üÐÂÏ̻߳Ὣ¸ÃwriteNumberÉèÖÃΪcellÊý¾ÝµÄÒ»¸öÊôÐÔ¡£

½áÊøÐ´ÐòºÅ

Êý¾Ý¸üÐÂÍê³ÉÖ®ºó£¬ÊÍ·ÅÐÐËøÖ®Ç°£¬¸üÐÂÏ̻߳áµ÷ÓÃcompleteMemstoreInsert·½·¨¸üÐÂwriteEntry¶ÔÏóÒÔ¼°memstoreRead±äÁ¿£¬¾ßÌå·ÖΪÈçÏÂÁ½²½£º

1. Ê×ÏȽ«¸ÃwriteEntry¶ÔÏó±ê¼ÇΪ¡¯ÒÑÍê³É¡¯£¬ÔÙ½«È«¾Ö¶ÁÈ¡µãmemstoreRead¾¡¿ÉÄÜ¶àµØÍùÇ°ÒÆ¡£Ç°ÒÆË㷨Ϊ±éÀú¶ÓÁÐwriteQueueÖÐËùÓеÄwriteEntry¶ÔÏó£¬ÒƳýµôÒѾ­±ê¼ÇΪ¡¯ÒÑÍê³É¡¯µÄwriteEntryÖ±ÖÁÓöµ½Î´Íê³ÉµÄwriteEntry£¬×îºó½«memstoreRead±äÁ¿¸üÐÂΪ×îÐÂÒÑÍê³ÉµÄwriteNumber¡£

2. ×¢ÒâÉÏÊömemstoreRead±äÁ¿ÓпÉÄܲ¢²»µÈÓÚµ±Ç°¸üÐÂÏ̵߳ÄwriteNumber£¬ÕâÖÖÇé¿öϸøüÐÂÏ̶߳ÔÊý¾ÝµÄ¸üвÙ×÷¶ÔÓû§²¢²»¿É¼û¡£ÎªÁËʵÏÖ¸üÐÂÍê³ÉÖ®ºó¸üнá¹û¼´¶ÔÓû§¿É¼û£¬ÐèÒªµÈ´ýmemstoreRead±äÁ¿Ç°ÒƵ½µ±Ç°¸üÐÂÏ̵߳ÄwiteNumber¡£Òò´ËËü»á×èÈûµ±Ç°Ị̈߳¬µÈ´ýÆäËûÏ̶߳ÔÓ¦µÄwriteEntry¶ÔÏó±ê¼ÇΪ¡¯ÒÑÍê³É¡¯£¬Ö±ÖÁmemstoreReadµÈÓÚµ±Ç°Ï̵߳ÄwriteNumber¡£

×ܽá

HBaseÌṩÁ˸÷ÖÖËø»úÖÆºÍMVCC»úÖÆÀ´±£Ö¤Êý¾ÝµÄÔ­×ÓÐÔ¡¢Ò»ÖÂÐÔµÈÌØÐÔ£¬ÆäÖÐʹÓû¥³âËøÊµÏÖµÄÐÐËø±£Ö¤ÁËÐм¶Êý¾ÝµÄÔ­×ÓÐÔ£¬Ê¹ÓÃJDKÌṩµÄ¶ÁÐ´ËøÊµÏÖÁËStore¼¶±ð¡¢Region¼¶±ðµÄÊý¾ÝÒ»ÖÂÐÔ£¬Í¬Ê±Ê¹ÓÃÐÐËø+MVCC»úÖÆÊµÏÖÁËÔÚ¸ßÐÔÄÜ·ÇËø¶¨¶Á³¡¾°ÏµÄÊý¾ÝÒ»ÖÂÐÔ¡£

   
3332 ´Îä¯ÀÀ       34
Ïà¹ØÎÄÕÂ

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

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

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ