centre de calcul de l’institut national de physique nucléaire et de physique des particules...
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
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
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