{"id":253628,"date":"2016-05-13T00:00:00","date_gmt":"2016-05-09T07:00:53","guid":{"rendered":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/?post_type=msr-research-item&#038;p=253628"},"modified":"2016-07-15T15:31:49","modified_gmt":"2016-07-15T22:31:49","slug":"regular-programming-over-data-streams","status":"publish","type":"msr-video","link":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/video\/regular-programming-over-data-streams\/","title":{"rendered":"Regular Programming over Data Streams"},"content":{"rendered":"<p>The problem of programming stream transformations is becoming increasingly important with the emergence of large data streams such as from sensors, internet routers, and gene sequences. Many monitoring queries&#8212;for example, what is the average number of packets transmitted by a router per second&#8212;and policy actions depend on temporal properties, such as recognizing certain patterns of events, and iteratively aggregating results from these patterns. In this presentation, I will describe the model of quantitative regular expressions (QREs), a simple formalism to conveniently express such queries. Starting with a small set of base functions, QREs are built using function combinators such as choice, concatenation, and iteration, similar to how regular expressions are combined using union, concatenation and Kleene-*. The framework is parameterized by the cost operations of interest, such as max, min, sum, average and rank, and even generalizes to non-numerical output domains such as strings. Appropriate expressiveness results hold as a function of the chosen cost operations. QREs are an exciting framework because they have a well-understood theory, and can be easily compiled into fast streaming evaluation algorithms. In many cases, memory usage is bounded by a constant, and in some other cases, accurate queries can be automatically converted into approximate function evaluators. I will conclude by describing potential applications in monitoring cyber-physical systems and other data stream sources and future work into automatically parallelizing stream queries.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The problem of programming stream transformations is becoming increasingly important with the emergence of large data streams such as from sensors, internet routers, and gene sequences. Many monitoring queries&#8212;for example, what is the average number of packets transmitted by a router per second&#8212;and policy actions depend on temporal properties, such as recognizing certain patterns of [&hellip;]<\/p>\n","protected":false},"featured_media":257694,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","msr_hide_image_in_river":0,"footnotes":""},"research-area":[13555],"msr-video-type":[206954],"msr-locale":[268875],"msr-post-option":[],"msr-session-type":[],"msr-impact-theme":[],"msr-pillar":[],"msr-episode":[],"msr-research-theme":[],"class_list":["post-253628","msr-video","type-msr-video","status-publish","has-post-thumbnail","hentry","msr-research-area-search-information-retrieval","msr-video-type-microsoft-research-talks","msr-locale-en_us"],"msr_download_urls":"","msr_external_url":"https:\/\/youtu.be\/Mh2ZF50DQ_Y","msr_secondary_video_url":"","msr_video_file":"","_links":{"self":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/253628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-video"}],"about":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-video"}],"version-history":[{"count":0,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/253628\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/media\/257694"}],"wp:attachment":[{"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/media?parent=253628"}],"wp:term":[{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=253628"},{"taxonomy":"msr-video-type","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-video-type?post=253628"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=253628"},{"taxonomy":"msr-post-option","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-post-option?post=253628"},{"taxonomy":"msr-session-type","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-session-type?post=253628"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=253628"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=253628"},{"taxonomy":"msr-episode","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-episode?post=253628"},{"taxonomy":"msr-research-theme","embeddable":true,"href":"https:\/\/cm-edgetun.pages.dev\/en-us\/research\/wp-json\/wp\/v2\/msr-research-theme?post=253628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}