1¡¢»ù±¾¸ÅÄî
NoSQL£¬·ºÖ¸·Ç¹ØÏµÐ͵ÄÊý¾Ý¿â¡£Ëæ×Å»¥ÁªÍøweb2.0ÍøÕ¾µÄÐËÆð£¬´«Í³µÄ¹ØÏµÊý¾Ý¿âÔÚÓ¦¸¶web2.0ÍøÕ¾£¬ÌرðÊdz¬´ó¹æÄ£ºÍ¸ß²¢·¢µÄÉç½»ÐÔÍøÂç·þÎñµÄweb2.0´¿¶¯Ì¬ÍøÕ¾ÒѾÏÔµÃÁ¦²»´ÓÐÄ£¬±©Â¶Á˺ܶàÄÑÒÔ¿Ë·þµÄÎÊÌ⣬È磺
1¡¢Highperformance——¶ÔÊý¾Ý¿â¸ß²¢·¢¶ÁдµÄÐèÇó
Web2.0ÍøÕ¾Òª¸ù¾ÝÓû§¸öÐÔ»¯ÐÅÏ¢À´ÊµÊ±Éú³É¶¯Ì¬Ò³ÃæºÍÌṩ¶¯Ì¬ÐÅÏ¢£¬ËùÒÔ»ù±¾ÉÏÎÞ·¨Ê¹Óö¯Ì¬Ò³Ã澲̬»¯¼¼Êõ£¬Òò´ËÊý¾Ý¿â²¢·¢¸ºÔطdz£¸ß£¬ÍùÍùÒª´ïµ½Ã¿ÃëÉÏÍò´Î¶ÁдÇëÇó¡£¹ØÏµÊý¾Ý¿âÓ¦¸¶ÉÏÍò´ÎSQL²éѯ»¹ÃãÇ¿¶¥µÃס£¬µ«ÊÇÓ¦¸¶ÉÏÍò´ÎSQLдÊý¾ÝÇëÇó£¬Ó²ÅÌIO¾ÍÒѾÎÞ·¨³ÐÊÜÁË¡£Æäʵ¶ÔÓÚÆÕͨµÄBBSÍøÕ¾£¬ÍùÍùÒ²´æÔڶԸ߲¢·¢Ð´ÇëÇóµÄÐèÇó£¬ÀýÈçÏñJavaEyeÍøÕ¾µÄʵʱͳ¼ÆÔÚÏßÓû§×´Ì¬£¬¼Ç¼ÈÈÃÅÌû×ӵĵã»÷´ÎÊý£¬Í¶Æ±¼ÆÊýµÈ£¬Òò´ËÕâÊÇÒ»¸öÏ൱ÆÕ±éµÄÐèÇó¡£
2¡¢HugeStorage——¶Ôº£Á¿Êý¾ÝµÄ¸ßЧÂÊ´æ´¢ºÍ·ÃÎʵÄÐèÇó
ÀàËÆFacebook£¬twitter£¬FriendfeedÕâÑùµÄÉç½»ÐÔÍøÕ¾£¬Ã¿ÌìÓû§²úÉúº£Á¿µÄÓû§¶¯Ì¬£¬ÒÔFriendfeedΪÀý£¬Ò»¸öÔ¾ʹﵽÁË2.5ÒÚÌõÓû§¶¯Ì¬£¬¶ÔÓÚ¹ØÏµÊý¾Ý¿âÀ´Ëµ£¬ÔÚÒ»ÕÅ2.5ÒÚÌõ¼Ç¼µÄ±íÀïÃæ½øÐÐSQL²éѯ£¬Ð§ÂÊÊǼ«ÆäµÍÏÂÄËÖÁ²»¿ÉÈÌÊܵġ£ÔÙÀýÈç´óÐÍwebÍøÕ¾µÄÓû§µÇ¼ϵͳ£¬ÀýÈçÌÚѶ£¬Ê¢´ó£¬¶¯éüÊýÒÔÒڼƵÄÕʺţ¬¹ØÏµÊý¾Ý¿âÒ²ºÜÄÑÓ¦¸¶¡£
3¡¢HighScalability&&HighAvailability——¶ÔÊý¾Ý¿âµÄ¸ß¿ÉÀ©Õ¹ÐԺ͸߿ÉÓÃÐÔµÄÐèÇó
ÔÚ»ùÓÚwebµÄ¼Ü¹¹µ±ÖУ¬Êý¾Ý¿âÊÇ×îÄѽøÐкáÏòÀ©Õ¹µÄ£¬µ±Ò»¸öÓ¦ÓÃϵͳµÄÓû§Á¿ºÍ·ÃÎÊÁ¿ÓëÈÕ¾ãÔöµÄʱºò£¬ÄãµÄÊý¾Ý¿âȴûÓа취ÏñwebserverºÍappserverÄÇÑù¼òµ¥µÄͨ¹ýÌí¼Ó¸ü¶àµÄÓ²¼þºÍ·þÎñ½ÚµãÀ´À©Õ¹ÐÔÄܺ͸ºÔØÄÜÁ¦¡£¶ÔÓںܶàÐèÒªÌṩ24Сʱ²»¼ä¶Ï·þÎñµÄÍøÕ¾À´Ëµ£¬¶ÔÊý¾Ý¿âϵͳ½øÐÐÉý¼¶ºÍÀ©Õ¹ÊǷdz£Í´¿àµÄÊÂÇ飬ÍùÍùÐèҪͣ»úά»¤ºÍÊý¾ÝÇ¨ÒÆ£¬Êý¾Ý¿â²»ÄÜͨ¹ý²»¶ÏµÄÌí¼Ó·þÎñÆ÷½ÚµãÀ´ÊµÏÖÀ©Õ¹¡£
ΪÁ˽â¾ö´ó¹æÄ£Êý¾Ý¼¯ºÏ¶àÖØÊý¾ÝÖÖÀà´øÀ´µÄÌôÕ½£¬ÓÈÆäÊÇ´óÊý¾ÝÓ¦ÓÃÄÑÌ⣬NoSQLÕâÖַǹØÏµÐ͵ÄÊý¾ÝÓ¦Ô˶øÉú¡£
2¡¢NoSQLÊý¾Ý¿â·ÖÀà
1¡¢¼üÖµ(Key-Value)´æ´¢Êý¾Ý¿â
ÕâÒ»ÀàÊý¾Ý¿âÖ÷Òª»áʹÓõ½Ò»¸ö¹þÏ£±í£¬Õâ¸ö±íÖÐÓÐÒ»¸öÌØ¶¨µÄ¼üºÍÒ»¸öÖ¸ÕëÖ¸ÏòÌØ¶¨µÄÊý¾Ý¡£Key/valueÄ£ÐͶÔÓÚITϵͳÀ´ËµµÄÓÅÊÆÔÚÓÚ¼òµ¥¡¢Òײ¿Êð¡£µ«ÊÇÈç¹ûDBAÖ»¶Ô²¿·ÖÖµ½øÐвéѯ»ò¸üеÄʱºò£¬Key/value¾ÍÏÔµÃЧÂʵÍÏÂÁË¡£
2¡¢Áд洢Êý¾Ý¿â
Õⲿ·ÖÊý¾Ý¿âͨ³£ÊÇÓÃÀ´Ó¦¶Ô·Ö²¼Ê½´æ´¢µÄº£Á¿Êý¾Ý¡£¼üÈÔÈ»´æÔÚ£¬µ«ÊÇËüÃǵÄÌØµãÊÇÖ¸ÏòÁ˶à¸öÁС£ÕâЩÁÐÊÇÓÉÁмÒ×åÀ´°²Åŵġ£Áд洢Êý¾Ý¿â´æ´¢Ã¿Ò»ÁУ¬ÔÊÐí¸ü¿ìµÄɨÃèʱ£¬Ö»É漰һС²¿·ÖÁС£
Ò»¸öÊý¾Ý¿âË÷ÒýÊÇÒ»ÖÖÊý¾Ý½á¹¹£¬ÔÊÐíÔÚ´æ´¢¿Õ¼äÉÏ¿ìËÙ²éÕÒÊý¾ÝºÍ¶îÍâµÄд(Ë÷Òý¸üÐÂ)¡£Ë÷ÒýÓ³Éäµ½Êý¾ÝµÄÐÐÊý£¬¶øÒ»¸öÁÐÊý¾Ý¿â½«Êý¾ÝÓ³Éäµ½ÐÐÊý£¬ÕâÑù¼ÆËã±äµÃ¸ü¿ì¡£
3¡¢ÎĵµÐÍÊý¾Ý¿â
ÎĵµÐÍÊý¾Ý¿âµÄÁé¸ÐÊÇÀ´×ÔÓÚLotusNotes°ì¹«Èí¼þµÄ£¬¶øÇÒËüͬµÚÒ»ÖÖ¼üÖµ´æ´¢ÏàÀàËÆ¡£¸ÃÀàÐ͵ÄÊý¾ÝÄ£ÐÍÊǰ汾»¯µÄÎĵµ£¬°ë½á¹¹»¯µÄÎĵµÒÔÌØ¶¨µÄ¸ñʽ´æ´¢£¬±ÈÈçJSON¡£ÎĵµÐÍÊý¾Ý¿â¿ÉÒÔ¿´×÷ÊǼüÖµÊý¾Ý¿âµÄÉý¼¶°æ£¬ÔÊÐíÖ®¼äǶÌ×¼üÖµ¡£¶øÇÒÎĵµÐÍÊý¾Ý¿â±È¼üÖµÊý¾Ý¿âµÄ²éѯЧÂʸü¸ß¡£
ÎĵµÐÍ´æ´¢ÒÔ±¨Ö½ÎªÀý£¬±¨Ö½ÉÏһƪÎÄÕÂÒ²¿ÉÒԴ洢Ϊһ¸öµ¥Ò»µÄʵÌ壬Õâ½µµÍÁ˶ÔÓÚϰ¹ß¿´µ½ÎÄÕÂÄÚÈÝËùÏûºÄµÄʱ¼ä¡£
4¡¢Í¼ÐÎ(Graph)Êý¾Ý¿â
ͼÐνṹµÄÊý¾Ý¿âͬÆäËûÐÐÁÐÒÔ¼°¸ÕÐԽṹµÄSQLÊý¾Ý¿â²»Í¬£¬ËüÊÇʹÓÃÁé»îµÄͼÐÎÄ£ÐÍ£¬²¢ÇÒÄܹ»À©Õ¹µ½¶à¸ö·þÎñÆ÷ÉÏ¡£Í¼»òÍøÂçÊý¾ÝÖ÷ÒªÓÐ2¸ö×é³É²¿·Ö£º
½Úµã£ºÊµÌå±¾Éí¡£ÔÚÉç½»ÍøÂçÖУ¬Õâ¿ÉÄÜÊÇÈË¡£
±ß£ºÊµÌå¼äµÄ¹ØÏµ¡£ÕâÖÖ¹ØÏµÓÃÒ»ÌõÏßÀ´±íʾ£¬²¢ÇÒÓÐËü×Ô¼ºµÄÌØÐÔ¡£±ß¿ÉÒÔÓÐÒ»¸ö·½Ïò¡£
ͼ¿ÉÒÔ±äµÄ·Ç³£¸´ÔÓÀ´¸ø¶¨×ã¹»µÄ¹ØÏµºÍʵÌåÀàÐÍ¡£
Òò´Ë£¬ÎÒÃÇ×ܽáNoSQLÊý¾Ý¿âÔÚÒÔϵÄÕ⼸ÖÖÇé¿öϱȽÏÊÊÓãº
1¡¢Êý¾ÝÄ£ÐͱȽϼòµ¥£»
2¡¢ÐèÒªÁé»îÐÔ¸üÇ¿µÄITϵͳ£»
3¡¢¶ÔÊý¾Ý¿âÐÔÄÜÒªÇó½Ï¸ß£»
4¡¢²»ÐèÒª¸ß¶ÈµÄÊý¾ÝÒ»ÖÂÐÔ£»
5¡¢¶ÔÓÚ¸ø¶¨key£¬±È½ÏÈÝÒ×Ó³É临ÔÓÖµµÄ»·¾³¡£
3¡¢³£¼ûNoSQLÊý¾Ý¿â
1£©Redis
RedisÊÇÒ»¸ö¿ªÔ´µÄʹÓÃANSICÓïÑÔ±àд¡¢Ö§³ÖÍøÂç¡¢¿É»ùÓÚÄÚ´æÒà¿É³Ö¾Ã»¯µÄÈÕÖ¾ÐÍ¡¢Key-ValueÊý¾Ý¿â£¬²¢Ìṩ¶àÖÖÓïÑÔµÄAPI¡£´Ó2010Äê3ÔÂ15ÈÕÆð£¬RedisµÄ¿ª·¢¹¤×÷ÓÉVMwareÖ÷³Ö¡£´Ó2013Äê5Ô¿ªÊ¼£¬RedisµÄ¿ª·¢ÓÉPivotalÔÞÖú¡£
Redis±¾ÖÊÉÏÊÇÒ»¸öKey-ValueÀàÐ͵ÄÄÚ´æÊý¾Ý¿â£¬ºÜÏñmemcached£¬Õû¸öÊý¾Ý¿âϵͳ¼ÓÔØÔÚÄÚ´æµ±ÖнøÐвÙ×÷£¬¶¨ÆÚͨ¹ýÒì²½²Ù×÷°ÑÊý¾Ý¿âÊý¾Ýflushµ½Ó²ÅÌÉϽøÐб£´æ¡£ÒòΪÊÇ´¿ÄÚ´æ²Ù×÷£¬RedisµÄÐÔÄܷdz£³öÉ«£¬Ã¿Ãë¿ÉÒÔ´¦Àí³¬¹ý10Íò´Î¶Áд²Ù×÷¡£
RedisµÄ³öɫ֮´¦²»½ö½öÊÇÐÔÄÜ£¬Redis×î´óµÄ÷ÈÁ¦ÊÇÖ§³Ö±£´æListÁ´±íºÍSet¼¯ºÏµÄÊý¾Ý½á¹¹£¬¶øÇÒ»¹Ö§³Ö¶ÔList½øÐи÷ÖÖ²Ù×÷£¬ÀýÈç´ÓListÁ½¶ËpushºÍpopÊý¾Ý£¬È¡ListÇø¼ä£¬ÅÅÐòµÈµÈ£¬¶ÔSetÖ§³Ö¸÷ÖÖ¼¯ºÏµÄ²¢¼¯½»¼¯²Ù×÷£¬´ËÍâµ¥¸övalueµÄ×î´óÏÞÖÆÊÇ1GB£¬²»ÏñmemcachedÖ»Äܱ£´æ1MBµÄÊý¾Ý£¬Òò´ËRedis¿ÉÒÔÓÃÀ´ÊµÏֺܶàÓÐÓõŦÄÜ£¬±È·½ËµÓÃËûµÄListÀ´×öFIFOË«ÏòÁ´±í£¬ÊµÏÖÒ»¸öÇáÁ¿¼¶µÄ¸ßÐÔÄÜÏûÏ¢¶ÓÁзþÎñ£¬ÓÃËûµÄSet¿ÉÒÔ×ö¸ßÐÔÄܵÄtagϵͳµÈµÈ¡£ÁíÍâRedisÒ²¿ÉÒÔ¶Ô´æÈëµÄKey-ValueÉèÖÃexpireʱ¼ä£¬Òò´ËÒ²¿ÉÒÔ±»µ±×÷Ò»¸ö¹¦ÄܼÓÇ¿°æµÄmemcachedÀ´Óá£
RedisµÄÖ÷ҪȱµãÊÇÊý¾Ý¿âÈÝÁ¿Êܵ½ÎïÀíÄÚ´æµÄÏÞÖÆ£¬²»ÄÜÓÃ×÷º£Á¿Êý¾ÝµÄ¸ßÐÔÄܶÁд£¬²¢ÇÒËüûÓÐÔÉúµÄ¿ÉÀ©Õ¹»úÖÆ£¬²»¾ßÓÐscale£¨¿ÉÀ©Õ¹£©ÄÜÁ¦£¬ÒªÒÀÀµ¿Í»§¶ËÀ´ÊµÏÖ·Ö²¼Ê½¶Áд£¬Òò´ËRedisÊʺϵij¡¾°Ö÷Òª¾ÖÏÞÔÚ½ÏСÊý¾ÝÁ¿µÄ¸ßÐÔÄܲÙ×÷ºÍÔËËãÉÏ¡£Ä¿Ç°Ê¹ÓÃRedisµÄÍøÕ¾ÓÐgithub£¬EngineYard¡£
2£©MongoDB
MongoDBÊÇÒ»¸ö¿ªÔ´µÄÃæÏòÎĵµµÄNoSQLÊý¾Ý¿âϵͳ£¬Ä¿Ç°ÓÉ10gen¿ª·¢²¢Î¬»¤£¬½éÓÚ¹ØÏµÊý¾Ý¿âºÍ·Ç¹ØÏµÊý¾Ý¿âÖ®¼äµÄ²úÆ·£¬ÊǷǹØÏµÊý¾Ý¿âµ±Öй¦ÄÜ×î·á¸»£¬×îÏñ¹ØÏµÊý¾Ý¿âµÄ¡£ËûÖ§³ÖµÄÊý¾Ý½á¹¹·Ç³£ËÉÉ¢£¬ÊÇÀàËÆjsonµÄbjson¸ñʽ£¬Òò´Ë¿ÉÒÔ´æ´¢±È½Ï¸´ÔÓµÄÊý¾ÝÀàÐÍ¡£
Mongo×î´óµÄÌØµãÊÇËûÖ§³ÖµÄ²éѯÓïÑԷdz£Ç¿´ó£¬ÆäÓï·¨ÓеãÀàËÆÓÚÃæÏò¶ÔÏóµÄ²éѯÓïÑÔ£¬¼¸ºõ¿ÉÒÔʵÏÖÀàËÆ¹ØÏµÊý¾Ý¿âµ¥±í²éѯµÄ¾ø´ó²¿·Ö¹¦ÄÜ£¬¶øÇÒ»¹Ö§³Ö¶ÔÊý¾Ý½¨Á¢Ë÷Òý¡£
MongoÖ÷Òª½â¾öµÄÊǺ£Á¿Êý¾ÝµÄ·ÃÎÊЧÂÊÎÊÌ⣬¸ù¾Ý¹Ù·½µÄÎĵµ£¬µ±Êý¾ÝÁ¿´ïµ½50GBÒÔÉϵÄʱºò£¬MongoµÄÊý¾Ý¿â·ÃÎÊËÙ¶ÈÊÇMySQLµÄ10±¶ÒÔÉÏ¡£MongoµÄ²¢·¢¶ÁдЧÂʲ»ÊÇÌØ±ð³öÉ«£¬¸ù¾Ý¹Ù·½ÌṩµÄÐÔÄܲâÊÔ±íÃ÷£¬´óԼÿÃë¿ÉÒÔ´¦Àí0.5Íò£1.5´Î¶ÁдÇëÇó¡£
ÒòΪMongoÖ÷ÒªÊÇÖ§³Öº£Á¿Êý¾Ý´æ´¢µÄ£¬ËùÒÔMongo»¹×Ô´øÁËÒ»¸ö³öÉ«µÄ·Ö²¼Ê½ÎļþϵͳGridFS£¬¿ÉÒÔÖ§³Öº£Á¿µÄÊý¾Ý´æ´¢¡£
3£©HBASE
HBase–HadoopDatabase£¬ÊÇÒ»¸ö¸ß¿É¿¿ÐÔ¡¢¸ßÐÔÄÜ¡¢ÃæÏòÁС¢¿ÉÉìËõµÄ·Ö²¼Ê½´æ´¢ÏµÍ³£¬ÀûÓÃHBase¼¼Êõ¿ÉÔÚÁ®¼ÛPCServerÉϴÆð´ó¹æÄ£½á¹¹»¯´æ´¢¼¯Èº¡£
ÓëFUJITSUCliqµÈÉÌÓôóÊý¾Ý²úÆ·²»Í¬£¬HBaseÊÇGoogleBigtableµÄ¿ªÔ´ÊµÏÖ£¬ÀàËÆGoogleBigtableÀûÓÃGFS×÷ΪÆäÎļþ´æ´¢ÏµÍ³£¬HBaseÀûÓÃHadoopHDFS×÷ΪÆäÎļþ´æ´¢ÏµÍ³£»GoogleÔËÐÐMapReduceÀ´´¦ÀíBigtableÖеĺ£Á¿Êý¾Ý£¬HBaseͬÑùÀûÓÃHadoopMapReduceÀ´´¦ÀíHBaseÖеĺ£Á¿Êý¾Ý£»GoogleBigtableÀûÓÃChubby×÷ΪÐͬ·þÎñ£¬HBaseÀûÓÃZookeeper×÷Ϊ¶ÔÓ¦¡£