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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
¶¯Ì¬±íµÄ³ÖÐø²éѯ
 
À´Ô´£ºInfoQ ·¢²¼ÓÚ£º 2017-9-7
  2369  次浏览      27
 

Ô½À´Ô½¶àµÄ¹«Ë¾²ÉÓÃÁ÷´¦Àí£¬²¢½«ÏÖÓеÄÅú´¦ÀíÓ¦ÓÃÇ¨ÒÆµ½Á÷´¦Àí£¬»òÕß¶ÔеÄÓÃÀý²ÉÓÃÁ÷´¦ÀíʵÏֵĽâ¾ö·½°¸¡£ÆäÖÐÐí¶àÓ¦Óü¯ÖÐÔÚÁ÷Êý¾Ý·ÖÎöÉÏ£¬·ÖÎöµÄÊý¾ÝÁ÷À´×Ô¸÷ÖÖÔ´£¬ÀýÈçÊý¾Ý¿âÊÂÎñ¡¢µã»÷¡¢´«¸ÐÆ÷²âÁ¿»òIoT É豸¡£

Apache Flink ·Ç³£ÊÊÓÃÓÚÁ÷·ÖÎöÓ¦ÓóÌÐò£¬ÒòΪËüÖ§³Öʼþʱ¼äÓïÒ壬ȷ±£Ö»´¦ÀíÒ»´Î£¬ÒÔ¼°Í¬Ê±ÊµÏÖÁ˸ßÍÌÍÂÁ¿ºÍµÍÑÓ³Ù¡£ÒòΪÕâÐ©ÌØÐÔ£¬Flink Äܹ»½üʵʱ¶Ô´óÁ¿µÄÊäÈëÊý¾Ý¼ÆËã³öÒ»¸öÈ·¶¨ºÍ¾«È·µÄ½á¹û£¬²¢ÇÒÔÚ·¢Éú¹ÊÕϵÄʱºòÌṩһ´ÎÐÔÓïÒå¡£

Flink µÄºËÐÄÁ÷´¦ÀíAPI£¬DataStream API£¬·Ç³£¾ßÓбíÏÖÁ¦£¬²¢ÇÒΪÐí¶à³£¼û²Ù×÷ÌṩÁËÔ­Óï¡£ÔÚÆäËûÌØÐÔÖУ¬ËüÌṩÁ˸߶ȿɶ¨ÖƵĴ°¿ÚÂß¼­£¬²»Í¬±íÏÖÌØÕ÷ϵIJ»Í¬×´Ì¬Ô­Óע²áºÍÏìÓ¦¶¨Ê±Æ÷µÄ¹³×Ó£¬ÒÔ¼°¸ßЧµÄÒì²½ÇëÇóÍⲿϵͳµÄ¹¤¾ß¡£ÁíÒ»·½Ã棬Ðí¶àÁ÷·ÖÎöÓ¦ÓÃ×ñÑ­ÏàËÆµÄģʽ£¬²¢²»ÐèÒªDataStream API ÌṩµÄ±íÏÖÁ¦¼¶±ð¡£ËûÃÇ¿ÉÒÔʹÓÃÁìÓòÌØ¶¨µÄÓïÑÔÀ´Ê¹Óøü×ÔÈ»ºÍ¼ò½àµÄ·½Ê½±í´ï¡£×ÜËùÖÜÖª£¬SQL ÊÇÊý¾Ý·ÖÎöµÄÊÂʵ±ê×¼¡£¶ÔÓÚÁ÷·ÖÎö£¬SQL ¿ÉÒÔÈøü¶àµÄÈËÔÚÊý¾ÝÁ÷µÄÌØ¶¨Ó¦ÓÃÖл¨·Ñ¸üÉÙµÄʱ¼ä¡£È»¶ø£¬Ä¿Ç°»¹Ã»ÓпªÔ´µÄÁ÷´¦ÀíÆ÷ÌṩÁîÈËÂúÒâµÄSQL Ö§³Ö¡£

ΪʲôÁ÷ÖеÄSQL ºÜÖØÒª

SQL ÊÇÊý¾Ý·ÖÎöʹÓÃ×î¹ã·ºµÄÓïÑÔ£¬ÓкܶàÔ­Òò£º

  • SQL ÊÇÉùÃ÷ʽµÄ£ºÄãÖ¸¶¨ÄãÏëÒªµÄ¶«Î÷£¬¶ø²»ÊÇÈçºÎÈ¥¼ÆË㣻
  • SQL ¿ÉÒÔ½øÐÐÓÐЧµÄÓÅ»¯£ºÓÅ»¯Æ÷¼Æ¹ÀËãÓÐЧµÄ¼Æ»®À´¼ÆËã½á¹û£»
  • SQL ¿ÉÒÔ½øÐÐÓÐЧµÄÆÀ¹À£º´¦ÀíÒýÇæ×¼È·µÄÖªµÀ¼ÆËãÄÚÈÝ£¬ÒÔ¼°ÈçºÎÓÐЧµÄÖ´ÐУ»
  • ×îºó£¬ËùÓÐÈ˶¼ÖªµÀµÄ£¬Ðí¶à¹¤¾ß¶¼Àí½âSQL¡£

Òò´Ë£¬Ê¹ÓÃSQL ´¦ÀíºÍ·ÖÎöÊý¾ÝÁ÷£¬¿ÉÒÔΪ¸ü¶àÈËÌṩÁ÷´¦Àí¼¼Êõ¡£´ËÍ⣬ÒòΪSQL µÄÉùÃ÷ÐÔÖʺÍDZÔÚµÄ×Ô¶¯ÓÅ»¯£¬Ëü¿ÉÒÔ´ó´ó¼õÉÙ¶¨Òå¸ßЧÁ÷·ÖÎöÓ¦ÓõÄʱ¼äºÍ¾«Á¦¡£

µ«ÊÇ£¬SQL£¨ÒÔ¼°¹ØÏµÊý¾ÝÄ£ÐͺʹúÊý£©²¢²»ÊÇΪÁ÷Êý¾ÝÉè¼ÆµÄ¡£¹ØÏµÊÇ£¨¶à£©¼¯ºÏ¶ø²»ÊÇÎÞÏÞÐòÁеÄÔª×é¡£µ±Ö´ÐÐSQL ²éѯʱ£¬´«Í³Êý¾Ý¿âϵͳºÍ²éѯÒýÇæ¶ÁÈ¡ºÍ´¦ÀíÍêÕûµÄ¿ÉÓÃÊý¾Ý¼¯£¬²¢²úÉú¹Ì¶¨´óСµÄ½á¹û¡£Ïà±È֮ϣ¬Êý¾ÝÁ÷³ÖÐøÌṩеļǼ£¬Ê¹Êý¾ÝËæ×Åʱ¼äµ½´ï¡£Òò´Ë£¬Á÷²éѯÐèÒª²»¶ÏµÄ´¦Àíµ½´ïµÄÊý¾Ý£¬´ÓÀ´¶¼²»ÊÇ¡°ÍêÕûµÄ¡±¡£

»°ËäÈç´Ë£¬Ê¹ÓÃSQL ´¦ÀíÁ÷²¢²»ÊDz»¿ÉÄܵġ£Ò»Ð©¹ØÏµÐÍÊý¾Ý¿âϵͳά»¤ÁËÎﻯÊÓͼ£¬ÀàËÆÓÚÔÚÁ÷Êý¾ÝÖÐÆÀ¹ÀSQL ²éѯ¡£ÎﻯÊÓͼ±»¶¨ÒåΪһ¸öSQL ²éѯ£¬¾ÍÏñ³£¹æ£¨ÐéÄ⣩ÊÓͼһÑù¡£µ«ÊÇ£¬²éѯµÄ½á¹ûʵ¼ÊÉϱ»±£´æ£¨»òÕßÊÇÎﻯ£©ÔÚÄÚ´æ»òÓ²ÅÌÖУ¬ÕâÑùÊÓͼÔÚ²éѯʱ²»ÐèҪʵʱ¼ÆË㡣ΪÁË·ÀÖ¹ÎﻯÊÓͼµÄÊý¾Ý¹ýʱ£¬Êý¾Ý¿âϵͳÐèÒªÔÚÆä»ù´¡¹ØÏµ£¨¶¨ÒåµÄSQL ²éѯÒýÓÃµÄ±í£©±»ÐÞ¸Äʱ¸üиüÐÂÊÓͼ¡£Èç¹ûÎÒÃǽ«ÊÓͼµÄ»ù´¡¹ØÏµÐÞ¸ÄÊÓ×÷ÐÞ¸ÄÁ÷£¨»òÕßÊǸü¸ÄÈÕÖ¾Á÷£©£¬ÎﻯÊÓͼµÄά»¤ºÍÁ÷ÖеÄSQL µÄ¹ØÏµ¾Í±äµÃºÜÃ÷È·ÁË¡£

Flink µÄ¹ØÏµAPI£ºTable API ºÍSQL

´Ó1.1.0°æ±¾£¨2016Äê8Ô·¢²¼£©ÒÔÀ´£¬Flink ÌṩÁËÁ½¸öÓïÒåÏ൱µÄ¹ØÏµAPI£¬ÓïÑÔÄÚǶµÄTable API£¨ÓÃÓÚJava ºÍScala£©ÒÔ¼°±ê×¼SQL¡£ÕâÁ½ÖÖAPI ±»Éè¼ÆÓÃÓÚÔÚÏßÁ÷ºÍÒÅÁôµÄÅú´¦ÀíÊý¾ÝAPI µÄͳһ£¬ÕâÒâζ×ÅÎÞÂÛÊäÈëÊǾ²Ì¬Åú´¦ÀíÊý¾Ý»¹ÊÇÁ÷Êý¾Ý£¬²éѯ²úÉúÍêÈ«ÏàͬµÄ½á¹û¡£

ͳһÁ÷ºÍÅú´¦ÀíµÄAPI ·Ç³£ÖØÒª¡£Ê×ÏÈ£¬Óû§Ö»ÐèҪѧϰһ¸öAPI À´´¦Àí¾²Ì¬ºÍÁ÷Êý¾Ý¡£´ËÍ⣬¿ÉÒÔʹÓÃͬÑùµÄ²éѯÀ´·ÖÎöÅú´¦ÀíºÍÁ÷Êý¾Ý£¬ÕâÑù¿ÉÒÔÔÚͬһ¸ö²éѯÀïÃæÍ¬Ê±·ÖÎöÀúÊ·ºÍÔÚÏßÊý¾Ý¡£ÔÚĿǰµÄ×´¿öÏ£¬ÎÒÃÇÉÐδÍêȫʵÏÖÅú´¦ÀíºÍÁ÷ʽÓïÒåµÄͳһ£¬µ«ÉçÇøÔÚÕâ¸öÄ¿±êÉÏÈ¡µÃÁ˺ܴóµÄ½øÕ¹¡£

ÏÂÃæµÄ´úÂëÆ¬¶ÎչʾÁËÁ½¸öµÈЧµÄTable API ºÍSQL ²éѯ£¬ÓÃÀ´ÔÚζȴ«¸ÐÆ÷²âÁ¿Êý¾ÝÁ÷ÖмÆËãÒ»¸ö¼òµ¥µÄ´°¿Ú¾ÛºÏ¡£SQL ²éѯµÄÓï·¨»ùÓÚApache Calcite µÄ·Ö×é´°¿Úº¯ÊýÑùʽ£¬²¢½«ÔÚFlink 1.3.0°æ±¾Öеõ½Ö§³Ö¡£

val env = StreamExecutionEnvironment.getExecutionEnvironment
env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)
val tEnv = TableEnvironment.getTableEnvironment(env)
// define a table source to read sensor data (sensorId, time, room, temp)
val sensorTable = ??? // can be a CSV file, Kafka topic, database, or ...
// register the table source
tEnv.registerTableSource("sensors", sensorTable)
// Table API
val tapiResult: Table = tEnv.scan("sensors") // scan sensors table
.window(Tumble over 1.hour on 'rowtime as 'w) // define 1-hour window
.groupBy('w, 'room) // group by window and room
.select('room, 'w.end, 'temp.avg as 'avgTemp) // compute average temperature
// SQL
val sqlResult: Table = tEnv.sql("""
|SELECT room, TUMBLE_END(rowtime, INTERVAL '1' HOUR), AVG(temp) AS avgTemp
|FROM sensors
|GROUP BY TUMBLE(rowtime, INTERVAL '1' HOUR), room
|""".stripMargin)

¾ÍÏñÄã¿´µ½µÄ£¬Á½ÖÖAPI ÒÔ¼°Flink Ö÷ÒªµÄµÄDataStream ºÍDataSet API ÊǽôÃܽáºÏµÄ¡£Table ¿ÉÒÔºÍDataSet »òDataStream Ï໥ת»»¡£Òò´Ë£¬¿ÉÒԺܼòµ¥µÄȥɨÃèÒ»¸öÍⲿµÄ±í£¬ÀýÈçÊý¾Ý¿â»òÕßÊÇParquet Îļþ£¬Ê¹ÓÃTable API ²éѯ×öһЩԤ´¦Àí£¬½«½á¹ûת»»ÎªDataSet£¬²¢¶ÔÆäÔËÐÐGelly ͼÐÎËã·¨¡£ÉÏÊöʾÀýÖж¨ÒåµÄ²éѯҲ¿ÉÒÔͨ¹ý¸ü¸ÄÖ´Ðл·¾³À´´¦ÀíÅúÁ¿Êý¾Ý¡£

ÔÚÄÚ²¿£¬Á½ÖÖAPI ¶¼±»×ª»»³ÉÏàͬµÄÂß¼­±íʾ£¬ÓÉApache Calcite ½øÐÐÓÅ»¯£¬²¢±»±àÒë³ÉDataStream »òÊÇDataSet ³ÌÐò¡£Êµ¼ÊÉÏ£¬ÓÅ»¯ºÍת»»³ÌÐò²¢²»ÖªµÀ²éѯÊÇͨ¹ýTable API »¹ÊÇSQL À´¶¨ÒåµÄ¡£Èç¹ûÄã¶ÔÓÅ»¯¹ý³ÌµÄϸ½Ú¸ÐÐËȤ£¬¿ÉÒÔ¿´¿´ÎÒÃÇÈ¥Äê·¢²¼µÄһƪ²©¿ÍÎÄÕ¡£ÓÉÓÚTable API ºÍSQL ÔÚÓïÒå·½ÃæµÈͬ£¬Ö»ÊÇÔÚÑùʽÉÏÓÐÐ©Çø±ð£¬ÔÚÕâÆªÎÄÕÂÖе±ÎÒÃÇ̸ÂÛSQL ʱÎÒÃÇͨ³£ÒýÓÃÕâÁ½ÖÖAPI¡£

ÔÚµ±Ç°µÄ1.2.0°æ±¾ÖУ¬Flink µÄ¹ØÏµAPI ÔÚÊý¾ÝÁ÷ÖУ¬Ö§³ÖÓÐÏ޵ĹØÏµ²Ù×÷£¬°üÀ¨Í¶Ó°¡¢¹ýÂ˺ʹ°¿Ú¾ÛºÏ¡£ËùÓÐÖ§³ÖµÄ²Ù×÷ÓÐÒ»¸ö¹²Í¬µã£¬¾ÍÊÇËüÃÇÓÀÔ¶²»»á¸üÐÂÒѾ­²úÉúµÄ½á¹û¼Ç¼¡£Õâ¶ÔÓÚʱ¼ä¼Ç¼²Ù×÷£¬ÀýÈçͶӰºÍ¹ýÂËÏÔÈ»²»ÊÇÎÊÌâ¡£µ«ÊÇ£¬Ëü»áÓ°ÏìÊÕ¼¯ºÍ´¦Àí¶àÌõ¼Ç¼µÄ²Ù×÷£¬ÀýÈç´°¿Ú¾ÛºÏ¡£ÓÉÓÚ²úÉúµÄ½á¹û²»Äܱ»¸üУ¬ÔÚFlink 1.2.0ÖУ¬ÊäÈëµÄ¼Ç¼ÔÚ²úÉú½á¹ûÖ®ºó²»µÃ²»±»¶ªÆú¡£

µ±Ç°°æ±¾µÄÏÞÖÆ¶ÔÓÚ½«²úÉúµÄÊý¾Ý·¢ÍùKafka Ö÷Ìâ¡¢ÏûÏ¢¶ÓÁлòÕßÊÇÎļþÕâЩ´æ´¢ÏµÍ³µÄÓ¦ÓÃÊÇ¿ÉÒÔ±»½ÓÊܵģ¬ÒòΪËüÃÇÖ»Ö§³Ö×·¼Ó²Ù×÷£¬Ã»ÓиüкÍɾ³ý¡£×ñÑ­ÕâÖÖģʽµÄ³£¼ûÓÃÀýÊdzÖÐøµÄETL ºÍÁ÷´æµµÓ¦Ó㬽«Á÷½øÐг־û¯´æµµ£¬»òÕßÊÇ×¼±¸Êý¾ÝÓÃÓÚ½øÒ»²½µÄÔÚÏߣ¨Á÷£©»òÕßÊÇÀëÏß·ÖÎö¡£ÓÉÓÚ²»¿ÉÄܸüÐÂ֮ǰ²úÉúµÄ½á¹û£¬ÕâÒ»ÀàÓ¦ÓñØÐëÈ·±£²úÉúµÄ½á¹ûÊÇÕýÈ·µÄ£¬²¢ÇÒ½«À´²»ÐèÒª¸üÕý¡£ÏÂͼ˵Ã÷ÁËÕâÑùµÄÓ¦Óá£

ËäȻֻ֧³Ö×·¼Ó²éѯ¶ÔÓÐЩÀàÐ͵ÄÓ¦Óúʹ洢ϵͳÓÐÓ㬵«ÊÇ»¹ÊÇÓÐһЩÁ÷·ÖÎöµÄÓÃÀýÐèÒª¸üнá¹û¡£ÕâЩÁ÷Ó¦ÓðüÀ¨²»ÄܶªÆúÑÓ³Ùµ½´ïµÄ¼Ç¼£¬ÐèÒªÔçÆÚµÄ½á¹ûÓÃÓÚ£¨³¤ÆÚÔËÐУ©´°¿Ú¾ÛºÏ£¬»òÕßÊÇÐèÒª·Ç´°¿ÚµÄ¾ÛºÏ¡£ÔÚÿÖÖÇé¿öÏ£¬Ö®Ç°²úÉúµÄ½á¹û¼Ç¼¶¼ÐèÒª±»¸üС£½á¹û¸üвéѯͨ³£½«Æä½á¹û±£´æÔÚÍⲿÊý¾Ý¿â»òÕßÊǼüÖµ´æ´¢£¬Ê¹Æä¿ÉÒÔÈÃÍⲿӦÓ÷ÃÎÊ»òÕßÊDzéѯ¡£ÊµÏÖÕâÖÖģʽµÄÓ¦ÓÃÓÐÒDZí°å¡¢±¨¸æÓ¦ÓûòÕßÊÇÆäËûµÄÓ¦Óã¬ËüÃÇÐèÒª¼°Ê±µÄ·ÃÎʳÖÐø¸üеĽá¹û¡£ÏÂͼ˵Ã÷ÁËÕâÒ»ÀàÓ¦Óá£

¶¯Ì¬±íµÄ³ÖÐø²éѯ

Ö§³Ö²éѯ¸üÐÂ֮ǰ²úÉúµÄ½á¹ûÊÇFlink µÄ¹ØÏµAPI µÄÏÂÒ»¸öÖØÒª²½Öè¡£Õâ¸ö¹¦Äܷdz£ÖØÒª£¬ÒòΪËü´ó´óÔö¼ÓÁËAPI Ö§³ÖµÄÓÃÀýµÄ·¶Î§ºÍÖÖÀà¡£´ËÍ⣬һЩеÄÓÃÀý¿ÉÒÔ²ÉÓÃDataStream API À´ÊµÏÖ¡£

Òò´Ë£¬µ±Ìí¼Ó¶Ô½á¹û¸üвéѯµÄÖ§³Öʱ£¬ÎÒÃDZØÐë±£Áô֮ǰµÄÁ÷ºÍÅú´¦ÀíÊäÈëµÄÓïÒå¡£ÎÒÃÇͨ¹ý¶¯Ì¬±íµÄ¸ÅÄîÀ´ÊµÏÖ¡£¶¯Ì¬±íÊdzÖÐø¸üУ¬²¢ÇÒÄܹ»Ïñ³£¹æµÄ¾²Ì¬±íÒ»Ñù²éѯµÄ±í¡£µ«ÊÇ£¬ÓëÅú´¦Àí±í²éѯÖÕÖ¹ºó·µ»ØÒ»¸ö¾²Ì¬±í×÷Ϊ½á¹û²»Í¬µÄÊÇ£¬¶¯Ì¬±íÖеIJéѯ»á³ÖÐøÔËÐУ¬²¢¸ù¾ÝÊäÈë±íµÄÐ޸IJúÉúÒ»¸ö³ÖÐø¸üÐÂµÄ±í¡£Òò´Ë£¬½á¹û±íÒ²ÊǶ¯Ì¬µÄ¡£Õâ¸ö¸ÅÄî·Ç³£ÀàËÆÎÒÃÇ֮ǰÌÖÂÛµÄÎﻯÊÓͼµÄά»¤¡£

¼ÙÉèÎÒÃÇ¿ÉÒÔÔÚ¶¯Ì¬±íÖÐÔËÐвéѯ²¢²úÉúÒ»¸öÐµĶ¯Ì¬±í£¬ÄÇ»á´øÀ´Ò»¸öÎÊÌ⣬Á÷ºÍ¶¯Ì¬±íÈçºÎÏ໥¹ØÁª£¿´ð°¸ÊÇÁ÷ºÍ¶¯Ì¬±í¿ÉÒÔÏ໥ת»»¡£ÏÂͼչʾÁËÔÚÁ÷Öд¦Àí¹ØÏµ²éѯµÄ¸ÅÄîÄ£ÐÍ¡£

Ê×ÏÈ£¬Á÷±»×ª»»Îª¶¯Ì¬±í£¬¶¯Ì¬±íʹÓÃÒ»¸ö³ÖÐø²éѯ½øÐвéѯ£¬²úÉúÒ»¸öÐµĶ¯Ì¬±í¡£×îºó£¬½á¹û±í±»×ª»»³ÉÁ÷¡£Òª×¢Ò⣬Õâ¸öÖ»ÊÇÂß¼­Ä£ÐÍ£¬²¢²»Òâζ×ŲéѯÊÇÈçºÎʵ¼ÊÖ´Ðеġ£Êµ¼ÊÉÏ£¬³ÖÐø²éѯÔÚÄÚ²¿±»×ª»»³É´«Í³µÄDataStream ³ÌÐò¡£

Ëæºó£¬ÎÒÃÇÃèÊöÁËÕâ¸öÄ£Ð͵IJ»Í¬²½Ö裺

  1. ÔÚÁ÷Öж¨Ò嶯̬±í
  2. ²éѯ¶¯Ì¬±í
  3. Éú³É¶¯Ì¬±í

ÔÚÁ÷Öж¨Ò嶯̬±í

ÆÀ¹À¶¯Ì¬±íÉϵÄSQL ²éѯµÄµÚÒ»²½ÊÇÔÚÁ÷Öж¨ÒåÒ»¸ö¶¯Ì¬±í¡£ÕâÒâζ×ÅÎÒÃDZØÐëÖ¸¶¨Á÷ÖеļǼÈçºÎÐ޸Ķ¯Ì¬±í¡£Á÷Я´øµÄ¼Ç¼±ØÐë¾ßÓÐÓ³Éäµ½±íµÄ¹ØÏµÄ£Ê½µÄģʽ¡£ÔÚÁ÷Öж¨Ò嶯̬±íÓÐÁ½ÖÖģʽ£º¸½¼ÓģʽºÍ¸üÐÂģʽ¡£

ÔÚ¸½¼ÓģʽÖУ¬Á÷ÖеÄÿÌõ¼Ç¼ÊǶԶ¯Ì¬±íµÄ²åÈëÐ޸ġ£Òò´Ë£¬Á÷ÖеÄËùÓмǼ¶¼¸½¼Óµ½¶¯Ì¬±íÖУ¬Ê¹µÃËüµÄ´óС²»¶ÏÔö³¤²¢ÇÒÎÞÏÞ´ó¡£ÏÂͼ˵Ã÷Á˸½¼Óģʽ¡£

ÔÚ¸üÐÂģʽÖУ¬Á÷ÖеļǼ¿ÉÒÔ×÷Ϊ¶¯Ì¬±íµÄ²åÈë¡¢¸üлòÕßɾ³ýÐ޸썏½¼Óģʽʵ¼ÊÉÏÊÇÒ»ÖÖÌØÊâµÄ¸üÐÂģʽ£©¡£µ±ÔÚÁ÷ÖÐͨ¹ý¸üÐÂģʽ¶¨ÒåÒ»¸ö¶¯Ì¬±íʱ£¬ÎÒÃÇ¿ÉÒÔÔÚ±íÖÐÖ¸¶¨Ò»¸öΨһµÄ¼üÊôÐÔ¡£ÔÚÕâÖÖÇé¿öÏ£¬¸üкÍɾ³ý²Ù×÷»á´ø×żüÊôÐÔÒ»ÆðÖ´ÐС£¸üÐÂģʽÈçÏÂͼËùʾ¡£

²éѯ¶¯Ì¬±í

Ò»µ©ÎÒÃǶ¨ÒåÁ˶¯Ì¬±í£¬ÎÒÃÇ¿ÉÒÔÔÚÉÏÃæÔËÐвéѯ¡£ÓÉÓÚ¶¯Ì¬±íËæ×Åʱ¼ä½øÐиı䣬ÎÒÃDZØÐ붨Òå²éѯ¶¯Ì¬±íµÄÒâÒå¡£¼Ù¶¨ÎÒÃÇÓÐÒ»¸öÌØ¶¨Ê±¼äµÄ¶¯Ì¬±íµÄ¿ìÕÕ£¬Õâ¸ö¿ìÕÕ¿ÉÒÔ×÷Ϊһ¸ö±ê×¼µÄ¾²Ì¬Åú´¦Àí±í¡£ÎÒÃǽ«¶¯Ì¬±íA ÔÚµãt µÄ¿ìÕÕ±íʾΪA[t]£¬¿ÉÒÔʹÓÃÈËÒâµÄSQL ²éѯÀ´²éѯ¿ìÕÕ£¬¸Ã²éѯ²úÉúÁËÒ»¸ö±ê×¼µÄ¾²Ì¬±í×÷Ϊ½á¹û£¬ÎÒÃǰÑÔÚʱ¼ät ¶Ô¶¯Ì¬±íA ×öµÄ²éѯq µÄ½á¹û±íʾΪq(A[t])¡£Èç¹ûÎÒÃÇ·´¸´ÔÚ¶¯Ì¬±íµÄ¿ìÕÕÉϼÆËã²éѯ½á¹û£¬ÒÔ»ñÈ¡½ø¶Èʱ¼äµã£¬ÎÒÃǽ«»ñµÃÐí¶à¾²Ì¬½á¹û±í£¬ËüÃÇËæ×Åʱ¼äµÄÍÆÒÆ¶ø¸Ä±ä£¬²¢ÇÒÓÐЧµÄ¹¹³ÉÒ»¸ö¶¯Ì¬±í¡£ÎÒÃÇÔÚ¶¯Ì¬±íµÄ²éѯÖж¨ÒåÈçÏÂÓïÒå¡£

²éѯq ÔÚ¶¯Ì¬±íA ÉϲúÉúÁËÒ»¸ö¶¯Ì¬±íR£¬ËüÔÚÿ¸öʱ¼äµãt µÈ¼ÛÓÚÔÚA[t]ÉÏÖ´ÐÐq µÄ½á¹û£¬¼´R[t]=q(A[t])¡£¸Ã¶¨ÒåÒâζ×ÅÔÚÅú´¦Àí±íºÍÁ÷±íÉÏÖ´ÐÐÏàͬµÄ²éѯq »á²úÉúÏàͬµÄ½á¹û¡£ÔÚÏÂÃæµÄÀý×ÓÖУ¬ÎÒÃǸø³öÁËÁ½¸öÀý×ÓÀ´ËµÃ÷¶¯Ì¬±í²éѯµÄÓïÒå¡£

ÔÚÏÂͼÖУ¬ÎÒÃÇ¿´µ½×ó²àµÄ¶¯Ì¬ÊäÈë±íA£¬¶¨Òå³É×·¼Óģʽ¡£ÔÚʱ¼ät=8ʱ£¬A ÓÉ6ÐУ¨±ê¼Ç³ÉÀ¶É«£©×é³É¡£ÔÚʱ¼ät=9 ºÍt=12 ʱ£¬ÓÐÒ»ÐÐ×·¼Óµ½A£¨·Ö±ðÓÃÂÌÉ«ºÍ³ÈÉ«±ê¼Ç£©¡£ÎÒÃÇÔÚ±íA ÉÏÔËÐÐÒ»¸öÈçͼÖмäËùʾµÄ¼òµ¥²éѯ£¬Õâ¸ö²éѯ¸ù¾ÝÊôÐÔk ·Ö×飬²¢Í³¼ÆÃ¿×éµÄ¼Ç¼Êý¡£ÔÚÓÒ²àÎÒÃÇ¿´µ½ÁËt=8£¨À¶É«£©£¬t=9£¨ÂÌÉ«£©ºÍt=12£¨³ÈÉ«£©Ê±²éѯq µÄ½á¹û¡£ÔÚÿ¸öʱ¼äµãt£¬½á¹û±íµÈ¼ÛÓÚÔÚʱ¼ät ʱÔÙ¶¯Ì¬±íA ÉÏÖ´ÐÐÅú²éѯ¡£

Õâ¸öÀý×ÓÖеIJéѯÊÇÒ»¸ö¼òµ¥µÄ·Ö×飨µ«ÊÇûÓд°¿Ú£©¾ÛºÏ²éѯ¡£Òò´Ë£¬½á¹û±íµÄ´óСÒÀÀµÓÚÊäÈë±íµÄ·Ö×é¼üµÄÊýÁ¿¡£´ËÍ⣬ֵµÃ×¢ÒâµÄÊÇ£¬Õâ¸ö²éѯ»á³ÖÐø¸üÐÂ֮ǰ²úÉúµÄ½á¹ûÐУ¬¶ø²»Ö»ÊÇÌí¼ÓÐÂÐС£

µÚ¶þ¸öÀý×ÓչʾÁËÒ»¸öÀàËÆµÄ²éѯ£¬µ«ÊÇÓÐÒ»¸öºÜÖØÒªµÄ²îÒì¡£³ýÁ˶ÔÊôÐÔk ·Ö×éÒÔÍ⣬²éѯ»¹½«¼Ç¼ÿ5ÃëÖÓ·Ö×éΪһ¸ö¹ö¶¯´°¿Ú£¬ÕâÒâζ×ÅËüÿ5ÃëÖÓ¼ÆËãÒ»´Îk µÄ×ÜÊý¡£ÔÙÒ»´ÎµÄ£¬ÎÒÃÇʹÓÃCalcite µÄ·Ö×é´°¿Úº¯ÊýÀ´Ö¸¶¨Õâ¸ö²éѯ¡£ÔÚͼµÄ×ó²à£¬ÎÒÃÇ¿´µ½ÊäÈë±íA £¬ÒÔ¼°ËüÔÚ¸½¼ÓģʽÏÂËæ×Åʱ¼ä¶ø¸Ä±ä¡£ÔÚÓҲ࣬ÎÒÃÇ¿´µ½½á¹û±í£¬ÒÔ¼°ËüËæ×Åʱ¼äÑݱ䡣

ÓëµÚÒ»¸öÀý×ӵĽá¹û²»Í¬µÄÊÇ£¬Õâ¸ö½á¹û±íËæ×Åʱ¼äÔö³¤£¬ÀýÈçÿ5ÃëÖÓ¼ÆËã³öеĽá¹ûÐУ¨¿¼Âǵ½ÊäÈë±íÔÚ¹ýÈ¥5ÃëÊÕµ½¸ü¶àµÄ¼Ç¼£©¡£ËäÈ»·Ç´°¿Ú²éѯ£¨Ö÷ÒªÊÇ£©¸üнá¹û±íµÄÐУ¬µ«ÊÇ´°¿Ú¾ÛºÏ²éѯֻ׷¼ÓÐÂÐе½½á¹û±íÖС£

ËäÈ»ÕâÆª²©¿ÍרעÓÚ¶¯Ì¬±íµÄSQL ²éѯµÄÓïÒ壬¶ø²»ÊÇÈçºÎÓÐЧµÄ´¦ÀíÕâÑùµÄ²éѯ£¬µ«ÊÇÎÒÃÇÒªÖ¸³öµÄÊÇ£¬ÎÞÂÛÊäÈë±íʲôʱºò¸üУ¬¶¼²»¿ÉÄܼÆËã²éѯµÄÍêÕû½á¹û¡£Ïà·´£¬²éѯ±àÒë³ÉÁ÷Ó¦Ó㬸ù¾ÝÊäÈëµÄ±ä»¯³ÖÐø¸üÐÂËüµÄ½á¹û¡£ÕâÒâζ×Ų»ÊÇËùÓеÄÓÐЧSQL ¶¼Ö§³Ö£¬Ö»ÓÐÄÇЩ³ÖÐøÐԵġ¢µÝÔöµÄºÍ¸ßЧ¼ÆËãµÄ±»Ö§³Ö¡£ÎÒÃǼƻ®ÔÚºóÐøµÄ²©¿ÍÎÄÕÂÖÐÌÖÂÛ¹ØÓÚÆÀ¹À¶¯Ì¬±íµÄSQL ²éѯµÄÏêϸÄÚÈÝ¡£

Éú³É¶¯Ì¬±í

²éѯ¶¯Ì¬±íÉú³ÉµÄ¶¯Ì¬±í£¬ÆäÏ൱ÓÚ²éѯ½á¹û¡£¸ù¾Ý²éѯºÍËüµÄÊäÈë±í£¬½á¹û±í»áͨ¹ý²åÈë¡¢¸üкÍɾ³ý³ÖÐø¸ü¸Ä£¬¾ÍÏñÆÕͨµÄÊý¾Ý±íÒ»Ñù¡£Ëü¿ÉÄÜÊÇÒ»¸ö²»¶Ï±»¸üеĵ¥ÐÐ±í£¬Ò»¸öÖ»²åÈë²»¸üÐÂµÄ±í£¬»òÕß½éÓÚÁ½ÕßÖ®¼ä¡£

´«Í³µÄÊý¾Ý¿âϵͳÔÚ¹ÊÕϺ͸´ÖƵÄʱºò£¬Í¨¹ýÈÕÖ¾ÖØ½¨±í¡£ÓÐһЩ²»Í¬µÄÈÕÖ¾¼¼Êõ£¬±ÈÈçUNDO¡¢REDOºÍUNDO/REDOÈÕÖ¾¡£¼ò¶øÑÔÖ®£¬UNDO ÈÕÖ¾¼Ç¼±»ÐÞ¸ÄÔªËØÖ®Ç°µÄÖµÀ´»Ø¹ö²»ÍêÕûµÄÊÂÎñ£¬REDO ÈÕÖ¾¼ÇÂ¼ÔªËØÐ޸ĵÄÐÂÖµÀ´ÖØ×öÒÑÍê³ÉÊÂÎñ¶ªÊ§µÄ¸Ä±ä£¬UNDO/REDO ÈÕ־ͬʱ¼Ç¼Á˱»ÐÞ¸ÄÔªËØµÄ¾ÉÖµºÍÐÂÖµÀ´³·ÏúδÍê³ÉµÄÊÂÎñ£¬²¢ÖØ×öÒÑÍê³ÉÊÂÎñ¶ªÊ§µÄ¸Ä±ä¡£»ùÓÚÕâЩÈÕÖ¾¼¼ÊõµÄÔ­Àí£¬¶¯Ì¬±í¿ÉÒÔת»»³ÉÁ½Àà¸ü¸ÄÈÕÖ¾Á÷£ºREDO Á÷ºÍREDO+UNDO Á÷¡£

ͨ¹ý½«±íÖеÄÐÞ¸Äת»»ÎªÁ÷ÏûÏ¢£¬¶¯Ì¬±í±»×ª»»Îªredo+undo Á÷¡£²åÈëÐÞ¸ÄÉú³ÉÒ»ÌõÐÂÐеIJåÈëÏûÏ¢£¬É¾³ýÐÞ¸ÄÉú³ÉÒ»Ìõ¾ÉÐеÄɾ³ýÏûÏ¢£¬¸üÐÂÐÞ¸ÄÉú³ÉÒ»Ìõ¾ÉÐеÄɾ³ýÏûÏ¢ÒÔ¼°Ò»ÌõÐÂÐеIJåÈëÏûÏ¢¡£ÐÐΪÈçÏÂͼËùʾ¡£

×ó²àÏÔʾÁËÒ»¸öά»¤ÔÚ¸½¼ÓģʽÏµĶ¯Ì¬±í£¬×÷ΪÖмä²éѯµÄÊäÈë¡£²éѯµÄ½á¹ûת»»ÎªÏÔʾÔڵײ¿µÄredo+undo Á÷¡£ÊäÈë±íµÄµÚÒ»Ìõ¼Ç¼(1,A)×÷Ϊ½á¹û±íµÄÒ»Ìõмͼ£¬Òò´Ë²åÈëÁËÒ»ÌõÏûÏ¢+(A,1)µ½Á÷ÖС£µÚ¶þÌõÊäÈë¼Ç¼k=¡®A¡¯(4,A)µ¼ÖÂÁ˽á¹û±íÖÐ (A,1)¼Ç¼µÄ¸üУ¬´Ó¶ø²úÉúÁËÒ»Ìõɾ³ýÏûÏ¢-(A,1)ºÍÒ»Ìõ²åÈëÏûÏ¢+(A,2)¡£ËùÓеÄÏÂÓβÙ×÷»òÊý¾Ý»ã×ܶ¼ÐèÒªÄܹ»ÕýÈ·´¦ÀíÕâÁ½ÖÖÀàÐ͵ÄÏûÏ¢¡£

ÔÚÁ½ÖÖÇé¿öÏ£¬¶¯Ì¬±í»áת»»³Éredo Á÷£ºÒªÃ´ËüÖ»ÊÇÒ»¸ö¸½¼Ó±í£¨¼´Ö»ÓвåÈëÐ޸ģ©£¬ÒªÃ´ËüÓÐÒ»¸öΨһµÄ¼üÊôÐÔ¡£¶¯Ì¬±íÉϵÄÿһ¸ö²åÈëÐ޸Ļá²úÉúÒ»ÌõÐÂÐеIJåÈëÏûÏ¢µ½redo Á÷¡£ÓÉÓÚredo Á÷µÄÏÞÖÆ£¬Ö»ÓдøÓÐΨһ¼üµÄ±íÄܹ»½øÐиüкÍɾ³ýÐ޸ġ£Èç¹ûÒ»¸ö¼ü´Ó¶¯Ì¬±íÖÐɾ³ý£¬ÒªÃ´ÊÇÒòΪÐб»É¾³ý£¬ÒªÃ´ÊÇÒòΪÐеļüÊôÐÔÖµ±»ÐÞ¸ÄÁË£¬ËùÒÔÒ»Ìõ´øÓб»ÒƳý¼üµÄɾ³ýÏûÏ¢·¢Ë͵½redo Á÷¡£¸üÐÂÐÞ¸ÄÉú³É´øÓиüеĸüÐÂÏûÏ¢£¬±ÈÈçÐÂÐС£ÓÉÓÚɾ³ýºÍ¸üÐÂÐ޸ĸù¾ÝΨһ¼üÀ´¶¨Ò壬ÏÂÓβÙ×÷ÐèÒªÄܹ»¸ù¾Ý¼üÀ´·ÃÎÊ֮ǰµÄÖµ¡£ÏÂͼչʾÁËÈçºÎ½«ÉÏÊöÏàͬ²éѯµÄ½á¹û±íת»»Îªredo Á÷¡£

²åÈëµ½¶¯Ì¬±íµÄ(1,A)²úÉúÁË+(A,1)²åÈëÏûÏ¢¡£²úÉú¸üеÄ(4,A)Éú³ÉÁË*(A,2)µÄ¸üÐÂÏûÏ¢¡£

Redo Á÷µÄͨ³£×ö·¨Êǽ«²éѯ½á¹ûдµ½½ö¸½¼ÓµÄ´æ´¢ÏµÍ³£¬±ÈÈç¹ö¶¯Îļþ»òÕßKafka Ö÷Ì⣬»òÕßÊÇ»ùÓÚ¼ü·ÃÎʵÄÊý¾Ý´æ´¢£¬±ÈÈçCassandra¡¢¹ØÏµÐÍDBMSÒÔ¼°Ñ¹ËõµÄKafka Ö÷Ìâ¡£»¹¿ÉÒÔʵÏÖ½«¶¯Ì¬±í×÷ΪÁ÷Ó¦ÓõĹؼüµÄÄÚǶ²¿·Ö£¬À´ÆÀ¼Û³ÖÐø²éѯºÍ¶ÔÍⲿϵͳµÄ²éѯÄÜÁ¦£¬ÀýÈçÒ»¸öÒDZíÅÌÓ¦Óá£

Çл»µ½¶¯Ì¬±í·¢ÉúµÄ¸Ä±ä

ÔÚ1.2°æ±¾ÖУ¬Flink ¹ØÏµAPI µÄËùÓÐÁ÷²Ù×÷£¬ÀýÈç¹ýÂ˺ͷÖ×é´°¿Ú¾ÛºÏ£¬Ö»»á²úÉúÐÂÐУ¬²¢ÇÒ²»ÄܸüÐÂÏÈǰ·¢²¼µÄ½á¹û¡£ Ïà±È֮ϣ¬¶¯Ì¬±íÄܹ»´¦Àí¸üкÍɾ³ýÐ޸ġ£ ÏÖÔÚÄã¿ÉÄÜ»áÎÊ×Ô¼º£¬µ±Ç°°æ±¾µÄ´¦ÀíģʽÈçºÎÓëÐµĶ¯Ì¬±íÄ£ÐÍÏà¹Ø£¿ API µÄÓïÒå»áÍêÈ«¸Ä±ä£¬ÎÒÃÇÐèÒª´ÓÍ·¿ªÊ¼ÖØÐÂʵÏÖAPI£¬ÒÔ´ïµ½ËùÐèµÄÓïÒ壿

ËùÓÐÕâЩÎÊÌâµÄ´ð°¸ºÜ¼òµ¥¡£µ±Ç°µÄ´¦ÀíÄ£ÐÍÊǶ¯Ì¬±íÄ£Ð͵ÄÒ»¸ö×Ó¼¯¡£ ʹÓÃÎÒÃÇÔÚÕâÆªÎÄÕÂÖнéÉܵÄÊõÓµ±Ç°µÄÄ£ÐÍͨ¹ý¸½¼Óģʽ½«Á÷ת»»Îª¶¯Ì¬±í£¬¼´Ò»¸öÎÞÏÞÔö³¤µÄ±í¡£ ÓÉÓÚËùÓвÙ×÷½ö½ÓÊܲåÈë¸ü¸Ä²¢ÔÚÆä½á¹û±íÉÏÉú³É²åÈë¸ü¸Ä£¨¼´£¬²úÉúÐÂÐУ©£¬Òò´ËËùÓÐÔÚ¶¯Ì¬¸½¼Ó±íÉÏÒѾ­Ö§³ÖµÄ²éѯ£¬½«Ê¹ÓÃÖØ×öÄ£ÐÍת»»»ØDataStreams£¬½öÓÃÓÚ¸½¼Ó±í¡£ Òò´Ë£¬µ±Ç°Ä£Ð͵ÄÓïÒå±»ÐµĶ¯Ì¬±íÄ£ÐÍÍêÈ«¸²¸ÇºÍ±£Áô¡£

½áÂÛÓëÕ¹Íû

Flink µÄ¹ØÏµAPI ÔÚÈκÎʱºò¶¼·Ç³£ÊʺÏÓÃÓÚÁ÷·ÖÎöÓ¦Ó㬲¢ÔÚ²»Í¬µÄÉú²ú»·¾³ÖÐʹÓá£ÔÚÕâÆª²©ÎÄÖУ¬ÎÒÃÇÌÖÂÛÁËTable API ºÍSQL µÄδÀ´¡£ ÕâһŬÁ¦½«Ê¹Flink ºÍÁ÷´¦Àí¸üÒ×ÓÚ·ÃÎÊ¡£ ´ËÍ⣬ÓÃÓÚ²éѯÀúÊ·ºÍʵʱÊý¾ÝµÄͳһÓïÒåÒÔ¼°²éѯºÍά»¤¶¯Ì¬±íµÄ¸ÅÄ½«Äܹ»ÏÔ׿ò»¯Ðí¶àÁîÈËÐ˷ܵÄÓÃÀýºÍÓ¦ÓóÌÐòµÄʵÏÖ¡£ ÓÉÓÚÕâÆªÎÄÕÂרעÓÚÁ÷ºÍ¶¯Ì¬±íµÄ¹ØÏµ²éѯµÄÓïÒ壬ÎÒÃÇûÓÐÌÖÂÛ²éѯִÐеÄϸ½Ú£¬°üÀ¨ÄÚ²¿Ö´Ðг·Ïú£¬´¦ÀíºóÆÚʼþ£¬Ö§³Ö½á¹ûÔ¤ÀÀ£¬ÒÔ¼°±ß½ç¿Õ¼äÒªÇó¡£ ÎÒÃǼƻ®ÔÚÉÔºóµÄʱ¼äµã·¢²¼ÓйشËÖ÷ÌâµÄºóÐø²©¿ÍÎÄÕ¡£

½ü¼¸¸öÔÂÀ´£¬Flink ÉçÇøµÄÐí¶à³ÉÔ±Ò»Ö±ÔÚÌÖÂۺ͹±Ï×¹ØÏµAPI¡£ µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÃÇÈ¡µÃÁ˺ܴóµÄ½ø²½¡£ ËäÈ»´ó¶àÊý¹¤×÷¶¼×¨×¢ÓÚÒÔ¸½¼Óģʽ´¦ÀíÁ÷£¬µ«ÊÇÈÕ³ÌÉϵÄÏÂÒ»²½ÊÇ´¦Àí¶¯Ì¬±íÒÔÖ§³Ö¸üÐÂÆä½á¹ûµÄ²éѯ¡£ Èç¹ûÄú¶ÔʹÓÃSQL´¦ÀíÁ÷³ÌµÄÏë·¨¸Ðµ½ÐË·Ü£¬²¢Ï£ÍûΪ´Ë×ö³ö¹±Ï×£¬ÇëÌṩ·´À¡£¬¼ÓÈëÓʼþÁбíÖеÄÌÖÂÛ»ò»ñÈ¡JIRA ÎÊÌâ¡£

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

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

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

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