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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Flink¶¯Ì¬±íµÄÁ¬Ðø²éѯ
 
×÷Õߣº¹ýÍù¼ÇÒä
  2943  次浏览      29
 2019-11-5 
 
±à¼­ÍƼö:
ÎÄÕÂÖ÷Òª½²ÊöÓÐFlink µÄ¹ØÏµ API£ºTable API ºÍ SQL£¬¶¯Ì¬±íµÄ³ÖÐø²éѯ,ÔÚÁ÷Öж¨Ò嶯̬, ²éѯ¶¯Ì¬, Éú³É¶¯Ì¬±íµÈÏ£Íû¶Ô´ó¼ÒÓаïÖú¡£
±¾ÎÄÀ´×ÔÓÚ΢ÐźÅiteblog_hadoop£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼­£¬ÍƼö

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

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

²éѯ¶¯Ì¬±í

Éú³É¶¯Ì¬±í

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

ÆÀ¹À¶¯Ì¬±íÉ쵀 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 ¶¼Ö§³Ö£¬Ö»ÓÐÄÇЩ³ÖÐøÐԵġ¢µÝÔöµÄºÍ¸ßЧ¼ÆËãµÄ±»Ö§³Ö¡£

Éú³É¶¯Ì¬±í

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

´«Í³µÄÊý¾Ý¿âϵͳÔÚ¹ÊÕϺ͸´ÖƵÄʱºò£¬Í¨¹ýÈÕÖ¾ÖØ½¨±í¡£ÓÐһЩ²»Í¬µÄÈÕÖ¾¼¼Êõ£¬±ÈÈç 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 ºÍÁ÷´¦Àí¸üÒ×ÓÚ·ÃÎÊ¡£ ´ËÍ⣬ÓÃÓÚ²éѯÀúÊ·ºÍʵʱÊý¾ÝµÄͳһÓïÒåÒÔ¼°²éѯºÍά»¤¶¯Ì¬±íµÄ¸ÅÄ½«Äܹ»ÏÔ׿ò»¯Ðí¶àÁîÈËÐ˷ܵÄÓÃÀýºÍÓ¦ÓóÌÐòµÄʵÏÖ¡£ ÕâÆªÎÄÕÂרעÓÚÁ÷ºÍ¶¯Ì¬±íµÄ¹ØÏµ²éѯµÄÓïÒ壬ÎÒÃÇûÓÐÌÖÂÛ²éѯִÐеÄϸ½Ú£¬°üÀ¨ÄÚ²¿Ö´Ðг·Ïú£¬´¦ÀíºóÆÚʼþ£¬Ö§³Ö½á¹ûÔ¤ÀÀ£¬ÒÔ¼°±ß½ç¿Õ¼äÒªÇó¡£

   
2943 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

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

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

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