Download presentation
Presentation is loading. Please wait.
Published byLynette Perry Modified over 8 years ago
1
Stream SQL, Rules, Subscriptions: It’s All The Same Hans-Arno Jacobsen Bell University Laboratory Chair Middleware Systems Research Group University of Toronto MIDDLEWARE SYSTEMS RESEARCH GROUP http://www.padres.msrg.utoronto.ca Go PSQL !
2
Event Processing with PADRES PADRES Event Language – A1: [class = item], [shipID = *], [weight < 10] – P1: [class, item],[shipID, ACME123],[weight, 4] – S1: [class = item], [weight > 3] Initially implemented with JESS (i.e., as rules) – LHS statements encode atomic subscriptions – LHS encode composite subscriptions – RHS encode notification semantics (e.g., forwarding logic) IF LHS op LHS op LHS THEN RHS PADRES SQL (PSQL) modeled after SQL for event and event stream processing
3
PSQL Schema Definition CREATE TABLE (attr op val [, attr op val]* ) CREATE TABLE (class = invoke, service = *, item = *, id = *) Advertisement: [class, =, invoke],[service, =,*],[item, =, *],[id, =, *] CREATE TABLE (class = result, service = *, item = *, id = *, state = *) Advertisement: [class, =, result],[service, =,*],[item, =, *], [id, =, *],[state,=,*]
4
Publishing INSERT ( attr [, attr]* ) VALUES ( val [, val]* ) INSERT (class, service, id) VALUES (invoke, ItemView, a0012) Publication: [class,invoke],[service,ItemView],[id, a0012]
5
Subscribing Querying and subscribing to data SELECT[ attr | function]* [FROM event pattern] WHERE [ attr op val]* [ GROUP BY attr*] [ HAVING function* ] [ … ] clause is optional We support AVG, MIN, MAX, COUNT as AVG(attr,N)
6
Example Atomic and hybrid subscription: SELECT* WHERE class = invoke, service = ItemView, item = T-Shirt, start_time = NOW – 1h, end_time = NOW + 1h [class, =, invoke], [service, =, ItemView],[item, =, T-Shirt], [start_time, =, NOW – 1h], [end_time, =, NOW + 1h]
7
Example Composite and hybrid subscription SELECTe2.service, e2.item, e2.id FROMe1 AND e2 WHERE e1.class = result, e1.service = ItemShipped, e1.state = 2, e2.class = invoke, e2.service = ItemView, e1.start_time = NOW – 2months, e1.item = e2.item [class,=,result],[service, =, ItemShipped],[item,=,$X], [state, =, 2],[start_time, =, NOW – 2 months], AND [class,=, invoke],[service, =, ItemView],[item,=,$X]
8
Historic Event Query DB Admin Publisher Subscriber P1P2 P3 P4P5 Publication space P(A) 1 3 2 4 6 5 P S Partition the publication space Assign partitions Partition 1 2 3 45 8CANOE Summer School, Norway, 2009
9
Assigning A Partition AdvertisementSubscriptionPublication DB Admin Publisher Subscriber [class,DB_CONTROL],[command,STORE],[db,B3-DB],[partition_spec,`[class,=,reading],[level,>,0]`][class,=,reading],[level,>,0] Partition 1 2 3 4 5 11 2 Partitioning Partial replication Full replication 1 2 34 6 5 P S [class,DB_CONTROL],[command,STORE],[db,B3-DB], [partition_spec,” [class,=,reading],[level,>,0] ”] 9CANOE Summer School, Norway, 2009
10
Challenges & Obstacles Remaining Stream SQL ≈ Rules ≈ Subscriptions A common formal framework – A query algebra or calculus Simple (i.e., can be described in 2 pages or less) Algorithmic issues in processing expressions
11
The PSQL Language Schema or type definition CREATE TABLE (attr op val [, attr op val]* ) CREATE TABLE (class = invoke, service = *, item = *, id = *) Adv: [class, =, invoke],[service, =,*],[item, =, *],[id, =, *] CREATE TABLE (class = result, service = *, item = *, id = *, state = *) Adv: [class, =, invoke],[service, =,*],[item, =, *],[id, =, *],[state,=,*] Produce data INSERT ( attr [, attr]* ) VALUES ( val [, val]* ) INSERT (class, service, id) VALUES (invoke, ItemView, a0012) Pub: [class,invoke],[service,ItemView],[id, a0012]
12
Retail Scenario B B B B B Customer Web Services Manager Delivery Services
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.