±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜFlink
SQLµÄÉè¼ÆÔÀíÒÔ¼°·ÖÏíÔÚ°¢Àï´ó¹æÄ£Ê¹ÓÃÖÐÊÕ»ñµÄ¾Ñé¡£
±¾ÎÄÀ´×ÔÓÚIT168 £¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
°¢Àï°Í°Í×Ô2015Ä꿪ʼµ÷ÑпªÔ´Á÷¼ÆËãÒýÇæ£¬×îÖÕ¾ö¶¨»ùÓÚFlink´òÔìÐÂÒ»´ú¼ÆËãÒýÇæ£¬Õë¶ÔFlink´æÔڵIJ»×ã½øÐÐÓÅ»¯ºÍ¸Ä½ø£¬²¢½«×îÖÕ´úÂë¹±Ï׸ø¿ªÔ´ÉçÇø¡£Ä¿Ç°ÎªÖ¹£¬ÎÒÃÇÒѾÏòÉçÇø¹±Ï×ÁËÊý°Ù¸öCommiter¡£°¢Àï°Í°Í½«¸ÃÏîÄ¿ÃüÃûΪBlink£¬Ö÷ÒªÓÉBlink
RuntimeÓëFlink SQL×é³É¡£Blink RuntimeÊǰ¢Àï°Í°ÍÄÚ²¿¸ß¶È¶¨ÖÆ»¯µÄ¼ÆËãÄںˣ¬Flink
SQLÔòÊÇÃæÏòÓû§µÄAPI²ã£¬ÎÒÃÇÍêÉÆÁ˲¿·Ö¹¦ÄÜ£¬±ÈÈçAgg¡¢Join¡¢Windows´¦ÀíµÈ¡£½ñÄ꣬ÎÒÃÇÒѾȫ²¿ÅÜͨTPCH
¼°TPC-DSµÄQuery£¬ÊìϤÊý¾Ý¿âµÄÈ˶¼ÖªµÀ£¬Õâ´ú±í×ÅÕû¸öÊý¾Ý¿â»òÒýÇæÊÇÒ»¸ö»ù±¾¹¦ÄÜÍ걸µÄ²úÆ·¡£
½ÓÏÂÀ´Ö÷Òª½éÉÜFlink SQLµÄ»ù±¾¸ÅÄʹÓᣴ«Í³µÄÁ÷ʽ¼ÆËãÒýÇæ£¬±ÈÈçStorm¡¢Spark
Streaming¶¼»áÌṩһЩfunction»òÕßdatastream API£¬Óû§Í¨¹ýJava»òScalaдҵÎñÂß¼£¬ÕâÖÖ·½Ê½ËäÈ»Áé»î£¬µ«ÓÐһЩ²»×㣬±ÈÈç¾ß±¸Ò»¶¨Ãż÷ÇÒµ÷ÓŽÏÄÑ£¬Ëæ×Ű汾µÄ²»¶Ï¸üУ¬APIÒ²³öÏÖÁ˺ܶ಻¼æÈݵĵط½¡£
ÎÒÃÇÒ»Ö±ÔÚ˼¿¼×îÊʺÏÁ÷¼ÆËã´¦ÀíµÄAPI£¬ºÁÎÞÒÉÎÊ£¬SQLÒѾ³ÉΪ´óÊý¾ÝÁìÓòͨÓÃÇÒ³ÉÊìµÄÓïÑÔ£¬Òò´ËÎÒÃǵÄFlinkºÍBlink¾ù»ùÓÚ´Ë£¬Ö®ËùÒÔÑ¡Ôñ½«SQL×÷ΪºËÐÄAPI£¬ÊÇÒòΪÆä¾ßÓм¸¸ö·Ç³£ÖØÒªµÄÌØµã£¬Ò»ÊÇSQLÊôÓÚÉ趨ʽÓïÑÔ£¬Óû§Ö»Òª±í´ïÇå³þÐèÇó¼´¿É£¬²»ÐèÒªÁ˽â¾ßÌå×ö·¨;¶þÊÇSQL¿ÉÓÅ»¯£¬ÄÚÖöàÖÖ²éѯÓÅ»¯Æ÷£¬ÕâЩ²éѯÓÅ»¯Æ÷¿ÉΪSQL·Òë³ö×îÓÅÖ´Ðмƻ®;ÈýÊÇSQLÒ×ÓÚÀí½â£¬²»Í¬ÐÐÒµºÍÁìÓòµÄÈ˶¼¶®;ËÄÊÇSQL·Ç³£Îȶ¨£¬ÔÚÊý¾Ý¿â30¶àÄêµÄÀúÊ·ÖУ¬SQL±¾Éí±ä»¯½ÏÉÙ£¬·Ç³£Îȶ¨¡£µ±ÎÒÃÇÉý¼¶»òÌæ»»ÒýÇæÊ±£¬Óû§ÊÇÎÞ¸ÐÖªµÄÇÒÍêÈ«¼æÈÝ;×îºó£¬SQL¾¹ýÓÅ»¯¿ÉÒÔͳһÁ÷ºÍÅú¡£
¹ýÈ¥£¬ÎÒÃǼÈÐèÒªÅúģʽÅÜÈ«Á¿Êý¾Ý£¬Ò²ÐèÒªÁ÷ģʽʵʱÅÜÔöÁ¿Êý¾Ý£¬Òò´ËÐèҪͬʱά»¤Á½¸öÒýÇæ£¬²¢ÇÒ±£³ÖÁ½·Ý´úÂëÖ®¼äµÄͬ²½¡£Èç¹ûʹÓÃSQL£¬ÎÒÃDZã¿ÉÒÔÒ»·Ý´úÂëͬʱÅÜÔÚÁ½¸öģʽÏ£¬µ«SQLÊÇΪ´«Í³Åú´¦ÀíÉè¼ÆµÄ£¬²¢²»ÄÜΪÁ÷´¦ÀíËùÓá£SQL¶¨ÒåÔÚ±íÉÏ£¬¶ø²»ÊÇÁ÷ÉÏ¡£´«Í³SQL´¦ÀíµÄÊý¾Ý¼¯±È½ÏÓÐÏÞ£¬²éѯһ´ÎÖ»·µ»ØÒ»¸ö½á¹û¡£µ«ÊÇ£¬Á÷´¦ÀíÐèÒª²»¶Ï½ÓÊÕÊý¾Ý£¬²»¶Ï¶Ô½á¹û½øÐиüУ¬²¢ÇÒ²éѯҲ²»»á½áÊø£¬Õâµ¼ÖÂÆäÐèÒª¶ÔÀúÊ·Êý¾Ý²»¶ÏÐÞÕý¡£ËùÒÔ£¬SQLµÄºÜ¶à¸ÅÄîÎÞ·¨Ö±½ÓÓ³Éäµ½Á÷¼ÆË㣬Õâ¾ÍÊÇÔÚÁ÷¼ÆËãÉ϶¨ÒåSQLµÄÄѵ㡣
¡¡
ΪÁËÔÚÁ÷¼ÆËãÉ϶¨ÒåSQL£¬ÎÒÃÇÐèÒªÒýÈ뼸¸ö¸ÅÄî¡£¼ÈÈ»Åú´¦ÀíÐèÒª¶¨ÒåSQL±íµÄ¸ÅÄÄÇÔÚÁ÷¼ÆËãÉÏÒ²ÐèÒª±íµÄ¸ÅÄÎÒÃÇÐèÒª½«´«Í³¾²Ì¬±íÀ©Õ¹³É¶¯Ì¬±í£¬Ëùν¶¯Ì¬±í¾ÍÊÇÊý¾Ý»áËæÊ±¼ä¶ø²»¶Ï±ä»¯µÄ±í¡£´Ëʱ£¬ÎÒÃÇ·¢ÏÖÁ÷ºÍ¶¯Ì¬±íÖ®¼äÓÐÒ»ÖÖ¶ÔżÐÔ£¬Ò²¾ÍÊÇ˵Á÷ºÍ¶¯Ì¬±í¿ÉÒÔÏ໥ת»»¡£½«Á÷µÄÿÌõÊý¾Ý²åÈëµ½Êý¾Ý¿âÖУ¬¾ÍµÃµ½ÁËÒ»Õűí;ͬʱÎÒÃÇ¿ÉÒÔ³éÈ¡¶¯Ì¬±íµÄchangelog»¹ÔÔʼÁ÷¡£

´ÓÁ÷¼ÆËãµ½SQL£¬ÎÒÃÇ¿ÉÒÔ°ÑËü¿´³ÉÊÇÁ¬Ðø²éѯ¡£Á¬Ðø²éÑ¯Çø±ðÓÚ´«Í³µÄÅú´¦Àí²éѯ£¬ÐèÒªÔ´Ô´²»¶ÏµØ½ÓÊÕÊý¾Ý£¬Ã¿ÊÕµ½Ò»ÌõÐÂÊý¾Ý¾Í»á¸üнá¹ûÇÒ½á¹ûÒ²ÊÇÒ»ÕŶ¯Ì¬±í£¬Äǽá¹ûµÄ¶¯Ì¬±íÓÖ¿ÉÒÔ×÷ΪÏÂÒ»¸ö²éѯµÄÊäÈ룬´Ó¶ø´®ÆðÕû¸öÁ÷¼ÆËã¡£
»ùÓÚÉÏÊöÁ½¸ö¸ÅÄÎÒÃÇ¿ÉÒÔÔÚSQLÉ϶¨ÒåÁ÷¼ÆËã¡£µ«ÊÇ£¬Á÷¼ÆËãÖеÄÊý¾ÝÐèÒª²»¶ÏÐÞÕýºÍ¸üУ¬Òò´ËÕâЩÊý¾ÝÏ·¢ºó¿ÉÄܵ¼ÖÂ×îÖÕ½á¹ûµÄ´íÎó£¬ÎÒÃÇÐèÒª°ÑÕâЩ´íÎóÊý¾Ý½øÐÐÐÞÕý£¬Õâ¾ÍÉæ¼°µ½Á÷¼ÆËãÖÐÒ»¸ö·Ç³£ÖØÒªµÄ¸ÅÄ¡ªRetraction¡£

ΪÁ˽âÊʹ˸ÅÄÎÒÃǾÙÒ»¸ö¼òµ¥µÄÀý×Ó£¬ÉÏͼËùʾÓÐÒ»¸öµã»÷ÊäÈëÁ÷£¬Ëü¾ß±¸Á½¸ö×ֶΣºuserºÍurl£¬¾¹ýµÚÒ»¸ö²éѯ¸ù¾ÝÓû§½øÐзÖ×飬ͳ¼ÆÃ¿¸öÓû§µÄµã»÷´ÎÊý;½øÈëµÚ¶þ¸ö²éѯ£¬¸ù¾Ýµã»÷´ÎÊý½øÐзÖ×飬ͳ¼ÆÃ¿¸ö´ÎÊýµÄ¾ßÌåµã»÷ÈËÊý¡£×îÖÕ£¬ÎÒÃÇ»áÊÕµ½Á½Ìõ¼Ç¼£¬µã»÷´ÎÊýËù¶ÔÓ¦µÄÈËÊý¡£´Ó½á¹ûÃ÷ÏÔ¿ÉÒÔ¿´³ö¼ÆËãÓÐÎó£¬MaryµÄÊý¾Ý²¢Ã»Óкϲ¢¼ÆÊý£¬Õâ¾ÍÐèÒªÒýÈëÐÞÕýµÄ¸ÅÄî¡£

ÈçÉÏͼËùʾ£¬¾¹ýÐÞÕýÖ®ºó£¬¾¹ýµÚ¶þ¸ö²éѯʱ£¬MaryµÄ×ܲéѯ´ÎÊý»á±»ºÏ²¢¼ÆË㣬Mary 1µÄ½á¹û»á±»¸æÖª³·»Ø£¬´Ó¶øÊä³öÕýÈ·µÄ½á¹û£¬Õâ¾ÍÊÇÒýÈëRetractionµÄ×÷Óá£ÔÚÕû¸ö¹ý³ÌÖУ¬ÊÇ·ñ´¥·¢RetractionÒÔ¼°·¢ËÍ·½Ê½¾ùÓÉÓÅ»¯Æ÷¾ö¶¨£¬Óû§¶ÔÕû¸ö¹ý³ÌÊÇÎÞ¸ÐÖªµÄ¡£
ÔÚ´Ë»ù´¡ÉÏ£¬ÎÒÃÇ·¢ÏÖÊÀ½ç²»ÐèÒªËùνµÄStream SQLÓï·¨£¬±ê×¼µÄANSI SQL¾Í¿ÉÓÃÀ´¶¨ÒåÁ÷¼ÆË㣬Flink
SQL¾ÍÊDZê×¼µÄANSI SQLÓï·¨¡£Æä²¿·ÖºËÐŦÄÜÈçÏ£ºDDLÓÃÀ´¶¨ÒåÊý¾ÝÔ´±í¡¢Êý¾Ý½á¹¹±í;UDF¡¢UDTF¡¢UDAFÓû§×Ô¶¨Ò庯Êý£¬¿ÉÒÔ¶¨ÖÆ»¯Óû§¸´ÔÓµÄÒµÎñÐèÇó;JOINÊÇÒ»¸ö±È½Ï¸´ÔӵŦÄÜ£¬°üÀ¨Á÷ÓëÁ÷Ö®¼äµÄJoin£¬Á÷Óë±íÖ®¼äµÄJoinÒÔ¼°Windows
JoinµÈ;¾ÛºÏ¹¦ÄܰüÀ¨ÀàËÆGroup AGG£¬Windoes AggÒÔ¼°Over AggµÈ¡£

½ÓÏÂÀ´ÎÒ»á½áºÏʵÀý¶ÔºËÐŦÄܽøÐнéÉÜ¡£Ê×ÏÈÊÇ×°ÔØÊý¾Ý£¬ÐèÒªcreate tableÓï·¨¡£ÈçÉÏͼËùʾ£¬ÎÒÃÇÏȶ¨ÒåÒ»ÕÅclicks±í£¬È»ºó¶¨Òå±íµÄschema¡¢user¡¢cTimeÒÔ¼°url£¬withÀïÊDZíµÄһϵÁÐÊôÐÔ£¬ËüÊÇÒ»¸öÀ´×ÔkafkaµÄÈÕÖ¾±í£¬ÎÒÃÇ¿ÉÒÔÓÃSELECT
* FROM clicks²éÑ¯×ªÔØ±íÀïÃæµÄÊý¾Ý¡£

Èç¹ûÒª½«ÉÏÊö²éѯÊý¾Ýдµ½Ä³¸ö±íÖУ¬ÎÒÃÇÐèÒªÓÃcreate table¶¨Òå½á¹û±í£¬Ó﷨ͬÉÏ£¬´´½¨Ò»ÕÅ
last_clicks ½á¹û±í£¬Ö÷¼üÊÇuser£¬Í¨¹ýINSERT INTO Óï·¨½«ÉÏÊö²éѯÊý¾Ý²åÈëMysql±íÖС£

Èç¹ûÏë°ÑÖм䴦Àí½á¹ûͬʱдÈë¶à¸ö´æ´¢£¬±ÈÈç°ÑÊý¾Ý´¦Àí½á¹ûͬʱдµ½MysqlºÍHBase£¬ÈçÉÏʹÓÃCREATE
VIEW ¶¨ÒåÒ»¸öÀ´×ÔÌÔ±¦µÄµã»÷¼Ç¼£¬Í¬Ê±Á¬ÐøÐ´¶à¸öINSERT INTOµ½MysqlºÍHBase¡£

½ÓÏÂÀ´ÊÇGroup Aggregate£¬Ò²¾ÍÊÇÎÞÏÞÁ÷Á¿¾ÛºÏ¡£ËùνÎÞÏÞÁ÷Á¿¾ÛºÏÖ¸´ÓÀúÊ·¿ªÊ¼µ½ÏÖÔÚµÄËùÓÐÓû§µã»÷Êý¾Ý£¬ÈçÉϲéѯչʾµÄÊǸù¾ÝÓû§·Ö×飬Ȼºóͳ¼Æµã»÷´ÎÊý¡£Èç¹ûÀ´ÁËÒ»ÌõMary1µÄÊý¾Ý£¬ÎÒÃǾÍÏȲåÈë¸ÃÊý¾Ý£¬ºóÐøÈç¹ûMaryÔٴνøÐеã»÷£¬ÎÒÃǾÍÔÚÔÊý¾Ý»ù´¡ÉϽøÐÐÐ޸ĸüУ¬ÒÔ´ËÀàÍÆ¡£

Window AggregateÊǶ¨ÒåÔÚ´°¿ÚÉϵľۺϣ¬ÓбðÓÚÉÏÊöÎÞÏÞÁ÷¾ÛºÏ£¬ËüµÄÔÀíÊÇÊÇÿ¸ö´°¿Ú¶ÔÓ¦Êä³öÒ»¸ö½á¹û£¬±ÈÈçÿСʱÿ¸öÓû§µÄµã»÷´ÎÊý£¬ÐèÒªÔÚgroup
byµÄ½á¹ûÉϼÓÉÏendTÊý¾Ý£¬Ò²¾ÍÊÇ´°¿Ú±êʶ¡£
¡¡¡¡
½ÓÏÂÀ´½éÉÜË«Á÷join£¬Ä¿Ç°ÎÒÃÇÖ§³ÖINNER, LEFT, RIGHT,
FULL, SEMI, ANTIµÈJoinÀàÐÍ£¬¾ÙÀý˵Ã÷Ë«Á÷JoinµÄÖ÷ҪʹÓó¡¾°£¬±ÈÈç°ÑÖ÷Á÷´ò³É¿í±í£¬²¢²¹É϶îÍâ×ֶεȡ£ÈçÉÏͼËùʾ£¬ÎÒÃÇÐèÒª½«¶©µ¥ºÍÎïÁ÷±íÐÅÏ¢½øÐÐJoin²Ù×÷£¬ÔÚJoinµÄÎïÀíʵÏÖÉÏ»áÓÐÁ½·Ý״̬£¬ÓÃÀ´´æ´¢Á½ÌõÁ÷µ½Ä¿Ç°ÎªÖ¹ÊÕµ½µÄËùÓÐÀúÊ·Êý¾Ý,ÌÔÌ»úÖÆÊ±¼äÉ趨ΪһÌì°ëÒ»´Î¡£Á½ÕßÖÐÈκÎÒ»·½ÐÅÏ¢ÑÓ³Ù¶¼»áÏÈÔÚ±íÖеȴý£¬Ö±µ½Í¬Ò»¸ö¶©µ¥µÄÐÅÏ¢ÓëÎïÁ÷¹ØÁªÖ®ºó²Å»áͨ¹ýJoinÊä³ö¡£

ά±íJoinÓëË«Á÷JoinÀàËÆ£¬Ä¿Ç°Ö§³ÖINNER, LEFTÁ½ÖÖ½»Ò×ÀàÐÍ¡£Î¬±íJoinµÄʹÓÃͬÑùΪ²¹È«Ö÷Á÷£¬µ«Ï벹ȫµÄ×Ö¶ÎÔÚÁíһά±íÖС£ÈçÉÏͼËùʾ£¬Ê¹ÓÃʱÊ×ÏÈÐèҪͨ¹ýCREATE
TABLE Óï·¨¶¨ÒåÒ»ÕÅά±í£¬´Ë´¦¶¨ÒåµÄÊÇ Products ±í£¬´æ´¢Óë²úÆ·Ïà¹ØÐÅÏ¢£¬²éѯͬÑùʹÓÃJoinÓï·¨¡£OrderÓëProducts±íͨ¹ýProducts
IDʵÏÖJoin¡£¹Ø¼ü×ÖPERIOD FOR SYSTEM_TIME ÊÇ SQL 2.11±ê×¼ÀïµÄÓï·¨£¬Òâ˼Êǵ±Ç°¹ØÁªµÄProductsÊǵ±Ç°Ê±¿ÌµÄÐÅÏ¢£¬¹ØÁªÖ®ºó²»ÔÙ¸üÐÂÐÅÏ¢¡£ÉÏͼÓÒ²àչʾµÄÊÇά±íJoinÎïÀíÖ´ÐеĸÅÄî¡£ÎÒÃÇ¿ÉÒÔ¸ù¾ÝOrderÈ¥ProductsÊý¾Ý¿âÀï²éѯÐÅÏ¢£¬×îÖÕProductsά±í·µ»Ø¹ØÁªÐÅÏ¢¡£
ºËÐŦÄÜÈçÉÏËùÊö£¬½ÓÏÂÀ´Ö÷ÒªÁÄÓÅ»¯¡£Î¬±íÖУ¬¶©µ¥O1²éѯʱÊǶÂÈûµÈ´ýIOµÄ״̬£¬´ËʱÎÞÂÛÈçºÎµ÷ÓÅÐÔÄÜ£¬ÍÌÍÂÁ¿ºÍCPUʹÓÃÂʶ¼Éϲ»È¥£¬Òò´ËÎÒÃÇÒýÈëÒì²½IO¹¦ÄÜ¡£

ÈçÉÏ×ó°ë²¿·ÖΪδÒýÈëÒì²½IOʱµÄ״̬£¬ÈçÉÏÓҰ벿·ÖΪÒýÈëºó£¬´ËʱÈô·¢ÆðAÇëÇ󣬲»ÐèµÈ´ýIO¾Í¿ÉÁ¢¿Ì·¢ÆðBCD²éѯÇëÇó£¬È»ºóÒì²½µÈ´ý·µ»Ø½á¹û¡£·µ»ØABCDÒÔºóÔÙ¹ÜÀíÊä³ö£¬¼«´óµØÌá¸ßÁËÕûÌåÐÔÄÜ¡£

ÈçÉÏ£¬Òì²½IOʹÓÃʱÓëά±íJoinÖ»ÓÐÒ»ÐÐÅäָ͝£¬¶ÔÓÚÓû§À´Ëµ£¬Õâ¸öʹÓÃÊǷdz£¼ò±ãµÄ¡£

µÚ¶þ¸öÓÅ»¯ÊÇ´óÊý¾ÝÖеij£¼û³¡¾°¡ª¡ªÊý¾ÝÇãб¡£ÈçÉÏΪ¸Ä½øÖ®Ç°£¬ºìÉ«¾ÛºÏ½Úµã³öÏÖÊý¾Ý»ýѹÏÖÏ󣬶ø×ÏÉ«½ÚµãÏà¶Ô½Ï¿Õ¡£

Èç¹û³ÖÐøÒ»¶Îʱ¼ä£¬ºìÉ«¾ÛºÏ½Úµã¾Í»á±»´òÂú£¬´Ó¶ø±äΪÈȵ㣬ËùÓÐÉÏÓÎmap½Úµã¾Í»á·´Ñ¹£¬Í£Ö¹´¦ÀíÊý¾Ý½øÈëµÈ´ý״̬£¬¶øÏÂÓεÄ×ÏÉ«½Úµã»ù±¾´¦ÓÚ¿ÕÏÐ״̬¡£

ÎÒÃÇÒýÈëLocal-Global ¾ÛºÏÓÅ»¯¡£×óͼÊÇδÓÅ»¯ÍØÆËͼ£¬ÓÒ±ßÊÇÒýÈëLocal-GlobalÓÅ»¯ºóµÄͼ£¬ÎÒÃÇÔÚMapºóÒýÈëLocal
Agg½Úµã£¬MapÓëLocal AggÊÇÁ´ÔÚÒ»ÆðµÄÒ»¸öỊ̈߳¬Ö®¼äµÄÊý¾Ý´«ÊäûÓÐÈκÎÍøÂ翪Ïú¡£Local
Agg¿ÉÒÔ½«ÊÕµ½µÄÊý¾Ý°´ÕÕ key½øÐÐÔ¤¾ÛºÏ£¬È»ºó½«½á¹û°´ÕÕ key·Ö·¢¸øÏÂÓÎGlobal Agg½øÐлã×Ü¡£
¼ÙÈçÿ¸öMapµÄ TPS ÊÇÿÃë1ÍòµÄÊý¾ÝÁ¿£¬È«¾Ö¾Í2¸ö key£ººìÉ«ºÍ×ÏÉ«¡£Èç¹û Local
Agg¾ÛºÏµÄ¼ä¸ôÊÇÿÃëÖÓÒ»´Î£¬ÄÇôÿ¸öLocal AggÄܽ«1ÍòÌõÊý¾ÝÔ¤¾ÛºÏ³É×î¶à2Ìõ(È«¾Ö¹²2¸ö
key)¡£ÄÇôGlobal AggÿÃëÖÓ×î¶àÊÕµ½Ö»»áÈýÌõÏûÏ¢£¬ÄÜÓÐЧ½µµÍGlobal Agg µÄÈȵ㡣ÓÅ»¯ºó£¬ÎÒÃǶԴ˽øÐÐÐÔÄܲâÊÔ£¬·¢ÏÖLocal-Global
¿ÉÒÔ´øÀ´³¬¹ý20±¶µÄÐÔÄÜÌáÉý¡£Òò´Ë£¬Õû¸ö·½°¸ÊÇÊ®·ÖÓÐЧµÄ¡£
|