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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Ò»ÎĶÁ¶®·Ç¹ØÏµÐÍÊý¾Ý¿â£¨NoSQL£©
 
×÷ÕߣºLeiLv
  2815  次浏览      28
2020-11-26
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜÁ˷ǹØÏµÐÍÊý¾Ý¿â£¨NoSQL£©·Ö²¼Ê½ÏµÍ³µÄÌØµã£¬·Ö²¼Ê½´æ´¢Ëã·¨,Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×Ô¼òÊ飬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

NoSQL(NoSQL = Not Only SQL )£¬Òâ¼´"²»½ö½öÊÇSQL"¡£

ÏÖ´ú¼ÆËãϵͳÿÌìÔÚÍøÂçÉ϶¼»á²úÉúÅÓ´óµÄÊý¾ÝÁ¿¡£ÕâЩÊý¾ÝÓкܴóÒ»²¿·ÖÊÇÓɹØÏµÐÍÊý¾Ý¿â¹ÜÀíϵͳ£¨RDBMSs£©À´´¦Àí£¬ÆäÑϽ÷³ÉÊìµÄÊýѧÀíÂÛ»ù´¡Ê¹µÃÊý¾Ý½¨Ä£ºÍÓ¦ÓóÌÐò±à³Ì¸ü¼Ó¼òµ¥¡£

µ«Ëæ×ÅÐÅÏ¢»¯µÄÀ˳±ºÍ»¥ÁªÍøµÄÐËÆð£¬´«Í³µÄRDBMSÔÚһЩҵÎñÉÏ¿ªÊ¼³öÏÖÎÊÌâ¡£Ê×ÏÈ£¬¶ÔÊý¾Ý¿â´æ´¢µÄÈÝÁ¿ÒªÇóÔ½À´Ô½¸ß£¬µ¥»úÎÞ·¨Âú×ãÐèÇ󣬺ܶàʱºòÐèÒªÓü¯ÈºÀ´½â¾öÎÊÌ⣬¶øRDBMSÓÉÓÚÒªÖ§³Öjoin£¬unionµÈ²Ù×÷£¬Ò»°ã²»Ö§³Ö·Ö²¼Ê½¼¯Èº¡£Æä´Î£¬ÔÚ´óÊý¾Ý´óÐÐÆäµÀµÄ½ñÌ죬ºÜ¶àµÄÊý¾Ý¶¼¡°Æµ·±¶ÁºÍÔö¼Ó£¬²»Æµ·±Ð޸ġ±£¬¶øRDBMS¶ÔËùÓвÙ×÷Ò»ÊÓͬÈÊ£¬Õâ¾Í´øÀ´ÁËÓÅ»¯µÄ¿Õ¼ä¡£ÁíÍ⣬»¥ÁªÍøÊ±´úÒµÎñµÄ²»È·¶¨ÐÔµ¼ÖÂÊý¾Ý¿âµÄ´æ´¢Ä£Ê½Ò²ÐèҪƵ·±±ä¸ü£¬²»×ÔÓɵĴ洢ģʽÔö´óÁËÔËάµÄ¸´ÔÓÐÔºÍÀ©Õ¹µÄÄѶȡ£

NoSQL ÊÇÒ»ÏîȫеÄÊý¾Ý¿â¸ïÃüÐÔÔ˶¯£¬ÔçÆÚ¾ÍÓÐÈËÌá³ö£¬·¢Õ¹ÖÁ2009ÄêÇ÷ÊÆÔ½·¢¸ßÕÇ¡£ÕâÀàÊý¾Ý¿âÖ÷ÒªÓÐÕâÐ©ÌØµã£º·Ç¹ØÏµÐ͵ġ¢·Ö²¼Ê½µÄ¡¢¿ªÔ´µÄ¡¢Ë®Æ½¿ÉÀ©Õ¹µÄ¡£×î³õµÄÄ¿µÄÊÇΪÁË´ó¹æÄ£web Ó¦Óá£NoSQL µÄÓµ»¤ÕßÃÇÌᳫÔËÓ÷ǹØÏµÐ͵ÄÊý¾Ý´æ´¢£¬Í¨³£µÄÓ¦ÓÃÈçÏÂÌØµã£ºÄ£Ê½×ÔÓÉ¡¢Ö§³Ö¼òÒ׸´ÖÆ¡¢¼òµ¥µÄAPI¡¢×îÖÕµÄÒ»ÖÂÐÔ£¨·ÇACID£©¡¢´óÈÝÁ¿Êý¾ÝµÈ¡£

±ÊÕßÊÇMongoDBÓû§£¬Ò²Ê¹ÓùýRedis¡£¹ØÏµÐÍÊý¾Ý¿âʹÓùýMySQLÓëOracle£¬¶ÔÁ½ÕßµÄÇø±ðÓÐÒ»¶¨µÄÌå»á¡£MongoºÍRedisµÄ²Ù×÷¶¼·Ç³£¼òµ¥£¬ËٶȺܿ죬ºÜ¶àÓÃSQLÐèÒªºÜ¶àÌõÓï¾äµÄ²Ù×÷ÔÚNoSQLÊý¾Ý¿âÖж¼ÊÇ2¾äÒÔÄÚÍê³É¡£ÁíÍâNoSQLÅäÖÃclusterÒ²ºÜÈÝÒ×£¬ÇÒ¿ÉÒÔËæÊ±¸ü¸ÄpartitionºÍreplicationµÄÊýÁ¿£¬MongoµÄа汾»¹ÄÚÖÃÁËMapReduce²Ù×÷£¬Ê¹ÆäÓÐÁË×ö´óÊý¾Ý·ÖÎöµÄÄÜÁ¦¡£

NoSQLÀíÂÛ»ù´¡

1.¹ØÏµÐÍÊý¾Ý¿âÀíÂÛ - ACID

ACID£¬ÊÇÖ¸Êý¾Ý¿â¹ÜÀíϵͳ£¨DBMS£©ÔÚдÈë»ò¸üÐÂ×ÊÁϵĹý³ÌÖУ¬Îª±£Ö¤ÊÂÎñ£¨transaction£©ÊÇÕýÈ·¿É¿¿µÄ£¬Ëù±ØÐë¾ß±¸µÄËĸöÌØÐÔ£ºÔ­×ÓÐÔ£¨atomicity£¬»ò³Æ²»¿É·Ö¸îÐÔ£©¡¢Ò»ÖÂÐÔ£¨consistency£©¡¢¸ôÀëÐÔ£¨isolation£¬ÓֳƶÀÁ¢ÐÔ£©¡¢³Ö¾ÃÐÔ£¨durability£©¡£

A ¨C Atomicity ¨C Ô­×ÓÐÔ

Ò»¸öÊÂÎñ£¨transaction£©ÖеÄËùÓвÙ×÷£¬ÒªÃ´È«²¿Íê³É£¬ÒªÃ´È«²¿²»Íê³É£¬²»»á½áÊøÔÚÖмäij¸ö»·½Ú¡£ÊÂÎñÔÚÖ´Ðйý³ÌÖз¢Éú´íÎ󣬻ᱻ»Ø¹ö£¨Rollback£©µ½ÊÂÎñ¿ªÊ¼Ç°µÄ״̬£¬¾ÍÏñÕâ¸öÊÂÎñ´ÓÀ´Ã»Óб»Ö´ÐйýÒ»Ñù¡£

C ¨C Consistency ¨C Ò»ÖÂÐÔ

ÔÚÊÂÎñ¿ªÊ¼Ö®Ç°ºÍÊÂÎñ½áÊøÒÔºó£¬Êý¾Ý¿âµÄÍêÕûÐÔûÓб»ÆÆ»µ¡£Õâ±íʾдÈëµÄ×ÊÁϱØÐëÍêÈ«·ûºÏËùÓеÄÔ¤Éè¹æÔò£¬Õâ°üº¬×ÊÁϵľ«È·¶È¡¢´®ÁªÐÔÒÔ¼°ºóÐøÊý¾Ý¿â¿ÉÒÔ×Ô·¢ÐÔµØÍê³ÉÔ¤¶¨µÄ¹¤×÷¡£

I ¨C Isolation ¨C ¸ôÀëÐÔ

Êý¾Ý¿âÔÊÐí¶à¸ö²¢·¢ÊÂÎñͬʱ¶ÔÆäÊý¾Ý½øÐжÁдºÍÐ޸ĵÄÄÜÁ¦£¬¸ôÀëÐÔ¿ÉÒÔ·ÀÖ¹¶à¸öÊÂÎñ²¢·¢Ö´ÐÐʱÓÉÓÚ½»²æÖ´Ðжøµ¼ÖÂÊý¾ÝµÄ²»Ò»Ö¡£ÊÂÎñ¸ôÀë·ÖΪ²»Í¬¼¶±ð£¬°üÀ¨¶ÁδÌá½»£¨Read uncommitted£©¡¢¶ÁÌá½»£¨read committed£©¡¢¿ÉÖØ¸´¶Á£¨repeatable read£©ºÍ´®Ðл¯£¨Serializable£©¡£

D ¨C Durability ¨C ³Ö¾ÃÐÔ

ÊÂÎñ´¦Àí½áÊøºó£¬¶ÔÊý¾ÝµÄÐ޸ľÍÊÇÓÀ¾ÃµÄ£¬¼´±ãϵͳ¹ÊÕÏÒ²²»»á¶ªÊ§¡£

¹ØÏµÐÍÊý¾Ý¿âÑϸñ×ñÑ­ACIDÀíÂÛ¡£µ«µ±Êý¾Ý¿âÒª¿ªÊ¼Âú×ãºáÏòÀ©Õ¹¡¢¸ß¿ÉÓá¢Ä£Ê½×ÔÓɵÈÐèÇóʱ£¬ÐèÒª¶ÔACIDÀíÂÛ½øÐÐÈ¡Éᣬ²»ÄÜÑϸñ×ñÑ­ACID¡£ÒÔCAPÀíÂÛºÍBASEÀíÂÛΪ»ù´¡µÄNoSQLÊý¾Ý¿â¿ªÊ¼³öÏÖ¡£

2.·Ö²¼Ê½ÏµÍ³ÀíÂÛ

2.1 ·Ö²¼Ê½ÏµÍ³½éÉÜ

·Ö²¼Ê½ÏµÍ³µÄºËÐÄÀíÄîÊÇÈöą̀·þÎñÆ÷Эͬ¹¤×÷£¬Íê³Éµ¥Ì¨·þÎñÆ÷ÎÞ·¨´¦ÀíµÄÈÎÎñ£¬ÓÈÆäÊǸ߲¢·¢»òÕß´óÊý¾ÝÁ¿µÄÈÎÎñ¡£·Ö²¼Ê½ÊÇNoSQLÊý¾Ý¿âµÄ±ØÒªÌõ¼þ¡£

·Ö²¼Ê½ÏµÍ³ÓɶÀÁ¢µÄ·þÎñÆ÷ͨ¹ýÍøÂçËÉÉ¢ñîºÏ×é³ÉµÄ¡£Ã¿¸ö·þÎñÆ÷¶¼ÊÇһ̨¶ÀÁ¢µÄPC»ú£¬·þÎñÆ÷Ö®¼äͨ¹ýÄÚ²¿ÍøÂçÁ¬½Ó£¬ÄÚ²¿ÍøÂçËÙ¶ÈÒ»°ã±È½Ï¿ì¡£ÒòΪ·Ö²¼Ê½¼¯ÈºÀïµÄ·þÎñÆ÷ÊÇͨ¹ýÄÚ²¿ÍøÂçËÉÉ¢ñîºÏ£¬¸÷½ÚµãÖ®¼äµÄͨѶÓÐÒ»¶¨µÄÍøÂ翪Ïú£¬Òò´Ë·Ö²¼Ê½ÏµÍ³ÔÚÉè¼ÆÉϾ¡¿ÉÄܼõÉÙ½Úµã¼äͨѶ¡£´ËÍ⣬ÒòÎªÍøÂç´«ÊäÆ¿¾±£¬µ¥¸ö½ÚµãµÄÐÔÄܸߵͶԷֲ¼Ê½ÏµÍ³ÕûÌåÐÔÄÜÓ°Ïì²»´ó¡£±ÈÈ磬¶Ô·Ö²¼Ê½Ó¦ÓÃÀ´Ëµ£¬²ÉÓò»Í¬±à³ÌÓïÑÔ¿ª·¢´øÀ´µÄµ¥¸öÓ¦Ó÷þÎñµÄÐÔÄܲîÒ죬¸úÍøÂ翪Ïú±ÈÆðÀ´¶¼¿ÉÒÔºöÂÔ²»¼Æ¡£

Òò´Ë£¬·Ö²¼Ê½ÏµÍ³Ã¿¸ö½ÚµãÒ»°ã²»²ÉÓøßÐÔÄܵķþÎñÆ÷£¬¶øÊÇʹÓÃÐÔÄÜÏà¶ÔÒ»°ãµÄÆÕͨPC·þÎñÆ÷¡£ÌáÉý·Ö²¼Ê½ÏµÍ³µÄÕûÌåÐÔÄÜÊÇͨ¹ýºáÏòÀ©Õ¹£¨Ôö¼Ó¸ü¶àµÄ·þÎñÆ÷£©£¬¶ø²»ÊÇ×ÝÏòÀ©Õ¹£¨ÌáÉýÿ¸ö½ÚµãµÄ·þÎñÆ÷ÐÔÄÜ£©ÊµÏÖ¡£

·Ö²¼Ê½ÏµÍ³×î´óµÄÌØµãÊÇ¿ÉÀ©Õ¹ÐÔ£¬ËüÄܹ»ÊÊÓ¦ÐèÇó±ä»¯¶øÀ©Õ¹¡£ÆóÒµ¼¶Ó¦ÓÃÐèÇó¾­³£ËæÊ±¼ä¶ø²»¶Ï±ä»¯£¬ÕâÒ²¶ÔÆóÒµ¼¶Ó¦ÓÃÆ½Ì¨Ìá³öÁ˺ܸߵÄÒªÇ󡣯óÒµ¼¶Ó¦ÓÃÆ½Ì¨±ØÐëÒªÄÜÊÊÓ¦ÐèÇóµÄ±ä»¯£¬¼´¾ßÓпÉÀ©Õ¹ÐÔ¡£±ÈÈçÒÆ¶¯»¥ÁªÍø2CÓ¦Óã¬Ëæ×Å»¥ÁªÍøÆóÒµµÄÒµÎñ¹æÄ£²»¶ÏÔö´ó£¬ÒµÎñ±äµÃÔ½À´Ô½¸´ÔÓ£¬²¢·¢Óû§ÇëÇóÔ½À´Ô½¶à£¬Òª´¦ÀíµÄÊý¾ÝÒ²Ô½À´Ô½¶à£¬Õâ¸öʱºòÆóÒµ¼¶Ó¦ÓÃÆ½Ì¨±ØÐëÄܹ»ÊÊÓ¦ÕâЩ±ä»¯£¬Ö§³Ö¸ß²¢·¢·ÃÎʺͺ£Á¿Êý¾Ý´¦Àí¡£·Ö²¼Ê½ÏµÍ³ÓÐÁ¼ºÃµÄ¿ÉÀ©Õ¹ÐÔ£¬¿ÉÒÔͨ¹ýÔö¼Ó·þÎñÆ÷ÊýÁ¿À´ÔöÇ¿·Ö²¼Ê½ÏµÍ³ÕûÌåµÄ´¦ÀíÄÜÁ¦£¬ÒÔÓ¦¶ÔÆóÒµµÄÒµÎñÔö³¤´øÀ´µÄ¼ÆËãÐèÇóÔö¼Ó¡£

2.2 ·Ö²¼Ê½´æ´¢µÄÎÊÌâ ¨C CAPÀíÂÛ

Èç¹ûÎÒÃÇÆÚ´ýʵÏÖÒ»Ì×ÑϸñÂú×ãACIDµÄ·Ö²¼Ê½ÊÂÎñ£¬ºÜ¿ÉÄܳöÏÖµÄÇé¿ö¾ÍÊÇϵͳµÄ¿ÉÓÃÐÔºÍÑϸñÒ»ÖÂÐÔ·¢Éú³åÍ»¡£ÔÚ¿ÉÓÃÐÔºÍÒ»ÖÂÐÔÖ®¼äÓÀÔ¶ÎÞ·¨´æÔÚÒ»¸öÁ½È«ÆäÃÀµÄ·½°¸¡£ÓÉÓÚNoSQLµÄ»ù±¾ÐèÇó¾ÍÊÇÖ§³Ö·Ö²¼Ê½´æ´¢£¬ÑϸñÒ»ÖÂÐÔÓë¿ÉÓÃÐÔÐèÒª»¥ÏàÈ¡ÉᣬÓÉ´ËÑÓÉì³öÁËCAPÀíÂÛÀ´¶¨Òå·Ö²¼Ê½´æ´¢Óöµ½µÄÎÊÌâ¡£

CAPÀíÂÛ¸æËßÎÒÃÇ£ºÒ»¸ö·Ö²¼Ê½ÏµÍ³²»¿ÉÄÜͬʱÂú×ãÒ»ÖÂÐÔ(C:Consistency)¡¢¿ÉÓÃÐÔ(A:Availability)¡¢·ÖÇøÈÝ´íÐÔ(P:Partitiontolerance)ÕâÈý¸ö»ù±¾ÐèÇ󣬲¢ÇÒ×î¶àÖ»ÄÜÂú×ãÆäÖеÄÁ½Ïî¡£

¶ÔÓÚÒ»¸ö·Ö²¼Ê½ÏµÍ³À´Ëµ£¬·ÖÇøÈÝ´íÊÇ»ù±¾ÐèÇ󣬷ñÔò²»ÄܳÆÖ®Îª·Ö²¼Ê½ÏµÍ³¡£Òò´Ë¼Ü¹¹Ê¦ÐèÒªÔÚCºÍAÖ®¼äѰÇóÆ½ºâ¡£

C ¨C Consistency ¨C Ò»ÖÂÐÔ£¨ÓëACIDµÄCÍêÈ«²»Í¬£©

Ò»ÖÂÐÔÊÇÖ¸¡°all nodes see the same data at the same time¡±£¬¼´¸üвÙ×÷³É¹¦²¢·µ»Ø¿Í»§¶ËÍê³Éºó£¬ËùÓнڵãÔÚͬһʱ¼äµÄÊý¾ÝÍêȫһÖ¡£

¶ÔÓÚÒ»ÖÂÐÔ£¬¿ÉÒÔ·ÖΪ´Ó¿Í»§¶ËºÍ·þÎñ¶ËÁ½¸ö²»Í¬µÄÊӽǡ£

´Ó¿Í»§¶ËÀ´¿´£¬Ò»ÖÂÐÔÖ÷ÒªÖ¸µÄÊǶಢ·¢·ÃÎÊʱ¸üйýµÄÊý¾ÝÈçºÎ»ñÈ¡µÄÎÊÌâ¡£

´Ó·þÎñ¶ËÀ´¿´£¬ÔòÊǸüÐÂÈçºÎ¸´ÖÆ·Ö²¼µ½Õû¸öϵͳ£¬ÒÔ±£Ö¤Êý¾Ý×îÖÕÒ»Ö¡£Ò»ÖÂÐÔÊÇÒòΪÓв¢·¢¶Áд²ÅÓеÄÎÊÌ⣬Òò´ËÔÚÀí½âÒ»ÖÂÐÔµÄÎÊÌâʱ£¬Ò»¶¨Òª×¢Òâ½áºÏ¿¼ÂDz¢·¢¶ÁдµÄ³¡¾°¡£

´Ó¿Í»§¶Ë½Ç¶È£¬¶à½ø³Ì²¢·¢·ÃÎÊʱ£¬¸üйýµÄÊý¾ÝÔÚ²»Í¬½ø³ÌÈçºÎ»ñÈ¡µÄ²»Í¬²ßÂÔ£¬¾ö¶¨Á˲»Í¬µÄÒ»ÖÂÐÔ¡£¶ÔÓÚ¹ØÏµÐÍÊý¾Ý¿â£¬ÒªÇó¸üйýµÄÊý¾ÝÄܱ»ºóÐøµÄ·ÃÎʶ¼ÄÜ¿´µ½£¬ÕâÊÇǿһÖÂÐÔ¡£Èç¹ûÄÜÈÝÈ̺óÐøµÄ²¿·Ö»òÕßÈ«²¿·ÃÎʲ»µ½£¬ÔòÊÇÈõÒ»ÖÂÐÔ¡£Èç¹û¾­¹ýÒ»¶Îʱ¼äºóÒªÇóÄÜ·ÃÎʵ½¸üкóµÄÊý¾Ý£¬ÔòÊÇ×îÖÕÒ»ÖÂÐÔ¡£

A ¨C Availability ¨C ¿ÉÓÃÐÔ

¿ÉÓÃÐÔÊÇÖ¸¡°Reads and writes always succeed¡±£¬¼´·þÎñÒ»Ö±¿ÉÓ㬶øÇÒÊÇÕý³£ÏìӦʱ¼ä¡£

¶ÔÓÚÒ»¸ö¿ÉÓÃÐԵķֲ¼Ê½ÏµÍ³£¬Ã¿Ò»¸ö·Ç¹ÊÕÏµÄ½Úµã±ØÐë¶Ôÿһ¸öÇëÇó×÷³öÏìÓ¦¡£Ò²¾ÍÊÇ˵£¬¸ÃϵͳʹÓõÄÈκÎËã·¨±ØÐë×îÖÕÖÕÖ¹¡£µ±Í¬Ê±ÒªÇó·ÖÇøÈÝÈÌÐÔʱ£¬ÕâÊÇÒ»¸öºÜÇ¿µÄ¶¨Ò壺¼´Ê¹ÊÇÑÏÖØµÄÍøÂç´íÎó£¬Ã¿¸öÇëÇó±ØÐëÍê³É¡£

ºÃµÄ¿ÉÓÃÐÔÖ÷ÒªÊÇָϵͳÄܹ»ºÜºÃµÄΪÓû§·þÎñ£¬²»³öÏÖÓû§²Ù×÷ʧ°Ü»òÕß·ÃÎʳ¬Ê±µÈÓû§ÌåÑé²»ºÃµÄÇé¿ö¡£ÔÚͨ³£Çé¿öÏ£¬¿ÉÓÃÐÔÓë·Ö²¼Ê½Êý¾ÝÈßÓà¡¢¸ºÔؾùºâµÈÓÐןܴóµÄ¹ØÁª¡£

P ¨C Partition tolerance ¨C ·ÖÇøÈÝ´íÐÔ

·ÖÇøÈÝ´íÐÔÊÇÖ¸¡°the system continues to operate despite arbitrary message loss or failureof part of the system¡±£¬¼´·Ö²¼Ê½ÏµÍ³ÔÚÓöµ½Ä³½Úµã»òÍøÂç·ÖÇø¹ÊÕϵÄʱºò£¬ÈÔÈ»Äܹ»¶ÔÍâÌṩÂú×ãÒ»ÖÂÐԺͿÉÓÃÐԵķþÎñ¡£

·ÖÇøÈÝ´íÐÔºÍÀ©Õ¹ÐÔ½ôÃÜÏà¹Ø¡£ÔÚ·Ö²¼Ê½Ó¦ÓÃÖУ¬¿ÉÄÜÒòΪһЩ·Ö²¼Ê½µÄÔ­Òòµ¼ÖÂϵͳÎÞ·¨Õý³£ÔËת¡£ºÃµÄ·ÖÇøÈÝ´íÐÔÒªÇóÄܹ»Ê¹Ó¦ÓÃËäÈ»ÊÇÒ»¸ö·Ö²¼Ê½ÏµÍ³£¬µ«¿´ÉÏȥȴºÃÏñÊÇÒ»¸ö¿ÉÒÔÔËתÕý³£µÄÕûÌå¡£±ÈÈçÏÖÔڵķֲ¼Ê½ÏµÍ³ÖÐÓÐijһ¸ö»òÕß¼¸¸ö»úÆ÷å´µôÁË£¬ÆäËüʣϵĻúÆ÷»¹Äܹ»Õý³£ÔËתÂú×ãϵͳÐèÇ󣬻òÕßÊÇ»úÆ÷Ö®¼äÓÐÍøÂçÒì³££¬½«·Ö²¼Ê½ÏµÍ³·Ö¸ô³Éδ¶ÀÁ¢µÄ¼¸¸ö²¿·Ö£¬¸÷¸ö²¿·Ö»¹ÄÜά³Ö·Ö²¼Ê½ÏµÍ³µÄÔË×÷£¬ÕâÑù¾Í¾ßÓкõķÖÇøÈÝ´íÐÔ¡£

CA without P

Èç¹û²»ÒªÇóP£¨²»ÔÊÐí·ÖÇø£©£¬ÔòC£¨Ç¿Ò»ÖÂÐÔ£©ºÍA£¨¿ÉÓÃÐÔ£©ÊÇ¿ÉÒÔ±£Ö¤µÄ¡£µ«Æäʵ·ÖÇø²»ÊÇÄãÏë²»ÏëµÄÎÊÌ⣬¶øÊÇʼÖÕ»á´æÔÚ£¬Òò´ËCAµÄϵͳ¸ü¶àµÄÊÇÔÊÐí·ÖÇøºó¸÷×ÓϵͳÒÀÈ»±£³ÖCA¡£

CP without A

Èç¹û²»ÒªÇóA£¨¿ÉÓã©£¬Ï൱ÓÚÿ¸öÇëÇó¶¼ÐèÒªÔÚServerÖ®¼äǿһÖ£¬¶øP£¨·ÖÇø£©»áµ¼ÖÂͬ²½Ê±¼äÎÞÏÞÑÓ³¤£¬Èç´ËCPÒ²ÊÇ¿ÉÒÔ±£Ö¤µÄ¡£ºÜ¶à´«Í³µÄÊý¾Ý¿â·Ö²¼Ê½ÊÂÎñ¶¼ÊôÓÚÕâÖÖģʽ¡£

AP without C

Òª¸ß¿ÉÓò¢ÔÊÐí·ÖÇø£¬ÔòÐè·ÅÆúÒ»ÖÂÐÔ¡£Ò»µ©·ÖÇø·¢Éú£¬½ÚµãÖ®¼ä¿ÉÄÜ»áʧȥÁªÏµ£¬ÎªÁ˸߿ÉÓã¬Ã¿¸ö½ÚµãÖ»ÄÜÓñ¾µØÊý¾ÝÌṩ·þÎñ£¬¶øÕâÑù»áµ¼ÖÂÈ«¾ÖÊý¾ÝµÄ²»Ò»ÖÂÐÔ¡£ÏÖÔÚÖÚ¶àµÄNoSQL¶¼ÊôÓÚ´ËÀà¡£

CAPÀíÂÛ¶¨ÒåÁË·Ö²¼Ê½´æ´¢µÄ¸ù±¾ÎÊÌ⣬µ«²¢Ã»ÓÐÖ¸³öÒ»ÖÂÐԺͿÉÓÃÐÔÖ®¼äµ½µ×Ó¦¸ÃÈçºÎȨºâ¡£ÓÚÊdzöÏÖÁËBASEÀíÂÛ£¬¸ø³öÁËȨºâAÓëCµÄÒ»ÖÖ¿ÉÐз½°¸¡£

2.3 ȨºâÒ»ÖÂÐÔÓë¿ÉÓÃÐÔ - BASEÀíÂÛ

Base = Basically Available + Soft state + Eventuallyconsistent »ù±¾¿ÉÓÃÐÔ+Èí״̬+×îÖÕÒ»ÖÂÐÔ£¬ÓÉeBay¼Ü¹¹Ê¦DanPritchettÌá³ö¡£BaseÊǶÔCAPÖÐÒ»ÖÂÐÔAºÍ¿ÉÓÃÐÔCȨºâµÄ½á¹û£¬Ô´ÓÚÌá³öÕß×Ô¼ºÔÚ´ó¹æÄ£·Ö²¼Ê½ÏµÍ³ÉÏʵ¼ùµÄ×ܽᡣºËÐÄ˼ÏëÊÇÎÞ·¨×öµ½Ç¿Ò»ÖÂÐÔ£¬µ«Ã¿¸öÓ¦Óö¼¿ÉÒÔ¸ù¾Ý×ÔÉíµÄÌØµã£¬²ÉÓÃÊʵ±·½Ê½´ïµ½×îÖÕÒ»ÖÂÐÔ¡£

BA - Basically Available - »ù±¾¿ÉÓÃ

»ù±¾¿ÉÓá£ÕâÀïÊÇÖ¸·Ö²¼Ê½ÏµÍ³ÔÚ³öÏÖ¹ÊÕϵÄʱºò£¬ÔÊÐíËðʧ²¿·Ö¿ÉÓÃÐÔ£¬¼´±£Ö¤ºËÐŦÄÜ»òÕßµ±Ç°×îÖØÒª¹¦ÄÜ¿ÉÓ᣶ÔÓÚÓû§À´Ëµ£¬ËûÃǵ±Ç°×î¹Ø×¢µÄ¹¦ÄÜ»òÕß×î³£ÓõŦÄܵĿÉÓÃÐÔ½«»á»ñµÃ±£Ö¤£¬µ«ÊÇÆäËû¹¦ÄܻᱻÏ÷Èõ¡£

S ¨C Soft State - Èí״̬

ÔÊÐíϵͳÊý¾Ý´æÔÚÖмä״̬£¬µ«²»»áÓ°Ï쵽ϵͳµÄÕûÌå¿ÉÓÃÐÔ£¬¼´ÔÊÐíϵͳÔÚ²»Í¬½ÚµãµÄÊý¾Ý¸±±¾Ö®¼ä½øÐÐÊý¾Ýͬ²½Ê±´æÔÚÑÓʱ¡£

E - Eventually Consistent - ×îÖÕÒ»ÖÂÐÔ

ÒªÇóϵͳÊý¾Ý¸±±¾×îÖÕÄܹ»Ò»Ö£¬¶ø²»ÐèҪʵʱ±£Ö¤Êý¾Ý¸±±¾Ò»Ö¡£×îÖÕÒ»ÖÂÐÔÊÇÈõÒ»ÖÂÐÔµÄÒ»ÖÖÌØÊâÇé¿ö¡£×îÖÕÒ»ÖÂÐÔÓÐ5¸ö±äÖÖ£º

1.Òò¹ûÒ»ÖÂÐÔ

2.¶Á¼ºÖ®Ëùд(Òò¹ûÒ»ÖÂÐÔÌØÀý)

3.»á»°Ò»ÖÂÐÔ

4.µ¥µ÷¶ÁÒ»ÖÂÐÔ

5.µ¥µ÷дһÖÂÐÔ

3.·Ö²¼Ê½´æ´¢Ëã·¨

3.1Ò»ÖÂÐÔËã·¨ ¨C Paxos

Paxos Ëã·¨½â¾öµÄÎÊÌâÊÇÒ»¸ö·Ö²¼Ê½ÏµÍ³ÈçºÎ¾Íij¸öÖµ£¨¾öÒ飩´ï³ÉÒ»Ö¡£Ò»¸öµäÐ͵ij¡¾°ÊÇ£¬ÔÚÒ»¸ö·Ö²¼Ê½Êý¾Ý¿âϵͳÖУ¬Èç¹û¸÷½ÚµãµÄ³õʼ״̬һÖ£¬Ã¿¸ö½ÚµãÖ´ÐÐÏàͬµÄ²Ù×÷ÐòÁУ¬ÄÇôËûÃÇ×îºóÄܵõ½Ò»¸öÒ»ÖµÄ״̬¡£Îª±£Ö¤Ã¿¸ö½ÚµãÖ´ÐÐÏàͬµÄÃüÁîÐòÁУ¬ÐèÒªÔÚÿһÌõÖ¸ÁîÉÏÖ´ÐÐÒ»¸ö¡°Ò»ÖÂÐÔËã·¨¡±ÒÔ±£Ö¤Ã¿¸ö½Úµã¿´µ½µÄÖ¸ÁîÒ»Ö¡£Ò»¸öͨÓõÄÒ»ÖÂÐÔËã·¨¿ÉÒÔÓ¦ÓÃÔÚÐí¶à³¡¾°ÖУ¬ÊÇ·Ö²¼Ê½¼ÆËãÖеÄÖØÒªÎÊÌâ¡£Òò´Ë´Ó20ÊÀ¼Í80Äê´úÆð¶ÔÓÚÒ»ÖÂÐÔËã·¨µÄÑо¿¾ÍûÓÐÍ£Ö¹¹ý¡£½ÚµãͨÐÅ´æÔÚÁ½ÖÖÄ£ÐÍ£º¹²ÏíÄڴ棨Shared memory£©ºÍÏûÏ¢´«µÝ£¨Messages passing£©¡£Paxos Ëã·¨¾ÍÊÇÒ»ÖÖ»ùÓÚÏûÏ¢´«µÝÄ£Ð͵ÄÒ»ÖÂÐÔËã·¨¡£

²»½ö½öÊÇÔÚ·Ö²¼Ê½ÏµÍ³ÖУ¬·²ÊǶà¸ö¹ý³ÌÐèÒª´ï³ÉijÖÖÒ»Öµij¡ºÏ¶¼¿ÉÒÔʹÓÃPaxos Ëã·¨¡£Ò»ÖÂÐÔËã·¨¿ÉÒÔͨ¹ý¹²ÏíÄڴ棨ÐèÒªËø£©»òÕßÏûÏ¢´«µÝʵÏÖ£¬Paxos Ëã·¨²ÉÓõÄÊǺóÕß¡£Paxos Ëã·¨ÊÊÓõļ¸ÖÖÇé¿ö£ºÒ»Ì¨»úÆ÷Öжà¸ö½ø³Ì/Ï̴߳ï³ÉÊý¾ÝÒ»Ö£»·Ö²¼Ê½Îļþϵͳ»òÕß·Ö²¼Ê½Êý¾Ý¿âÖжà¿Í»§¶Ë²¢·¢¶ÁдÊý¾Ý£»·Ö²¼Ê½´æ´¢Öжà¸ö¸±±¾ÏìÓ¦¶ÁдÇëÇóµÄÒ»ÖÂÐÔ¡£

3.2·ÖÇø£¨Partitioning£©

Ô­À´ËùÓеÄÊý¾Ý¶¼ÊÇÔÚÒ»¸öÊý¾Ý¿âÉϵģ¬ÍøÂçIO¼°ÎļþIO¶¼¼¯ÖÐÔÚÒ»¸öÊý¾Ý¿âÉϵģ¬Òò´ËCPU¡¢ÄÚ´æ¡¢ÎļþIO¡¢ÍøÂçIO¶¼¿ÉÄÜ»á³ÉΪϵͳƿ¾±¡£¶ø·ÖÇøµÄ·½°¸¾ÍÊǰÑijһ¸ö±í»òij¼¸¸öÏà¹ØµÄ±íµÄÊý¾Ý·ÅÔÚÒ»¸ö¶ÀÁ¢µÄÊý¾Ý¿âÉÏ£¬ÕâÑù¾Í¿ÉÒÔ°ÑCPU¡¢ÄÚ´æ¡¢ÎļþIO¡¢ÍøÂçIO·Ö½âµ½¶à¸ö»úÆ÷ÖУ¬´Ó¶øÌáÉýϵͳ´¦ÀíÄÜÁ¦¡£

3.3·ÖƬ£¨Replication£©

·ÖÇøÓÐÁ½ÖÖģʽ£¬Ò»ÖÖÊÇÖ÷´Óģʽ£¬ÓÃÓÚ×ö¶Áд·ÖÀ룻ÁíÍâÒ»ÖÖģʽÊÇ·ÖÆ¬Ä£Ê½£¬Ò²¾ÍÊÇ˵°ÑÒ»¸ö±íÖеÄÊý¾Ý·Ö½âµ½¶à¸ö±íÖС£Ò»¸ö·ÖÇøÖ»ÄÜÊÇÆäÖеÄÒ»ÖÖģʽ¡£

3.4Ò»ÖÂÐÔ¹þÏ££¨Consistent Hashing£©

Ò»ÖÂÐÔ¹þÏ£Ëã·¨ÊÇ·Ö²¼Ê½ÏµÍ³Öг£ÓõÄËã·¨¡£±ÈÈ磬һ¸ö·Ö²¼Ê½µÄ´æ´¢ÏµÍ³£¬Òª½«Êý¾Ý´æ´¢µ½¾ßÌåµÄ½ÚµãÉÏ£¬Èç¹û²ÉÓÃÆÕͨµÄhash·½·¨£¬½«Êý¾ÝÓ³Éäµ½¾ßÌåµÄ½ÚµãÉÏ£¬Èçkey%N£¬keyÊÇÊý¾ÝµÄkey£¬NÊÇ»úÆ÷½ÚµãÊý£¬Èç¹ûÓÐÒ»¸ö»úÆ÷¼ÓÈë»òÍ˳öÕâ¸ö¼¯Èº£¬ÔòËùÓеÄÊý¾ÝÓ³Éä¶¼ÎÞЧÁË£¬Èç¹ûÊdz־û¯´æ´¢ÔòÒª×öÊý¾ÝÇ¨ÒÆ£¬Èç¹ûÊÇ·Ö²¼Ê½»º´æ£¬ÔòÆäËû»º´æ¾ÍʧЧÁË¡£

Ò»ÖÂÐÔ¹þÏ£»ù±¾½â¾öÁËÔÚP2P»·¾³ÖÐ×îΪ¹Ø¼üµÄÎÊÌ⡪¡ªÈçºÎÔÚ¶¯Ì¬µÄÍøÂçÍØÆËÖзֲ¼´æ´¢ºÍ·ÓÉ¡£Ã¿¸ö½Úµã½öÐèά»¤ÉÙÁ¿ÏàÁÚ½ÚµãµÄÐÅÏ¢£¬²¢ÇÒÔÚ½Úµã¼ÓÈë/Í˳öϵͳʱ£¬½öÓÐÏà¹ØµÄÉÙÁ¿½Úµã²ÎÓëµ½ÍØÆËµÄά»¤ÖС£ËùÓÐÕâÒ»ÇÐʹµÃÒ»ÖÂÐÔ¹þÏ£³ÉΪµÚÒ»¸öʵÓõÄDHTËã·¨¡£

4.NoSQLµÄÓŵã/ȱµã

Óŵã

1.Ò×À©Õ¹

2.¸ßÐÔÄÜ

3.Êý¾ÝÀàÐÍÁé»î

4.¸ß¿ÉÓÃ

ȱµã

1.ûÓбê×¼

2.ûÓд洢¹ý³Ì

3.²»Ö§³Ösql

4.¹¦Äܲ»¹»ÍêÉÆ

4.1Óŵã

Ò×À©Õ¹

NoSQLÊý¾Ý¿âÖÖÀà·±¶à£¬µ«ÊÇÓÐÒ»¸ö¹²Í¬µÄÌØµã£¬¶¼ÊÇÈ¥µôÁ˹ØÏµÐÍÊý¾Ý¿âµÄ¹ØÏµÐÍÌØÐÔ¡£Êý¾ÝÖ®¼äÎÞ¹ØÏµ£¬ÕâÑù¾Í·Ç³£ÈÝÒ×À©Õ¹¡£Ò²ÎÞÐÎÖ®¼ä£¬Ôڼܹ¹µÄ²ãÃæÉÏ´øÀ´ÁË¿ÉÀ©Õ¹µÄÄÜÁ¦¡£

´óÊý¾ÝÁ¿£¬¸ßÐÔÄÜ

NoSQLÊý¾Ý¿â¶¼¾ßÓзdz£¸ßµÄ¶ÁдÐÔÄÜ£¬ÓÈÆäÔÚ´óÊý¾ÝÁ¿Ï£¬Í¬Ñù±íÏÖÓÅÐã¡£ÕâµÃÒæÓÚËüµÄÎÞ¹ØÏµÐÔ£¬Êý¾Ý¿âµÄ½á¹¹¼òµ¥¡£Ò»°ãMySQLʹÓÃQuery Cache£¬Ã¿´Î±í¸üÐÂCache¾ÍʧЧ£¬ÊÇÒ»ÖÖ´óÁ£¶ÈµÄCache£¬Õë¶Ôweb2.0µÄ½»»¥Æµ·±µÄÓ¦Óã¬CacheÐÔÄܲ»¸ß¡£¶øNoSQLµÄCacheÊǼǼ¼¶µÄ£¬ÊÇÒ»ÖÖϸÁ£¶ÈµÄCache£¬ËùÒÔNoSQLÔÚÕâ¸ö²ãÃæÉÏÀ´ËµÐÔÄܾÍÒª¸ßºÜ¶àÁË¡£

Áé»îµÄÊý¾ÝÄ£ÐÍ

NoSQLÎÞÐèÊÂÏÈΪҪ´æ´¢µÄÊý¾Ý½¨Á¢×ֶΣ¬ËæÊ±¿ÉÒÔ´æ´¢×Ô¶¨ÒåµÄÊý¾Ý¸ñʽ¡£¶øÔÚ¹ØÏµÐÍÊý¾Ý¿âÀÔöɾ×Ö¶ÎÊÇÒ»¼þ·Ç³£Âé·³µÄÊÂÇé¡£Èç¹ûÊǷdz£´óÊý¾ÝÁ¿µÄ±í£¬Ôö¼Ó×ֶμòÖ±¾ÍÊÇÒ»¸öجÃΡ£ÕâµãÔÚ´óÊý¾ÝÁ¿µÄweb2.0ʱ´úÓÈÆäÃ÷ÏÔ¡£

¸ß¿ÉÓÃ

NoSQLÔÚ²»Ì«Ó°ÏìÐÔÄܵÄÇé¿öÏ£¬¾Í¿ÉÒÔ·½±ãµØÊµÏָ߿ÉÓõļܹ¹¡£±ÈÈçCassandra¡¢HBaseÄ£ÐÍ£¬Í¨¹ý¸´ÖÆÄ£ÐÍÒ²ÄÜʵÏָ߿ÉÓá£

4.1ȱµã

ûÓбê×¼

ûÓжÔNoSQLÊý¾Ý¿â¶¨ÒåµÄ±ê×¼£¬ËùÒÔûÓÐÁ½¸öNoSQLÊý¾Ý¿âÊÇÆ½µÈµÄ¡£

ûÓд洢¹ý³Ì

NoSQLÊý¾Ý¿âÖдó¶àûÓд洢¹ý³Ì¡£

²»Ö§³ÖSQL

NoSQL´ó¶à²»Ìṩ¶ÔSQLµÄÖ§³Ö£ºÈç¹û²»Ö§³ÖSQLÕâÑùµÄ¹¤Òµ±ê×¼£¬½«»á¶ÔÓû§²úÉúÒ»¶¨µÄѧϰºÍÓ¦ÓÃÇ¨ÒÆÉϵijɱ¾¡£

Ö§³ÖµÄÌØÐÔ²»¹»·á¸»£¬²úÆ·²»¹»³ÉÊì

ÏÖÓвúÆ·ËùÌṩµÄ¹¦Äܶ¼±È½ÏÓÐÏÞ£¬²»ÏñMS SQL ServerºÍOracleÄÇÑùÄÜÌṩ¸÷ÖÖ¸½¼Ó¹¦ÄÜ£¬±ÈÈçBIºÍ±¨±íµÈ¡£´ó¶àÊý²úÆ·¶¼»¹´¦ÓÚ³õ´´ÆÚ£¬ºÍ¹ØÏµÐÍÊý¾Ý¿â¼¸Ê®ÄêµÄÍêÉÆ²»¿ÉͬÈÕ¶øÓï¡£

NoSQLÓëSQLµÄ¶Ô±È

RDBMSNoSQL

ģʽԤ¶¨ÒåµÄģʽûÓÐÔ¤¶¨ÒåµÄģʽ

²éѯÓïÑԽṹ»¯²éѯÓïÑÔ£¨SQL£©Ã»ÓÐÉùÃ÷ÐÔ²éѯÓïÑÔ

Ò»ÖÂÐÔÑϸñµÄÒ»ÖÂÐÔ×îÖÕÒ»ÖÂÐÔ

ÊÂÎñÖ§³Ö²»Ö§³Ö

ÀíÂÛ»ù´¡ACIDCAP, BASE

À©Õ¹×ÝÏòÀ©Õ¹ºáÏòÀ©Õ¹(·Ö²¼Ê½)

NoSQLÊý¾Ý¿âµÄ·ÖÀà

1.¼üÖµ(Key-Value)´æ´¢Êý¾Ý¿â

ÕâÒ»ÀàÊý¾Ý¿âÖ÷Òª»áʹÓõ½¹þÏ£±í£¬ÔÚÕâ¸ö±íÖÐÓÐÒ»¸öÌØ¶¨µÄ¼üºÍÒ»¸öÖ¸ÕëÖ¸ÏòÌØ¶¨µÄÊý¾Ý¡£Key/valueÄ£ÐͶÔÓÚITϵͳÀ´ËµÓÅÊÆÔÚÓÚ¼òµ¥¡¢Òײ¿Êð¡£µ«ÊÇÈç¹ûDBAÖ»¶Ô²¿·ÖÖµ½øÐвéѯ»ò¸üеÄʱºò£¬Key/value¾ÍÏÔµÃЧÂʵÍÏÂÁË¡£

E. g:

TokyoCabinet/Tyrant

Redis

Voldemort

OracleBDB

Áд洢Êý¾Ý¿â

Õⲿ·ÖÊý¾Ý¿âͨ³£ÊÇÓÃÀ´Ó¦¶Ô·Ö²¼Ê½´æ´¢µÄº£Á¿Êý¾Ý¡£¼üÈÔÈ»´æÔÚ£¬µ«ÊÇËüÃǵÄÌØµãÊÇÖ¸ÏòÁ˶à¸öÁС£ÕâЩÁÐÊÇÓÉÁмÒ×åÀ´°²Åŵġ£

E. g:

Cassandra

HBase

Riak

ÎĵµÐÍÊý¾Ý¿â

ÎĵµÐÍÊý¾Ý¿âµÄÁé¸ÐÀ´×ÔÓÚLotus Notes°ì¹«Èí¼þ£¬ËüͬµÚÒ»ÖÖ¼üÖµ´æ´¢ÏàÀàËÆ¡£¸ÃÀàÐ͵ÄÊý¾ÝÄ£ÐÍÊǰ汾»¯µÄÎĵµ£¬°ë½á¹¹»¯µÄÎĵµÒÔÌØ¶¨µÄ¸ñʽ´æ´¢£¬±ÈÈçJSON¡£ÎĵµÐÍÊý¾Ý¿â¿ÉÒÔ¿´×÷ÊǼüÖµÊý¾Ý¿âµÄÉý¼¶°æ£¬ÔÊÐíÖ®¼äǶÌ×¼üÖµ¡£¶øÇÒÎĵµÐÍÊý¾Ý¿â±È¼üÖµÊý¾Ý¿âµÄ²éѯЧÂʸü¸ß¡£

E. g:

CouchDB

MongoDB

SequoiaDB

ͼÐÎ(Graph)Êý¾Ý¿â

ͼÐνṹµÄÊý¾Ý¿âͬÆäËüÐÐÁÐÒÔ¼°¸ÕÐԽṹµÄSQLÊý¾Ý¿â²»Í¬£¬ËüÊÇʹÓÃÁé»îµÄͼÐÎÄ£ÐÍ£¬²¢ÇÒÄܹ»À©Õ¹µ½¶à¸ö·þÎñÆ÷ÉÏ¡£NoSQLÊý¾Ý¿âûÓбê×¼µÄ²éѯÓïÑÔ(SQL)£¬Òò´Ë½øÐÐÊý¾Ý¿â²éѯÐèÒªÖÆ¶¨Êý¾ÝÄ£ÐÍ¡£Ðí¶àNoSQLÊý¾Ý¿â¶¼ÓÐRESTʽµÄÊý¾Ý½Ó¿Ú»òÕß²éѯAPI¡£

E. g:

Neo4J

InfoGrid

InfiniteGraph

Ö÷Á÷NoSQLÊý¾Ý¿â½éÉܼ°ÆäÊÊÓó¡¾°

1. Redis

1.1 ½éÉÜ

RedisÊÇÒ»¸ö¿ªÔ´µÄʹÓÃANSI CÓïÑÔ±àд¡¢Ö§³ÖÍøÂç¡¢¿É»ùÓÚÄÚ´æÒà¿É³Ö¾Ã»¯µÄÈÕÖ¾ÐÍ¡¢Key-ValueÊý¾Ý¿â£¬²¢Ìṩ¶àÖÖÓïÑÔµÄAPI¡£´Ó2010Äê3ÔÂ15ÈÕÆð£¬RedisµÄ¿ª·¢¹¤×÷ÓÉVMwareÖ÷³Ö¡£´Ó2013Äê5Ô¿ªÊ¼£¬RedisµÄ¿ª·¢ÓÉPivotalÔÞÖú¡£

1.2 ÊÊÓó¡¾°

Êý¾Ý±ä»¯½ÏÉÙ£¬Ö´ÐÐÔ¤¶¨Òå²éѯ£¬½øÐÐÊý¾Ýͳ¼ÆµÄÓ¦ÓóÌÐò

ÐèÒªÌṩÊý¾Ý°æ±¾Ö§³ÖµÄÓ¦ÓóÌÐò

ÀýÈ磺¹ÉƱ¼Û¸ñ¡¢Êý¾Ý·ÖÎö¡¢ÊµÊ±Êý¾ÝËѼ¯¡¢ÊµÊ±Í¨Ñ¶¡¢·Ö²¼Ê½»º´æ

2. MongoDB

2.1 ½éÉÜ

MongoDB ÊÇÒ»¸ö»ùÓÚ·Ö²¼Ê½Îļþ´æ´¢µÄÊý¾Ý¿â¡£ÓÉ C++ ÓïÑÔ±àд¡£Ö¼ÔÚΪ WEB Ó¦ÓÃÌṩ¿ÉÀ©Õ¹µÄ¸ßÐÔÄÜÊý¾Ý´æ´¢½â¾ö·½°¸¡£

MongoDB ÊÇÒ»¸ö½éÓÚ¹ØÏµÐÍÊý¾Ý¿âºÍ·Ç¹ØÏµÐÍÊý¾Ý¿âÖ®¼äµÄ²úÆ·£¬ÊǷǹØÏµÐÍÊý¾Ý¿âµ±Öй¦ÄÜ×î·á¸»£¬×îÏñ¹ØÏµÐÍÊý¾Ý¿âµÄ·Ç¹ØÏµÐÍÊý¾Ý¿â¡£

2.2 ÊÊÓó¡¾°

ÐèÒª¶¯Ì¬²éѯ֧³Ö

ÐèҪʹÓÃË÷Òý¶ø²»ÊÇ map/reduce¹¦ÄÜ

ÐèÒª¶Ô´óÊý¾Ý¿âÓÐÐÔÄÜÒªÇó

ÐèҪʹÓà CouchDBµ«ÒòΪÊý¾Ý¸Ä±ä̫Ƶ·±¶øÕ¼ÂúÄÚ´æ

3.Neo4j

3.1 ½éÉÜ

Neo4jÊÇÒ»¸ö¸ßÐÔÄܵÄNoSQLͼÐÎÊý¾Ý¿â£¬Ëü½«½á¹¹»¯Êý¾Ý´æ´¢ÔÚÍøÂçÉ϶ø²»ÊDZíÖС£ËüÊÇÒ»¸öǶÈëʽµÄ¡¢»ùÓÚ´ÅÅ̵ġ¢¾ß±¸ÍêÈ«µÄÊÂÎñÌØÐÔµÄJava³Ö¾Ã»¯ÒýÇæ£¬µ«ÊÇËü½«½á¹¹»¯Êý¾Ý´æ´¢ÔÚÍøÂç(´ÓÊýѧ½Ç¶È½Ð×öͼ)É϶ø²»ÊDZíÖС£Neo4jÒ²¿ÉÒÔ±»¿´×÷ÊÇÒ»¸ö¸ßÐÔÄܵÄͼÒýÇæ£¬¸ÃÒýÇæ¾ßÓгÉÊìÊý¾Ý¿âµÄËùÓÐÌØÐÔ¡£

3.2 ÊÊÓó¡¾°

ÊÊÓÃÓÚͼÐÎÒ»ÀàÊý¾Ý

ÕâÊÇ Neo4jÓëÆäËûNoSQLÊý¾Ý¿âµÄ×îÏÔÖøÇø±ð

ÀýÈ磺Éç»á¹ØÏµ£¬¹«¹²½»Í¨ÍøÂ磬µØÍ¼¼°ÍøÂçÍØÆ×

4.Cassandra

4.1 ½éÉÜ

Apache Cassandra ÊÇÒ»Ì׿ªÔ´·Ö²¼Ê½ Key-Value ´æ´¢ÏµÍ³¡£Ëü×î³õÓÉ Facebook ¿ª·¢£¬ÓÃÓÚ´¢´æÌرð´óµÄÊý¾Ý¡£ Cassandra ²»ÊÇÒ»¸öÊý¾Ý¿â£¬ËüÊÇÒ»¸ö»ìºÏÐ͵ķǹØÏµµÄÊý¾Ý¿â£¬ÀàËÆÓÚGoogle µÄ BigTable¡£Cassandra µÄÊý¾ÝÄ£ÐÍÊÇ»ùÓÚÁÐ×壨Column Family£©µÄËÄά»òÎåάģÐÍ¡£

4.2ÊÊÓó¡¾°

ÒøÐÐÒµ£¬½ðÈÚÒµ

д±È¶Á¸ü¿ì

5. HBase

5.1 ½éÉÜ

HBaseÊÇÒ»¸ö·Ö²¼Ê½µÄ¡¢ÃæÏòÁеĿªÔ´Êý¾Ý¿â£¬¸Ã¼¼ÊõÀ´Ô´ÓÚGoogleÂÛÎÄ¡°Bigtable£ºÒ»¸ö½á¹¹»¯Êý¾ÝµÄ·Ö²¼Ê½´æ´¢ÏµÍ³¡±¡£¾ÍÏñBigtableÀûÓÃÁËGoogleÎļþϵͳ£¨File System£©ËùÌṩµÄ·Ö²¼Ê½Êý¾Ý´æ´¢Ò»Ñù£¬HBaseÔÚHadoopÖ®ÉÏÌṩÁËÀàËÆÓÚBigtableµÄÄÜÁ¦¡£ËüÊÇÒ»¸öÊʺÏÓڷǽṹ»¯Êý¾Ý´æ´¢µÄÊý¾Ý¿â¡£ÁíÒ»¸ö²»Í¬µÄÊÇHBase»ùÓÚÁеĶø²»ÊÇ»ùÓÚÐеÄģʽ¡£

5.2ÊÊÓó¡¾°

¶Ô´óÊý¾Ý½øÐÐËæ»ú¡¢ÊµÊ±·ÃÎʵij¡ºÏ

ÀýÈ磺 FacebookÏûÏ¢Êý¾Ý¿â

6.CouchDB

6.1 ½éÉÜ

CouchDB ÊÇÒ»¸ö¿ªÔ´µÄÃæÏòÎĵµµÄÊý¾Ý¿â¹ÜÀíϵͳ£¬¿ÉÒÔͨ¹ý RESTful JavaScript Object Notation (JSON) API ·ÃÎÊ¡£ÊõÓï ¡°Couch¡± ÊÇ ¡°Cluster Of Unreliable CommodityHardware¡± µÄÊ××ÖĸËõд£¬Ëü·´Ó³ÁË CouchDB µÄÄ¿±ê¾ßÓи߶ȿÉÉìËõÐÔ£¬ÌṩÁ˸߿ÉÓÃÐԺ͸߿ɿ¿ÐÔ£¬¼´Ê¹ÔËÐÐÔÚÈÝÒ׳öÏÖ¹ÊÕϵÄÓ²¼þÉÏÒ²ÊÇÈç´Ë¡£

6.2ÊÊÓó¡¾°

Êý¾Ý±ä»¯½ÏÉÙ£¬Ö´ÐÐÔ¤¶¨Òå²éѯ£¬½øÐÐÊý¾Ýͳ¼ÆµÄÓ¦ÓóÌÐò

ÐèÒªÌṩÊý¾Ý°æ±¾Ö§³ÖµÄÓ¦ÓóÌÐò¡£

ÀýÈ磺 CRM¡¢CMSϵͳ¡£ master-master¸´ÖƶÔÓÚ¶àÕ¾µã²¿ÊðÊǷdz£ÓÐÓõġ£

NoSQLÓÅÐãÓ¦ÓÃʵÀý

1. ÐÂÀË΢²© - Redis

ÐÂÀË΢²©´Ó¼¼ÊõÉÏÀ´Ëµ£¬Ã¿ÌìÓû§·¢±í΢²©ÌرðÈÝÒ×£¬ÕâÔì³ÉÿÌìÐÂÔöµÄÊý¾ÝÁ¿¶¼ÊǰÙÍò¼¶¡¢ÉÏǧÍò¼¶µÄÕâÑùÒ»¸öÁ¿¡£Äã¾­³£ÒªÃæ¶ÔµÄÒ»¸öÎÊÌâ¾ÍÊÇÔö¼Ó·þÎñÆ÷£¬ÒòΪһ°ãһ̨MySQL·þÎñÆ÷£¬Ëü¿ÉÄÜÖ§³ÅµÄ¹æÄ£Ò²¾ÍÊǼ¸Ç§Íò£¬»òÕß˵¸´ÔÓÒ»µãÖ»Óм¸°ÙÍò£¬ÕâÑù£¬¿ÉÄÜÿÌì¶¼ÒªÔö¼Ó·þÎñÆ÷£¬´Ó¶ø½â¾öËùÄãÃæ¶ÔµÄÕâЩÎÊÌâ¡£

ĿǰÐÂÀË΢²©ÊÇRedisÈ«Çò×î´óµÄÓû§£¬ÔÚÐÂÀËÓÐ200¶ą̀ÎïÀí»ú£¬400¶à¸ö¶Ë¿ÚÕýÔÚÔËÐÐ×ÅRedis, ÓÐ4GµÄÊý¾ÝÅÜÔÚRedisÉÏÀ´ÎªÎ¢²©Óû§Ìṩ·þÎñ¡£

ÐÂÀË΢²©ÃæÁÙµÄÎÊÌâÈçÏ£º

Êý¾Ý½á¹¹(Data Structure)ÐèÇóÔ½À´Ô½¶à, µ«memcacheÖÐûÓÐ, Ó°Ï쿪·¢Ð§ÂÊ

Ëæ×ŶÁ²Ù×÷µÄÁ¿µÄÉÏÉý£¬ÐÔÄÜÎÊÌâÐèÒª½â¾ö£¬¾­ÀúµÄ¹ý³ÌÓÐ:

Êý¾Ý¿â¶Áд·ÖÀë(M/S)-->Êý¾Ý¿âʹÓöà¸öSlave-->Ôö¼ÓCache (memcache)-->תµ½Redis

½â¾öдµÄÎÊÌ⣺

ˮƽ²ð·Ö£¬¶Ô±íµÄ²ð·Ö£¬½«ÓеÄÓû§·ÅÔÚÕâ¸ö±í£¬ÓеÄÓû§·ÅÔÚÁíÍâÒ»¸ö±í¡£

¿É¿¿ÐÔÐèÇó

CacheµÄ"Ñ©±À"ÎÊÌâÄÑÒÔ½â¾ö£¬ÃæÁÙ×Å¿ìËÙ»Ö¸´µÄÌôÕ½¡£

¿ª·¢³É±¾ÐèÇó

CacheºÍDBµÄÒ»ÖÂÐÔά»¤³É±¾Ô½À´Ô½¸ß£¬µ«¿ª·¢ÐèÒª¸úÉϲ»¶ÏÓ¿ÈëµÄ²úÆ·ÐèÇó¡£ÇÒÓ²¼þ³É±¾×î¹óµÄ¾ÍÊÇÊý¾Ý¿â²ãÃæµÄ»úÆ÷£¬»ù±¾ÉϱÈǰ¶ËµÄ»úÆ÷Òª¹ó¼¸±¶£¬Ö÷ÒªÊÇIOÃܼ¯ÐÍ£¬ºÜºÄÓ²¼þ¡£

ά»¤ÐÔ¸´ÔÓ

Ò»ÖÂÐÔά»¤³É±¾Ô½À´Ô½¸ß

BerkeleyDBʹÓÃBÊ÷£¬»áһֱдеģ¬ÄÚ²¿²»»áÓÐÎļþÖØÐÂ×éÖ¯£»ÕâÑù»áµ¼ÖÂÎļþÔ½À´Ô½´ó£»´óµÄʱºòÐèÒª½øÐÐÎļþ¹éµµ£¬¹éµµµÄ²Ù×÷Òª¶¨ÆÚ×ö£¬ÕâÑù£¬¾ÍÐèÒªÓÐÒ»¶¨µÄdown time¡£

»ùÓÚÒÔÉÏ¿¼ÂÇ£¬ÐÂÀË΢²©Ñ¡ÔñÁËRedis¡£

ÔÚÐÂÀËNoSQLºÍMySQLÔÚ´ó¶àÊýÇé¿öÏÂÊǽáºÏʹÓõ쬏ù¾ÝÓ¦ÓõÄÌØµãÑ¡ÔñºÏÊʵĴ洢·½Ê½¡£Æ©È磺¹ØÏµÐÍÊý¾Ý£¬ÀýÈ磺Ë÷ÒýʹÓÃMySQL´æ´¢£»·Ç¹ØÏµÐÍÊý¾Ý£¬ÀýÈ磺һЩK/VÐèÇóµÄ£¬¶Ô²¢·¢ÒªÇó±È½Ï¸ßµÄ·ÅÈëRedis´æ´¢¡£

ÐÂÀË΢²©ÍŶÓͨ¹ýÐÞ¸ÄRedisÔ´ÂëÂú×ã×Ô¼ºµÄÒµÎñÐèÇó£ºÍêÉÆËüµÄreplication»úÖÆ£¬¼ÓÈëpositionµÄ¸ÅÄÈÃά»¤¸üÈÝÒ×£¬Í¬Ê±failoverÄÜÁ¦Ò²´ó´óÔöÇ¿¡£¸ÄÉÆHashsetÔÚRDBÀïÃæµÄ´æ´¢·½Ê½£¬ÌáÉý¸´ÔÓÊý¾ÝÀàÐ͵ļÓÔØËÙ¶È¡£

ÒµÎñ³¡¾°ÈçÏ£º

1. ÒµÎñʹÓ÷½Ê½£º

hash sets: ¹Ø×¢Áбí, ·ÛË¿Áбí, Ë«Ïò¹Ø×¢Áбí(key-value(field), ÅÅÐò)

string(counter): ΢²©Êý, ·ÛË¿Êý, ...(±ÜÃâÁËselect count(*) from ...)

sort sets(×Ô¶¯ÅÅÐò): TopN, ÈÈÃÅ΢²©µÈ, ×Ô¶¯ÅÅÐò

lists(queue): push/subÌáÐÑ,...

ÉÏÊöËÄÖÖ, ´Ó¾«Ï¸»¯¿ØÖÆ·½Ã棬hash setsºÍstring(counter)ÍÆ¼öʹÓÃ, sort setsºÍlists(queue)²»ÍƼöʹÓÃ

»¹¿Éͨ¹ý¶þ´Î¿ª·¢£¬½øÐо«¼ò¡£±ÈÈç: ´æ´¢×Ö·û¸ÄΪ´æ´¢ÕûÐÎ, 16ÒÚÊý¾Ý,Ö»ÐèÒª16GÄÚ´æ

´æ´¢ÀàÐͱ£´æÔÚ3ÖÖÒÔÄÚ£¬½¨Òé²»Òª³¬¹ý3ÖÖ£»

½«memcache +mysql Ìæ»»ÎªRedis£º

Redis×÷Ϊ´æ´¢²¢Ìṩ²éѯ£¬ºǫ́²»ÔÙʹÓÃmysql£¬½â¾öÊý¾Ý¶à·ÝÖ®¼äµÄÒ»ÖÂÐÔÎÊÌ⣻

2. ¶Ô´óÊý¾Ý±íµÄ´æ´¢£¨eg£º140×Ö΢²©µÄ´æ´¢£©

Ò»¸ö¿â¾Í´æÎ¨Ò»ÐÔidºÍ140¸ö×Ö£»

ÁíÒ»¸ö¿â´æidºÍÓû§Ãû£¬·¢²¼ÈÕÆÚ¡¢µã»÷ÊýµÈÐÅÏ¢£¬ÓÃÀ´¼ÆËã¡¢ÅÅÐòµÈ£¬µÈ¼ÆËã³ö×îºóÐèҪչʾµÄÊý¾ÝʱÔÙµ½µÚÒ»¸ö¿âÖÐÌáȡ΢²©ÄÚÈÝ£»

3. һЩ¼¼ÇÉ

ºÜ¶àÓ¦ÓÃ, ¿ÉÒÔ³ÐÊÜÊý¾Ý¿âÁ¬½Óʧ°Ü, µ«²»ÄܳÐÊÜ´¦ÀíÂý

Ò»·ÝÊý¾Ý, ¶à·ÝË÷Òý(Õë¶Ô²»Í¬µÄ²éѯ³¡¾°)

½â¾öIOÆ¿¾±µÄΨһ;¾¶: ÓÃÄÚ´æ

ÔÚÊý¾ÝÁ¿±ä»¯²»´óµÄÇé¿öÏ£¬ÓÅÏÈÑ¡ÓÃRedis

4. ÌÔ±¦Êý¾Ýƽ̨ ¨C Oceanbase,Tair£¨¾ùΪ×ÔÑУ©

Êý¾Ý²úÆ·µÄÒ»¸ö×î´óÌØµãÊÇÊý¾ÝµÄ·ÇʵʱдÈ룬ÕýÒòΪÈç´Ë£¬¿ÉÒÔÈÏΪÔÚÒ»¶¨µÄʱ¼ä¶ÎÄÚ£¬Õû¸öϵͳµÄÊý¾ÝÊÇÖ»¶ÁµÄ¡£ÕâΪÉè¼Æ»º´æµì¶¨Á˷dz£ÖØÒªµÄ»ù´¡¡£Ò»Ð©¶ÔʵЧÐÔÒªÇóºÜ¸ßµÄÊý¾Ý£¬ÀýÈçÕë¶ÔËÑË÷´ÊµÄͳ¼ÆÊý¾Ý£¬Ï£ÍûÄܾ¡¿ìÍÆË͵½Êý¾Ý²úƷǰ¶Ë£¬ËùÒÔÔÚÄÚ´æÖÐ×öʵʱ¼ÆË㣬²¢°Ñ¼ÆËã½á¹ûÔÚ¾¡¿ÉÄ̵ܶÄʱ¼äÄÚˢе½ NoSQL´æ´¢É豸ÖУ¬¹©Ç°¶Ë²úÆ·µ÷Óá£

ÌÔ±¦OceanbaseµÄÉè¼ÆÖ®³õ£¬ÊÇÕâÑùµÄ¡£¹«Ë¾Í¨¹ý¶ÔÌÔ±¦µÄÔÚÏß´æ´¢ÐèÇó½øÐзÖÎö·¢ÏÖ£º

ÌÔ±¦µÄÊý¾Ý×ÜÁ¿±È½Ï´ó£¬Î´À´Ò»¶Îʱ¼ä£¬±ÈÈçÎåÄêÖ®ÄÚµÄÊý¾Ý¹æÄ£Îª°ÙTB¼¶±ð£¬Ç§ÒÚÌõ¼Ç¼£¬ÁíÍ⣬Êý¾ÝÅòÕͺܿ죬´«Í³µÄ·Ö¿â·Ö±í¶ÔÒµÎñÔì³ÉºÜ´óµÄѹÁ¦£¬±ØÐëÉè¼Æ×Ô¶¯»¯µÄ·Ö²¼Ê½ÏµÍ³¡£ËùÒÔÓÐÁËÌÔ±¦Oceanbase£¬ËüÒÔÒ»Öֺܼòµ¥µÄ·½Ê½Âú×ãÁËδÀ´Ò»¶Îʱ¼äµÄÔÚÏß´æ´¢ÐèÇ󣬲¢ÇÒ»¹»ñµÃÁËһЩÆäËüÌØÐÔ£¬Èç¸ßЧ֧³Ö¿çÐпç±íÊÂÎñ£¬Õâ¶ÔÓÚÌÔ±¦µÄÒµÎñÊǷdz£ÖØÒªµÄ¡£

OceanBaseÓÉÈçϼ¸¸ö²¿·Ö×é³É£º

¿Í»§¶Ë£ºÓû§Ê¹ÓÃOceanBaseµÄ·½Ê½ºÍMySQLÊý¾Ý¿âÍêÈ«Ïàͬ£¬Ö§³ÖJDBC¡¢ C¿Í»§¶Ë·ÃÎÊ£¬µÈµÈ¡£»ùÓÚMySQLÊý¾Ý¿â¿ª·¢µÄÓ¦ÓóÌÐò¡¢¹¤¾ßÄܹ»Ö±½ÓÇ¨ÒÆµ½OceanBase¡£

RootServer£º¹ÜÀí¼¯ÈºÖеÄËùÓзþÎñÆ÷£¬×Ó±í£¨tablet£©Êý¾Ý·Ö²¼ÒÔ¼°¸±±¾¹ÜÀí¡£ RootServerÒ»°ãΪһÖ÷Ò»±¸£¬Ö÷±¸Ö®¼äÊý¾Ýǿͬ²½¡£

UpdateServer£º´æ´¢OceanBaseϵͳµÄÔöÁ¿¸üÐÂÊý¾Ý¡£UpdateServerÒ»°ãΪһÖ÷Ò»±¸£¬Ö÷±¸Ö®¼ä¿ÉÒÔÅäÖò»Í¬µÄͬ²½Ä£Ê½¡£²¿Êðʱ£¬UpdateServer½ø³ÌºÍRootServer½ø³ÌÍùÍù¹²ÓÃÎïÀí·þÎñÆ÷¡£

ChunkServer£º´æ´¢OceanBaseϵͳµÄ»ùÏßÊý¾Ý¡£»ùÏßÊý¾ÝÒ»°ã´æ´¢Á½·Ý»òÕßÈý·Ý£¬¿ÉÅäÖá£

Merge Server£º½ÓÊÕ²¢½âÎöÓû§µÄSQLÇëÇ󣬾­¹ý´Ê·¨·ÖÎö¡¢Óï·¨·ÖÎö¡¢²éѯÓÅ»¯µÈһϵÁвÙ×÷ºóת·¢¸øÏàÓ¦µÄChunkServer»òÕßUpdateServer¡£Èç¹ûÇëÇóµÄÊý¾Ý·Ö²¼ÔÚ¶ą̀ChunkServerÉÏ£¬MergeServer»¹ÐèÒª¶Ô¶ą̀ChunkServer·µ»ØµÄ½á¹û½øÐкϲ¢¡£¿Í»§¶ËºÍMergeServerÖ®¼ä²ÉÓÃÔ­ÉúµÄMySQLͨÐÅЭÒ飬MySQL¿Í»§¶Ë¿ÉÒÔÖ±½Ó·ÃÎÊMergeServer¡£

ÌÔ±¦TairÊÇÓÉÌÔ±¦×ÔÖ÷¿ª·¢µÄKey/Value½á¹¹Êý¾Ý´æ´¢ÏµÍ³£¬²¢ÇÒÓÚ 2010Äê6ÔÂ30ºÅÔÚÌÔ±¦¿ªÔ´Æ½Ì¨ÉÏÕýʽ¶ÔÍ⿪Դ£¬ÔÚÌÔ±¦ÍøÓÐ×Å´ó¹æÄ£µÄÓ¦Óá£Óû§ÔڵǼÌÔ±¦¡¢²é¿´ÉÌÆ·ÏêÇéÒ³Ãæ»òÕßÔÚÌÔ½­ºþºÍºÃÓÑ¡°µ·½¬ºý¡±µÄʱºò£¬¶¼ÔÚÖ±½Ó»ò¼ä½ÓµØºÍTair½»»¥¡£ÌÔ±¦½«Tair¿ªÔ´£¬Ï£ÍûÓиü¶àµÄÓû§ÄÜ´ÓÎÒÃÇ¿ª·¢µÄ²úÆ·ÖÐÊÜÒæ£¬¸üÏ£ÍûÒÀÍÐÉçÇøµÄÁ¦Á¿£¬Ê¹TairÓиü¹ãÀ«µÄ·¢Õ¹¿Õ¼ä¡£

Tair µÄ·Ö²¼²ÉÓõÄÊÇÒ»ÖÂÐÔ¹þÏ£Ëã·¨, ¶ÔÓÚËùÓеÄkey, ·Öµ½Q¸öͰÖÐ, ͰÊǸºÔؾùºâºÍÊý¾ÝÇ¨ÒÆµÄ»ù±¾µ¥Î». config server ¸ù¾ÝÒ»¶¨µÄ²ßÂÔ°Ñÿ¸öͰָÅɵ½²»Í¬µÄdata serverÉÏ. ÒòΪÊý¾Ý°´ÕÕkey×öhashËã·¨, ËùÒÔ¿ÉÒÔÈÏΪÿ¸öͰÖеÄÊý¾Ý»ù±¾ÊÇÆ½ºâµÄ. ±£Ö¤ÁËͰ·Ö²¼µÄ¾ùºâÐÔ, ¾Í±£Ö¤ÁËÊý¾Ý·Ö²¼µÄ¾ùºâÐÔ¡£

3. ÓÅ¿áÔËÓªÊý¾Ý·ÖÎö ¨C HBase,MongoDB, Redis

ÓÅ¿á×÷Ϊһ¼Ò´óÐÍÊÓÆµÍøÕ¾£¬ÓµÓк£Á¿²¥·ÅÁ÷³©µÄÊÓÆµ¡£Ëü±ü³Ð×¢ÖØÓû§ÌåÑéÕâÒ»²úÆ·¼¼ÊõÀíÄ½«¾ø´ó²¿·Ö´æ´¢ÓÃÔÚÊÓÆµ×ÊÔ´ÉÏ¡£Í¨¹ý½¨ÉèרÓõÄÊÓÆµCDN£¬½¨Á¢ÁË¿É×ÔÓÉÀ©Õ¹¡¢ÐÔÄÜÓÅÒìµÄ¼Ü¹¹£¬ÔÚÌṩ¸üºÃÓû§ÌåÑéµÄͬʱÓÅ»¯ÁË´æ´¢×ÊÔ´¡£ÔÚ³ýÊÓÆµ×ÊÔ´ÍâµÄÆäËü·½Ã棬ÓÅ¿áÒ²ÀÛ»ýÁ˺£Á¿Êý¾Ý£º½öÔËÓªÊý¾Ý£¬Ã¿ÌìÊÕ¼¯µ½µÄÍøÕ¾¸÷Àà·ÃÎÊÈÕÖ¾×ÜÁ¿ÒѾ­´ïµ½TB¼¶£¬¾­·ÖÎö¼°Ñ¹Ëõ´¦ÀíºóÁô´æÏÂÀ´µÄÀúÊ·ÔËÓªÊý¾ÝÒÑ´ïÊý°ÙTB£¬ºÜ¿ì½«»á´ïµ½ PB¼¶£¬5ÄêºóÊý¾ÝÁ¿½«»á´ïµ½¼¸Ê®PB¼¶¡£

ĿǰÓÅ¿áµÄÔÚÏ߯ÀÂÛÒµÎñÒѲ¿·ÖÇ¨ÒÆµ½MongoDB£¬ÔËÓªÊý¾Ý·ÖÎö¼°ÍÚ¾ò´¦ÀíĿǰÔÚʹÓÃHadoop/HBase;ÔÚKey-Value²úÆ··½Ã棬ËüÒ²ÔÚѰÕÒ¸üÓÅµÄ MemcachedÌæ´úÆ·£¬ÈçRedis£¬Ïà¶ÔÓÚMemcached£¬³ýÁ˶ÔValueµÄ´æ´¢Ö§³ÖÈýÖÖ²»Í¬µÄÊý¾Ý½á¹¹Í⣬ͬһ¸öKeyµÄValue½øÐв¿·Ö¸üÐÂÒ²»á¸üÊʺÏһЩ¶ÔValueƵ·±Ð޸ĵÄÔÚÏßÒµÎñ;ͬʱÔÚËÑË÷²úÆ·ÖÐÓ¦ÓÃÁËTokyo Tyrant;¶ÔÓÚCassandraµÈ²úÆ·Ò²½øÐйýÑо¿¡£

¶ÔÓÚÓÅ¿áÀ´Ëµ£¬ÈÔ´¦ÓÚ·ÉËÙ·¢Õ¹½×¶Î£¬ÒѾ­ÔÚ¿¼ÂÇδÀ´×Ô½¨Êý¾ÝÖÐÐÄ£¬Ìá¸ßÊý¾Ý´¦ÀíÄÜÁ¦£¬´ÓÍøÕ¾µÄÔËÓªÖз¢¾ò³ö¸ü¶àÐÅÏ¢£¬ÎªÓû§Ìṩ¸üºÃµÄÊÓÆµ·þÎñ¡£

4. ¶¹°êÉçÇø ¨C BeansDB£¨×ÔÑÐKVÊý¾Ý¿â£©

Ëü²ÉÓÃÀàËÆmemcachedµÄÈ¥ÖÐÐÄ»¯½á¹¹£¬ÔÚ¿Í»§¶ËʵÏÖÊý¾Ý·ÓÉ¡£Ä¿Ç°Ö»ÌṩÁËPython°æ±¾µÄ¿Í»§¶Ë£¬ÆäËüÓïÑԵĿͻ§¶Ë¿ÉÒÔÓÉmemcachedµÄ¿Í»§¶ËÉÔ¼Ó¸ÄÔìµÃµ½¡£Ëü¾ßÓÐÈçÏÂÌØÐÔ£º

¸ß¿ÉÓãºÍ¨¹ý¶à¸ö¿É¶ÁдµÄÓÃÓÚ±¸·ÝʵÏָ߿ÉÓÃ

×îÖÕÒ»ÖÂÐÔ£ºÍ¨¹ý¹þÏ£Ê÷ʵÏÖ¿ìËÙÍêÕûÊý¾Ýͬ²½(¶Ìʱ¼äÄÚÊý¾Ý¿ÉÄܲ»Ò»ÖÂ)

ÈÝÒ×À©Õ¹£º¿ÉÒÔÔÚ²»ÖжϷþÎñµÄÇé¿öϽøÐÐÈÝÁ¿À©Õ¹¡£

¸ßÐÔÄÜ£ºÒì²½ÍøÂçIO, ÈÕÖ¾½á¹¹µÄ´æ´¢·½Ê½Bitcask.

¼òµ¥Ð­Ò飺Memcache¼æÈÝЭÒ飬´óÁ¿¿ÉÓÿͻ§¶Ë

Ŀǰ£¬BeansDBÔÚ¶¹°êÖ÷Òª²¿ÊðÁËÁ½¸ö¼¯Èº£ºÒ»¸ö¼¯ÈºÓÃÓÚ´æ´¢Êý¾Ý¿âÖеĴóÎı¾Êý¾Ý£¬±ÈÈçÈռǡ¢Ìû×ÓÒ»Àà;ÁíÍâÒ»¸ö¶¹°êFS¼¯Èº£¬Ö÷ÒªÓÃÓڴ洢ýÌåÎļþ£¬±ÈÈçÓû§ÉÏ´«µÄͼƬ¡¢¶¹°êµç̨ÉϵÄÒôÀֵȡ£

 

BeansDB²ÉÓÃKey-Value´æ´¢¼Ü¹¹£¬Æä×î´óµÄÌØµãÊǾßÓи߶ȵĿÉÉìËõÐÔ;ÔÚBeansDBµÄ¼Ü¹¹Ï£¬ÔÚ´óÊý¾ÝÁ¿Ï£¬À©Õ¹Êý¾Ý½Úµã½«Çá¶øÒ×¾Ù£¬Ö»ÐèÒªÌí¼ÓÓ²¼þ£¬°²×°Èí¼þ£¬ÐÞ¸ÄÏàÓ¦µÄÅäÖÃÎļþ¼´¿É¡£

BeansDBÏîÄ¿¿ÉÒÔ˵ÊÇÒ»¸ö¼ò»¯°æµÄAWS DynamoDB¡£BeansDB¶Ôkey×ö¹þÏ£ÔËËãÕÒµ½½ÚµãÀ´ÊµÏÖ·Ö²¼ºÍÈßÓ࣬ Ò»¸öд²Ù×÷»áдºÃ¼¸¸ö½Úµã£¬¶øÏÖÔÚµÄÅäÖÃÊÇдÈý·Ý¶ÁÒ»·Ý¡£BeansDBÖ÷ÒªµÄÌØµãÊÇÖ§³Öº£Á¿KVÊý¾Ý¿â¡ª¡ªÏà±ÈRedisÕâÖÖÖ§³Ö¼¸Ê®¸öGµ½¼¸°Ù¸öGµÄÄÚ´æKVÊý¾Ý¿â£¬BeansDB¿ÉÒÔÖ§³Öµ½ÉϰÙTµÄÊý¾Ý¡£ÁíÍâBeansDB×î´óµÄºÃ´¦¾ÍÊÇÔËάºÜ¼òµ¥£¬ÐÔÄÜ¡¢À©Èݶ¼ºÜºÃ£¬Ò²ÊµÏÖÁË×îÖÕÒ»ÖÂÐÔ¡£

BeansDBÔÚ¿ÉÓÃÐÔ·½ÃæÒ²ÓкܴóµÄÓÅÊÆ£¬ÈκÎÒ»¸ö½Úµãå´»ú¶¼²»»áÊܵ½Ó°Ï죬Êý¾ÝÊÇ×Ô¶¯ÉìËõÈßÓàµÄ¡£ÔÚÔËά·½ÃæÒ²ºÜ¼òµ¥£¬»ù±¾ÉÏûÓÐʲôÓû§Êý¾ÝµÄÈßÓà²ÐÓ࣬ËùÓÐÊý¾Ýͨ¹ýÒ»¸öͬ²½½Å±¾¿ÉÒÔ¿ìËÙͬ²½¡£

   
2815 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

»ùÓÚ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[±±¾©]
 
×îÐÂÎÄÕÂ
InfluxDB¸ÅÄîºÍ»ù±¾²Ù×÷
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾ÝдÈë
Éî¶ÈÂþ̸Êý¾Ýϵͳ¼Ü¹¹¡ª¡ªLambda architecture
Lambda¼Ü¹¹Êµ¼ù
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾Ý¶ÁÈ¡
×îпγÌ
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯¡¢¼Ü¹¹Éè¼ÆºÍÔËÐÐά»¤
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
NoSQLÊý¾Ý¿â£¨Ô­Àí¡¢Ó¦Óá¢×î¼Ñʵ¼ù£©
ÆóÒµ¼¶Hadoop´óÊý¾Ý´¦Àí×î¼Ñʵ¼ù
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯×î¼Ñʵ¼ù
³É¹¦°¸Àý
ij½ðÈÚ¹«Ë¾ Mysql¼¯ÈºÓëÐÔÄÜÓÅ»¯
±±¾© ²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
ÖªÃûijÐÅϢͨÐŹ«Ë¾ NoSQL»º´æÊý¾Ý¿â¼¼Êõ
±±¾© oracleÊý¾Ý¿âSQLÓÅ»¯
ÖйúÒÆ¶¯ IaaSÔÆÆ½Ì¨-Ö÷Á÷Êý¾Ý¿â¼°´æ´¢¼¼Êõ