±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚinfoq,±¾ÎÄΪÁ˽â¾ö·Ö²¼Ê½Êý¾Ý¿âÏ£¬¸´ÔÓµÄ
SQL£¨ÈçÈ«¾ÖÐÔµÄÅÅÐò¡¢·Ö×é¡¢join¡¢×Ó²éѯ£¬ÌرðÊǷǾùºâ×ֶεÄÕâЩÂß¼²Ù×÷£©ÄÑÒÔʵÏÖµÄÎÊÌ⣻ |
|
Éè¼ÆË¼Ïë
ΪÁ˽â¾ö·Ö²¼Ê½Êý¾Ý¿âÏ£¬¸´Ô SQL£¨ÈçÈ«¾ÖÐÔµÄÅÅÐò¡¢·Ö×é¡¢join¡¢×Ó²éѯ£¬ÌرðÊǷǾùºâ×ֶεÄÕâЩÂß¼²Ù×÷£©ÄÑÒÔʵÏÖµÄÎÊÌ⣻ÔÚÓÐÁËһЩ·Ö²¼Ê½Êý¾Ý¿âºÍ
Hadoop ʵ¼ÊÓ¦ÓþÑéµÄ»ù´¡ÉÏ£¬¶Ô±ÈÁ½ÕßµÄÓŵãºÍ²»×㣬¼ÓÉÏ×Ô¼ºµÄһЩÌáÁ¶ºÍ˼¿¼, Éè¼ÆÁËÒ»Ì××ÛºÏÁ½ÕßµÄϵͳ£¬ÀûÓÃÁ½ÕßµÄÓŵ㣬
²¹³äÁ½ÕߵIJ»×ã¡£¾ßÌåµÄ˵£¬ ʹÓÃÊý¾Ý¿âˮƽ·Ö¸îµÄ˼ÏëʵÏÖÊý¾Ý´æ´¢£¬Ê¹Óà MapReduceµÄ˼ÏëʵÏÖ
SQL ¼ÆËã¡£
ÕâÀïµÄÊý¾Ý¿âˮƽ·Ö¸îµÄÒâ˼ÊÇÖ»·Ö¿â²»·Ö±í£¬¶ÔÓÚ²»Í¬ÊýÁ¿¼¶±ðµÄ±í£¬·Ö¿âµÄÊýÁ¿¿ÉÒÔ²»Ò»Ñù£¬ÀýÈç 1 ÒÚµÄÊý¾ÝÁ¿·Ö
10 ¸ö·Ö¿â£¬10 ÒÚµÄ·Ö 50 ¸ö·Ö¿â¡£¶ÔÓÚʹÓà MapReduceµÄ˼ÏëʵÏÖ¼ÆËã ; ¶ÔÓÚÒ»¸öÐèÇó£¬×ª»»³ÉÒ»¸ö»ò¶à¸öÓÐÒÀÀµ¹ØÏµµÄSQL£¬ÆäÖеÄÿ¸öSQL·Ö½â³ÉÒ»¸ö»ò¶à¸ö
MapReduceÈÎÎñ£¬Ã¿¸ö MapReduceÈÎÎñÓÖ°üº¬ mapsql¡¢Ï´ÅÆ£¨shuffle£©¡¢reducesql£¬Õâ¸ö¹ý³Ì¿ÉÒÔÀí½âΪÀàËÆ
hive£¬Çø±ðÊÇÁ¬ MapReduceÈÎÎñÖÐµÄ map ºÍ reduce ²Ù×÷Ò²ÊÇͨ¹ý SQL ʵÏÖ,
¶ø·Ç Hadoop ÖÐµÄ map ºÍ reduce ²Ù×÷.
ÕâÊÇ»ù±¾µÄ MapReduceµÄ˼Ï룬µ«ÊÇÔÚ Hadoop µÄÉú̬ȦÖÐ, µÚÒ»´úµÄ MapReduce½«½á¹û´æ´¢ÓÚ´ÅÅÌ£¬µÚ¶þ´úµÄ
MapReduce¸ù¾ÝÄÚ´æÊ¹ÓÃÇé¿ö½«½á¹û´æ´¢ÓÚÄÚ´æ»ò´ÅÅÌ£¬Àà±ÈÒ»ÏÂÓÃÊý¾Ý¿âÀ´´æ´¢£¬ÄÇô MapReduce
µÄ½á¹û¾ÍÊÇ´æ´¢ÔÚ±íÖУ¬¶øÊý¾Ý¿âµÄ»º´æ»úÖÆÌìȻ֧³Ö¸ù¾ÝÄÚ´æÇé¿ö¾ö¶¨´æ´¢ÔÚÄڴ滹ÊÇ´ÅÅÌ ; ÁíÍ⣬Hadoop
Éú̬ȦÖÐ, ¼ÆËãÄ£ÐÍÒ²²¢·ÇÒ»ÖÖ£¬ÕâÀïµÄ MapReduceµÄ¼ÆËã˼Ï룬¿ÉÒÔÓÃÀàËÆ spark µÄ RDD
µü´ú¼ÆË㷽ʽÀ´Ìæ´ú ; ±¾ÏµÍ³»¹ÊÇ»ùÓÚ MapReduceÀ´ËµÃ÷µÄ¡£
¼Ü¹¹
¸ù¾ÝÒÔÉϵÄ˼Ïë, ϵͳµÄ¼Ü¹¹ÈçÏ£º
ûÓдúÀí½Úµã

ÓдúÀí½Úµã

Ä£¿é˵Ã÷
¹ØÓÚϵͳÖеÄÄ£¿é£¬ÓÉÓں;ø´ó²¿·ÖµÄ·Ö²¼Ê½ÏµÍ³ÀàËÆ£¬ÕâÀï½ö×ö¼òҪ˵Ã÷£º

Á½Öּܹ¹µÄÇø±ð
ÎÞ´úÀí½ÚµãµÄʱºò£¬¿Í»§¶Ëµ£¸º×űȽϴóµÄ¹¤×÷£¬°üÀ¨£º·¢ËÍÇëÇó¡¢½âÎö SQL¡¢Éú³ÉÖ´Ðмƻ®¡¢ÉêÇë×ÊÔ´¡¢°²ÅÅÖ´ÐС¢»ñÈ¡½á¹ûµÈ£»ÓдúÀí½ÚµãµÄʱºò£¬´úÀí½Úµãµ£¸º×ŽÓÊÜÇëÇó¡¢½âÎö
SQL¡¢Éú³ÉÖ´Ðмƻ®¡¢ÉêÇë×ÊÔ´¡¢°²ÅÅÖ´ÐС¢·µ»Ø½á¹û¸ø¿Í»§¶ËµÈ´ó²¿·ÖÔðÈΣ¬ÁíÍâ´úÀí½ÚµãÌṩ֧³ÖÍⲿÐÒéµÄ½Ó¿Ú£¬Èç
mysql µÄ c/s ÐÒ飬ʹÓà mysql µÄÃüÁîÐпÉÒÔÖ±½ÓÁ¬½Ó½øÀ´Ö´ÐÐ SQL£¬Õû¸öϵͳ¾ÍÏñÆÕͨµÄ
mysql server Ò»Ñù¡£
Ó¦Óüܹ¹
ʵ¼ÊÓ¦Óû·¾³¿ÉÄÜÊÇÕýʽ»·¾³Ò»Ì×, Õýʽ±¸·Ý»·¾³Ò»Ì×, ÏßÏ»·¾³Ò»Ì×, ¿ÉÒÔ°´ÕÕÈçϵļܹ¹½øÐв¿Êð¡£

»ù±¾¸ÅÄî ˵Ã÷
ÏÂÃæÕë¶Ô¼Ü¹¹ÖеÄһЩ¸ÅÄî×öЩ˵Ã÷

Ôöɾ¸Ä²Ù×÷
µ±²åÈëÊý¾ÝµÄʱºò£¬¸ù¾Ý¾ùºâ×ֶκ;ùºâ²ßÂÔ½«¼Ç¼²åÈëµ½¶ÔÓ¦µÄÊý¾Ý¿â½ÚµãÖС£
µ±¸üÐÂÊý¾ÝµÄʱºò£¬ÐèÒª¸ù¾Ý¾ùºâ²ßÂÔÅжÏÊý¾Ý¸üÐÂǰµÄºÍ¸üкóµÄÊý¾Ý¿â½ÚµãÊÇ·ñ±ä»¯£ºÈç¹ûûÓб仯£¬Ö±½Ó¸üУ»Èç¹ûÓб仯£¬ÔÚ¸üÐÂǰµÄÊý¾Ý¿â½ÚµãÖÐɾ³ýÀÏÊý¾Ý£¬ÔÚ¸üкóµÄÊý¾Ý¿â½ÚµãÖвåÈëÐÂÊý¾Ý¡£
µ±É¾³ýÊý¾ÝµÄʱºò£¬¸ù¾Ý¾ùºâ²ßÂÔÔÚÏàÓ¦µÄÊý¾Ý¿â½ÚµãÖÐɾ³ý¡£
ÕâÈýÖÖ±ä¸üÊý¾ÝµÄ²Ù×÷£¬Ö»ÒªÉæ¼°µ½¶à¸ö½ÚµãµÄÊý¾Ý±ä¸ü£¬¶¼ÐèҪʹÓ÷ֲ¼Ê½ÊÂÎñ±£Ö¤Ò»ÖÂÐÔ¡¢Ô×ÓÐÔµÈÊÂÎñÌØÐÔ¡£
²éѯ²Ù×÷
²éѯ²Ù×÷µÄÔÀíÀàËÆ hive£¬´ó¼Ò¿ÉÒÔ¶Ô±ÈÀ´Àí½â ; ΪÁË·½±ã½âÊͲéѯ²Ù×÷, Ê×ÏÈÀ´ËµÃ÷½×¶ÎÊ÷ºÍ½×¶ÎµÄ½á¹¹£¬ÈçÏÂͼËùʾ£º
½×¶ÎÊ÷

½×¶Î

²éѯ²½Öè
½áºÏÉÏÃæµÄͼ, ²éѯ²Ù×÷µÄ¾ßÌå¹ý³ÌÈçÏÂ:
½«ÊäÈë SQL ¾¹ý´Ê·¨¡¢Óï·¨¡¢ÓïÒå·ÖÎö£¬¼¯ºÏ±í½á¹¹ÐÅÏ¢ºÍÊý¾Ý·Ö²¼ÐÅÏ¢£¬Éú³É°üº¬¶à¸ö½×¶Î£¨¼ò³Æ stage£©µÄÖ´Ðмƻ®£¬ÕâЩ½×¶Î¾ßÓÐÒ»¶¨µÄÒÀÀµ¹ØÏµ£¬ÐγɶàÊäÈëµ¥Êä³öµÄÈÎÎñÊ÷¡£
ÿ¸ö½×¶Î°üÀ¨Á½ÖÖ SQL£¬³ÆÎª mapsql ºÍ reducesql£¬ÁíÍâÿ¸ö½×¶Î°üÀ¨Èý¸ö²Ù×÷£¬map¡¢Êý¾ÝÏ´ÅÆºÍ
reduce£»map ºÍ reduce ·Ö±ðÖ´ÐÐ mapsql ºÍ reducesql¡£
ÏÈÔÚ²»Í¬µÄÊý¾Ý¿â½ÚµãÖÐÖ´ÐÐ map ²Ù×÷£¬map ²Ù×÷Ö´ÐÐ mapsql£¬ËüµÄÊäÈëÊÇÿ¸öÊý¾Ý¿â½ÚµãÉϵıíÄÚ²¿µÄÊý¾Ý£¬Êä³ö¸ù¾Ýij¸ö×ֶΰ´ÕÕÒ»¶¨µÄ¹æÔò½øÐзָ·Åµ½²»Í¬µÄ½á¹û¼¯ÖУ¬½á¹û¼¯×÷ΪÊý¾ÝÏ´ÅÆµÄÊäÈë¡£
È»ºóÖ´ÐÐÊý¾ÝÏ´ÅÆµÄ¹ý³Ì£¬½«²»Í¬½á¹û¼¯¿½±´µ½²»Í¬µÄ½«ÒªÖ´ÐÐ reduce µÄÊý¾Ý¿â½ÚµãÉÏ¡£
ÔÚ²»Í¬µÄÊý¾Ý¿â½ÚµãÖÐÖ´ÐÐ reduce ²Ù×÷£¬reduce ²Ù×÷Ö´ÐÐ reducesql£»
×îºó·µ»Ø½á¹û¡£
Àý×Ó
ÓÉÓÚϵͳºËÐÄÔÚÓÚ´æ´¢ºÍ¼ÆËã, ÏÂÃæ¶Ô´æ´¢ºÍ¼ÆËãÏà¹ØµÄ¸ÅÄî¾ÙÀý˵Ã÷
¾ùºâ²ßÂÔ
¾ÙÀý˵Ã÷¾ùºâ²ßÂÔ£¬»ù±¾ÐÅÏ¢ÈçÏ£º±íÃû×Ö£ºtab_user_login±íÃèÊö£ºÓÃÓÚ´æ´¢Óû§µÇ¼ÐÅÏ¢½ÚµãÊý£º4£¬·ÖΪ
0¡¢1¡¢2¡¢3

¾ÙÀý˵ÏÂÈçϵļ¸ÖÖ²ßÂÔ£º
ÁÐ±í£ºÒԵǼʡ·Ý×÷Ϊ¾ùºâ×Ö¶ÎΪÀý

ȡģ hash£º°´ 4 ȡģ, ÒÔÓû§ id ×÷Ϊ¾ùºâ×Ö¶Î

·¶Î§: ´Ó 0 µ½Ò»ÒÚ£¬ÒÔÓû§ id ×÷Ϊ¾ùºâ×Ö¶Î

ȡģ hash ºÍ·¶Î§½áºÏ£ºÏÈ·¶Î§£¬ÔÙȡģ, ÒÔÓû§ id ×÷Ϊ¾ùºâ×Ö¶Î

²éѯ
¾ÙÀý˵Ã÷²éѯ²Ù×÷£¬»ù±¾ÐÅÏ¢ÈçÏ£º
Óû§±í tab_user_info ÈçÏ£º

Óû§µÇ¼±í tab_login_info µÄ½á¹¹ÈçÏ£º

ÅÅÐò
ÅÅÐòµÄ¹Ø¼üµãÊǽڵãÖ®¼ä´æÔÚ´óС¹ØÏµ£¬´óµÄ key »òÕß key ·¶Î§·Åµ½½Úµã id ´óµÄ½ÚµãÉÏ£¬È»ºóÔÚ½ÚµãÉÏÅÅÐò£¬»ñÈ¡Êý¾ÝµÄʱºò¸ù¾Ý½Úµã
id ´óСÒÀ´Î»ñÈ¡¡£
ÒÔÈçÏ sql ΪÀý£¬Ä³Ò»×¢²áʱ¼ä·¶Î§ÄÚµÄÓû§ÐÅÏ¢£¬°´ÕÕÄêÁäºÍ id ÅÅÐò£º
select * from
tab_user_info t where u_reg_dt> =? and u_reg_dt<=?
order by u_id |
Ö´Ðмƻ®¿ÉÄÜΪ£º
Map£º
select * from
tab_user_info t where u_reg_dt>=? and u_reg_dt<=?
order by u_id |
Shuffle£º
Ö´ÐÐÍê³ÉÖ®ºó£¬ÕâÖÖÇé¿öÏÂÓÉÓÚÐèÒª°´ÕÕ u_id ½øÐÐÊý¾ÝÏ´ÅÆ£¬ËùÒÔ¸÷¸ö´æ´¢½ÚµãÉÏÐèÒª°´ÕÕ u_id
½øÐл®·Ö¡£ÀýÈçÓÐ N ¸ö¼ÆËã½Úµã£¬ÄÇô°´ÕÕ£¨×î´ó u_id- ×îС u_id£©/N ƽ¾ù»®·Ö£¬½«²»Í¬´æ´¢½ÚµãÉϵÄͬһ·¶Î§µÄ
u_id£¬»®·Öµ½Í¬Ò»¸ö¼ÆËã½ÚµãÉϼ´¿É£¨ÕâÀïµÄ¼ÆËã½Úµã´æÔÚ´óС¹ØÏµ£©¡£
Reduce£º
select * from
tab_user_info t order by u_id |
·Ö×é¾ÛºÏ
¹Ø¼üµãºÍÅÅÐòÀàËÆ£¬½ÚµãÖ®¼ä´æÔÚ´óС¹ØÏµ£¬´óµÄ key »òÕß key ·¶Î§·Åµ½½Úµã id ´óµÄ½ÚµãÉÏ£¬È»ºóÔÚ½ÚµãÉÏ·Ö×é¾ÛºÏ£¬»ñÈ¡Êý¾ÝµÄʱºò¸ù¾Ý½Úµã
id ´óСÒÀ´Î»ñÈ¡¡£
ÒÔÈçÏ sql ΪÀý£¬Ä³Ò»×¢²áʱ¼ä·¶Î§ÄÚµÄÓû§£¬°´ÕÕÄêÁä·Ö×飬¼ÆËãÿ¸ö·Ö×éÄÚµÄÓû§Êý£º
select age,count(u_id)
v from tab_user_info t where u_reg_dt>=? and
u_reg_dt<=? group by age |
Ö´Ðмƻ®¿ÉÄÜΪ£º
Map£º
select age,count(u_id)
v from tab_user_info t where u_reg_dt>=? and
u_reg_dt<=? group by age |
Shuffle£º
Ö´ÐÐÍê³ÉÖ®ºó£¬ÕâÖÖÇé¿öÏÂÓÉÓÚÐèÒª°´ÕÕ age ½øÐÐÊý¾ÝÏ´ÅÆ£¬¿¼Âǵ½ age µÄΨһֵ±È½ÏÉÙ£¬ËùÒÔÊý¾ÝÏ´ÅÆ¿ÉÒÔ½«ËùÓеļǼ¿½±´µ½Í¬Ò»¸ö¼ÆËã½ÚµãÉÏ¡£
Reduce£º
select age,sum(v)
from t where group by age |
Á¬½Ó
Ê×ÏÈÃ÷È· join µÄ×Ö¶ÎÀàÐÍΪÊý×ÖÀàÐͺÍ×Ö·û´®ÀàÐÍ£¬ÆäËûÀàÐÍÈçÈÕÆÚ¿ÉÒÔת»»ÎªÕâÁ½ÖÖ¡£Êý×ÖÀàÐ͵ÄÅÅÐòºÜ¼òµ¥£¬×Ö·û´®ÀàÐ͵ÄÊý¾ÝÅÅÐòÐèҪȷ¶¨¹æÔò£¬ÀàËÆ
mysql ÖÐµÄ collation£¬±È½Ï³£ÓõÄÊǰ´ÕÕ unicode ±àÂë˳Ðò£¬°´ÕÕʵ¼Ê´æ´¢½ÚµãµÄ´óСµÈ£»Æä´Î
join µÄ·½Ê½ÓеÈÖµ join ºÍ·ÇµÈÖµ join£»ÒÔÈçϳ£ÓÃÇұȽϼòµ¥µÄÇé¿öΪÀý¡£
ÒÔÈçÏ sql ΪÀý£¬Ä³Ò»×¢²áʱ¼ä·¶Î§ÄÚµÄÓû§µÄËùÓеǼÐÅÏ¢£º
select t1.u_id,t1.u_name,t2.login_product
from tab_user_info t1 join tab_login_info t2
on (t1.u_id=t2.u_id and t1.u_reg_dt>=? and
t1.u_reg_dt<=?) |
Ö´Ðмƻ®¿ÉÄÜΪ£º
Map£º
ÓÉÓÚÊÇ join£¬ËùÓÐµÄ±í¶¼Òª½øÐвéѯ²Ù×÷£¬²¢ÇÒΪÿÕűí´òÉÏ×Ô¼ºµÄ±êÇ©£¬¾ßÌåʵʩµÄʱºò¿ÉÒÔ¼Ó¸ö±íÃû×Ö×ֶΣ¬ÔÚËùÓд洢½ÚµãÉÏÖ´ÐÐ
select u_id,u_name
from tab_user_info t where u_reg_dt>=? and
t1.u_reg_dt<=?
select u_id, login_product from tab_login_info
t |
Shuffle£ºÕâÖÖÇé¿öÏÂÓÉÓÚÐèÒª°´ÕÕ u_id ½øÐÐÊý¾ÝÏ´ÅÆ£¬¿¼Âǵ½ u_id µÄΨһֵ±È½Ï¶à£¬ËùÒÔ¸÷¸ö´æ´¢½ÚµãÉÏÐèÒª°´ÕÕ
u_id ½øÐл®·Ö£¬ÀýÈçÓÐ N ¸ö¼ÆËã½Úµã£¬ÄÇô°´ÕÕ£¨×î´ó u_id- ×îС u_id£©/N ƽ¾ù»®·Ö£¬½«²»Í¬´æ´¢½ÚµãÉϵÄͬһ·¶Î§µÄ
u_id£¬»®·Öµ½Í¬Ò»¸ö¼ÆËã½ÚµãÉÏ¡£
Reduce£º
select t1.u_id,t1.u_name,t2.login_product
from tab_user_info t1 join tab_login_info t2
on (t1.u_id=t2.u_id) |
×Ó²éѯ
ÓÉÓÚ×Ó²éѯ¿ÉÒÔ·Ö½â³É¾ßÓÐÒÀÀµ¹ØÏµµÄ²»°üº¬×Ó²éѯµÄ SQL£¬ËùÒÔÉú³ÉµÄÖ´Ðмƻ®£¬¾ÍÊǶà¸ö SQL µÄÖ´Ðмƻ®°´ÕÕÒ»¶¨µÄÒÀÀµ¹ØÏµ½øÐÐÒÀ´ÎÖ´ÐС£
ÓëÒÑÓÐϵͳµÄÇø±ðºÍÓŵã
Ïà±È hdfs À´Ëµ£¬Êý¾ÝµÄ·Ö²¼ÊÇÓйæÔòµÄ£¬hdfs ÐèÒªÆô¶¯Ö®ºóÖ´ÐÐÃüÁîÈ¥²éѯÎļþ¾ßÌåÔÚʲô½ÚµãÉÏ£»ÔªÊý¾ÝµÄ½ÏС£¬¼Ç¼¹æÔò¼´¿É£¬¹ÜÀí³É±¾½ÏµÍ£¬ÔÚÆô¶¯ËÙ¶È·½ÃæºÜ¿ì¡£
Êý¾ÝÊÇ·ÅÔÚÊý¾Ý¿âÖеģ¬¿ÉÒԺܺõÄʹÓÃË÷ÒýºÍÊý¾Ý¿â±¾ÉíµÄ»º´æ»úÖÆ£¬´ó´óÌá¸ßÊý¾Ý²éѯµÄЧÂÊ£¬ÌرðÊÇÔÚ´óÁ¿Êý¾ÝµÄÇé¿öÏ£¬ÀûÓÃË÷Òý²éѯ·µ»ØÉÙÁ¿µÄÊý¾Ý¡£
Êý¾Ý¿ÉÒÔ½øÐÐɾ³ýºÍÐ޸ģ¬ÕâÔÚ»ùÓÚ hdfs µÄϵͳÖÐÒ»°ã±È½ÏÂé·³ºÍµÍЧ¡£
ÔÚ¼ÆËã·½Ãæ£¬ºÍ MapReduce »òÕ߯äËûµÄ·Ö²¼Ê½¼ÆËã¿ò¼Ü£¨Èç spark£©²¢Ã»Óб¾ÖʵÄÇø±ð£¨ÐèÒª½øÐÐ
shuffle£©¡£µ«ÊÇÓÉÓÚÊý¾ÝµÄ·Ö²¼ÊÇÓйæÔòµÄ£¬ÔÚÓÐЩµØ·½¿ÉÒÔ×öµÄ¸üºÃ£¬ÔÚ·Ö²¼Ê½È«ÎÄË÷ÒýÌåÏÖ¡£
ÓÉÓÚÏßÉÏϵͳһ°ãʹÓÃÊý¾Ý¿â×÷Ϊ×îÖյĴ洢λÖ㬶ø°ÑÊý¾Ý¿âͬ²½µ½ hdfs ÖÐÊDZȽÏÂé·³µÄ£¬²¢ÇÒ¶ÔÓÚÓÐɾ³ýºÍ¸üеÄÇé¿ö£¬Í¬²½Êý¾ÝÂé·³µÍЧ£¬ËٶȽÏÂý£»Ïà±È֮ϣ¬Õâ¸ö·½°¸¿ÉÒÔʹÓÃÊý¾Ý¿â±¾ÉíÌṩµÄ¾µÏñ¸´Öƹ¦ÄÜÀ´Í¬²½£¬»ù±¾Ã»ÓжîÍâµÄÂé·³ºÍµÍЧµÄ¹¤×÷¡£
»ùÓÚÒÔÉÏ£¬¿ÉÒÔ°ÑÏßÉÏϵͳ£¨Ö÷ϵͳ£©ºÍÏßϵÄÊý¾Ý·ÖÎöÍÚ¾ò£¨´Óϵͳ£©×ö³ÉͳһµÄ·½°¸, ²Î¼ûÓ¦Óüܹ¹Í¼¡£
Ó¦Óó¡¾°
×îºóÁоÙһЩӦÓó¡¾°

|