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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
»ùÓÚLambda¼Ü¹¹µÄ¹ÉƱÊг¡Ê¼þ´¦ÀíÒýÇæÊµ¼ù
 
×÷ÕߣºµË²ý¸¦
  1517  次浏览      27
2020-2-14
 
±à¼­ÍƼö:
±¾ÎĽéÉÜÁËCEPÒýÇæÒýÇæµÄ¼Ü¹¹²¢·ÖÏíÁËһЩ¹ÉƱҵÎñ½ÏΪÓÐȤµÄÓ¦Óó¡¾°¡£Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔCSDN£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

CEP£¨Complex Event Processing£©ÊÇ֤ȯÐÐÒµºÜ¶àÒµÎñÓ¦ÓõÄÖØÒªÖ§³Å¼¼Êõ¡£CEPµÄ¸ÅÄî±¾Éí²¢²»ÐÂÏÊ£¬Ïà¹Ø¼¼ÊõÒѾ­±»ÔËÓó¬¹ý15ÄêÒÔÉÏ£¬µ«ÊÇ֤ȯ½ç¿Ï¶¨ÊÇÔËÓÃCEP¼¼Êõ×îΪ³ä·Ö¡¢×îÎªÇ°ÑØµÄÐÐÒµÖ®Ò»£¬´ÓËã·¨½»Ò×£¨algorithmic trading£©¡¢·çÏÕ¹ÜÀí£¨risk management£©¡¢¹Ø¼üʱ¿Ì¹ÜÀí£¨Moment of Truth - MOT£©¡¢Î¯ÍÐÓëÁ÷¶¯ÐÔ·ÖÎö£¨order and liquidity analysis£©µ½Á¿»¯½»Ò×£¨quantitative trading£©ÄËÖÁÏòͶ×ÊÕßÍÆËÍͶ×ÊÐźţ¨signal generation£©µÈµÈ£¬²»Ò»¶ø×ã¡£

CEP¼¼Êõͨ³£ÓëTime-series Database£¨Ê±ÐòÊý¾Ý¿â£©½áºÏ£¬×îÀíÏëµÄ½â¾ö·½°¸ÊÇCEP¼¼Êõƽ̨ÏòÓ¦ÓÃÌṩһ¸öÀúÊ·ÐòÁУ¨historical time-series£©ÓëʵʱÐòÁУ¨real-time series£©ÎÞ²îÒìÈںϵÄÊý¾ÝÁ÷Á¬ÐøÌ壨continuum£©- ¶ÔÓÚ֤ȯÀàÓ¦ÓöøÑÔ£¬×òÌì¡¢ÉÏÖÜ¡¢ÉϸöÔµÄÊý¾Ý²»¹ýÊǵ±Ï´˿ÌÊý¾ÝµÄÑÓÐø£¬¶ø´¦ÀíË㷨ȴÊÇÎÞ±ß¼ÊµÄ ¨C Ö»Òª¿ª·¢ÕßÄܹ¹Ïë³ö³¡¾°ÓëÄ£ÐÍ¡£

¹ã·¢Ö¤È¯µÄITÑз¢ÍŶӣ¬Ò»Ö±¹Ø×¢Storm¡¢Spark¡¢FlinkµÈÁ÷ʽ¼ÆËãµÄ¿ªÔ´¼¼Êõ£¬Ò²¾­ÀúÁË´«Í³Lambda¼Ü¹¹µÄ¼¼ÊõÑݽø£¬ÔÚKappa¼Ü¹¹µÄ¼¼ÊõÉÐδ³ÉÊìÖ®¼Ê£¬ÍŶÓÕë¶Ô֤ȯÐÐÒµµÄ¼¼ÊõÏÖ×´ÓëÌØµã£¬²ÉÓøÄÁ¼µÄLambda¼Ü¹¹ÊµÏÖÁËÒ»¸öCEPÒýÇæ£¬±¾ÎĽéÉÜÁË´ËÒýÇæµÄ¼Ü¹¹²¢·ÖÏíÁËһЩ¹ÉƱҵÎñ½ÏΪÓÐȤµÄÓ¦Óó¡¾°£¬ÒÔ÷ÏͬºÃ¡£

Ëæ×ÅÒÆ¶¯»¥ÁªºÍÎïÁªÍøµÄµ½À´£¬´óÊý¾ÝÓ­À´Á˸ßËÙºÍÅ·¢Õ¹Ê±ÆÚ¡£Ò»·½Ãæ£¬ÒÆ¶¯»¥ÁªºÍÎïÁªÍø²úÉúµÄ´óÁ¿Êý¾ÝΪÔÐÓý´óÊý¾Ý¼¼ÊõÌṩÁË·ÊÎÖµÄÍÁÈÀ£»Ò»·½Ã棬¸÷¸ö¹«Ë¾ÎªÁËÓ¦¶Ô´óÊý¾ÝÁ¿µÄÌôÕ½£¬Ò²¼±ÇеÄÐèÒª´óÊý¾Ý¼¼Êõ½â¾öÉú²úʵ¼ùÖеÄÎÊÌâ¡£¶Ìʱ¼äÄÚ¸÷ÖÖ¼¼Êõ²ã³ö²»ÇÔÚÕâ¸ö¹ý³ÌÖÐHadoopÍÑÓ±¶ø³ö£¬²¢ÓªÔìÁËÒ»¸ö·á¸»µÄÉú̬Ȧ¡£ËäÈ»´óÊý¾ÝÒ»ÌáÆðHadoop£¬ºÃÏñÓеãÀÏÉú³£Ì¸£¬ÉõÖÁ¾õµÃÕâ¸ö¼¼ÊõÒѾ­¹ýʱÁË£¬µ«ÊDz»ÄÜ·ñÈϵÄÊÇHadoopµÄ³öÏÖȷʵÓзǷ²µÄÒâÒå¡£²»¹ÜÊÇËü·Ö²¼Ê½´¦ÀíÊý¾ÝµÄÀíÄ»¹ÊǸ߿ÉÓá¢ÈÝ´íµÄ´¦Àí¶¼ÖµµÃºÃºÃ½è¼øºÍѧϰ¡£

¸Õ¿ªÊ¼£¬´ó¼Ò¿ÉÄܶ¼±»¸÷ÖÖ·Ö²¼Ê½¼¼Êõ¡¢Ë¼ÏëËùÎüÒý£¬Ò»Í·ÔÔ½øÈ¥£¬µô½øÁ˼¼ÊõµÄäöÎУ¬²»ÄÜ×԰Ρ£Ò»·½Ãæ´óÊý¾Ý´¦Àí¼¼ÊõºÍϵͳȷʵ¸´ÔÓ¡¢·±Ëö£»ÁíÒ»·½Ãæ´óÊý¾ÝÉú̬²»¶ÏµÄÍÆ³Â³öУ¬Ð¼¼ÊõºÍÐÂÀíÄî²ã³ö²»ÇȷʵÈÃÈËÄ¿²»Ï¾½Ó¡£Èç¹ûÏëÒª°ÑÉú̬ȦÖи÷¸ö×é¼þÍæ¾«Í¨È·Êµ²»ÊǼþÈÝÒ×µÄÊÂÇé¡£±¾ÈËÒ»¿ªÊ¼Ò²ÊÇÉîÏÝÆäÖУ¬ð©Ê×Çî¾­²»ÄÜ×԰Ρ£µ«ÌÚ³öʱ¼ä£¬ÕûÀíÐÄÐ÷£¬»ØÍ··´¹Ë£¬Í»È»ÓÐÖÖÊÍȻ֮¸Ð¡£´óÊý¾Ý²¢Ã»Óдó¼ÒÏëÏóµÄÄÇôÉñÃØÄª²âÓ븴ÔÓ£¬´Ó¼¼Êõ½Ç¶È¿´ÎÞ·ÇÊǽâ¾ö´óÊý¾ÝÁ¿µÄ²É¼¯¡¢¼ÆË㡢չʾµÄÎÊÌâ¡£

Òò´Ë±¾ÎIJο¼Lambda/Kappa¼Ü¹¹ÀíÄÌá³öÁËÒ»ÖÖÓÐÐÐÒµÕë¶ÔÐÔµÄʵÏÖ·½·¨¡£¾¡Á¿ÈÃϵͳ²ãÃæ¸ü¼òµ¥£¬¼¼Êõ¸üͬ¹¹£¬³õÖÔÔÚÈôó¼Ò¾Û½¹ÔÚ´óÊý¾ÝÒµÎñÓ¦ÓÃÉÏÀ´£¬´Ó¶øÕæÕýÈôóÊý¾Ý·¢»ÓËüÓ¦ÓеļÛÖµ¡£

1¡¢ ±³¾°

Lambda¼Ü¹¹ÊÇÓÉStormµÄ×÷ÕßNathan Marz ÔÚBackTypeºÍTwitter¶àÄê½øÐзֲ¼Ê½´óÊý¾ÝϵͳµÄ¾­Ñé×ܽáÌáÁ¶¶ø³É£¬ÓÃÊýѧ±í´ïʽ¿ÉÒÔ±íʾÈçÏ£º

batch view = function(all data)

realtime view = function(realtime view,new data)

query = function(batch view .realtime view)

Âß¼­¼Ü¹¹Í¼ÈçÏ£º

´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Lambda¼Ü¹¹Ö÷Òª·ÖΪÈý²ã£ºÅú´¦Àí²ã£¬¼ÓËÙ²ãºÍ·þÎñ²ã¡£ËüÕûºÏÁËÀëÏß¼ÆËãºÍʵʱ¼ÆË㣬ÈÚºÏÁ˲»¿É±äÐÔ£¨immutable£©£¬¶Áд·ÖÀëºÍ¸´ÔÓÐÔ¸ôÀëµÈһϵÁмܹ¹Ô­ÔòÉè¼Æ¶ø³É£¬ÊÇÒ»¸öÂú×ã´óÊý¾Ýϵͳ¹Ø¼üÌØÐԵļܹ¹¡£Nathan MarzÈÏΪ´óÊý¾ÝϵͳӦ¸Ã¾ßÓÐÒÔϰ˸öÌØÐÔ£¬Lambda¶¼¾ß±¸ËüÃÇ·Ö±ðÊÇ£º

Robustness and fault tolerance£¨Â³°ôÐÔºÍÈÝ´íÐÔ£©

Low latency reads and updates£¨¶ÁºÍ¸üеÍÑÓʱ£©

Scalability£¨¿ÉÉìËõ£©

Generalization£¨Í¨ÓÃÐÔ£©

Extensibility£¨¿ÉÀ©Õ¹£©

Ad hoc queries£¨¿É¼´Ï¯²éѯ£©

Minimal maintenance£¨Ò×ÔËά£©

Debuggability£¨¿Éµ÷ÊÔ£©

ÓÉÓÚLambda¼Ü¹¹µÄÊý¾ÝÊDz»¿É±äµÄ£¨immutable£©£¬Òò´Ë´øÀ´µÄºÃ´¦Ò²ÊÇÏÔ¶øÒ×¼ûµÄ£º

Human-fault tolerance£¨¶ÔÈËΪµÄÈÝ´íÐÔ£©£ºÊý¾ÝÁ÷Ë®±»°´Ê±Ðò¼Ç¼ÏÂÀ´£¬¶øÇÒÊý¾Ýֻдһ´Î£¬²»×ö¸ü¸Ä£¬¶ø²»ÏñRDBMSÖ»ÊDZ£Áô×îºóµÄ״̬¡£Òò´Ë²»»á¶ªÊ§Êý¾ÝÐÅÏ¢¡£¼´Ê¹Æ½Ì¨Éý¼¶»òÕß¼ÆËã³ÌÐòÖв»Ð¡ÐijöÏÖBug£¬ÐÞ¸´BugºóÖØÐ¼ÆËã¾ÍºÃ¡£Ç¿µ÷ÁËÊý¾ÝµÄÖØÐ¼ÆËãÎÊÌ⣬Õâ¸öÌØÐÔ¶ÔÒ»¸öÉú²úµÄÊý¾Ýƽ̨À´ËµÊÇÊ®·ÖÖØÒªµÄ¡£

Simplicity£¨¼òÒ×ÐÔ£©£º¿É±äµÄÊý¾ÝÄ£ÐÍÒ»°ãÒªÇóÊý¾ÝÄܱØÐë±»Ë÷Òý£¬ÒÔ±ãÓÚÊý¾Ý¿É±»Ôٴα»¼ìË÷µ½ºÍ¿ÉÒÔ±»¸üС£µ«ÊDz»±äµÄÊý¾ÝÄ£ÐÍÏà¶ÔÀ´Ëµ¾ÍºÜ¼òµ¥ÁË£¬Ö»ÊÇһζµÄ×·¼ÓÐÂÊý¾Ý¼´¿É¡£´ó´ó¼ò»¯ÁËϵͳµÄ¸´ÔÓ¶È¡£

µ«ÊÇLambdaÒ²ÓÐ×ÔÉíµÄ¾ÖÏÞÐÔ£¬¾Ù¸öÀý×Ó£ºÔÚ´óÊý¾ÝÁ¿µÄÇé¿öÏ£¬Òª¼´Ï¯²éѯ¹ýÈ¥24Сʱij¸öÍøÕ¾µÄpvÊý¡£¸ù¾ÝÇ°ÃæµÄÊýѧ±í´ïʽ£¬Lambda¼Ü¹¹ÐèҪʵÏÖÈý²¿·Ö³ÌÐò£¬Ò»²¿·Ö³ÌÐòÊÇÅú´¦Àí³ÌÐò£¬±ÈÈç¿ÉÄÜÓÃHive»òÕßMapReduceÅúÁ¿¼ÆËã×î½ü23.5¸öСʱpvÊý£¬Ò»²¿·Ö³ÌÐòÊÇStorm»òSpark StreamingÁ÷ʽ¼ÆËã³ÌÐò£¬¼ÆËã0.5¸öСʱÄÚµÄpvÊý£¬È»ºó»¹ÐèÒªÒ»¸ö·þÎñ³ÌÐò½«ÕâÁ½²¿·Ö½á¹û½øÐкϲ¢£¬·µ»Ø×îÖÕ½á¹û¡£Òò´ËLambda¼Ü¹¹°üº¬¹ÌÓеĿª·¢ºÍÔËάµÄ¸´ÔÓÐÔ¡£

ÒòΪÒÔÉϵÄȱÏÝ£¬LinkedinµÄJay KrepsÔÚ2014Äê7ÔÂ2ÈÕÔÚO¡¯reilly¡¶Questioning the Lambda Architecture¡·Ìá³öÁËKappa¼Ü¹¹£¬ÈçÏÂͼ£º

KappaÔÚLambda×öµÄ×î´óµÄ¸Ä½øÊÇÓÃͬһÌ×ʵʱ¼ÆËã¿ò¼Ü´úÌæÁËLambdaµÄÅú´¦Àí²ã£¬ÕâÑù×öµÄºÃ´¦ÊÇÒ»Ì×´úÂë»òÕßÒ»Ì×¼¼ÊõÕ»¿ÉÒÔ½â¾öÒ»¸öÎÊÌâ¡£ËüµÄ×ö·¨ÊÇÕâÑùµÄ£º

ÓÃKafka×ö³Ö¾Ã²ã£¬¸ù¾ÝÐèÇóÐèÒª£¬ÓÃKafka±£ÁôÐèÒªÖØÐ¼ÆËãµÄÀúÊ·Êý¾Ý³¤¶È£¬±ÈÈç¼ÆËãµÄʱºò¿ÉÄÜÓÃ30ÌìµÄÊý¾Ý£¬ÄǾÍÅäÖÃKafkaµÄÖµ£¬ÈÃËü±£Áô×î½ü30ÌìµÄÊý¾Ý¡£

µ±Äã³ÌÐòÒòΪÉý¼¶»òÕßÐÞ¸´ÁËȱÏÝ£¬ÐèÒªÖØÐ¼ÆËãµÄʱºò£¬¾ÍÔÙÆôÒ»¸öÁ÷ʽ¼ÆËã³ÌÐò£¬´ÓÄãËùÐèµÄOffset¿ªÊ¼¼ÆË㣬²¢½«½á¹ûÊäÈëµ½Ò»¸öеıíÀï¡£

µ±Õâ¸öÁ÷ʽ¼ÆËã³ÌÐò׷ƽµÚÒ»¸ö³ÌÐòµÄʱºò£¬½«Ó¦ÓÃÇл»µ½µÚ¶þ¸ö³ÌÐòµÄÊä³öÉÏ¡£

Í£Ö¹µÚÒ»¸ö³ÌÐò£¬É¾³ýµÚÒ»¸ö³ÌÐòµÄÊä³ö½á¹û±í¡£

ÕâÑùÏ൱ÓÚÓÃͬһÌ×¼ÆËã¿ò¼ÜºÍ´úÂë½â¾öÁËLambda¼Ü¹¹Öпª·¢ºÍÔËά±È½Ï¸´ÔÓµÄÎÊÌâ¡£µ±È»Èç¹ûÊý¾ÝÁ¿ºÜ´óµÄÇé¿öÏ£¬¿ÉÒÔÔö¼ÓÁ÷ʽ¼ÆËã³ÌÐòµÄ²¢·¢¶ÈÀ´½â¾öËٶȵÄÎÊÌâ¡£

2¡¢ ¹ã·¢Ö¤È¯Lambda¼Ü¹¹µÄʵÏÖ

ÓÉÓÚ½ðÈÚÐÐÒµÔÚÒµÎñÉÏÊÜÏÞÓÚT+1½»Ò×£¬ÔÚ¼¼ÊõÉÏÑÏÖØÒÀÀµ¹ØÏµÐÍÊý¾Ý¿â£¨ÌرðÊÇOracle£©¡£Ôںܶೡ¾°Ï£¬Êý¾Ý²¢²»ÊÇÒÔÁ÷µÄÐÎʽ´æÔڵ쬶øÇÒÊý¾ÝµÄ¸üÐÂÆµÂÊÒ²²¢²»ÊǺÜʵʱ¡£±ÈÈçΪÁË×ö¼¼ÊõÃæ·ÖÎöµÄÐÐÇéÊý¾Ý£¬´ó¶àÊýÖ»ÊÇʹÓÃÊÕÅ̼ۺÍÀúÊ·ÊÕÅ̼ۣ¨¿ìÕÕÊý¾Ý£©×÷ΪÊäÈ룬À´¼ÆËã¸÷ÀàÖ¸±ê£¬²úÉúÂòÂôµãÐźš£

Òò´ËÕâÊÇÒ»¸öµäÐ͵ÄÅú´¦ÀíµÄ³¡¾°¡£ÁíÒ»·½Ã棬±ÈÈçÁ¿»¯½»Ò׳¡¾°£¬ºÜ¶àʵʱµÄÐźÅÓÖÊÇÉÔ×ݼ´ÊÅ£¬Ö»Óй»ÊµÊ±²Å´æÔÚÌ×ÀûµÄ¿Õ¼ä£¬¶øÇһزâºÍʵÅÌÄ£ÄâÓÖÊǵäÐ͵ÄÁ÷´¦Àí¡£¼øÓÚÒÔÉϽðÈÚÐÐÒµÌØÓеij¡¾°£¬ÎÒÃÇʵÏÖÁËÎÒÃÇ×Ô¼ºµÄ¼Ü¹¹£¨GF-Lambda£©£¬Ëü½éÓÚLambdaºÍKappaÖ®¼ä¡£Ò»·½ÃæÄܹ»Âú×ãÎÒÃÇ´¦ÀíÊý¾ÝµÄÐèÇó£»Ò»·½ÃæÓÖ¿ÉÒÔ´ïµ½¼¼ÊõÉϵÄͬ¹¹£¬¼õÉÙ¿ª·¢ÔËά³É±¾¡£¸ù¾Ý¶ÔÊý¾ÝʵʱÐÔÒªÇ󣬽«Õû¸ö¼ÆË㲿·Ö·ÖΪÈýÀࣺ

Spark SQL£º´úÌæMapReduce»òÕßHiveµÄ¹¦ÄÜ£¬ÊµÏÖÊý¾ÝµÄÅúÁ¿Ô¤´¦Àí£»

Spark Streaming£º½üʵʱ¸ßÍÌ͵Ämini batchingÊý¾Ý´¦Àí¹¦ÄÜ£»

Storm£ºÍê³ÉʵʱµÄÁ÷ʽÊý¾Ý´¦Àí£»

GF-LambdaµÄÓÅÊÆÈçÏ£º

ÔÚPipeLineµÄÇý¶¯·½Ã棬²ÉÓÃAirbnb¿ªÔ´µÄAirflow£¬AirflowʹÓýű¾ÓïÑÔÀ´ÊµÏÖÕû¸öPipeLineµÄ¶¨Ò壬¶øÇÒÈÎÎñʵÀýÒ²ÊǶ¯Ì¬Éú³ÉµÄ£»Ïà±ÈOozieºÍAzkaban²ÉÓñê¼ÇÓïÑÔÀ´Íê³ÉPipeLineµÄ¶¨Ò壬AirflowµÄÓÅÊÆÊÇÏÔ¶øÒ×¼ûµÄ£¬ÀýÈ磺

Õû¸ödata flow²ÉÓýű¾±àд£¬±ãÓÚÅäÖùÜÀíºÍÉý¼¶¡£¶øOozieÖ»ÄÜʹÓÃXML¶¨Ò壬Éý¼¶Ç¨ÒƳɱ¾½Ï´ó¡£

´¥·¢·½Ê½Áé»î£¬Õû¸öPipeLine¿ÉÒÔ¶¯Ì¬Éú³É£¬ÇÐʵµÄ×öµ½ÁË¡°analytics as a service¡±»òÕß ¡°analysis automation¡±¡£

ÁíÍâÒ»¸öÓëLambda»òÕßKappa×î´óµÄ²»Í¬Ö®´¦ÊÇÎÒÃDzÉÓÃÁËRedis×÷Ϊ»º´æÀ´´æ´¢¸÷¸ö¼ÆËã·þÎñµÄ״̬£»ËäÈ»SparkºÍStorm¶¼ÓÐCheckpoint»úÖÆ£¬µ«ÊÇCheckPoint»áÓ°Ïìµ½³ÌÐò¸´ÔӶȺÍÐÔÄÜ£¬²¢ÇÒÒÔÉÏÁ½ÖÖ¼¼ÊõµÄCheckPoint»úÖÆ²¢²»ÊǺÜÍêÉÆ¡£Í¨¹ýRedisºÍKafkaµÄOffset»úÖÆ£¬²»½ö¿ÉÒÔ×öµ½ÎÞ״̬µÄ¼ÆËã·þÎñ£¬¶øÇÒ¼´Ê¹Éý¼¶»òÕßϵͳ¹ÊÕÏ£¬Êý¾ÝµÄ¿ÉÓÃÐÔÒ²²»»áÊܵ½Ó°Ïì¡£

Õû¸öbatch layer²ÉÓÃSpark SQL£¬Ê¹ÓÃSpark SQLµÄºÃ´¦ÊÇÄÜ×öµ½Ãܼ¯¼ÆËãµÄºóÒÆ¡£ÓÉÓÚÀúÊ·Ô­Òò£¬È¯ÉÌOracleµÈ¹ØÏµÐÍÊý¾Ý¿âʹÓñȽ϶࣬¶øÇÒÔÚ¿ªÊÐÆÚ¼äÊý¾Ý¿âѹÁ¦Ò²±È½Ï´ó£¬´Ë´¦µÄSpark SQLÖ»ÊDz»¶ÏµÄ´ÓOracleÅúÁ¿¼ÓÔØÊý¾Ý£¨³ýÁËFilter»ù±¾ÔÚOracleÉÏ×öÈκμÆË㣩»òÕßÖ÷¶¯µÄͨ¹ýOracleÈÕÖ¾ÅÔ¼Êý¾Ý£¬¶ÔÊý¾Ý¿âѹÁ¦½ÏС£¬Í¬Ê±ÓÖÄÜ´ïµ½Êý¾Ý׼ʵʱÐÔµÄÒªÇó£»ÁíÍâËùÓеļÆËã¶¼ºóÖõ½Yarn¼¯ÈºÉϽøÐУ¬²»½öÀûÓÚ³ÌÐòµÄÔËά£¬Ò²ÀûÓÚ×ÊÔ´µÄÓÐЧ¹Ü¿ØºÍÉìËõ¡£¼Ü¹¹ÊµÏÖÈçÏÂͼËùʾ£º

3¡¢ Ó¦Óó¡¾°

CEPÔÚ֤ȯÊг¡µÄÓ¦ÓõÄÓзdz£¶à£¬ÎªÁ˶ÁÕ߸üºÃµÄÀí½âÉÏÊö¼¼Êõ¼Ü¹¹µÄÉè¼Æ£¬Ôڴ˽éÉܼ¸¸öµäÐÍÓ¦Óó¡¾°¡£

1£©×ÔÑ¡¹Éµ½¼ÛºÍÕǵø·ùÌáÐÑ

×ÔÑ¡¹Éµ½¼ÛºÍÕǵø·ùÌáÐÑÊÇ¹ÉÆ±½»Ò×Èí¼þµÄÒ»¸ö»ù´¡·þÎñÆ÷£¬Ä¿µÄÔÚÓÚ·½±ãÓû§¼òµ¥¡¢¼°Ê±µÄ¶¢ÅÌ¡£ÆäÖÐÎÒÃÇʹÓÃMongoDBÀ´´æ´¢Óû§µÄ¸öÐÔ»¯ÉèÖÃÐÅÏ¢£¬ÒÔ±ã¸÷ÀàÓ¦ÓÿÉÒÔÁé»îµÄ¶¨ÖÆ×ÔÉíµÄSchema¡£ÔÚ¹¦ÄÜÉÏÖ÷Òª°üÀ¨ÒÔϼ¸ÖÖ£º

¹É¼Û¸ßÓÚÉ趨ֵÌáÐÑ¡£

¹É¼ÛµÍÓÚÉ趨ֵÌáÐÑ¡£

ÕÇ·ù¸ßÓÚÉ趨ֵÌáÐÑ¡£

Ò»·ÖÖÓ¡¢Îå·ÖÖÓÕÇ·ù¸ßÓÚÉ趨ֵÌáÐÑ¡£

µø·ù¸ßÓÚÉ趨ֵÌáÐÑ¡£

Ò»·ÖÖÓ¡¢Îå·ÖÖÓµø·ù¸ßÓÚÉ趨ֵÌáÐÑ¡£

Ö÷ÒªµÄÌôÕ½ÔÚÓÚ´óÊý¾ÝÁ¿µÄʵʱ¼ÆË㣬¶ø²ÉÓÃGF-Lambda¿ÉÒÔÇáËɽâ¾öÕâ¸öÎÊÌâ¡£Êý¾Ý´¦ÀíÁ÷³ÌÈçÏ£º

Ê×ÏÈ´ÓKafka¶©ÔÄʵʱÐÐÇéÊý¾Ý²¢½øÐнâÎö£¬×ª»¯³ÉRDD¶ÔÏó£¬È»ºóÔÙÑÜÉú³öKey£¨market+stockCode£©£¬Í¬Ê±´ÓMongoÔöÁ¿¼ÓÔØÓû§×ÔÑ¡¹ÉÔ¤¾¯ÉèÖÃÊý¾Ý£¬È»ºó½«ÕâÁ½·ÝÊý¾Ý½øÐÐÒ»¸öJoin£¬ÔÙ·ÖÆ¬¶Ôͬһ¸öKeyµÄÁ½¸ö¶ÔÏó×öÒ»¸öFilter£¬²úÉú³öÔ¤¾¯ÐÅÏ¢£¬²¢½øÐи÷¸öÖÕ¶ËÇþµÀÍÆËÍ¡£

2£©×ÔÑ¡¹Éʵʱ×ÊѶ

ʵʱ×ÊѶ¶Ô¸÷ÀཻÒ×Óû§À´ËµÊǷdz£ÖØÒªµÄ£¬ÌرðÊǺÍ×ÔÉíÑÏÖØÏà¹ØµÄ×ÔÑ¡¹Éʵʱ×ÊѶ¡£Ò»¸ö¹«¸æ¡¢ÖØ´óÊÂÏî»òÕ߹ؼüÐÂÎŵijöÏÖ¿ÉÄÜ»áÓ°Ïìµ½Óû§µÄͶ×ʻر¨£¬Òò´ËÕâÀàʼþԽʵʱ£¬¶ÔÓû§À´Ëµ¼ÛÖµ¾ÍÔ½´ó¡£

ÔÚGF-Lambdaƽ̨ÉÏ£¬×ÔÑ¡¹Éʵʱ×ÊѶÖ÷Òª·ÖΪÁ½²¿·Ö£ºÊµÊ±×ÊѶµÄ²É¼¯¼°Ô¤´¦Àí£¨ÊÊÅ䣩¡¢×ÊѶÐÅÏ¢ÓëÓû§ÐÅÏ¢µÄ´éºÏ¡£Õû¸ö´¦ÀíÁ÷³ÌÈçÏÂͼËùʾ£º

ÔÚÉÏͼ·Ö¸îÏß×ó²àÊÇʵʱ×ÊѶµÄÔ¤´¦Àí²¿·Ö£¬Ê×ÏÈʹÓÃSpark JDBC½Ó¿Ú´ÓOracleÊý¾Ý¿â¼ÓÔØÊý¾Ýµ½Spark£¬ÐγÉDataFrame£¬ÔÙʹÓÃSpark SQLµÄ¸ß¼¶API×öÊý¾ÝµÄÔ¤´¦Àí£¨´Ë´¦Ö÷Òª×ö±íÖ®¼äµÄ¹ØÁªºÍ¹ýÂË£©£¬×îºó½«Ã¿¸öPartitionÉϵÄÊý¾Ýת»¯³ÉЭÒéÒªÇóµÄ¸ñʽ£¬Ð´ÈëKafkaÖеȴýÏÂÓÎÏû·Ñ¡£

×ó²àÊý¾ÝETLµÄ¹ý³ÌÊÇÍêÈ«ÓÉAirflowÀ´½øÐÐÇý¶¯µ÷¶ÈµÄ£¬¶øÇÒÿ´Î´¦ÀíÍê¾Í½«×´Ì¬cacheµ½RedisÖУ¬ÒÔ±ãÏ´ÎÔöÁ¿´¦Àí¡£ÔÚÉÏͼµÄÓÒ²àÔòÊÇÓëÓû§Ç¿Ïà¹ØµÄÒµÎñÂß¼­£¬½«Óû§ÅäÖõÄÐÅÏ¢Óëʵʱ×ÊѶÐÅÏ¢½øÐдéºÏÆ¥Å䣬¸ù¾ÝÓû§ÉèÖÃµÄÆ«ºÃÀ´²úÉúÍÆËÍʼþ¡£

´Ë´¦ÓÃKafkaÀ´×öÊý¾Ý¼äµÄ½âñºÃ´¦ÊDz»ÑÔ¶øÓ÷µÄ¡£Ê×ÏÈÊDZ£Ö¤ÁËÏûÏ¢Ö®¼äµÄÁé»îÐÔ£¬ÒòΪ×ó²à²¿·Ö²úÉúµÄʼþÊÇÒ»¸ö»ù´¡¹«¹²Ê¼þ£¬¶øÓÒ²à²ÅÊÇÒ»¸öÓëÒµÎñ½ôÃÜñîºÏµÄÂß¼­Ê¼þ¡£»ù´¡¹«¹²Ê¼þÖ»ÓÐʼþµÄ»ù´¡ÊôÐÔ£¬ÊÇ¿ÉÒÔ±»ºÜ¶àÒµÎñͬʱ¶©ÔÄʹÓõġ£

Æä´Î´Ó¼¼Êõ½Ç¶È½²×ó²àÊÇÒ»¸öÀàËÆÅú´¦ÀíµÄ¹ý³Ì£¬¶øÓÒ²àÊÇÒ»¸öÁ÷´¦ÀíµÄ¹ý³Ì£¬Öмäͨ¹ýKafka×öÒ»¸öת»»Óë¶Ô½Ó¡£Õâ¸öÓ¦ÓÃÆäʵÊǺܾßÓдú±íÐԵģ¬ÒòΪÔڴ󲿷ÖÇé¿öÏ£¬Êý¾ÝÔ´²¢²»ÊÇÒÔÁ÷µÄÐÎʽ´æÔÚ£¬¸üÐÂµÄÆµÂÊÒ²²¢²»ÊÇÄÇôʵʱ£¬ËùÒÔ´ó¶àÊýÇé¿ö϶¼»áÉæ¼°µ½batch layerÓëspeed layerÖ®¼äµÄת»»¶Ô½Ó¡£

3£©×ʽðÁ÷Ñ¡¹É²ßÂÔ

ÉÏÃæÁ½¸öÓ¦ÓÃÏà¶ÔÀ´Ëµ´¦ÀíÁ÷³Ì±È½Ï¼òµ¥£¬ÒÔÏÂÕâ¸öcaseÊÇÒ»¸öÒµÎñ

ÉÔ΢·±ËöµÄCEPÓ¦ÓÃ-×ʽðÁ÷²ßÂÔ½»Ò×Ä£ÐÍ£¬¸ÃÄ£ÐÍʹÓÃ×ʽðÁ÷Á÷ÏòÀ´ÅÐ¶Ï¹ÉÆ±ÔÚδÀ´Ò»¶Îʱ¼äµÄÕǵøÇé¿ö¡£Ëü»ùÓÚÕâÑùÒ»¸ö¼ÙÉ裬Èç¹ûÊÇ×ʽðÁ÷ÈëµÄ¹ÉƱ£¬Ôò¹É¼ÛÔÚδÀ´Ò»¶Îʱ¼äÉÏÕÇÊÇ´ó¸ÅÂÊʼþ£»Èç¹ûÊÇ×ʽðÁ÷³öµÄ¹ÉƱ£¬Ôò¹É¼ÛÔÚδÀ´Ò»¶Îʱ¼äϵøÊÇ´ó¸ÅÂÊʼþ¡£ÄÇôÎÒÃÇ¿ÉÒÔ»ùÓÚÕâ¸ö¼ÙÉèÀ´¹¹½¨ÎÒÃǵIJßÂÔ½»Ò×Ä£ÐÍ¡£ÈçÏÂͼËùʾ£¬Õâ¸öÄ£ÐÍÖ÷Òª·ÖΪÈý²¿·Ö£º

1£©¸ö¹É×ʽðÁ÷Ö¸±êµÄʵʱ¼ÆËã

ÓÉÓÚÉæ¼°µ½Ò»Ð©ÒµÎñÊõÓÕâÀïÏÈ×öÒ»¸ö¼òµ¥µÄ½éÉÜ¡£

×ʽðÁ÷ÊÇÒ»ÖÖ·´Ó³¹ÉƱ¹©Çó¹ØÏµµÄÖ¸±ê£¬ËüµÄ¶¨ÒåÈçÏ£ºÖ¤È¯¼Û¸ñÔÚÔ¼¶¨µÄʱ¼ä¶ÎÖд¦ÓÚÉÏÉý״̬ʱ²úÉúµÄ³É½»¶îÊÇÍÆ¶¯Ö¸ÊýÉÏÕǵÄÁ¦Á¿£¬Õⲿ·Ö³É½»¶î±»¶¨ÒåΪ×ʽðÁ÷È룻֤ȯ¼Û¸ñÔÚÔ¼¶¨µÄʱ¼ä¶ÎÖÐϵøÊ±µÄ³É½»¶îÊÇÍÆ¶¯Ö¸ÊýϵøµÄÁ¦Á¿£¬Õⲿ·Ö³É½»¶î±»¶¨ÒåΪ×ʽðÁ÷³ö£»Èô֤ȯ¼Û¸ñÔÚÔ¼¶¨µÄʱ¼ä¶ÎǰºóûÓз¢Éú±ä»¯£¬ÔòÕâ¶Îʱ¼äÖеijɽ»¶î²»¼ÆÈë×ʽðÁ÷Á¿¡£µ±Ìì×ʽðÁ÷ÈëºÍÁ÷³öµÄ²î¶î¿ÉÒÔÈÏΪÊǸÃ֤ȯµ±ÌìÂòÂôÁ½ÖÖÁ¦Á¿ÏàµÖÖ®ºó£¬Íƶ¯¼Û¸ñ±ä»¯µÄ¾»×÷ÓÃÁ¿£¬±»¶¨ÒåΪµ±Ìì×ʽð¾»Á÷Á¿¡£ÊýÁ¿»¯¶¨ÒåÈçÏ£º

ÆäÖУ¬VolumeΪ³É½»Á¿£¬Îªiʱ¿ÌÊÕÅ̼ۣ¬ÎªÉÏһʱ¿ÌÊÕÅ̼ۡ£

ÑϸñÒâÒåÉϽ²£¬Ã¿Ò»¸öÂòµ¥±ØÐëÓÐÒ»¸öÏàÓ¦µÄÂôµ¥£¬Òò´ËÕæÊµµÄ×ʽðÁ÷ÈëÎÞ·¨×¼È·µÄ¼ÆË㣬ֻÄÜͨ¹ýÆäËûÌæ´ú·½·¨À´Çø·Ö×ʽðµÄÁ÷ÈëºÍÁ÷³ö£¬Í¨¹ý¸ßƵÊý¾Ý£¬½«Ã¿±Ê½»Ò×°´ÕÕÇý¶¯¹É¼ÛÉÏÕǺÍϵøµÄ²îÒ죬ȷ¶¨Îª×ʽðµÄÁ÷Èë»òÁ÷³ö£¬×îÖÕ»ã¾Û³ÉÒ»ÌìµÄ×ʽðÁ÷¾»¶îÊý¾Ý¡£¸ù¾ÝÒµ½ç¿ª·¢µÄCMSMFÖ¸±ê£¬²ÉÓÃ¸ßÆµÊµÊ±Êý¾Ý½øÐÐ×ʽðÁ÷²âË㣬Ö÷Òª³öÓÚÒÔÏÂÁ½·½Ã濼ÂÇ£ºÒ»ÊDzÉÓÃ¸ßÆµÊý¾Ý½øÐвâË㣬¿ÉÒÔ¾¡¿ÉÄÜ·´Ó³ÕæÊµµÄÊг¡ÐÅÏ¢£»¶þÊDzÉÈ¡±¨¼Û£¨×î½üÂò¼Û¡¢Âô¼Û£©×÷Ϊ±È½Ï»ù×¼£¬³É½»¼Û´óÓÚµÈÓÚÉÏÆÚ×îÓÅÂô¼ÛÊÓΪÁ÷È룬³É½»¼ÛСÓÚµÈÓÚÉÏÆÚ×îÓÅÂò¼ÛÊÓΪÁ÷³ö¡£

³ýÁË×ʽðµÄÁ÷Èë¡¢Á÷³ö¡¢¾»¶î£¬»¹ÓÐһϵÁÐÑÜÉúÖ¸±ê£¬±ÈÈç¸ù¾ÝÁ÷ͨ¹É±¾Êý¶àÉÙÑÜÉú³öµÄ´ó¡¢ÖС¢Ð¡µ¥Á÷Èë¡¢Á÷³ö¡¢¾»¶î£¬¼°×ʽðÁ÷ÐÅÏ¢º¬Á¿£¨IC£©¡¢×ʽðÁ÷Ç¿¶È£¨MFP£©£¬×ʽðÁ÷¸Ü¸Ë±¶Êý£¨MFP£©£¬ÔÚÕâÀï¾Í²»Ò»Ò»½éÉÜ¡£

´Ó¼¼Êõ½Ç¶È½²£¬µÚÒ»²¿·ÖÎÒÃÇͨ¹ý¶©ÔÄʵʱÐÐÇéÐÅÏ¢£¬¿ªÊ¼¼ÆËãµ±Ìì´Ó¿ªÊе½¸÷¸öʱ¿ÌµãµÄ×ʽðÁ÷Èë¡¢Á÷³öµÄÀÛ¼ÆÖµ£¬¼°ÑÜÉúÖ¸±ê£¬²¢½«ÕâЩָ±ê¼ÆËãÍê³ÉºóÖØÐÂд»Øµ½Kafka½øÐд洢£¬·½±ãÏÂÓÎÏû·Ñ¡£Òò´ËµÚÒ»²¿·ÖÍêÈ«ÊÇÒ»¸ö´óÊý¾ÝÁ¿µÄʵʱÁ÷´¦ÀíÓ¦Óã¬ÊôÓÚLambdaµÄspeed layer¡£

2£©ÂòÂôÐźÅÁ¿µÄ²úÉú¼°½»Ò×

µÚ¶þ²¿·ÖÔÚÒµÎñÉÏÊôÓÚÄ£ÐͲ㣬¼´¸ù¾Ýµ±Ç°ÊµÊ±×ʽðÁ÷Ö¸±êÐÅÏ¢£¬¹¹½¨×Ô¼ºµÄ²ßÂÔÄ£ÐÍ£¬Êä³öÂòÂôÐźš£±ÈÈçÒÔÒ»¸ö¼òµ¥µÄ²ßÂÔÄ£ÐÍΪÀý,Èç¹ûͬʱÂú×ãÒÔÏÂÈý¸öÌõ¼þ²úÉúÂòµÄÐźš£·´Ö®£¬²úÉúÂôµÄÐźţº

(´óµ¥×ʽðÁ÷Èë-´óµ¥×ʽðÁ÷³ö>0) && (Öе¥×ʽðÁ÷Èë-Öе¥×ʽðÁ÷³ö>0)

´óµ¥µÄ×ʽðÁ÷ÐÅÏ¢º¬Á¿>50%

´óµ¥µÄ×ʽðÁ÷Ç¿¶È>20%

ÔÚ¼¼ÊõÉÏ£¬Õâ¸öÓ¦ÓÃÒ²ÊôÓÚLambdaµÄ speed layer£¬Í¨¹ý¶©ÔÄKafkaÖеÄ×ʽðÁ÷Ö¸±ê£¬¸ù¾ÝÉÏÃæ¼òµ¥µÄÄ£ÐÍ£¬²»¶ÏµÄÅжÏÊÇ·ñÒªÂò»òÕßÂô£¬²¢µ÷Óýӿڷ¢ÆðÂòÂôίÍÐÖ¸Á×îºó¸ù¾Ý»Ø±¨½á¹û²Ù×÷³Ö²Ö±í»òÕ߳ɽ»±í¡££¨×¢Òâ´Ë´¦ÔÚÒµÎñÉÏÖ»ÊÇÒÔ¼òµ¥µÄÄ£Ð;ÙÀý£¬Ã»ÓÐÉæ¼°µ½¸ü¶àµÄϸ½Ú£©

3£©³Ö²ÖÓ¯¿÷ʵʱ׷×Ù¼°½»Ò×

µÚÈý²¿·ÖÔÚÒµÎñÉÏÖ÷ÒªÊÇ׼ʵʱµÄÓ¯¿÷¼ÆËã¡£ÔÚ¼¼Êõ²ãÃæ£¬ÊôÓÚLambda µÄbatch layer¡£Í¨¹ý¶©ÔÄʵʱÐÐÇéºÍ¼ÓÔØ³Ö²Ö±í/³É½»±í£¬ÊµÊ±¼ÆËãÓû§µÄÓ¯¿÷Çé¿ö¡£µ±È»´Ë´¦»¹ÓÐһЩ¼òµ¥µÄÖ¹Ëð²ßÂÔ£¬Ò²¿ÉÒÔ¸ù¾ÝÓ¯ÀûÇé¿ö£¬·¢ÆðÂôίÍÐÖ¸Á²¢²Ù×÷³Ö²Ö±íºÍ³É½»±í¡£×îºó½«Ó¯ÀûÇé¿ö±¨¸ø·þÎñ²ã£¬½øÐÐչʾ»òÕßÌṩ»Øµ÷½Ó¿Ú¡£ÏêϸµÄ´¦ÀíÁ÷³ÌÈçÏÂͼËùʾ£º

×ܽá

ÕýÈçÎÄÕÂÇ°ÃæÇ¿µ÷µÄÒ»Ñù£¬Ð´ÕâÆªÎÄÕµijõÖÔÊÇÏ£Íû´ó¼Ò´Ó´óÊý¾Ý·á¸»µÄÉú̬Öнâ·Å³öÀ´£¬ÓëÒµÎñÉî¶ÈµÄ¿ç½çÈںϣ¬´Ó¶ø¿ª·¢³ö¸ü¶à¾ßÓмÛÖµµÄ´óÊý¾ÝÓ¦Óã¬ÕæÕý·¢»Ó´óÊý¾ÝÓ¦ÓеļÛÖµ¡£ÕâºÍLambda¼Ü¹¹µÄ×÷ÕßNathan MarzµÄÀíÄîÒ²ÊÇÊ®·ÖÎǺϵģ¬¼ÇµÃËû»¹ÔÚBackType¹¤×÷µÄʱºò£¬ËûÃǵÄÍŶӲÅÎå¸öÈË£¬È´¿ª·¢ÁËÒ»¸öÉç»á»¯Ã½Ìå·ÖÎö²úÆ·¡ª¡ªÔÚ100TBµÄÊý¾ÝÉÏÌṩ¸÷ÖַḻµÄʵʱ·ÖÎö£¬Í¬Ê±Õâ¸öСµÄÍŶӻ¹¸ºÔðÉϰŲ̀»úÆ÷µÄ¼¯ÈºµÄ²¿Êð¡¢ÔËάºÍ¼à¿Ø¡£

µ±ËûÏò±ðÈËչʾ²úÆ·µÄʱºò£¬ºÜ¶àÈ˶¼ºÜÕð¾ªËûÃÇÖ»ÓÐÎå¸öÈË¡£¾­³£ÓÐÈËÎÊËû£º¡°How can so few people do so much?¡±¡£ËûµÄ»Ø´ðÊÇ£º¡°It¡¯s not what we¡¯re doing, but what we¡¯re not doing.¡±Í¨¹ýʹÓÃLambda¼Ü¹¹£¬ËûÃDZÜÃâÁË´«Í³´óÊý¾Ý¼Ü¹¹µÄ¸´ÔÓÐÔ£¬´Ó¶ø²ú³ö±äµÃ·Ç³£ÏÔÖø¡£

ÔÚÎ廨°ËÃŵĴóÊý¾Ý¼¼Êõ²ã³ö²»ÇîµÄµ±Ï£¬MarzµÄÀíÄî¸ü¼ÓÖØÒª¡£ÎÒÃÇÒ»·½ÃæÐèÒªÓëʱ¾ã½ø¹Ø×¢×îеļ¼Êõ½ø²½ ¨C ÒòΪм¼ÊõµÄ³öÏÖ¿ÉÄÜ·´¹ýÀ´ÈÃÒÔǰûÓп¼Âǹý»òÕß²»¸ÒÏëµÄÓ¦Óó¡¾°±ä³É¿ÉÄÜ£¬µ«ÁíÒ»·½Ãæ¸üÖØÒªµÄÊÇ£¬´óÊý¾Ý¼¼ÊõµÄºÏÀíÔËÓÃÐèÒª½¨Á¢ÔÚ¶ÔÐÐÒµÁìÓò֪ʶÉî¿ÌÀí½âµÄ»ù´¡ÉÏ¡£´óÊý¾ÝÊǽðÈڿƼ¼µÄºËÐÄÖ§³Å¼¼ÊõÖ®Ò»£¬ÎÒÃǽ«³ÖÐø¹Ø×¢×îÇ°ÑØµÄ´óÊý¾Ý¼¼ÊõÓë¼Ü¹¹ÀíÄ³ÖÐøÓÅ»¯×î·ûºÏ½ðÈÚÐÐÒµÌØµãµÄ½â¾ö·½°¸£¬¹¹½¨ÄÜ·Å·ÉÒµÎñר¼Òרҵ´´ÐÂÄÜÁ¦µÄ¼¼Êõƽ̨¡£

 
   
1517 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ