1 / 58

High-performance Pattern Detection and Discovery for Databases and Data Streams

Explore the use of query languages and scalable systems for detecting complex patterns in databases and data streams. Learn about efficient algorithms for mining large amounts of data and extracting useful patterns.

temples
Download Presentation

High-performance Pattern Detection and Discovery for Databases and Data Streams

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UCLA Computer Science Department High-performancePattern Detection and Discoveryfor Databases and Data Streams Barzan Mozafari Adviser: Prof. Carlo Zaniolo Committee Members: Prof. Junghoo Cho, Prof. D. Stott Parker, and Prof. Mark Hansen Winter 2011

  2. Big Picture • Query Languages that allow for the expression of complex patterns • Scalable Systems that support such languages and can handle massive, high-arrival data • Efficient, One-pass Algorithms that can mine large amounts of stored or streaming data and extract useful patterns Query Patterns Matches Data Mining Data

  3. Overview • Introduction • Query Languages for Pattern Detection • Kleene-* Constructs in SQL • Nested Words[SIGMOD’10, VLDB’10] • Optimization [Work in progress] • XSeq [Work in progress] • Conclusion

  4. Complex Event Patterns • Sequences in DBs and CEP over data streams • Academic and industrial interest: • SQL-TS [PODS ‘01] • SASE [2006], SASE+ [2008] • SQL Change proposal, 2007 (by Oracle, IBM and Streambase) • Other industrial and academic languages: • Cayuga & CEL • CEDR • Microsoft CEP & LINQ

  5. Our Contribution: K*SQL • A powerful language for: i. Expressing more complex patterns on relational streams and sequences ii. Querying data with more complex structures, e.g, XML and genomic data • A unifying engine for sequence patterns and XML • New optimization techniques • pattern search over nested words • Efficient query execution backend for other languages • XSeq: An XPath-resembling language to bring Kleene-* to XML applications

  6. Regular Expressions in SQL rfid_readings (Time, SensorType, ensorId, ItemId)

  7. Nested Kleene-*: K*SQL

  8. Employees who spend >1 hour in the lab but leave without going to decontamination room Lab Lab Room2 Room12 Room7 Lab Room2 Room7 SELECT badgeID FROM rfid PARTITIONBY badgeID ORDERBY timestamp ASPATTERN Exit

  9. Employees who spend >1 hour in the lab but leave without going to decontamination room L Lab L Lab Room2 Room12 Room7 Lab Room2 Room7 SELECT badgeID FROM rfid PARTITIONBY badgeID ORDERBY timestamp ASPATTERN ( L ) WHEREL.room = ‘Lab’ Exit

  10. Employees who spend >1 hour in the lab but leave without going to decontamination room L Lab L+ L Lab Room2 Room12 Room7 Lab Room2 Room7 SELECT badgeID FROM rfid PARTITIONBY badgeID ORDERBY timestamp ASPATTERN( L+ ) WHERE L.room = ‘Lab’ Exit

  11. Employees who spend >1 hour in the lab but leave without going to decontamination room L Lab L+ L Lab O Room2 O+ O Room12 O Room7 Lab Room2 Room7 SELECT badgeID FROM rfid PARTITIONBY badgeID ORDERBY timestamp ASPATTERN ( L+ O+ ) WHERE L.room = ‘Lab’ ANDO.room != ‘Decontamination’ Exit

  12. Employees who spend >1 hour in the lab but leave without going to decontamination room L Lab L+ L Lab R R Room2 O+ R Room12 R Room7 L+ L Lab R R Room2 O+ R Room7 SELECT badgeID FROM rfid PARTITIONBY badgeID ORDERBY timestamp ASPATTERN ( (R: L+ O+) ) WHERE L.room = ‘Lab’ AND O.room != ‘Decontamination’ Exit

  13. Employees who spend >1 hour in the lab but leave without going to decontamination room L Lab L+ L Lab R R Room2 O+ R Room12 R Room7 L+ R+ L Lab R R Room2 O+ R Room7 SELECT badgeID FROM rfid PARTITIONBY badgeID ORDERBY timestamp ASPATTERN ( (R: L+ O+)+ ) WHERE L.room = ‘Lab’ AND O.room != ‘Decontamination’ Exit

  14. Employees who spend >1 hour in the lab but leave without going to decontamination room L Lab L+ L Lab R R Room2 O+ R Room12 R Room7 L+ R+ L Lab R R Room2 O+ R Room7 SELECT badgeID FROM rfid PARTITIONBY badgeID ORDERBY timestamp ASPATTERN ( (R: L+ O+)+ X) WHERE L.room = ‘Lab’ AND O.room != ‘Decontamination’ ANDX.room = ‘Exit’ X Exit

  15. Employees who spend >1 hour in the lab but leave without going to decontamination room L Lab L+ L Lab R R Room2 O+ R Room12 R Room7 L+ R+ L Lab R R Room2 O+ R Room7 SELECT badgeID FROM rfid PARTITIONBY badgeID ORDERBY timestamp ASPATTERN( (R: L+ O+)+ X) WHERE L.room = ‘Lab’ AND O.room != ‘Decontamination’ AND X.room = ‘Exit’ ANDsum(R.Last(L).timestamp – R.First(L).timestamp) > 3600 X Exit

  16. Strictly More Expressive, through:(i)Nested Kleene-*, (ii) Labels, i.e. Aliases SELECT badgeID FROM rfid PARTITIONBY badgeID ORDERBY timestamp ASPATTERN( (R: L+ O*)+ X) WHERE L.room = ‘Lab’ AND O.room != ‘Decontamination’ AND X.room = ‘Exit’ AND sum(R.Last(L).timestamp – R.First(L).timestamp) > 3600

  17. Strictly More Expressive, through:(i)Nested Kleene-*, (ii) Labels, i.e. Aliases L Lab L+ L Lab R R Room2 O+ R Room12 R Room7 L+ R+ L Lab R R Room2 O+ R Room7 SELECT badgeID, Last(R).Last(L).timestamp – First(R).First(L).timestamp) FROM rfid PARTITIONBY badgeID ORDERBY timestamp ASPATTERN( (R: L+ O*)+ X) WHERE L.room = ‘Lab’ AND O.room != ‘Decontamination’ AND X.room = ‘Exit’ AND sum(R.Last(L).timestamp – R.First(L).timestamp) > 3600 X Exit

  18. K*SQL Checkpoint • A powerful language with a very efficient implementation based on FSA • Subsumes SQL-MR, SASE+, Cayuga, SQL-TS • Many interesting applications • including queries on semistructured documents Very natural question: Can we handle full XML?

  19. Automata and XML • Word Automata (FSA): only linear structure is explicit, cannot model parenthesis languages • Ordered Tree Automata (OTA): only hierarchical structure is explicit, exponentially less succinct for word queries • Pushdown Automata (PDA): Many problems are undecidable; expensive complexity

  20. Advances in the Automata World Nested Words [Alur’06] • Linear sequence + well-nested edges • Positions labeled with symbols in S a2 a1 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 Positions classified as: • Call positions: both linear and hierarchical successors • Return positions: both linear and hierarchical predecessors • Internal positions: otherwise 20

  21. Nested Word Applications U A U A U A G G G G G C C C C C XML Document Program RNA Sequence <conference> <name> CAV 2006 </name> <location> <city> Seattle </city> <hotel> Sheraton </hotel> </location> <sponsor> MSR </sponsor> <sponsor> Cadence </sponsor> </conference> global int x; bool P() { … x = 3; if Q x = 1 ; … } bool Q () { local int y; … x = y; return (x==0); } Primary structure: Linear sequence of nucleotides (A, C, G, U) Secondary structure: Hydrogen bonds between nucleotides

  22. Odious Comparison NWA is exponentially more succinct than Tree Automata No query language has been proposed for NW

  23. XML Sigmod Record:SAX-3 <!ELEMENTSigmodRecord(issue)* > <!ELEMENTissue (volume,number,articles) > <!ELEMENTvolume (#PCDATA)> <!ELEMENTnumber (#PCDATA)> <!ELEMENTarticles (article)* > <!ELEMENTarticle(title,initPage,endPage,authors) > <!ELEMENTtitle (#PCDATA)> <!ELEMENTinitPage (#PCDATA)> <!ELEMENTendPage (#PCDATA)> <!ELEMENTauthors (author)* > <!ELEMENTauthor (#PCDATA)> <!ATTLISTauthorposition CDATA #IMPLIED>

  24. XPath <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. Find articles of Carlo Zanioloas the 2nd co-author //article[authors/author [@position = "01" and text()="Carlo Zaniolo"] ]/title/text()

  25. K*SQL Question: Can we query nested words in K*SQL? In particular: can we express traditional XML queries • i.e. those often expressed via XPath/XQuery:

  26. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <aut hors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN ( ) WHERE

  27. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt ) WHEREOpArt.value = ‘<article>’

  28. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt ) WHEREOpArt = open(‘article’)

  29. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl ) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’)

  30. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.tokenAS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’)

  31. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl ) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’)

  32. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl E* ) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’) ANDisElement(E)

  33. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl E* OpAuths ) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’) AND isElement(E) ANDOpAuths = open(‘authors’)

  34. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl E* OpAuths E* ) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’) AND isElement(E) ANDOpAuths = open(‘authors’) ANDClArt = close(‘article’)

  35. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl E* OpAuths E* OpAu ) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’) AND isElement(E) ANDOpAuths = open(‘authors’) ANDOpAu = open(‘author’)

  36. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl E* OpAuths E* OpAu Pos ) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’) AND isElement(E) ANDOpAuths = open(‘authors’) ANDOpAu = open(‘author’) ANDpos.type = ‘attr’ AND pos.value = ’01’ AND pos.token = ‘position’

  37. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl E* OpAuths E* OpAu Pos ) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’) AND isElement(E) ANDOpAuths = open(‘authors’) ANDOpAu = open(‘author’) ANDpos = attribute (‘position’, ’01’)

  38. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl E* OpAuths E* OpAu Pos Author ) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’) AND isElement(E) ANDOpAuths = open(‘authors’) ANDOpAu = open(‘author’) AND pos = attribute(‘position’, ‘01’) ANDauthor.token = `Carlo Zaniolo’

  39. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl E* OpAuths E* OpAu Pos Author ClAu ) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’) AND isElement(E) ANDOpAuths = open(‘authors’) ANDOpAu = open(‘author’) AND pos = attribute(‘position’, ‘01’) AND author.value = `Carlo Zaniolo’ ANDClAu = close(‘author’)

  40. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl E* OpAuths E* OpAu Pos Author ClAu E* ) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’) AND isElement(E) ANDOpAuths = open(‘authors’) ANDOpAu = open(‘author’) AND pos = attribute(‘position’, ‘01’) AND author.value = `Carlo Zaniolo’ ANDClAu = close(‘author’)

  41. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl E* OpAuths E* OpAu Pos Author ClAu E* ClAuths ClArt) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’) AND isElement(E) ANDOpAuths = open(‘authors’) ANDOpAu = open(‘author’) AND pos = attribute(‘position’, ‘01’) AND author.token = `Carlo Zaniolo’ ANDClAu = close(‘author’) ANDClAuths = close(‘authors’) ANDClArt = close(‘article’)

  42. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl E* OpAuths E* OpAu Pos Author ClAu E* ClAuths ClArt) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’) AND isElement(E) ANDOpAuths = open(‘authors’) ANDOpAu = open(‘author’) AND pos = attribute(‘position’, ‘01’) AND author.token = `Carlo Zaniolo’ ANDClAu = close(‘author’) ANDClAuths = close(‘authors’) ANDClArt = close(‘article’)

  43. Find articles of Carlo Zaniolo as the 2nd co-author <SigmodRecord> <issue> … <article> <title> Implementation of GEM </title> <initPage> 45 </initPage> … <authors> … <author position="01"> Carlo Zaniolo </author> … </authors> </article> …. SELECTTitle.token AS articleName FROM sigmod_record AS PATTERN (OpArt OpTitl Title ClTitl E* OpAuths E* OpAu Pos Author ClAu E* ClAuths ClArt) WHERE OpArt = open(‘article’) ANDOpTitl = open(‘title’) ANDClTitl = close(‘title’) AND isElement(E) ANDOpAuths = open(‘authors’) ANDOpAu = open(‘author’) AND pos = attribute(‘position’, ‘01’) AND author.token = `Carlo Zaniolo’ ANDClAu = close(‘author’) ANDClAuths = close(‘authors’) ANDClArt = close(‘article’)

  44. Sequence Queries over XML: ‘W’-Patterns in Stocks <!ELEMENTStocks(Stock)* > <!ELEMENTStock(symbol, date, price, volume)> <!ELEMENTsymbol (#PCDATA)> <!ELEMENTdate (#PCDATA)> <!ELEMENTprice (#PCDATA)> <!ELEMENTvolume (#PCDATA)>

  45. W-patterns in NASDAQ transactions with volume>1000 <Stock symbol=“YHOO” date=“01-01-2010 23:10:00”> <price> 18.50 </price> <volume> 21 </volume> </Stock> <Stock symbol=“YHOO” date=“01-01-2010 23:16:00”> <price> 18.70 </price> <volume> 11 </volume> </Stock> … SELECT FIRST(Z).FIRST(X).Sym.token FROM Nasdaq PARTITION BY Y.X.Sym.token AS PATTERN (Z: (X: OpSt Sym Date OP Price1 CP OpV Volume ClV ClSt)* (Y: OpSt Sym Date OP Price2 CP OpV Volume ClV ClSt)* )^2 WHERE OpSt = open(‘Stock’) AND ClSt = open(‘Stock’) AND OP = open(‘price’) AND CP = close(‘price’) AND OpV = open(‘volume’) AND ClV = close(‘volume’) AND INT(volume.token) >= 100 AND Z.X.price1.token < Z.PREV(X).price1.token AND Z.Y.price2.token > Z.PREV(Y).price2.token

  46. W-patterns in NASDAQ transactions with volume>1000 <Stock symbol=“YHOO” date=“01-01-2010 23:10:00”> <price> 18.50 </price> <volume> 21 </volume> </Stock> <Stock symbol=“YHOO” date=“01-01-2010 23:16:00”> <price> 18.70 </price> <volume> 11 </volume> </Stock> … SELECT FIRST(Z).FIRST(X).Sym.token FROM Nasdaq PARTITION BY Y.X.Sym.token AS PATTERN (Z: (X: OpSt Sym Date OP Price1 CP OpV Volume ClV ClSt)* (Y: OpSt Sym Date OP Price2 CP OpV Volume ClV ClSt)* )^2 WHERE OpSt = open(‘Stock’) AND ClSt = open(‘Stock’) AND OP = open(‘price’) AND CP = close(‘price’) AND OpV = open(‘volume’) AND ClV = close(‘volume’) AND INT(volume.token) >= 100 AND Z.X.price1.token < Z.PREV(X).price1.token AND Z.Y.price2.token > Z.PREV(Y).price2.token

  47. W-patterns in NASDAQ transactions with volume>1000 Y* Y* X* X* <Stock symbol=“YHOO” date=“01-01-2010 23:10:00”> <price> 18.50 </price> <volume> 21 </volume> </Stock> <Stock symbol=“YHOO” date=“01-01-2010 23:16:00”> <price> 18.70 </price> <volume> 11 </volume> </Stock> … SELECT FIRST(Z).FIRST(X).Sym.token FROM Nasdaq PARTITION BY Y.X.Sym.token AS PATTERN (Z: (X: OpSt Sym Date OP Price1 CP OpV Volume ClV ClSt)* (Y: OpSt Sym Date OP Price2 CP OpV Volume ClV ClSt)* )^2 WHERE OpSt = open(‘Stock’) AND ClSt = open(‘Stock’) AND OP = open(‘price’) AND CP = close(‘price’) AND OpV = open(‘volume’) AND ClV = close(‘volume’) AND INT(volume.token) >= 100 AND Z.X.price1.token < Z.PREV(X).price1.token AND Z.Y.price2.token > Z.PREV(Y).price2.token

  48. Optimization in K*SQL • Compile-Time: • Inferring inter-predicate implications • Query re-writing, e.g. adding more constrainst • Greedy predicate assignment • Run-Time: Avoiding unnecessary backtracks • VPSearch: Extending KMP search algorithm to nested words and visibly pushdown words • Optimizing non-determinisitc queries • i.e. all-match query modes

  49. K*SQL vs. XML Engines

  50. References • [1] Data mining: Staking a claim on your privacy. Information and Privacy Commissioner, Ontario, Jan. 1998. • [2] Directive on privacy protection. European Union, Oct. 1998. • [3] The end of privacy. The Economist, May 1999. • [4] Daniel J. Abadi, Donald Carney, Ugur C etintemel, Mitch Cherniack, Christian Convey, C. Erwin, Eduardo F. Galvez, M. Hatoun, Anurag Maskey, Alex Rasin, A. Singer, Michael Stonebraker, Nesime Tatbul, Ying Xing, R. Yan, and Stanley B. Zdonik. Aurora: A data stream management system. In SIGMOD Conference, page 666, 2003. • [5] Mads Sig Ager, Olivier Danvy, and Henning Korsholm Rohde. Fast partial evaluation of pattern matching in strings. In PEPM, 2003. • [6] Jagrati Agrawal, Yanlei Diao, Daniel Gyllstrom, and Neil Immerman. Ecient pattern matching over event streams. In SIGMOD '08: Proceedings of the 2008 ACM SIGMOD international conference on Management of data, pages 147{160, New York, NY, USA, 2008. ACM.

More Related