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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Éç½»ÍøÕ¾Êý¾Ý¿â¼¼Êõ·ÖÎö
 
×÷Õߣº¶¡ÒÕÃ÷ À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ£º2015-5-29
  3016  次浏览      30
 

´«Í³»¥ÁªÍøÕýÔÚÂõÏòÒ»¸öȫеÄʱ´ú¡ª¡ªÉç½»·þÎñÍø£¨Social Networking Service£©Ê±´ú£¬´Ó¡°ÈËÓë»úÆ÷¡±µÄʱ´úÂõÏò¡°ÈËÓëÈË¡±µÄʱ´ú¡£»¥ÁªÍøÉç½»·þÎñÍøÕ¾µÄ·¢Õ¹ÑéÖ¤ÁË¡°Áù¶È·Ö¸ôÀíÂÛ¡±£¨Six Degrees of Separation£©£¬¼´¡°È˼ʹØÏµÂöÂç·½ÃæÄã±ØÈ»¿ÉÒÔͨ¹ý²»³¬³öÁùλÖмäÈ˼ä½ÓÓëÊÀÉÏÈÎÒâÏÈÉúŮʿÏàʶ¡±¡£¸öÌåµÄÉ罻Ȧ»á²»¶ÏµØÀ©´óºÍÖØµþ²¢×îÖÕÐγɴóµÄÉç½»ÍøÂç¡£ÎÞÂÛÊǹúÍâµÄFacebook¡¢MySpace¡¢Twitter£¬»¹ÊǹúÄڵĿªÐÄÍø¡¢ÈËÈËÍøµÈ¶¼Ò»Í·Ôú½øÉç½»Íø£¬ÒòΪËûÃÇÈ϶¨Éç½»Íø±ØÈ»ÏÆÆðÐÂÒ»ÂֵĻ¥ÁªÍø¸ïÃü¡£

Éç½»ÍøµÄÒ»¸öÏÔÖøÌØµãÊÇÖ§³Ö¾Þ´óÓû§Êý£¬ÀýÈçFacebookÖ§³Ö³¬¹ý3ÒÚµÄÓû§£¬ÆäÊý¾ÝÖÐÐÄÔËÐÐ×ų¬¹ýÍǫ̀µÄ·þÎñÆ÷£¬Îª±é²¼È«ÇòµÄÓû§ÌṩÐÅϢͨѶ·þÎñ¡£ÁíÍ⣬ÈκÎÁ½¸öÉç½»ÍøÓû§¶¼¿ÉÄܽ»»¥£¬Ò²¾ÍÊDZØÐëÖ§³ÖÈκÎÁ½¸öÊý¾Ý¿âÓû§µÄÊý¾Ý¹ØÁª²Ù×÷¡£Õâ¶ÔÓÚ·þÎñ¶ËµÄÊý¾Ý¿â¹ÜÀíÌá³öÁ˼«´óµÄÌôÕ½¡£

¹ØÏµÊý¾Ý¿âÓë NoSQL Êý¾Ý¿â

¹ØÏµÊý¾Ý¿âʹÓÃÕß×ñѭһЩÊý¾Ý¿â·¶Ê½£¬ÕâЩ·¶Ê½ÊÇÊý¾Ý¿âÉè¼ÆÖеÄһϵÁÐÔ­ÀíºÍ¼¼Êõ£¬Ä¿µÄÊÇΪÁ˼õÉÙÊý¾Ý¿âÖÐÊý¾ÝÈßÓàºÍÔö½øÊý¾ÝµÄÒ»ÖÂÐÔ¡£½á¹¹»¯²éѯÓïÑÔSQL´óÁ¿Ê¹Óöà±íÁ¬½Ó²Ù×÷£¬SQLµÄͨÓÃÐÔ¿ÉÒÔΪʹÓÃÕß´øÀ´ºÜ¶à·½±ã¡£

Ëæ×ÅÔ½À´Ô½¶à´ó¹æÄ£¹¤×÷¸ººÉÓ¦Óõķ¢ÐУ¬¶Ô¿ÉÉìËõÐÔµÄÐèÇ󣬿ÉÄÜ»á±äµÃ·Ç³£Ñ¸ËÙºÍÎÞ±ÈÅÓ´ó¡£

¹ØÏµÊý¾Ý¿âµÄÈ·ÄÜÉìËõ×ÔÈ磬µ«Í¨³£Ö»ÄÜÔÚµ¥Ì¨·þÎñÆ÷½ÚµãÉϽøÐС£ÀýÈç²ÉÓñí·ÖÇø¼¼Êõ£¬Ò»¸ö±í¸ñ¿ÉÒÔÓɶà¸öÎïÀíÎļþ×é³É£¬ËäÈ»±í¸ñµÄÈÝÁ¿Ôö´óÁË£¬µ«¸Ã±í¸ñÈÔȻֻÄÜÓÉÒ»Êý¾Ý¿âÒýÇæ¹ÜÀí£»ÁíÍâÔö¼ÓÒ»ÎïÀíÎļþʱ£¬±í¸ñSchemaµÃ×ö¸Ä¶¯£¬Ò²¾ÍÊÇ»¹²»ÄÜÖ§³Ö¶¯Ì¬À©ÈÝ¡£

Ò»µ©µ¥½ÚµãµÄÄÜÁ¦µÖ´ïÉÏÏÞ£¬¾ÍµÃͨ¹ý¶à·þÎñÆ÷½ÚµãÀ´À©Õ¹À´·Ö·¢¸ºÔØ¡£Õâʱ¹ØÏµÊý¾Ý¿âµÄ¸´ÔÓÐԾͿªÊ¼Ó°ÏìÆäDZÔÚµÄÀ©Õ¹¹æÄ£ÁË¡£RDBMSÖ§³Ö·ÖÇøÊÓͼ£¨Partition View£© ¼¼Êõ£¬Ò²¾ÍÊÇÖ§³ÖÁªºÏÊý¾Ý¿â£¨Federated Database£©£¨Èçͼ1£©¡£Ò»¸ö·ÖÇøÊÓͼ¿ÉÒÔÓɶà¸ö·Ö²¼ÔÚ²»Í¬Êý¾Ý¿â½Úµã·þÎñÆ÷Éϵıí¸ñ×éºÏ¶ø³É£¬Êý¾Ý¿âÓû§¿´µ½µÄÖ»ÊǸÃÊÓͼ£¬²»±Ø¹ØÐÄÎïÀí±í¸ñ¡£Í¨¹ýÊý¾Ýˮƽ·Ö¸î¼¼Êõ£¬·ÖÇøÊÓͼ°Ñ¸ºÔØ·Öµ£µ½¶à¸öÊý¾Ý¿â½Úµã·þÎñÆ÷ÉÏ¡£À©ÈÝʱ£¬¸Ã·½·¨³ýÁËÐè¸Ä¶¯ÊÓͼ¶¨ÒåÍ⣬·ÖÇøÊÓͼ³ÉΪ·Ö²¼Ê½Êý¾Ý¿âϵͳµÄÖÐÐÄ£¬´æÔÚµ¥µã¹ÊÕÏÎÊÌâ¡£ÁíÍ⣬¿çÊý¾Ý¿â½ÚµãÖ®¼ä¶à±í¸ñ¼äÁ¬½Ó²Ù×÷µÄÖ§³Ö³öÏÖ¼«´óÀ§ÄÑ¡£

ͼ1 IBMÁª°îÊý¾Ý¿âµÄÌåϵ½á¹¹

µ±ÊÔͼÀ©Õ¹Êý¾Ý¿âϵͳµ½³É°ÙÉÏǧ¸ö½Úµãʱ£¬½«µ¼Ö²»¿°¸´ÔÓÐÔÖ®ÖØ¸º£¬ÕâÒ»ÌØµãʹµÃRDBMSÔÚ´óÐÍ·Ö²¼Ê½ÏµÍ³Æ½Ì¨Êг¡ÀïµÄÉú´æÄÜÁ¦±»´ó·ùÏ÷¼õ¡£

ΪÁËÄÜÏò¿Í»§Ìṩһ¸öÉìËõ×ÔÈçµÄ¿Õ¼ä´æ·ÅÓ¦ÓÃÊý¾Ý£¬¹©Ó¦ÉÌʵ¼ÊÉÏÖ»ÓÐÒ»ÖÖÕæÕýµÄÑ¡Ôñ¡ª¡ªÊµÏÖÒ»ÖÖÐÂÐ͵ÄרעÓÚ¿ÉÀ©Õ¹ÐÔµÄÊý¾Ý¿âϵͳ£¬¶øÎþÉüµô¹ØÏµÊý¾Ý¿âËù´øÀ´µÄÆäËûºÃ´¦¡£NoSQLÊǷǹØÏµÐÍÊý¾Ý´æ´¢µÄ¹ãÒ嶨Ò壬Ëü´òÆÆÁ˳¤¾ÃÒÔÀ´¹ØÏµÐÍÊý¾Ý¿âÓëACIDÀíÂÛ´óһͳµÄ¾ÖÃæ¡£NoSQLÊý¾Ý´æ´¢²»ÐèÒª¹Ì¶¨µÄ±í½á¹¹£¬Í¨³£Ò²²»´æÔÚÁ¬½Ó²Ù×÷£¬ÔÚ³¬´óÐÍÊý¾Ý´æÈ¡ÉϾ߱¸¹ØÏµÐÍÊý¾Ý¿âÎÞ·¨±ÈÄâµÄÐÔÄÜÓÅÊÆ¡£¸ÃÊõÓïÔÚ2009 Äê³õµÃµ½Á˹㷺ÈÏͬ£¬ÆäÖÐKey-ValueÊý¾ÝÄ£ÐÍÊǽâ¾ö´óÐÍÊý¾Ý¿âϵͳÀ©³äÎÊÌâµÄÒ»ÖÖ¿ÉÐеĽâ¾ö·½°¸¡£

Berkeley DB Key-ValueÊý¾ÝÄ£ÐÍ

Berkeley DBÊÇÒ»ÖÖÖ§³ÖKey-ValueÊý¾ÝÄ£Ð͵ÄǶÈëʽÊý¾Ý¿â´æ´¢ÒýÇæ¡£Ëü²»Ö§³ÖClient/ServerÍøÂç·ÃÎÊ·½Ê½£¬³ÌÐòͨ¹ý½ø³ÌÄÚµÄAPI·ÃÎÊÊý¾Ý¿â£¬²»Ö§³ÖSQL»òÕ߯äËûÊý¾Ý¿â²éѯÓïÑÔ£¬²»Ö§³Ö±í½á¹¹ºÍÊý¾ÝÁС£·ÃÎÊÊý¾Ý¿âµÄ³ÌÐò×ÔÖ÷¾ö¶¨Êý¾ÝÈçºÎ´¢´æÔڼǼÀһÌõ¼Ç¼ÓÉÒ»¸ö³ÆÎª¼ü£¨Key£©µÄÊý¾Ý¿éºÍÒ»¸ö³ÆÎªÖµ£¨Value£©µÄÊý¾Ý¿é×é³É¡£Berkeley DB²»¶Ô¼Ç¼ÀïµÄÊý¾Ý½øÐÐÈκΰü×°¡£Ó¦ÓóÌÐò¿Éͨ¹ý»Øµ÷º¯ÊýÀ´¶¨Ò岻ͬ¼üÖ®¼äµÄ´óС¹ØÏµ£¬¼Ç¼ºÍËüµÄ¼ü¶¼¿ÉÒÔ´ïµ½4GBµÄ³¤¶È¡£¾¡¹Ü¼Ü¹¹¼òµ¥£¬Berkeley DBÈ´Ö§³ÖºÜ¶à¸ß¼¶µÄÊý¾Ý¿âÌØÐÔ£¬±ÈÈçACID Êý¾Ý¿âÊÂÎñ´¦Àí¡¢Ï¸Á£¶ÈËø¡¢ XA½Ó¿Ú¡¢Èȱ¸·ÝÒÔ¼°Í¬²½¸´ÖÆ¡£Berkley DBΪ²»Í¬Óû§Ìṩ¶àÖÖ¹¦Äܼ¯£¨Feature Set£©£ºÖ§³Öµ¥¸öдÏ̵߳ÄÊý¾Ý´æ´¢£¨Data Store£©£»Ö§³Ö¶à²¢·¢Ð´Ï̵߳IJ¢·¢Êý¾Ý´æ´¢£¨Concurrent Data Store£©£»Ö§³ÖACIDºÍÔÖÄѻָ´µÄÊÂÎñÊý¾Ý´æ´¢£¨Transactional Data Store£©£»Í¨¹ý¸´ÖÆÖ§³ÖÈÝ´íµÄ¸ß¿É¿¿Êý¾Ý´æ´¢£¨High Availability£©¡£

¹ØÏµÊý¾Ý¿âϵͳÓÉ´æ´¢ÒýÇæºÍ¹ØÏµÒýÇæÁ½¸ö¶ÀÁ¢²¿·Ö×é³É¡£´æ´¢ÒýÇæ¸ºÔð¼Ç¼´æ´¢¡¢Ë÷ÒýºÍÊÂÎñ´¦Àí£¬¹ØÏµÒýÇæ¸ºÔð»ùÓÚ´æ´¢ÒýÇæÌṩµÄ·þÎñ£¬·ÖÎöSQL¡¢Öƶ¨²éѯִÐмƻ®µÈ¡£Berkeley DBÊÇÒ»ÖÖ´æ´¢ÒýÇæ¡£ÀýÈçMySQLÊý¾Ý¿â¿É²ÉÓÃMyISAM¡¢InnoDB¡¢Berkeley DBµÈ´æ´¢ÒýÇæ£¬Èçͼ2Ëùʾ¡£

ͼ2 MySQLʹÓõIJ»Í¬µÄ´æ´¢ÒýÇæ

Berkeley DBÖ§³ÖƽºâÊ÷£¨BTree£©¡¢¹þÏ££¨Hash£©¡¢¶ÓÁУ¨Queue£©ºÍ¼Ç¼£¨Record£©µÈÊý¾Ý¼¯´æ´¢ºÍË÷Òý·½Ê½£¬»¹Ö§³Ö¸ù¾ÝKey-ValueÖеÄKey´´½¨¼¯ÈºË÷Òý£¨Clustered Index£©¡£ÕâÑù¼Ç¼¼¯µÄÎïÀí´ÎÐò¾Í¸ù¾ÝKeyÖµ´óСÀ´ÅÅÁС£Èç¹ûÒª²éѯ½á¹û¼Ç¼¼¯µÄ¼üֵΪ¸ø¶¨µÄÒ»¸ö·¶Î§£¬¸ÃÌØÐÔ¶ÔÓÚÖ§³ÖÕâÖÖÀàÐ͵ĿìËÙ²éѯÆðÁ˺ܴó×÷Óá£Berkeley DBµÄÒ»¸öKey-Value¼Ç¼¼¯³ÆÎªÒ»¸öÊý¾Ý¿â£¬»á´æ´¢ÔÚÒ»¸öµ¥¶ÀÎļþÖС£Berkeley DBͨ¹ý´´½¨¸¨ÖúÊý¾Ý¿â£¨Secondary Database£©£¬ÔÊÐí¶Ô¼Ç¼¼¯½¨Á¢·Ç¼¯ÈºË÷Òý£¨Non-Clustered Index£©¡£·Ç¼¯ÈºË÷ÒýÊÊÓÃÓÚ¿ìËÙ²éѯ½á¹ûΪһÌõ¼Ç¼£¬¸Ã¼Ç¼µÄ¼üֵΪ¸ø¶¨µÄÒ»¸öÖµ¡£ÀýÈçÉç½»ÍøÓû§Êý¾Ý¼¯£º

User <UID, First_Name, Last_Name, Icon, E-mail>

Èç¹ûÒÔUID×÷ΪÖ÷Êý¾Ý¿âµÄ¼ü£¬ÆäËû×Ö¶Î×÷ΪÖ÷Êý¾Ý¿âµÄÖµ£¬¿ÉÔÙ´´½¨Ò»¸ö¸¨ÖúÊý¾Ý¿â£¬ÒÔE-mail×÷Ϊ¸¨ÖúÊý¾Ý¿âµÄ¼ü£¬¸¨ÖúÊý¾Ý¿âµÄֵΪE-mailËù¶ÔÓ¦µÄUID£¬Ò²¾ÍÊÇÖ¸ÏòÖ÷Êý¾Ý¿â¼Ç¼µÄÖ¸Õë¡£ÈôÔÚÒ»¸öKey-ValueÊý¾Ý¿â²éѯ£¬Ò»°ã¿É¸ù¾Ý²éѯÌõ¼þ´´½¨³ÉÒ»¸ö¼üÖµ£¬ÒýÇæ·µ»ØÒ»¸öÓα꣨Cursor£©£¬¸ÃÓαêÖ¸ÏòµÈÓÚ»ò´óÓڸüüÖµµÄ½á¹ûÊý¾Ý¼¯¡£

²»ÄÑ¿´³öBerkeley DBʹÓõÄË÷Òý¼¼ÊõÓëSQL Server¡¢OracleµÈ¸ß¶ËÊý¾Ý¿âϵͳÊÇÒ»ÑùµÄ¡£RDBMSÖо­³£Ê¹Óõıí¸ñÁ¬½Ó²Ù×÷£¬ÔÚBerkeley DBÖв»ÔÙÖ§³Ö£¬ÐèÒªÓ¦ÓóÌÐòȥʵÏÖÁ½¸öÊý¾Ý¼¯µÄÁ¬½Ó²Ù×÷¡£ÕâÊÇKey-ValueÊý¾ÝÄ£ÐÍÓë¹ØÏµÊý¾ÝÄ£Ð͵äÐ͵ÄÇø±ð¡£

Berkeley DB³ýÁË×÷ΪMySQLµÄ´æ´¢ÒýÇæÖ®Í⣬»¹Ó¦ÓÃÔÚOpenLDAP¡¢MemCachedµÈÖªÃûÈí¼þ¡£

ÓëBerkeley DBÀàËÆµÄÊý¾Ý¿âÒýÇæ»¹ÓÐTokyo Cabinet/ TyrantµÈ¡£

Éç½»ÍøÊý¾Ý¿âϵͳCassandra

ÒÔFacebookÓû§Êý¾Ý¼¯ÎªÀý£¬²»¿ÉÄܰÑ3ÒÚÌõÊý¾Ý¼¯´æ·ÅÔÚͬһ¸ö±í¸ñ¡¢Îļþ»òÓÉͬһ̨¼ÆËã»ú´¦Àí£¬ÕâÒªÇóϵͳÄÜÖ§³ÖÊý¾Ý·ÖÇø£¬°ÑÊý¾Ý¼¯·Ö¸îÔÚ¶ą̀½Úµã¼ÆËã»úÖУ¬Ã¿Ì¨¼ÆËã»ú·Öµ£Ò»²¿·Ö¸ºÔØ£¬µ±Óû§Ôö¼Óµ½Ò»¶¨³Ì¶Èʱ£¬ÏµÍ³ÄÜÔÊÐí¼ÓÈëÐÂµÄ½Úµã¼ÆËã»ú£¬²¢ÇÒ¾¡¿ÉÄܵؼõÉÙÊý¾ÝÇ¨ÒÆ¡£

2007Äê10ÔÂ30ÈÕ£¬AmazonµÄCTO Werner Vogels·¢±íÁËһƪÎÄÕ£¬ÌÖÂÛÁËÒ»ÖÖ»ùÓÚKey-ValueÊý¾ÝÄ£Ð͵Ĵ洢ϵͳDynamo¡£¸Ãϵͳ֧³ÅÁ˲»ÉÙAmazonµÄÃæÏòµç×ÓÉÌÎñµÈ¹Ø¼üÐÔÓ¦Óã¬Ëü²ÉÓõĴ洢ÒýÇæÊÇ Berkeley DB ÊÂÎñÊý¾Ý´æ´¢£¨Transactional Data Store£©¡£DynamoϵͳÖ÷ҪΪ´æ´¢1M×óÓÒÉõÖÁ¸üСµÄÄÚÈÝ£¬È繺Îï³µ¡¢ÍƼöÁбíµÈ¡£DynamoÉè¼ÆÉÏÓÐÏÂÃæÒ»Ð©ÌØµã¡£

1.ͨ¹ýÊý¾Ý·ÖÇø¸´ÖÆÀ´Ö§³Ö¸ß¿É¿¿ÐÔÓë¸ß¿ÉÉìËõÐÔ¡£

2.ʼÖÕ¿Éд¡£

3.Ò»ÖÂÐÔÓëдÈëËٶȵÄÕÛÖУ¬²»ÒªÇóͬ²½Ð´ÈëËùÓи±±¾¡£

4.¶Ô³Æ£¬ÍêȫȥÖÐÐÄ»¯£¬È˹¤¹ÜÀí¹¤×÷ºÜС¡£

Cassandra DB×î³õÓÉFacebook¿ª·¢£¬ºóÀ´×ª±ä³ÉΪ¿ªÔ´ÏîÄ¿¡£ËüÊÇÒ»¸öÎªÍøÂçÉç½»ÔÆ¼ÆËãÉè¼ÆµÄÊý¾Ý¿â£¬Ö÷ÒªÌØµãÊÇËü²»ÔÙÊÇÒ»¸öÊý¾Ý¿â£¬¶øÊÇÓÉÒ»¶ÑÊý¾Ý¿â½Úµã¹²Í¬¹¹³ÉµÄÒ»¸ö·Ö²¼Ê½ÍøÂç·þÎñ£¬¶ÔCassandraµÄÒ»¸öд²Ù×÷»á±»¸´ÖƵ½ÆäËû½ÚµãÉÏÈ¥£¬¶ÔCassandraµÄ¶Á²Ù×÷Ò²»á±»Â·Óɵ½Ä³¸ö½ÚµãÉÏÃæÈ¥¶ÁÈ¡¡£¶ÔÓÚCassandraȺ¼¯À´Ëµ£¬À©Õ¹ÐÔÄÜÊDZȽϼòµ¥µÄÊÂÇ飬ֻ¹ÜÔÚȺ¼¯ÀïÃæÌí¼Ó½Úµã¾Í¿ÉÒÔÁË¡£

CassandraµÄÓû§°üÀ¨Facebook¡¢TwitterºÍDiggµÈ¡£Digg¹¤³Ì¸±×ܲÃJohn Quinn˵£º¡°Cassandra²ÉÓÃÍêÈ«·ÖÉ¢µÄģʽ£¬Ã¿¸ö½Úµã¶¼Ò»Ñù£¬²»»á³öÏÖµ¥µã¹ÊÕÏ¡£ËüµÄÈÝ´íÂÊÒ²·Ç³£¸ß£¬Êý¾Ý¿ÉÒÔ±»¸´ÖƵ½Êý¾ÝÖÐÐĵĶà¸ö½ÚµãÖС£Ëü»¹·Ç³£¾ßÓе¯ÐÔ£¬Ëæ×ÅÐÂÉ豸µÄ¼ÓÈ룬Æä¶ÁдÍÌÍÂÁ¿½«³ÊÏßÐÔÔö¼Ó¡£¡±

CassandraÒÔAmazonרÓеÄÍêÈ«·Ö²¼Ê½µÄDynamoΪ»ù´¡£¬½áºÏÁËGoogle BigTable»ùÓÚÁÐ×壨Column Family£©µÄÊý¾ÝÄ£ÐÍ¡£P2PÈ¥ÖÐÐÄ»¯µÄ´æ´¢¡£ºÜ¶à·½Ãæ¶¼¿ÉÒÔ³ÆÖ®ÎªDynamo 2.0¡£

ͼ3ΪCassandra¡¢Dynamo¡¢Key-ValueÖ®¼äµÄ¹ØÏµ¼°ÔÚÉç½»ÍøÉϵÄÓ¦Ó᣼ýÍ·±íʾÒÀÀµ¹ØÏµ¡£

ͼ3 Cassandra¡¢Dynamo¡¢Key-Value¹ØÏµÍ¼

·Ö²¼Ê½´æ´¢ÏµÍ³Dynamo

Dynamo²ÉÓÃConsistent HashingËã·¨À´ÊµÏÖÊý¾Ý·ÖÇø¡£

Consistent Hashing»ù±¾Ô­ÀíÊÇ£ºÊ×ÏÈÇó³ö·þÎñÆ÷½ÚµãµÄ¹þÏ£Öµ£¬²¢½«ÆäÅäÖõ½0¡«2^32µÄÔ²ÉÏ¡£È»ºóÓÃͬÑùµÄ·½·¨Çó³ö´æ´¢Êý¾ÝµÄ¼üµÄ¹þÏ£Öµ£¬²¢Ó³Éäµ½Ô²ÉÏ¡£ÔÙ´ÓÊý¾ÝÓ³Éäµ½µÄλÖÿªÊ¼Ë³Ê±Õë²éÕÒ£¬½«Êý¾Ý±£´æµ½ÕÒµ½µÄµÚÒ»¸ö·þÎñÆ÷ÉÏ¡£Èç¹û³¬¹ý2^32ÈÔÈ»ÕÒ²»µ½·þÎñÆ÷£¬¾Í»á±£´æµ½µÚһ̨·þÎñÆ÷ÉÏ¡£Èçͼ4Ëùʾ¡£

ͼ4 Êý¾Ý·Ö¸îµ½4¸ö½ÚµãÊý¾Ý¿â

Èç¹ûÌí¼Óһ̨·þÎñÆ÷¡£Ö»ÓÐÔÚÔ²ÉÏ£¬Ôö¼Ó·þÎñÆ÷µÄµØµãÄæÊ±Õë·½ÏòµÄµÚһ̨·þÎñÆ÷ÉϵIJ¿·ÖÊý¾ÝÐèÒªÇ¨ÒÆµ½ÐµĽڵãÊý¾Ý¿â¡£Èçͼ5Ëùʾ¡£

ͼ5 Ìí¼ÓNode5ºóÐèÒªÇ¨ÒÆµÄÊý¾Ý

Êý¾Ý·ÖÇøºó£¬Êý¾Ý¿é±»¸´ÖƵ½N¸ö½ÚµãÉÏ¡£¸´ÖÆÊ±ÒòΪ¸üвúÉúµÄÒ»ÖÂÐÔÎÊÌâµÄά»¤²ÉÈ¡ÀàËÆ°ÝռͥÈÝ´íQuorumЭÒ飨Byzantine Fault-tolerance Quorum£©µÄ»úÖÆÒÔ¼°È¥ÖÐÐÄ»¯µÄ¸´ÖÆÍ¬²½Ð­Òé¡£µ±Ò»¸ö´æ´¢½Úµã±»ÈÏΪÊǰÝռͥ½Úµãʱ£¬ËüµÄÐÐΪ¿ÉÄÜÈÎÒâÆ«ÒÆ£¬±íÏÖÔÚ£º¾Ü¾øÏìÓ¦ÇëÇó¡¢·¢ËÍ´íÎóÏûÏ¢¡¢´æ´¢´íÎóÐÅÏ¢¡£QuorumЭÒéÖгýÁËNÖ®Í⻹ÓÐÁ½¸ö¹Ø¼ü²ÎÊý£ºRÓëW¡£R´ú±íÒ»´Î³É¹¦µÄ¶ÁÈ¡²Ù×÷ÖÐ×îС²ÎÓë½ÚµãÊýÁ¿£¬W´ú±íÒ»´Î³É¹¦µÄд²Ù×÷ÖÐ×îС²ÎÓë½ÚµãÊýÁ¿¡£RºÍWÖ±½ÓÓ°ÏìÐÔÄÜ¡¢Ò»ÖÂÐÔ¡£R ºÍ W Öµ¹ýСÔòÓ°ÏìÒ»ÖÂÐÔ£¬¹ý´óÔòÓ°ÏìЧÂÊ£¬ÕâÁ½¸öֵҪƽºâ¡£Èç¹ûWÉèÖÃΪ1£¬ÔòÒ»¸öʵÀýÖÐÖ»ÒªÓÐÒ»¸ö½Úµã¿Éд¾Íд³É¹¦£¬²»»áÓ°ÏìдЧÂÊ£»Èç¹ûRÉèÖÃΪ1£¬Ö»ÒªÓÐÒ»¸ö½Úµã¿É¶Á£¬¾Í¶Á³É¹¦£¬²»»áÓ°Ïì¶ÁЧÂÊ¡£

FacebookÊý¾Ý¿â²éѯÓïÑÔ£ºFQL

FacebookΪ¿ª·¢ÕßÌṩһÌ׺ÍSQL·ç¸ñÒ»ÖµÄÊý¾Ý¿â²éѯÓïÑÔ£¬³ÆÎªFacebook Query Language £¨FQL£©¡£FQLÊÇÒ»ÖÖ»ùÓÚÁеÄÊý¾Ý²éѯÓïÑÔ¡£Ìṩ·á¸»µÄÌõ¼þ²éѯ£¬ÉõÖÁ°üÀ¨×Ó²éѯ¡£

ÀýÈ磬ÒÔÏÂFQL²éѯÒѰ²×°FacebookÓ¦ÓóÌÐòµÄÓû§$app_userµÄºÃÓÑID¼¯ºÏ£º

SELECT uid FROM user WHERE is_app_user = 1 AND
uid IN £¨SELECT uid2 FROM friend WHERE uid1 = $app_user£©

ÓëSQLÖØÒªÇø±ðÊÇFQL²»Ö§³Ö£º

¶à±íÁ¬½Ó£ºJOIN²Ù×÷

·Ö×飺 GROUP BY²Ù×÷

ÅÅÐò£ºORDER BY²Ù×÷

Ëæ×ż¼Êõ·¢Õ¹£¬Ò»²¿·Ö»ùÓÚÁнṹµÄNoSQLÊý¾Ý¿â¿ªÊ¼Ö§³Ö·Ö×â¡¢ÅÅÐòµÈ¸´ÔÓÊý¾Ýͳ¼Æ·ÖÎö¹¦ÄÜ¡£

¾ÙÀý£º²éѯºÃÓÑÐÅÏ¢

FacebookÓ¦ÓóÌÐò´ÓÒÔÏÂÁ½¸öÊý¾Ý¼¯ÖвéÕÒÒ»Óû§µÄºÃÓÑÊý¾Ý¼¯ÐÅÏ¢£º

User <UID,First_Name, Last_Name, Icon>

Friend_List <UID, Friend_UID>

×¢Friend_UIDÊÇÒ»Ö¸ÏòUser£¨UID£©µÄÍâ¼ü¡£RDBMSÓ¦ÓóÌÐò¿ÉʹÓÃÊý¾Ý¼¯Á¬½Ó²Ù×÷ʵÏÖ£º

SELECT f.UID, u.Friend_UID, u.First_Name, u.Last_Name, u.Icon
FROM Friend_List f, User u
WHERE f.Friend_UID = u.UID AND
f.UID=@Input_UID

ÔÚÉç½»ÍøÊý¾Ý¿âϵͳÖУ¬ÓÉÓÚUserÊý¾Ý·Ö²¼ÔÚ¶ą̀·þÎñÆ÷ÖУ¬ÆäÁ¬½Ó²Ù×÷ºÍÍâ¼üÔ¼ÊøÊµ¼ÊÉϲ»ÄÜÖ§³Ö¡£

ÔÚFacebookÖвéÕÒÒ»Óû§µÄºÃÓÑÐÅÏ¢£¬µÃ·ÖA¡¢BÁ½²½²Ù×÷ʵÏÖ£º

A²½

SELECT Friend_UID
INTO @Out_Record_Set
FROM Friend_List f
WHERE f.UID=@Input_UID

B²½

FOR EACH £¨Friend_UID in @Out_Record_Set£©
SELECT u.Friend_UID, u.First_Name, u.Last_Name, u.Icon
FROM User u
WHERE u.UID = Friend_UID

No-SQL: Not Only SQL

¶ÔÓÚÄÇЩ¹ØÏµ¸´ÔÓµÄÊý¾Ý´¦ÀíºÍ·ÖÎöͳ¼Æ£¬SQLÖµµÃ»¨Ç®¡£µ«µ±Êý¾Ý¿â½á¹¹·Ç³£¼òµ¥Ê±£¬SQL¿ÉÄÜûÓÐÌ«´óÓô¦¡£Èç¹ûÄÜÓÃÆÕͨÎļþ´æ´¢´úÌæÊý¾Ý¿âϵͳµÄ»°£¬ÓÅÑ¡ÆÕͨÎļþ´æ´¢¡£

¶ÔÓÚÉç½»Íø£¬Äܹ»²»ÊÜÏÞÖÆµÄÀ©Õ¹±È¸ü·á¸»µÄ¹¦Äܸü¼ÓÖØÒª¡£½¨Á¢´ó¹æÄ£Éç½»Íø³É±¾µÄѹÁ¦ÈúܶàÉç½»Íø¿ª·¢ÈËԱŬÁ¦È¥Ñ°ÕÒ¸ü¸ßÐԼ۱ȵĽâ¾ö·½°¸¡£Ñо¿±íÃ÷»ùÓÚÆÕͨÁ®¼ÛÓ²¼þµÄ·Ö²¼Ê½´æ´¢½â¾ö·½°¸±ÈÏÖÔڵĸ߶ËÊý¾Ý¿â¸ü¼Ó¿É¿¿¡£Ö§³ÖSQLµÄRDBMS²»Äܽâ¾öËùÓÐÎÊÌâµÄʱºò£¬NoSQL²»ÊǼòµ¥µÄNo SQL£¬Æä±¾ÖÊÊÇNon-Relational£¬ÕâʱºòNoSQLÒ²¾Í³ÉΪNot Only SQL¡£

   
3016 ´Îä¯ÀÀ       30
Ïà¹ØÎÄÕÂ

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

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

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

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

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

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