Transcript

Centre de Calcul de l’Institut National de Physique Nucléaire et de Physique des Particules

Nothing is lost, nothing is created, everything is

<xml:tranformed>

2

What is Lavoisier ?

XML

XML

XMLXML

XML

XML

XML

XML data view

plugin

Access: RESTful, web browser or CLI

3

What is Lavoisier ?

Access: RESTful, web browser or CLI

4

What is a data view ?

transformationtechnology

input format output format

cache

validation

authentication

≈ 100 plugins

5

What is a data view ?

merg

e

rem

ove

repla

ce

chart

P D

F

transformation

J S

O N

J M

X

C L

I

S F

T P

Y A

M L

J S

O N

L D

I F

technology

input format

sele

ct

inse

rt

C S

V

X M

L

H T

T P

L D

A P

output format

6

Month,Sales,Profit

March,28,89

April,432,1587

May,267,529

June,622,2103…

CSV

What is a data view ?

merg

e

rem

ove

repla

ce

chart

P D

F

J S

O N

sele

ct

inse

rtY A

M L

J S

O N

L D

I F

C S

V

X M

L

J M

X

C L

I

S F

T P

H T

T P

L D

A P

transformationtechnology

input format output format

Example : download CSV data, extract column "Profit" and render to JSON

JSON

7

What is a data view ?

{ "entries": [ { "entry": [ "89", "1587",

JSONMonth,Sales,Profit

March,28,89

April,432,1587

May,267,529

June,622,2103…

CSV

J S

O N

sele

ct

C S

V

H T

T P

<e>529</e>

<row><column label="Month">May</column> <column label="Sales">267</column> <column label="Profit">529</column></row>

May,267,529 "529",May,267,529 May,267,529

<row><column label="Month">May</column> <column label="Sales">267</column> <column label="Profit">529</column></row>

<e>529</e>

transformationtechnology

input format output format

Example : download CSV data, extract column "Profit" and render to JSON

8

J S O N

select

C S V

H T T P

Web console

Example : download CSV data, extract column "Profit" and render to JSON

9

Generated

Rendering

Example : download CSV data, extract column "Profit" and render to JSON

10

HTML template engine

Example : download CSV data, extract column "Profit" and render to JSON

Generated

HTML Template

• XML/XPath support• Client-side execution• "Natural templating"• Inheritance

11

Data aggregation

insert

J S O N

String

J S O N

select

C S V

H T T P

{"invoices":["128","243","187","306","247","203"]}

JSON

Month;Sales;ProfitMarch;28;89April;432;1587…

CSV

Example : aggregate profit with number of invoices for each month

12

Example : aggregate profit with number of invoices for each month

Data aggregation

insert

J S O N

String

13

Previous example◦ helps to understand how to use Lavoisier◦ but Lavoisier is overkill for this !

A real use-case : the EGI Operations Portal◦ 15 heterogeneous data sources◦ 100 data views◦ 2000 users

A real example :

CODDashboard(Ops DB)

Helpdesk(GGUS)

Downtimes(GOC-DB)

Av/Re data(My EGI)

VOIdCards(Ops DB)

EGI SSO

14

A real example :

CODDashboard(Ops DB)

Helpdesk(GGUS)

Downtimes(GOC-DB)

Av/Re data(My EGI)

VOIdCards(Ops DB)

EGI SSO

15

A real example :

CODDashboard(Ops DB)

Helpdesk(GGUS)

Downtimes(GOC-DB)

Av/Re data(My EGI)

VOIdCards(Ops DB)

EGI SSO

16

A real example :

CODDashboard(Ops DB)

Helpdesk(GGUS)

Downtimes(GOC-DB)

Av/Re data(My EGI)

VOIdCards(Ops DB)

EGI SSO

• Modularity• Single languageMaintainability

• Memory usage• LatencyPerformance

• Robustness• MonitorabilityAvailability

• Authentication• AuthorizationSecurity

17

Ensured by the configuration language technology/format integration

◦ view = chain of plugins

business code◦ application = graph of data views

Lavoisier advantages

• Modularity• Single languageMaintainability

• Memory usage• LatencyPerformance

• Robustness• MonitorabilityAvailability

• Authentication• AuthorizationSecurity

XML

XML

XML

18

Single language (XPath) to :

Define authorization rules◦ user()='127.0.0.1'

Set parameter dynamically◦ concat('http://host:8080/lavoisier/', $file)

Select parts of the data view◦ //row/column[@label='Profit']/text()

Interact with◦ user request : arguments(), path()◦ environment : property(),

document()◦ views : view(), match()

Configure data rendering◦ row/columns◦ HTML template

Lavoisier advantages

• Modularity• Single languageMaintainability

• Memory usage• LatencyPerformance

• Robustness• MonitorabilityAvailability

• Authentication• AuthorizationSecurity

sele

ctH

TTP

19

Plugins process streams◦ of bytes◦ of XML events

XPath optimizer◦ avoid building big data structures

/absolute/xpath is transformed to a set of instructions processing the stream

./relative/xpath is evaluated on small data structures

◦ detect factorizable function calls

Lavoisier advantages

• Modularity• Single languageMaintainability

• Memory usage• LatencyPerformance

• Robustness• MonitorabilityAvailability

• Authentication• AuthorizationSecurity

data size

memoryusage

Transparent to developers

20

Configure the cache mechanism:

Per data view◦ choose cache plugin◦ combine refresh triggering rules

when view is notified by user when dependency is refreshed when time is elapsed …

According to the constrains of◦ data : size, time-to-live, dependencies◦ technology : latency, throughput, availability◦ users: patience, access frequency

Lavoisier advantages

• Modularity• Single languageMaintainability

• Memory usage• LatencyPerformance

• Robustness• MonitorabilityAvailability

• Authentication• AuthorizationSecurity

Transparent to end-users

21

Web console features

Monitoring◦ Views build status, statistics…

Configuration◦ Data views inter-dependencies◦ XPath expression optimizations

Environment◦ OS, JVM, service…

Debugging◦ Breakpoint on a XML stream◦ Breakpoint on a plugins chain◦ Skeleton of a data view

Lavoisier advantages

• Modularity• Single languageMaintainability

• Memory usage• LatencyPerformance

• Robustness• MonitorabilityAvailability

• Authentication• AuthorizationSecurity

Developed with Lavoisier language

22

Define security role per data view

Authentication plugins◦ Chainable◦ Extensible

CAS, password, X509, IP, OAuth

◦ Based on JAAS standard

Authorization rules (XPath)◦ For each authentication plugin◦ Depending on argument value

view('authZ')/*/*[@user=user() and @key=$arg]

Lavoisier advantages

• Modularity• Single languageMaintainability

• Memory usage• LatencyPerformance

• Robustness• MonitorabilityAvailability

• Authentication• AuthorizationSecurity

23

Conclusion

• Modularity• Single languageMaintainability

• Memory usage• LatencyPerformance

• Robustness• MonitorabilityAvailability

• Authentication• AuthorizationSecurity

Lavoisier does all this for you…

…enabling you to focus on business code !

24

New plugins On-the-fly partial reconfiguration of the framework GUI for building your own data aggregation application

Perspectives

25

Thank you !


Top Related