Towards exploiting meta programming for web services gottfried vossen university of m nster germany
This presentation is the property of its rightful owner.
Sponsored Links
1 / 29

Overview PowerPoint PPT Presentation


  • 65 Views
  • Uploaded on
  • Presentation posted in: General

Towards Exploiting Meta-Programming for Web Services Gottfried Vossen University of Münster, Germany. Overview. Background: PL and DB getting back together again Ways to integrate data and programs (to “meta-program” databases) “Service-SQL”: SQL at your (web) service. Background.

Download Presentation

Overview

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Towards exploiting meta programming for web services gottfried vossen university of m nster germany

Towards ExploitingMeta-Programmingfor Web ServicesGottfried VossenUniversity of Münster, Germany


Overview

Overview

  • Background: PL and DB getting back together again

  • Ways to integrate data and programs(to “meta-program” databases)

  • “Service-SQL”: SQL at your (web) service


Background

Background

  • Stonebraker: QUEL as a data type (1984)

  • Gray, Turing award speech (1993)

  • Asilomar Report (1998)

  • Gray & Compton: A Call to Arms, ACM Queue (2005)

    Treat procedural data as data (not as text); give up the separation of data and programs!

    Done already in data dictionaries, OR databases, active databases, web logs, …


Approach i

Approach I

  • The sky is the limit: the Reflective Algebra

    • Data in data relations, programs (RA expressions) in separate program relations (over a generic format)

    • Allows to compute the PTIME queries (since program relations can be created and evaluated dynamically)

    • Enables novel search facilities on the web

    • Catches: untyped setting, languages difficult to use

    • Refs: PODS ’93 & JCSS ’96also ADBIS ’00 & IDEAS ´00


Approach ii

Approach II

  • Getting real: the Meta Algebra

    • type-safe language closer to classical algebra

    • “meta” relations can hold queries and data

    • manipulation thru new operators for query columns such as extract, rewrite, eval

    • allows for elegant and concise querying

    • catch: modern DBMS allow for even more elegant things

    • refs: PODS ’98 & Information Systems ’99


Approach iii

Approach III

  • Getting practical: Meta-SQL

    • combining meta querying and XML “nicely”

    • idea: stay declarative, i.e., with SQL, but exploit modern DBMS functionality (external functions, XML as a data type)

    • queries stored in “query columns”, but as XML syntax trees

    • rewrite, extract, etc. done through XSLT functions

    • eval implemented on top

    • refs: EDBT ’04 & Information Systems ’05

Joint work with Jan Van den Bussche, Frank Neven, Stijn Vansummeren


Meta query samples

Meta-Query Samples

  • Which queries in the log do the most joins?Syntactical; queries stored query expressions

  • Which queries in the log return an empty answer on the current state of the database?Semantical; answer depends on result of dynamic execution

  • In each query in the log, replace each view name by its definition from the catalog.Syntactical; performs transformations

  • Given new view definitions, which stored queries now give new answers?Syntactical and semantical


Encoding sql queries in xml

Encoding SQL Queries in XML

select director, avg(rating) as avgrat from Movies group by director

<query><select> <sel-item> <column>director</column></sel-item><sel-item> <aggregate><avg/> <column-ref><column>rating</column></column-ref> </aggregate> <alias>avgrat</alias></sel-item></select><from><table-ref> <table>Movies</table> </table-ref></from><group-by> <column-ref> <column>director</column> </column-ref></group-by></query>

Foundation: Date‘s BNF grammar for SQL, turned into a DTD


Use of xslt

Use of XSLT

“Which queries (stored in ‘Views’) do the most joins?“assumptions: Views (name: string, def: xml)

#joins = #table names

function count_tables returns numberbegin<xsl:template match="/"> <xsl:value-of select="count(//table)“/></xsl:template>endselect name from Views where count_tables(def) = (select max(count_tables(def)) from Views)


Use of xslt cont d

Use of XSLT (cont‘d)

“Which views become invalid after removal of the tables listed in `Removed´?”

function mentions_tableparam tname stringreturns stringbegin<xsl:param name="tname"/><xsl:template match="/"> <xsl:if test="//table[string(.)=$tname]"> true </xsl:if></xsl:template>endselect name from Views, Removedwhere mentions_table(def, Removed.name) = 'true'


Tools for syntactic queries

Tools for (Syntactic) Queries

  • XML variables

    • Range over the sub-elements of an XML tree

    • Range can be narrowed by an XPath expression

    • Allow to go a from a single to a set of XML documents

  • XML aggregation

    • For combining a set of XML documents into a single one


Example extract subelements

Example: Extract Subelements

“Find all pairs (v,t) s.t. v is is a view name and t is a table name occurring in the definition of v“

function string_value returns string

begin

end

select v.name, string_value(x)

from Views v,x in v.def[//table]

returns the string value of a table subelement


Log example

Log Example

Stored queries in column Q of table Log;goal is to find “hot spots,” i.e., subqueries occurring in at least 10 different queries:

select s

from Log l, s in l.Q[//query]

group by s

having count(l.Q) >= 10


Sample semantic query

Sample Semantic Query

“On table Customer (custid: string, query: xml), (where each query returns a table with columns item, price, …) find the max price of items requested by each customer:”

EVAL returns a table

select custid, max(t.price)

from Customer c, EVAL(c.query) t

group by custid

t is a standard SQL range var

UEVAL available for cases where output schema unknown


Overview 5157095

Web Services

XML doc

SQL query

publish

lookup

XML doc

MetaSQL+eval

MetaSQL query

utilize


Modeling services

Modeling Services

  • Relational Transducers (Abiteboul, Vianu et al.):

    • State of an application: relational database(schema + state transition program)

    • Interaction from outside world: input relations

    • Response of an application: output relations

  • Thus: machine maps input to output relations

  • Here: transducer represented as a database allowing meta programming

  • For simplification: SQL instead of XML

Joint work with Stephan Hagemann


Relational transducer

R1

O1

I1

A

A

A

B

B

B

Relational Transducer

Input

. . .

input relations

servicecall

statetransitionprogram

. . .

database

Output

. . .

output relations


Simplification

R1

I1

A

A

B

B

Simplification

Input

. . .

input relations

servicecall

statetransitionprogram

. . .

Output

database


Sample transducer ordering newspapers

Sample Transducer: Ordering Newspapers

  • Relations:database: price, availableinput: order, pay, pending-billsstate: pastOrder, pastPay

    output: sendbill, deliver, unavailable rejectpay, alreadypaid, rebill

  • State rules:pastOrder(X) +:- order(X);pastPay(X, Y) +:- pay(X, Y);


Representation

Representation

  • Database  data tables

  • Input parameter tables

  • Input tuples service callsthus, we can offer order, pay, and pending-bills services

  • State status tables

  • Output not explicitly put in tables, just shown interactively

  • State rules  insertions into status tables


Servicesql supporting tables

ServiceSQL – Supporting Tables

Data Tables

Parameter Tables

Status Tables

order

pastOrder

Price

pay

pastPay

Available


Sample transducer cont d

Sample Transducer, cont‘d

  • Output rules: sendbill(X, Y):- order(X), price(X, Y), NOT pastPay(X,Y);deliver(X):- pastOrder(X), price(X, Y), pay(X, Y), NOT pastPay(X,Y);unavailable(X):- order(X), NOT available(X);rejectpay(X):- pay(X, Y), NOT pastOrder(X);rejectpay(X):- pay(X, Y), pastOrder(X), NOT price(X, Y);alreadypaid(X):- pay(X, Y), pastPay(X, Y);rebill(X, Y):- pending-bills, pastOrder(X), price(X, Y), NOT pastPay(X, Y).


Representation1

Representation

  • Output rules select statements, to be executed in parallel

  • State transitions are services in a Services table w/

    • input parameters,

    • return values,

    • actions as SQL statements


Servicesql services table

ServiceSQL – Services Table

Services

service is called as soon as the corresponding input relation is filled.


Servicesql services

ServiceSQL – Services

  • Code 1 – order

    • --sendbillSELECT pr.newspaper, pr.priceFROM order o, price prWHERE o.newspaper = pr.newspaper AND NOT EXISTS(SELECT * FROM pastPay pp WHERE pp.newspaper = o.newspaper AND pp.price = o.price);--unavailableSELECT o.newspaperFROM order oWHERE NOT EXISTS(SELECT * FROM available a WHERE a.newspaper = o.newspaper);--Status updateINSERT INTO pastOrder (newspaper) VALUES (SELECT * FROM order)

needs to be executed atomically!  transactional aspects


Servicesql services1

ServiceSQL – Services

  • Code 2 – pay

    • --deliverSELECT pr.newspaperFROM pay p, pastOrder po, price prWHERE p.newspaper = po.newspaper and p.newspaper = pr.newspaper and p.price = pr.price and NOT EXISTS(SELECT * FROM pastPay pp where pp.newspaper = po.newspaper and pp.price=po.price);--rejectpay 1SELECT pr.newspaperFROM pay pWHERE NOT EXISTS(SELECT * FROM pastOrder po where po.newspaper = p.newspaper);--rejectpay 2SELECT pr.newspaperFROM pay p, pastOrder poWHERE p.newspaper = po.newspaper and NOT EXISTS(SELECT * FROM price pr where pr.newspaper = p.newspaper and pr.price=p.price);--alreadypaidSELECT pr.newspaperFROM pay p, pastPay ppWHERE p.newspaper = pp.newspaper and p.price = pp.price;--Status updateINSERT INTO pastPay (newspaper, price) VALUES (SELECT * FROM pay)


Servicesql services2

ServiceSQL – Services

  • Code 3 – pending-bills

    • SELECT pr.newspaper, pr.priceFROM pastOrder po, price prWHERE po.newspaper = pr.newspaper AND NOT EXISTS(SELECT * FROM pastPay pp WHERE pp.newspaper = pr.newspaper AND pp.price = pr.price);

the “rebill” functionality


Execution example

Execution Example

  • order (Time):[sendbill(Time, 55), unavailable()]

  • order(Newsweek):[sendbill(Newsweek, 45), unavailable()]

  • order(Die Zeit):[sendbill(), unavailable(Die Zeit)]

  • pending-bills():{(Time, 55), (Newsweek, 45)}

  • pay(Time, 55):deliver(Time)

  • pay(Newsweek, 48):rejectpay(Newsweek)

  • pay(Newsweek, 45):deliver(Newsweek)


Ongoing research

Ongoing Research

  • Imagine all this in XML disguise (Meta SQL as described before); how compact can manipulation be, using, e.g., XQuery?

  • What is needed to simulate which type of transducer?

  • What about Mealy automata?

  • Which service functionality requires what level of Service SQL?

  • What about transactional aspects? Object model applicable? Web services composition considered as federation of SQL services?


  • Login