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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Ò»ÌõÊý¾ÝµÄHBaseÖ®Â㬼òÃ÷HBaseÈëÃŽ̳Ì-WriteÈ«Á÷³Ì
 
  2650  次浏览      27
 2018-4-18 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎÄ»ùÓÚÌṩµÄÑùÀýÊý¾Ý£¬½éÉÜÁËдÊý¾ÝµÄ½Ó¿Ú£¬RowKey ¶¨Ò壬Êý¾ÝÔÚ¿Í»§¶ËµÄ×é×°£¬Êý¾Ý·ÓÉ£¬´ò°ü·Ö·¢£¬ÒÔ¼°RegionServer ²à½«Êý¾ÝдÈëµ½ Region ÖеÄÈ«²¿Á÷³Ì¡£

ʾÀýÊý¾Ý

¸ø³öÒ»·ÝÎÒÃÇÈÕ³£¶¼¿ÉÒÔ½Ó´¥µ½µÄÊý¾ÝÑùÀý£¬Ïȼòµ¥¸ø³öʾÀýÊý¾ÝµÄ×ֶζ¨Ò壺

ʾÀýÊý¾Ý×ֶζ¨Òå

±¾ÎÄÁ¦Çó¼ò½à£¬½ö¸ø³öÁË×î¼òµ¥µÄ¼¸¸ö×ֶζ¨Òå¡£ÈçÏÂÊÇ¡±Ðé¹¹¡±µÄÑùÀýÊý¾Ý£º

ʾÀýÊý¾Ý

ÔÚ±¾ÎĴ󲿷ÖÄÚÈÝÖÐËùÉæ¼°µÄÒ»ÌõÊý¾Ý£¬ÊÇÉÏÃæ¼Ó´ÖµÄ×îºóÒ»ÐÐ"Mobile1"Ϊ"13400006666"ÕâÐмǼ¡£ÔÚÏÂÃæµÄÁ÷³ÌͼÖУ¬ÎÒÃÇʹÓÃÏÂÃæÕâÑùÒ»¸öºìɫСͼ±êÀ´±íʾ¸ÃÊý¾ÝËùÔÚµÄλÖãº

Êý¾ÝλÖñê¼Ç

¿ÉÑ¡½Ó¿Ú

HBaseÖÐÌṩÁËÈçϼ¸ÖÖÖ÷ÒªµÄ½Ó¿Ú£º

Java Client API

HBaseµÄ»ù´¡API£¬Ó¦ÓÃ×îΪ¹ã·º¡£

HBase Shell

»ùÓÚShellµÄÃüÁîÐвÙ×÷½Ó¿Ú£¬»ùÓÚJava Client APIʵÏÖ¡£

Restful API

Rest Server²à»ùÓÚJava Client APIʵÏÖ¡£

Thrift API

Thrift Server²à»ùÓÚJava Client APIʵÏÖ¡£

MapReduce Based Batch Manipulation API

»ùÓÚMapReduceµÄÅúÁ¿Êý¾Ý¶ÁдAPI¡£

³ýÁËÉÏÊöÖ÷ÒªµÄAPI£¬HBase»¹ÌṩÁË»ùÓÚSparkµÄÅúÁ¿²Ù×÷½Ó¿ÚÒÔ¼°C++ Client½Ó¿Ú£¬µ«ÕâÁ½¸öÌØÐÔ¶¼±»¹æ»®ÔÚÁË3.0°æ±¾ÖУ¬µ±Ç°ÉÐÔÚ¿ª·¢ÖС£

ÎÞÂÛÊÇHBase Shell/Restful API»¹ÊÇThrift API£¬¶¼ÊÇ»ùÓÚJava Client APIʵÏֵġ£Òò´Ë£¬½ÓÏÂÀ´¹ØÓÚÁ÷³ÌµÄ½éÉÜ£¬¶¼ÊÇ»ùÓÚJava Client APIµÄµ÷ÓÃÁ÷³ÌÕ¹¿ªµÄ¡£

¹ØÓÚ±í·þÎñ½Ó¿ÚµÄ³éÏó

ͬ²½Á¬½ÓÓëÒì²½Á¬½Ó£¬·Ö±ðÌṩÁ˲»Í¬µÄ±í·þÎñ½Ó¿Ú³éÏó£º

Table ͬ²½Á¬½ÓÖеıí·þÎñ½Ó¿Ú¶¨Òå

AsyncTable Òì²½Á¬½ÓÖеıí·þÎñ½Ó¿Ú¶¨Òå

Òì²½Á¬½ÓAsyncConnection»ñÈ¡AsyncTableʵÀýµÄ½Ó¿ÚĬÈÏʵÏÖ£º

Create AsyncTable

ͬ²½Á¬½ÓClusterConnectionµÄʵÏÖÀàConnectionImplementationÖлñÈ¡TableʵÀýµÄ½Ó¿ÚʵÏÖ£º

Create Table

дÊý¾ÝµÄ¼¸ÖÖ·½Ê½

Single Put

µ¥Ìõ¼Ç¼µ¥Ìõ¼Ç¼µÄËæ»úput²Ù×÷¡£Single PutËù¶ÔÓ¦µÄ½Ó¿Ú¶¨ÒåÈçÏ£º

ÔÚAsyncTable½Ó¿ÚÖе͍Ò壺

CompletableFuture<Void> put(Put put);

ÔÚTable½Ó¿ÚÖе͍Ò壺

void put(Put put) throws IOException;

Batch Put

»ã¾ÛÁ˼¸Ê®ÌõÉõÖÁÊǼ¸°ÙÉÏǧÌõ¼Ç¼֮ºóµÄСÅú´ÎËæ»úput²Ù×÷¡£

Batch PutÖ»ÊDZ¾ÎĶԸÃÀàÐͲÙ×÷µÄ³Æ·¨£¬Êµ¼ÊµÄ½Ó¿ÚÃû³ÆÈçÏÂËùʾ£º

ÔÚAsyncTable½Ó¿ÚÖе͍Ò壺

List<CompletableFuture<Void>> put(List<Put> puts);

ÔÚTable½Ó¿ÚÖе͍Ò壺

void put(List<Put> puts) throws IOException;

Bulkload

»ùÓÚMapReduce APIÌṩµÄÊý¾ÝÅúÁ¿µ¼ÈëÄÜÁ¦£¬µ¼ÈëÊý¾ÝÁ¿Í¨³£ÔÚGB¼¶±ðÒÔÉÏ£¬BulkloadÄܹ»ÈƹýJava Client APIÖ±½ÓÉú³ÉHBaseµÄµ×²ãÊý¾ÝÎļþ(HFile)¡£

¹¹½¨Put¶ÔÏó

Éè¼ÆºÏÀíµÄRowKey

RowKeyͨ³£ÊÇÒ»¸ö»òÈô¸É¸ö×ֶεÄÖ±½Ó×éºÏ»ò¾­Ò»¶¨´¦ÀíºóµÄÐÅÏ¢£¬ÒòΪһ¸ö±íÖÐËùÓеÄÊý¾Ý¶¼ÊÇ»ùÓÚRowKeyÅÅÐòµÄ£¬RowKeyµÄÉè¼Æ¶Ô¶Áд¶¼»áÓÐÖ±½ÓµÄÐÔÄÜÓ°Ïì¡£

ÎÒÃÇ»ùÓÚ±¾ÎĵÄÑùÀýÊý¾Ý£¬Ïȸø³öÁ½ÖÖRowKeyµÄÉè¼Æ£¬²¢¼òµ¥ÌÖÂÛ¸÷×ÔµÄÓÅȱµã£º

ÑùÀýÊý¾Ý£º

ʾÀýÊý¾Ý

RowKey Format 1£º Mobile1 + StartTime

ΪÁË·½±ã¶ÁÕßÀí½â£¬ÎÒÃÇÔÚÁ½¸ö×Ö¶ÎÖ®¼äÌí¼ÓÁËÁ¬½Ó·û¡±^¡±¡£ÈçÏÂÊÇRowKeyÒÔ¼°Ïà¹ØÅÅÐò½á¹û£º

RowKey Format 1

RowKey Format 2£º StartTime + Mobile1

RowKey Format 2

´ÓÉÏÃæÁ½¸ö±í¸ñ¿ÉÒÔ¿´³öÀ´£¬²»Í¬µÄ×Ö¶Î×éºÏ˳ÐòÉè¼Æ£¬´øÀ´½ØÈ»²»Í¬µÄÅÅÐò½á¹û£¬ÎÒÃǽ«RowKeyÖеĵÚÒ»¸ö×ֶγÆÖ®Îª¡°Ïȵ¼×ֶΡ±¡£µÚÒ»ÖÖÉè¼Æ£¬ÓÐÀûÓÚ²éѯ¡±ÊÖ»úºÅÂëXXXµÄÔÚijʱ¼ä·¶Î§ÄÚµÄÊý¾Ý¼Ç¼¡±£¬µ«²»ÀûÓÚ²éѯ¡±Ä³¶Îʱ¼ä·¶Î§ÄÚÓÐÄÄЩÊÖ»úºÅÂ벦³öÁ˵绰£¿¡±£¬¶øµÚ¶þÖÖÉè¼ÆÈ´Ç¡ºÃÏà·´¡£

ÉÏÃæÊÇÁ½ÖÖÉè¼Æ¶¼ÊÇÁ½¸ö×ֶεÄÖ±½Ó×éºÏ£¬ÕâÖÖÉè¼ÆÔÚʵ¼ÊÓ¦ÓÃÖУ¬»á´øÀ´¶ÁдÈȵãÎÊÌ⣬ÄÑÒÔ±£ÕÏÊý¾Ý¶ÁдÇëÇóÔÚËùÓÐRegionsÖ®¼äµÄ¸ºÔؾùºâ¡£±ÜÃâÈȵãµÄ³£¼û·½·¨ÓÐÈçϼ¸ÖÖ£º

Reversing

Èç¹ûÏȵ¼×ֶα¾Éí»á´øÀ´ÈȵãÎÊÌ⣬µ«¸Ã×Ö¶Îβ²¿µÄÐÅϢȴ¾ß±¸Á¼ºÃµÄËæ»úÐÔ£¬´Ëʱ£¬¿ÉÒÔ¿¼Âǽ«Ïȵ¼×Ö¶Î×ö·´×ª´¦Àí£¬½«Î²²¿¼¸Î»Ö±½ÓÌáǰµ½Ç°Ã棬»òÕßÖ±½Ó½«Õû¸ö×Ö¶ÎÍêÈ«·´×ª¡£

½«Ïȵ¼×Ö¶ÎMobile1·­×ªºó£¬¾Í¾ß±¸·Ç³£ºÃµÄËæ»úÐÔ¡£

ÀýÈ磺

13400001111^201803010800

½«Ïȵ¼×Ö¶ÎMobile1·´×ªºóµÄRowKey±äΪ£º

11110000431^201803010800

Salting

SaltingµÄÔ­ÀíÊÇÔÚRowKeyµÄÇ°ÃæÌí¼Ó¹Ì¶¨³¤¶ÈµÄËæ»úBytes£¬Ëæ»úBytesÄܱ£ÕÏÊý¾ÝÔÚËùÓÐRegions¼äµÄ¸ºÔؾùºâ¡£

RowKey With Salting

SaltingÄܺܺõı£ÕÏдÈëʱ½«Êý¾Ý¾ùÔÈ·ÖÉ¢µ½¸÷¸öRegionÖУ¬µ«¶ÔÓÚ¶ÁȡȴÊDz»ÓѺõģ¬ÀýÈ磬Èç¹û¶ÁÈ¡Mobile1Ϊ¡±13400001111¡åÔÚ20180301ÕâÒ»ÌìµÄÊý¾Ý¼Ç¼ʱ£¬ÒòΪSalting BytesÐÅÏ¢ÊÇËæ»úÑ¡ÔñÌí¼ÓµÄ£¬²éѯʱ²¢²»ÖªµÀÇ°ÃæÌí¼ÓµÄSalting BytesÊÇ¡±A¡±£¬Òò´Ë{¡°A¡±, ¡°B¡±, ¡°C¡±}Ëù¹ØÁªµÄRegions¶¼µÃÈ¥²é¿´Ò»Ï¡£

Hashing

HashingÊǽ«Ò»¸öRowKeyͨ¹ýÒ»¸öHashº¯ÊýÉú³ÉÒ»×é¹Ì¶¨³¤¶ÈµÄbytes£¬Hashº¯ÊýÄܱ£ÕÏËùÉú³ÉµÄËæ»úbytes¾ß±¸Á¼ºÃµÄÀëÉ¢¶È£¬´Ó¶øÒ²Äܹ»¾ùÔÈ´òÉ¢µ½¸÷¸öRegionÖС£Hashing¼ÈÓÐÀûÓÚËæ»úдÈ룬ÓÖÀûÓÚ»ùÓÚÖªµÀRowKey¸÷×ֶεÄÈ·ÇÐÐÅÏ¢Ö®ºóµÄËæ»ú¶ÁÈ¡²Ù×÷£¬µ«Èç¹ûÊÇ»ùÓÚRowKey·¶Î§µÄScan»òÕßÊÇRowKeyµÄÄ£ºýÐÅÏ¢½øÐвéѯµÄ»°£¬¾Í»á´øÀ´ÏÔÖøµÄÐÔÄÜÎÊÌ⣬ÒòΪԭÀ´ÔÚ×Öµä˳ÐòÏàÁÚµÄRowKeyÁÐ±í£¬Í¨¹ýHashing´òÉ¢ºóµ¼ÖÂÕâЩÊý¾Ý±»·ÖÉ¢µ½Á˶à¸öRegionÖС£

Òò´Ë£¬RowKeyµÄÉè¼Æ£¬ÐèÒª³ä·Ö¿¼ÂÇÒµÎñµÄ¶ÁÐ´ÌØµã¡£

±¾ÎÄÄÚÈݼÙÉèRowKeyÉè¼Æ£ºreversing(Mobile1) +StartTime

Ò²¾ÍÊÇ˵£¬RowKeyÓÉ·´×ª´¦ÀíºóµÄMobile1ÓëStartTime×é³É¡£¶ÔÓÚÎÒÃÇËù¹Ø×¢µÄÕâÐÐÊý¾Ý£º

¹Ø×¢µÄÊý¾Ý¼Ç¼

RowKeyÓ¦¸ÃΪ£º 66660000431^201803011300

ÒòΪ´´½¨±íʱԤÉèµÄRegionÓëRowKeyÇ¿Ïà¹Ø£¬ÎÒÃÇÏÖÔڲſÉÒÔ¸ø³ö±¾ÎÄÑùÀýËùÐèÒª´´½¨µÄ±íµÄ¡±Region·Ö¸îµã¡°ÐÅÏ¢£º

¼ÙÉ裬Region·Ö¸îµãΪ¡°1,2,3,4,5,6,7,8,9¡±£¬»ùÓÚÕâ9¸ö·Ö¸îµã£¬¿ÉÒÔÔ¤ÏÈ´´½¨10¸öRegion£¬Õâ10¸öRegionµÄStartKeyºÍStopKeyÈçÏÂËùʾ£º

Region»®·ÖÐÅÏ¢

µÚÒ»¸öRegionµÄStartKeyΪ¿Õ£¬×îºóÒ»¸öRegionµÄStopKeyΪ¿Õ

ÿһ¸öRegionÇø¼ä£¬¶¼°üº¬StartKey±¾Éí£¬µ«²»°üº¬StopKey

ÓÉÓÚMobile1×ֶεÄ×îºóһλÊÇ0~9Ö®¼äµÄËæ»úÊý×Ö£¬Òò´Ë£¬¿ÉÒÔ¾ùÔÈ´òÉ¢µ½Õâ10¸öRegionÖÐ

¶¨ÒåÁÐ

ÿһ¸öÁÐÔÚHBaseÖÐÌåÏÖΪһ¸öKeyValue£¬¶øÃ¿Ò»¸öKeyValueÓµÓÐÌØ¶¨µÄ×é³É½á¹¹£¬ÕâÒ»µãÔÚÉÏһƪÎÄÕµÄÊý¾ÝÄ£ÐÍÕ½ÚÒѾ­Ìáµ½¹ý¡£

ËùνµÄ¶¨ÒåÁУ¬¾ÍÊÇÐèÒª¶¨Òå³öÿһ¸öÁÐÒª´æ·ÅµÄÁÐ×å(Column Family)ÒÔ¼°Áбêʶ(Qualifier)ÐÅÏ¢¡£

ÎÒÃǼÙÉ裬´æ·ÅÑùÀýÊý¾ÝµÄÕâ¸ö±íÃû³ÆÎª¡±TelRecords¡± £¬ÎªÁ˼òµ¥Æð¼û£¬½ö½öÉèÖÃÁË1¸öÃûΪ¡±I¡±µÄÁÐ×å¡£

Column FamilyÒÔ¼°Áбêʶ¶¨Òå

ÒòΪMobile1ÓëStartTime¶¼ÒѾ­±»°üº¬ÔÚRowKeyÖУ¬ËùÒÔ£¬²»ÐèÒªÔÙÔÚÁÐÖд洢һ·Ý¡£¹ØÓÚÁÐ×åÃû³ÆÓëÁбêʶÃû³Æ£¬½¨ÒéÓ¦¸Ã¼ò¶ÌһЩ£¬ÒòΪÕâЩÐÅÏ¢¶¼»á±»°üº¬ÔÚKeyValueÀïÃæ£¬¹ý³¤µÄÃû³Æ»áµ¼ÖÂÊý¾ÝÅòÕÍ¡£

»ùÓÚRowKeyºÍÁж¨ÒåÐÅÏ¢£¬¾Í¿ÉÒÔ×齨HBaseµÄPut¶ÔÏó£¬Ò»¸öPut¶ÔÏóÓÃÀ´ÃèÊö´ýдÈëµÄÒ»ÐÐÊý¾Ý£¬Ò»¸öPut¿ÉÒÔÀí½â³ÉÓëij¸öRowKey¹ØÁªµÄ1¸ö»ò¶à¸öKeyValueµÄ¼¯ºÏ¡£

ÖÁ´Ë£¬ÕâÌõÊý¾ÝÒѾ­×ª±ä³ÉÁËPut¶ÔÏó£¬ÈçÏÂͼËùʾ£º

Put

Êý¾Ý·ÓÉ

³õʼ»¯ZooKeeper Session

ÒòΪmeta Region´æ·ÅÓÚZooKeeperÖУ¬ÔÚµÚÒ»´Î´ÓZooKeeperÖжÁÈ¡META RegionµÄµØÖ·Ê±£¬ÐèÒªÏȳõʼ»¯Ò»¸öZooKeeper Session¡£ZooKeeper SessionÊÇZooKeeper ClientÓëZooKeeper Server¶ËËù½¨Á¢µÄÒ»¸ö»á»°£¬Í¨¹ýÐÄÌø»úÖÆ±£³Ö³¤Á¬½Ó¡£

»ñÈ¡Region·ÓÉÐÅÏ¢

ͨ¹ýÇ°Ãæ½¨Á¢µÄÁ¬½Ó£¬´ÓZooKeeperÖжÁÈ¡meta RegionËùÔÚµÄRegionServer£¬Õâ¸ö¶ÁÈ¡Á÷³Ì£¬µ±Ç°ÒѾ­ÊÇÒì²½µÄ¡£»ñÈ¡ÁËmeta RegionµÄ·ÓÉÐÅÏ¢ÒÔºó£¬ÔÙ´Ómeta RegionÖж¨Î»Òª¶ÁдµÄRowKeyËù¹ØÁªµÄRegionÐÅÏ¢¡£ÈçÏÂͼËùʾ£º

Region Routing

ÒòΪÿһ¸öÓû§±íRegion¶¼ÊÇÒ»¸öRowKey Range£¬meta RegionÖмǼÁËÿһ¸öÓû§±íRegionµÄ·ÓÉÒÔ¼°×´Ì¬ÐÅÏ¢£¬ÒÔRegionName(°üº¬±íÃû£¬Region StartKey£¬Region ID£¬¸±±¾IDµÈÐÅÏ¢)×÷ΪRowKey¡£»ùÓÚÒ»ÌõÓû§Êý¾ÝRowKey£¬¿ìËÙ²éѯ¸ÃRowKeyËùÊôµÄRegionµÄ·½·¨ÆäʵºÜ¼òµ¥£ºÖ»ÐèÒª»ùÓÚ±íÃûÒÔ¼°¸ÃÓû§Êý¾ÝRowKey£¬¹¹½¨Ò»¸öÐéÄâµÄRegion Key£¬È»ºóͨ¹ýReverse ScanµÄ·½Ê½£¬¶Áµ½µÄµÚÒ»ÌõRegion¼Ç¼¾ÍÊǸÃÊý¾ÝËù¹ØÁªµÄRegion¡£ÈçÏÂͼËùʾ£º

Location User Region

RegionÖ»Òª²»±»Ç¨ÒÆ£¬ÄÇô»ñÈ¡µÄ¸ÃRegionµÄ·ÓÉÐÅÏ¢¾ÍÊÇÒ»Ö±ÓÐЧµÄ£¬Òò´Ë£¬HBase ClientÓÐÒ»¸öCache»úÖÆÀ´»º´æRegionµÄ·ÓÉÐÅÏ¢£¬±ÜÃâÿ´Î¶Áд¶¼ÒªÈ¥·ÃÎÊZooKeeper»òÕßmeta Region¡£

½ø½×ÄÚÈÝ1£ºmeta Region¾¿¾¹ÔÚÄÄÀ

meta RegionµÄ·ÓÉÐÅÏ¢´æ·ÅÔÚZooKeeperÖУ¬µ«meta Region¾¿¾¹ÔÚÄĸöRegionServerÖÐÌṩ¶Áд·þÎñ£¿

ÔÚ1.0°æ±¾ÖУ¬ÒýÈëÁËÒ»¸öÐÂÌØÐÔ£¬Ê¹µÃMaster¿ÉÒÔ¡±¼æÈΡ±Ò»¸öRegionServer½ÇÉ«(¿É²Î¿¼HBASE-5487, HBASE-10569)£¬´Ó¶ø¿ÉÒÔ½«Ò»Ð©ÏµÍ³±íµÄRegion·ÖÅäµ½MasterµÄÕâ¸öRegionServerÖУ¬ÕâÖÖÉè¼ÆµÄ³õÖÔÊÇΪÁ˼ò»¯/ÓÅ»¯Region AssignµÄÁ÷³Ì£¬µ«ÕâÒÀÈ»´øÀ´ÁËһϵÁи´ÔÓµÄÎÊÌ⣬ÓÈÆäÊÇMaster³õʼ»¯ºÍRegionServer³õʼ»¯Ö®¼äµÄRace£¬Òò´Ë£¬ÔÚ2.0°æ±¾Öн«Õâ¸öÌØÐÔÔÝʱ¹Ø±ÕÁË¡£ÏêϸÐÅÏ¢¿ÉÒԲο¼£ºHBASE-16367£¬HBASE-18511£¬HBASE-19694£¬HBASE-19785£¬HBASE-19828

¿Í»§¶Ë²àµÄÊý¾Ý·Ö×é¡°´ò°ü¡±

Èç¹ûÕâÌõ´ýдÈëµÄÊý¾Ý²ÉÓõÄÊÇSingle PutµÄ·½Ê½£¬ÄÇô£¬¸Ã²½Öè¿ÉÒÔÂÔ¹ý£¨ÊÂʵÉÏ£¬µ¥ÌõPut²Ù×÷µÄÁ÷³ÌÏà¶Ô¼òµ¥£¬¾ÍÊÇÏȶ¨Î»¸ÃRowKeyËù¶ÔÓ¦µÄRegionÒÔ¼°RegionServerÐÅÏ¢ºó£¬ClientÖ±½Ó·¢ËÍдÇëÇóµ½RegionServer²à¼´¿É£©¡£

µ«Èç¹ûÕâÌõÊý¾Ý±»»ìÔÓÔÚÆäËüµÄÊý¾ÝÁбíÖУ¬²ÉÓÃBatch PutµÄ·½Ê½£¬ÄÇô£¬¿Í»§¶ËÔÚ½«ËùÓеÄÊý¾Ýдµ½¶ÔÓ¦µÄRegionServer֮ǰ£¬»áÏÈ·Ö×顱´ò°ü¡±£¬Á÷³ÌÈçÏ£º

°´Region·Ö×飺±éÀúÿһÌõÊý¾ÝµÄRowKey£¬È»ºó£¬ÒÀ¾Ýmeta±íÖмǼµÄRegionÐÅÏ¢£¬È·¶¨Ã¿Ò»ÌõÊý¾ÝËùÊôµÄRegion¡£´Ë²½Öè¿ÉÒÔ»ñÈ¡µ½Regionµ½RowKeyÁбíµÄÓ³Éä¹ØÏµ¡£

°´RegionServer¡±´ò°ü¡±£ºÒòΪRegionÒ»¶¨¹éÊôÓÚijһ¸öRegionServer£¨×¢£º±¾ÎÄÄÚÈÝÖÐÈçÎÞÌØÊâ˵Ã÷£¬¶¼Î´¿¼ÂÇRegion ReplicaÌØÐÔ£©£¬ÄÇÊôÓÚͬһ¸öRegionServerµÄ¶à¸öRegionsµÄдÈëÇëÇ󣬱»´ò°ü³ÉÒ»¸öMultiAction¶ÔÏó£¬ÕâÑù¿ÉÒÔÒ»²¢·¢Ë͵½Ã¿Ò»¸öRegionServerÖС£

Êý¾Ý·Ö×éÓë´ò°ü

Client·¢ËÍдÊý¾ÝÇëÇóµ½RegionServer

ÀàËÆÓÚClient·¢Ëͽ¨±íµ½MasterµÄÁ÷³Ì£¬Client·¢ËÍдÊý¾ÝÇëÇóµ½RegionServer£¬Ò²ÊÇͨ¹ýRPCµÄ·½Ê½¡£Ö»ÊÇ£¬Clientµ½MasterÒÔ¼°Clientµ½RegionServer£¬²ÉÓÃÁ˲»Í¬µÄRPC·þÎñ½Ó¿Ú¡£

Client Send Request To RegionServer

single putÇëÇóÓëbatch putÇëÇó£¬Á½ÕßËùµ÷ÓõÄRPC·þÎñ½Ó¿Ú·½·¨ÊDz»Í¬µÄ£¬ÈçÏÂÊÇClient.protoÖе͍Ò壺

Client Proto¶¨Òå

°²È«·ÃÎÊ¿ØÖÆ

ÈçºÎ±£ÕÏUserAÖ»ÄÜдÊý¾Ýµ½UserAµÄ±íÖУ¬ÒÔ¼°½ûÖ¹UserA¸ÄдÆäËüUserµÄ±íµÄÊý¾Ý£¬HBaseÌṩÁËACL»úÖÆ¡£ACLͨ³£ÐèÒªÓëKerberosÈÏÖ¤ÅäºÏÒ»ÆðʹÓã¬KerberosÄܹ»È·±£Ò»¸öÓû§µÄºÏ·¨ÐÔ£¬¶øACLÈ·±£¸ÃÓû§½öÄÜÖ´ÐÐȨÏÞ·¶Î§ÄڵIJÙ×÷¡£

HBase½«È¨ÏÞ·ÖΪÈçϼ¸Àࣺ

READ(¡®R¡¯)

WRITE(¡®W¡¯)

EXEC(¡®X¡¯)

CREATE(¡®C¡¯)

ADMIN(¡®A¡¯)

¿ÉÒÔΪһ¸öÓû§/Óû§×鶨ÒåÕû¿â¼¶±ðµÄȨÏÞ¼¯ºÏ£¬Ò²¿ÉÒÔ¶¨ÒåNamespace¡¢±í¡¢ÁÐ×åÉõÖÁÊÇÁм¶±ðµÄȨÏÞ¼¯ºÏ¡£

RegionServer¶Ë´¦Àí£ºRegion·Ö·¢

RegionServerµÄRPC Server²à£¬½ÓÊÕµ½À´×ÔClient¶ËµÄRPCÇëÇóÒԺ󣬽«¸ÃÇëÇ󽻸øHandlerÏ̴߳¦Àí¡£

Èç¹ûÊÇsingle put£¬Ôò¸Ã²½Öè±È½Ï¼òµ¥£¬ÒòΪÔÚ·¢Ë͹ýÀ´µÄÇëÇó²ÎÊýMutateRequestÖУ¬ÒѾ­Ð¯´øÁËÕâÌõ¼Ç¼Ëù¹ØÁªµÄRegion£¬ÄÇôֱ½Ó½«¸ÃÇëÇóת·¢¸ø¶ÔÓ¦µÄRegion¼´¿É¡£

Èç¹ûÊÇbatch puts£¬Ôò½ÓÊÕµ½µÄÇëÇó²ÎÊýΪMultiRequest£¬ÔÚMultiRequestÖУ¬»ìºÏÁËÕâ¸öRegionServerËù³ÖÓеĶà¸öRegionµÄдÈëÇëÇó£¬Ã¿Ò»¸öRegionµÄдÈëÇëÇó¶¼±»°ü×°³ÉÁËÒ»¸öRegionAction¶ÔÏó¡£RegionServer½ÓÊÕµ½MultiRequestÇëÇóÒԺ󣬱éÀúËùÓеÄRegionAction£¬¶øºóдÈ뵽ÿһ¸öRegionÖУ¬´Ë¹ý³ÌÊÇ´®ÐеÄ:

Write Per Region

´ÓÕâÀï¿ÉÒÔ¿´³öÀ´£¬²¢²»ÊÇÒ»¸öbatchÔ½´óÔ½ºÃ£¬´óµÄbatch sizeÉõÖÁ¿ÉÄܵ¼ÖÂÍÌÍÂÁ¿Ï½µ¡£

RegionÄÚ²¿´¦Àí£ºÐ´WAL

HBaseÒ²²ÉÓÃÁËLSM-TreeµÄ¼Ü¹¹Éè¼Æ£ºLSM-TreeÀûÓÃÁË´«Í³»úеӲÅ̵ġ°Ë³Ðò¶ÁдËÙ¶ÈÔ¶¸ßÓÚËæ»ú¶ÁдËÙ¶È¡±µÄÌØµã¡£Ëæ»úдÈëµÄÊý¾Ý£¬Èç¹ûÖ±½ÓÈ¥¸Äдÿһ¸öRegionÉϵÄÊý¾ÝÎļþ£¬ÄÇôÍÌÍÂÁ¿ÊǷdz£²îµÄ¡£Òò´Ë£¬Ã¿Ò»¸öRegionÖÐËæ»úдÈëµÄÊý¾Ý£¬¶¼ÔÝʱÏÈ»º´æÔÚÄÚ´æÖÐ(HBaseÖдæ·ÅÕⲿ·ÖÄÚ´æÊý¾ÝµÄÄ£¿é³ÆÖ®ÎªMemStore£¬ÕâÀï½ö½öÒý³ö¸ÅÄÏÂÒ»Õ½ÚÏêϸ½éÉÜ)£¬ÎªÁ˱£ÕÏÊý¾Ý¿É¿¿ÐÔ£¬½«ÕâÐ©Ëæ»úдÈëµÄÊý¾Ý˳ÐòдÈëµ½Ò»¸ö³ÆÖ®ÎªWAL(Write-Ahead-Log)µÄÈÕÖ¾ÎļþÖУ¬WALÖеÄÊý¾Ý°´Ê±¼ä˳Ðò×éÖ¯£º

MemStore And WAL

Èç¹ûλÓÚÄÚ´æÖеÄÊý¾ÝÉÐδ³Ö¾Ã»¯£¬¶øÇÒͻȻÓöµ½ÁË»úÆ÷¶Ïµç£¬Ö»ÐèÒª½«WALÖеÄÊý¾Ý»Ø·Åµ½RegionÖм´¿É:

WAL Replay

ÔÚHBaseÖУ¬Ä¬ÈÏÒ»¸öRegionServerÖ»ÓÐÒ»¸ö¿ÉдµÄWALÎļþ¡£WALÖÐдÈëµÄ¼Ç¼£¬ÒÔEntryΪ»ù±¾µ¥Ôª£¬¶øÒ»¸öEntryÖУ¬°üº¬£º

WALKey °üº¬{Encoded Region Name£¬Table Name£¬Sequence ID£¬Timestamp}µÈ¹Ø¼üÐÅÏ¢£¬ÆäÖУ¬Sequence IDÔÚά³ÖÊý¾ÝÒ»ÖÂÐÔ·½ÃæÆðµ½Á˹ؼü×÷Ó㬿ÉÒÔÀí½âΪһ¸öÊÂÎñID¡£

WALEdit WALEditÖÐÖ±½Ó±£´æ´ýдÈëÊý¾ÝµÄËùÓеÄKeyValues£¬¶øÕâЩKeyValues¿ÉÄÜÀ´×ÔÒ»¸öRegionÖеĶàÐÐÊý¾Ý¡£

Ò²¾ÍÊÇ˵£¬Í¨³££¬Ò»¸öRegionÖеÄÒ»¸öbatch putÇëÇ󣬻ᱻ×é×°³ÉÒ»¸öEntry£¬Ð´Èëµ½WALÖУº

Write into WAL

½«Entryдµ½ÎļþÖÐʱÊÇÖ§³ÖѹËõµÄ£¬µ«¸ÃÌØÐÔĬÈÏ먦Æô¡£

WAL½ø½×ÄÚÈÝ

WAL Roll and Archive

µ±ÕýÔÚдµÄWALÎļþ´ïµ½Ò»¶¨´óСÒԺ󣬻ᴴ½¨Ò»¸öеÄWALÎļþ£¬ÉÏÒ»¸öWALÎļþÒÀÈ»ÐèÒª±»±£Áô£¬ÒòΪÕâ¸öWALÎļþÖÐËù¹ØÁªµÄRegionÖеÄÊý¾Ý£¬ÉÐδ±»³Ö¾Ã»¯´æ´¢£¬Òò´Ë£¬¸ÃWAL¿ÉÄܻᱻÓÃÀ´»Ø·ÅÊý¾Ý¡£

Roll WAL

Èç¹ûÒ»¸öWALÖÐËù¹ØÁªµÄËùÓеÄRegionÖеÄÊý¾Ý£¬¶¼ÒѾ­±»³Ö¾Ã»¯´æ´¢ÁË£¬ÄÇô£¬Õâ¸öWALÎļþ»á±»ÔÝʱ¹éµµµ½ÁíÍâÒ»¸öĿ¼ÖУº

WAL Archive

×¢Ò⣬ÕâÀï²»ÊÇÖ±½Ó½«WALÎļþɾ³ýµô£¬ÕâÊÇÒ»ÖÖÎÈÍ×ÇÒºÏÀíµÄ×ö·¨£¬Ô­ÒòÈçÏ£º

±ÜÃâÒòΪÂß¼­ÊµÏÖÉϵÄÎÊÌâµ¼ÖÂWAL±»Îóɾ£¬ÔÝʱ¹éµµµ½ÁíÍâÒ»¸öĿ¼£¬Îª´íÎó·¢ÏÖÔ¤ÁôÁËÒ»¶¨µÄʱ¼ä´°¿Ú

°´Ê±¼äά¶È×éÖ¯µÄWALÊý¾ÝÎļþ»¹¿ÉÒÔ±»ÓÃÓÚÆäËüÓÃ;£¬ÈçÔöÁ¿±¸·Ý£¬¿ç¼¯ÈºÈÝÔֵȵȣ¬Òò´Ë£¬ÕâЩWALÎļþͨ³£²»ÔÊÐíÖ±½Ó±»É¾³ý£¬ÖÁÓÚºÎʱ¿ÉÒÔ±»ÇåÀí£¬»¹ÐèÒª¶îÍâµÄ¿ØÖÆÂß¼­

ÁíÍ⣬Èç¹û¶ÔдÈëHBaseÖеÄÊý¾ÝµÄ¿É¿¿ÐÔÒªÇ󲻸ߣ¬ÄÇô£¬HBaseÔÊÐíͨ¹ýÅäÖÃÌø¹ýдWAL²Ù×÷¡£

˼¿¼£ºputÓëbatch putµÄÐÔÄÜΪºÎ²î±ð¾Þ´ó£¿

ÔÚÍøÂç·Ö·¢ÉÏ£¬batch putÒѾ­¾ß±¸Ò»¶¨µÄÓÅÊÆ£¬ÒòΪbatch putÊÇ´ò°ü·Ö·¢µÄ¡£

¶ø´ÓдWALÕâ¿é£¬¿´µÄ³öÀ´£¬batch putдÈëµÄһСÅú´ÎPut¶ÔÏ󣬿ÉÒÔͨ¹ýÒ»´Îsync¾Í³Ö¾Ã»¯µ½WALÎļþÖÐÁË£¬ÓÐЧ¼õÉÙÁËIOPS¡£

µ«Ç°ÃæÒ²Ìáµ½ÁË£¬batch size²¢²»ÊÇÔ½´óÔ½ºÃ£¬ÒòΪÿһ¸öbatchÔÚRegionServer¶ËÊDZ»´®Ðд¦ÀíµÄ¡£

ÀûÓÃDisruptorÌáÉýд²¢·¢ÐÔÄÜ

Ôڸ߲¢·¢Ëæ»úдÈ볡¾°Ï£¬»á´øÀ´´óÁ¿µÄWAL Sync²Ù×÷£¬HBaseÖвÉÓÃÁËDisruptorµÄRingBufferÀ´¼õÉÙ¾ºÕù£¬Ë¼Â·ÊÇÕâÑù£ºÈç¹û½«Ë²¼ä²¢·¢Ð´ÈëWALÖеÄÊý¾Ý£¬ºÏ²¢Ö´ÐÐSync²Ù×÷£¬¿ÉÒÔÓÐЧ½µµÍSync²Ù×÷µÄ´ÎÊý£¬À´ÌáÉýдÍÌÍÂÁ¿¡£

Multi-WAL

ĬÈÏÇéÐÎÏ£¬Ò»¸öRegionServerÖ»ÓÐÒ»¸ö±»Ð´ÈëµÄWAL Writer£¬¾¡¹ÜWAL WriterÒÀ¿¿Ë³ÐòдÌáÉýдÍÌÍÂÁ¿£¬ÔÚ»ùÓÚÆÕͨ»úеӲÅ̵ÄÅäÖÃÏ£¬´ËʱֻÄÜÓе¥¿éÅÌ·¢»Ó×÷Óã¬ÆäËüÅ̵ÄIOPSÄÜÁ¦²¢Ã»Óб»³ä·ÖÀûÓÃÆðÀ´£¬ÕâÊÇMulti-WALÉè¼ÆµÄ³õÖÔ¡£Multi-WAL¿ÉÒÔÔÚÒ»¸öRegionServerÖÐͬʱÆô¶¯¼¸¸öWAL Writer£¬¿É°´ÕÕÒ»¶¨µÄ²ßÂÔ£¬½«Ò»¸öRegionÓëÆäÖÐijһ¸öWAL Writer°ó¶¨£¬ÕâÑù¿ÉÒÔ³ä·Ö·¢»Ó¶à¿éÅ̵ÄÐÔÄÜÓÅÊÆ¡£

¹ØÓÚWALµÄδÀ´

WALÊÇ»ùÓÚ»úеӲÅ̵ÄIOÄ£ÐÍÉè¼ÆµÄ£¬¶ø¶ÔÓÚÐÂÐ˵ķÇÒ×ʧÐÔ½éÖÊ£¬Èç3D XPoint£¬WALδÀ´¿ÉÄÜ»áʧȥ´æÔÚµÄÒâÒ壬¹ØÓÚÕⲿ·ÖÄÚÈÝ£¬Çë²Î¿¼ÎÄÕ¡¶´ÓHBaseÖÐÒÆ³ýWAL£¿3D XPoint¼¼Êõ´øÀ´µÄ±ä¸ï¡·¡£

RegionÄÚ²¿´¦Àí£ºÐ´MemStore

ÿһ¸öColumn Family£¬ÔÚRegionÄÚ²¿±»³éÏóΪÁËÒ»¸öHStore¶ÔÏ󣬶øÃ¿Ò»¸öHStoreÓµÓÐ×ÔÉíµÄMemStore£¬ÓÃÀ´»º´æÒ»Åú×î½ü±»Ëæ»úдÈëµÄÊý¾Ý£¬ÕâÊÇLSM-TreeºËÐÄÉè¼ÆµÄÒ»²¿·Ö¡£

MemStoreÖÐÓÃÀ´´æ·ÅËùÓеÄKeyValueµÄÊý¾Ý½á¹¹£¬³ÆÖ®ÎªCellSet£¬¶øCellSetµÄºËÐÄÊÇÒ»¸öConcurrentSkipListMap£¬ÎÒÃÇÖªµÀ£¬ConcurrentSkipListMapÊÇJavaµÄÌø±íʵÏÖ£¬Êý¾Ý°´ÕÕKeyÖµÓÐÐò´æ·Å£¬¶øÇÒÔڸ߲¢·¢Ð´Èëʱ£¬ÐÔÄÜÔ¶¸ßÓÚConcurrentHashMap¡£

Òò´Ë£¬Ð´MemStoreµÄ¹ý³Ì£¬ÊÂʵÉÏÊǽ«batch putÌá½»¹ýÀ´µÄËùÓеÄKeyValueÁÐ±í£¬Ð´Èëµ½MemStoreµÄÒÔConcurrentSkipListMapΪ×é³ÉºËÐĵÄCellSetÖУº

Write Into MemStore

MemStoreÒòÎªÉæ¼°µ½´óÁ¿µÄËæ»úдÈë²Ù×÷£¬»á´øÀ´´óÁ¿JavaС¶ÔÏóµÄ´´½¨ÓëÏûÍö£¬»áµ¼Ö´óÁ¿µÄÄÚ´æË鯬£¬¸øGC´øÀ´±È½ÏÖØµÄѹÁ¦£¬HBaseΪÁËÓÅ»¯ÕâÀïµÄ»úÖÆ£¬½è¼øÁ˲Ù×÷ϵͳµÄÄÚ´æ·ÖÒ³µÄ¼¼Êõ£¬Ôö¼ÓÁËÒ»¸öÃûΪMSLabµÄÌØÐÔ£¬Í¨¹ý·ÖÅäһЩ¹Ì¶¨´óСµÄChunk£¬À´´æ´¢MemStoreÖеÄÊý¾Ý£¬ÕâÑù¿ÉÒÔÓÐЧ¼õÉÙÄÚ´æË鯬ÎÊÌ⣬½µµÍGCµÄѹÁ¦¡£µ±È»£¬ConcurrentSkipListMap±¾ÉíÒ²»á´´½¨´óÁ¿µÄ¶ÔÏó£¬ÕâÀïÒ²ÓкܴóµÄÓÅ»¯¿Õ¼ä£¬È¥Äê°¢ÀïµÄһƪÎÄÕÂ͸¶Á˰¢ÀïÈçºÎͨ¹ýÓÅ»¯ConcurrentSkipListMapµÄ½á¹¹À´ÓÐЧ¼õÉÙGCʱ¼ä¡£

½ø½×ÄÚÈÝ2£ºÏÈдWAL»¹ÊÇÏÈдMemStore?

ÔÚ0.94°æ±¾Ö®Ç°£¬RegionÖеÄдÈë˳ÐòÊÇÏÈдWALÔÙдMemStore£¬ÕâÓëWALµÄ¶¨ÒåÒ²Ïà·û¡£

µ«ÔÚ0.94°æ±¾ÖУ¬½«ÕâÁ½ÕßµÄ˳Ðòµßµ¹ÁË£¬µ±Ê±µßµ¹µÄ³õÖÔ£¬ÊÇΪÁËʹµÃÐÐËøÄܹ»ÔÚWAL sync֮ǰÏÈÊÍ·Å£¬´Ó¶ø¿ÉÒÔÌáÉýÕë¶Ôµ¥ÐÐÊý¾ÝµÄ¸üÐÂÐÔÄÜ¡£ÏêϸÎÊÌâµ¥£¬Çë²Î¿¼HBASE-4528¡£

ÔÚ2.0°æ±¾ÖУ¬ÕâÒ»ÐÐΪÓÖ±»¸Ä»ØÈ¥ÁË£¬Ô­ÒòÔÚÓÚÐÞ¸ÄÁËÐÐËø»úÖÆÒÔºó(ÏÂÃæÕ½ڽ«½²µ½)£¬·¢ÏÖÁËһЩÐÔÄÜϽµ£¬¶øHBASE-4528ÖеÄÓÅ»¯È´ÎÞ·¨ÔÙ·¢»Ó×÷Óã¬ÏêÇéÇë²Î¿¼HBASE-15158¡£¸Ä¶¯Ö®ºóµÄÂß¼­Ò²¸ü¼ò½àÁË¡£

½ø½×ÄÚÈÝ3£º¹ØÓÚÐм¶±ðµÄACID

ÔÚ֮ǰµÄ°æ±¾ÖУ¬Ðм¶±ðµÄÈκβ¢·¢Ð´Èë/¸üж¼ÊÇ»¥³âµÄ£¬ÓÉÒ»¸öÐÐËø¿ØÖÆ¡£µ«ÔÚ2.0°æ±¾ÖУ¬ÕâÒ»µãÐÐΪ·¢ÉúÁ˱仯£¬¶à¸öÏ߳̿ÉÒÔͬʱ¸üÐÂÒ»ÐÐÊý¾Ý£¬ÕâÀïµÄ¿¼ÂǵãΪ£º

Èç¹û¶à¸öÏß³ÌдÈëͬһÐеIJ»Í¬ÁÐ×壬ÊDz»ÐèÒª»¥³âµÄ

¶à¸öÏß³ÌдͬһÐеÄÏàͬÁÐ×壬Ҳ²»ÐèÒª»¥³â£¬¼´Ê¹ÊÇдÏàͬµÄÁУ¬Ò²ÍêÈ«¿ÉÒÔͨ¹ýHBaseµÄMVCC»úÖÆÀ´¿ØÖÆÊý¾ÝµÄÒ»ÖÂÐÔ

µ±È»£¬CAS²Ù×÷(ÈçcheckAndPut)»òincrement²Ù×÷£¬ÒÀÈ»ÐèÒª¶ÀÕ¼µÄÐÐËø

¸ü¶àÏêϸÐÅÏ¢£¬¿ÉÒԲο¼HBASE-12751¡£

ÖÁ´Ë£¬ÕâÌõÊý¾ÝÒѾ­±»Í¬Ê±³É¹¦Ð´µ½ÁËWALÒÔ¼°MemStoreÖУº

Data Written In HBase

×ܽá

±¾ÎÄÖ÷ÒªÄÚÈÝ×ܽáÈçÏ£º

½éÉÜHBaseдÊý¾Ý¿ÉÑ¡½Ó¿ÚÒÔ¼°½Ó¿Ú¶¨Òå¡£

ͨ¹ýÒ»¸öÑùÀý£¬½éÉÜÁËRowKey¶¨ÒåÒÔ¼°Áж¨ÒåµÄһЩ·½·¨£¬ÒÔ¼°ÈçºÎ×é×°Put¶ÔÏó

Êý¾Ý·ÓÉ£¬Êý¾Ý·Ö·¢¡¢´ò°ü£¬ÒÔ¼°Clientͨ¹ýRPC·¢ËÍдÊý¾ÝÇëÇóÖÁRegionServer

RegionServer½ÓÊÕÊý¾ÝÒԺ󣬽«Êý¾Ýдµ½Ã¿Ò»¸öRegionÖС£Ð´Êý¾ÝÁ÷³ÌÏÈдWALÔÙдMemStore£¬ÕâÀïÕ¹¿ªÁËһЩ¼¼Êõϸ½Ú

¼òµ¥½éÉÜÁËHBaseȨÏÞ¿ØÖÆÄ£ÐÍ

ÐèҪ˵Ã÷µÄÒ»µã£¬±¾ÎÄËù½²µ½µÄMemStoreÆäʵÊÇÒ»ÖÖ"¼ò»¯"ºóµÄÄ£ÐÍ£¬ÔÚ2.0°æ±¾ÖУ¬ÕâÀïÒѾ­±äµÄ¸ü¼Ó¸´ÔÓ¡£

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

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

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

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