More Related Content Similar to Analytische Funktionen leicht gemacht - DOAG Konferenz 2010 - OPITZ CONSULTING - Gero Knapstein (13) More from OPITZ CONSULTING Deutschland (20) Analytische Funktionen leicht gemacht - DOAG Konferenz 2010 - OPITZ CONSULTING - Gero Knapstein1. Analytische Funktionen leicht gemacht
Data Cartridges für
Data Warehouses
Gero Knapstein
Solution Architect
OPITZ CONSULTING Gummersbach GmbH
DOAG Konferenz, November 2010, Nürnberg
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 1
2. Leistungs- Kunden Tätigkeits- Fakten
angebot felder
Java Branchen- IT-Strategie Gründung 1990
SOA/BPM übergreifend Beratung 400 Mitarbeiter
ORACLE Über 600 Implementierung 8 Standorte in
BI/DWH Kunden Betrieb D/PL/CH
Outtasking Training
Industrie / Versorger / Handel / Logistik /
Telekommunikation Dienstleistungen
29% 29%
42%
Öffentliche Auftraggeber /
Banken & Versicherungen /
Vereine & Verbände
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 2
3. Agenda
1. Funktionen im Vergleich
2. Grundlage für den Eigenbau:
Das Oracle Data Cartridge Interface (ODCI)
3. Erstellung einer analytischen Funktion (Data Cartridge)
Wann sollte ich analytische Funktionen selbst schreiben?
ODCIAggregate und Data-Cartridge-Komponenten
Demos
4. Eigene nützliche Data Cartridges
Demo: DISTLISTAGG und HISTCHECK
5. Data Cartridge Nutzung im OWB
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 3
4. 1 Funktionen im Vergleich
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 4
5. Funktionen im Vergleich
Funktionstyp Single Row Aggregate Analytic
Function Function Function
Quellzeilen 1 group by partition Group by Partition
(unsortiert) (sortiert,
Window-Submenge)
Rückgabezeilen 1 1 Group by Partition
Implementierung Create create type <type> … ODCIAggregate…
Function
as <body> create Function … aggregate using <type>
Nutzung in SQL Fkt (col) Fkt (col) Fkt (col) over
… (partition by col2
[group by …] order by col3
rows between …)
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 5
6. Zeilenbasierte Funktion
Select
MY_FUNCTION („Quelle“) Quelle Ziel
as „Ziel“
2 2‘
…
3 3‘
1 1‘
5 5‘
4 4‘
2 2‘
3 3‘
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 6
7. Aggregierende Funktion
Select
SUM („Quelle“) Quelle Ziel
as „Ziel“
2
…
3
1
5 20‘
17‘
15‘
11‘
6‘
5‘
2‘
4
2
3
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 7
8. Analytische Funktion
Select
SUM („Quelle“) Quelle Ziel
as „Ziel“ 1 2‘
4 5‘
OVER ( )
2 6‘
PARTITION BY …
3 11‘
ORDER BY …
2 15‘
ROWS BETWEEN 5 17‘
UNBOUNDED PRECEDING 3 20‘
AND CURRENT ROW
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 8
9. Grundlage für den Eigenbau:
3 Oracle Data Cartridge Interface
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 9
10. Oracle Data Cartridge Interface (ODCI)
Basiert auf „Oracle Extensibility Architecture“-Framework
Ermöglicht funktionalen Ausbau des DB-Servers
mit Data Cartridges
Seit Oracle 8; einmalige Signatur-Änderungen mit 9i
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 10
11. Oracle Data Cartridge Interface (ODCI)
Interfaces
ODCIIndex
Implementiert eigene Domain-Indexes
Beispiel: Oracle TEXT Option
ODCIStats
Implementiert CBO-Statistiken für Domain-Indexes
ODCITable
In PLSQL nativ integriert
Implementiert Table Functions für andere Dialekte
ODCIAggregate
Implementiert Aggregate / Analytic Functions
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 11
12. Data Cartridges – Eigenschaften
Bedarfsspezifische Implementierung eines ODCI-Interface
Pluggable DB Server Extension
Packaged: Sourcen können gewrapped werden
(Urheberschutz)
Hohe Uprade-Sicherheit (stabile API seit Oracle9i)
Generisch nutzbar nach SQL-Standards
Unterstützt DB-Wartungsmaßnahmen (z. B. Export, Import)
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 12
13. Data Cartridges – Einsatzmöglichkeiten
Unternehmenslösung generisch nutzen
atomare Logik kapseln / modularisieren
Oracle bietet keine vergleichbare Lösung
leichte Wartbarkeit ist wichtig
Vereinfachung komplexer SQL-Statement
leicht verständliche Anwendbarkeit in SQL
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 13
14. Erstellung einer
3 analytischen Funktion (Data Cartridge)
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 14
15. Zwei Stored Objects erstellen …
Create Type my_aggregate_type …
(Spec nach festen Interface-Vorgaben)
Create Type Body my_aggregate_type …
Create Function my_agg (…) return <type>
[deterministic] [parallel_enable]
aggregate using my_aggregate_type;
(nur Deklaration; kein Body)
Fertig!
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 15
16. ODCIAggregate fordert …
ODCIAggregateInitialize (mandatory static function)
ODCIAggregateIterate (mandatory member function)
ODCIAggregateMerge (mandatory member function)
ODCIAggregateTerminate (mandatory member function)
ODCIAggregateDelete (optional member function)
ODCIAggregateWrapContext (für externe Algorithmen)
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 16
17. ODCIAggregate
Für jede Ergebniszeile wird
ein „Aggregate Kontext“ erstellt:
ein oder mehrere Objekte (Parallelverarbeitung) erzeugt (initialize),
Eingangswerte verarbeitet (iterate, delete),
Parallelverarbeitungen zu einem Objekt zusammengeführt (merge), und
ein Ergebnis zurückgegeben (terminate).
Initialize Iterate
Merge Terminate
Initialize Iterate
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 17
18. Aggregation Kontext
Select my_sum(…) Output
Terminate Terminate Terminate
0
6
2 0
7
6 0
8
5
7
Initialize Initialize Initialize Terminate
0
4
8
Initialize
over Input
(partition by … Iterate Delete 2
order by … Copy
rows between Iterate Copy Delete 4
1 preceding and
1 following) Iterate Copy 1
from …
Iterate 3
Implementierung von ODCIAggregateDelete macht Sinn!
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 19
19. 3 MY_SUM()
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 20
20. MY_SUM()
Create Type MY_SUM_TYPE is object
( SUM Number
, Static Function ODCIAggregateINITIALIZE(…)return number
, Member Function ODCIAggregateITERATE (…)return number
, Member Function ODCIAggregateMERGE (…)return number
, Member Function ODCIAggregateTERMINATE (…)return number
);
Create Type Body MY_SUM_TYPE IS
…
END;
Create Function MY_SUM (val IN number) return number
parallel_enable
aggregate using MY_SQL_TYPE;
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 21
21. MY_SUM() (Type Specification)
Create Type MY_SUM_TYPE is object
( SUM Number
, Static Function ODCIAggregateINITIALIZE(…)return number
, Member Function ODCIAggregateITERATE (…)return number
, Member Function ODCIAggregateMERGE (…)return number
, Member Function ODCIAggregateTERMINATE (…)return number
);
Create Type Body MY_SUM_TYPE IS
…
END;
Create Function MY_SUM (val IN number) return number
parallel_enable
aggregate using MY_SQL_TYPE;
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 22
22. MY_SUM() (Type Body hier nur angedeutet)
Create Type MY_SUM_TYPE is object
( SUM Number
, Static Function ODCIAggregateINITIALIZE(…)return number
, Member Function ODCIAggregateITERATE (…)return number
, Member Function ODCIAggregateMERGE (…)return number
, Member Function ODCIAggregateTERMINATE (…)return number
);
Create Type Body MY_SUM_TYPE IS
…
END;
Create Function MY_SUM (val IN number) return number
parallel_enable
aggregate using MY_SQL_TYPE;
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 23
23. MY_SUM() (Stored Function)
Create Type MY_SUM_TYPE is object
( SUM Number
, Static Function ODCIAggregateINITIALIZE(…)return number
, Member Function ODCIAggregateITERATE (…)return number
, Member Function ODCIAggregateMERGE (…)return number
, Member Function ODCIAggregateTERMINATE (…)return number
);
Create Type Body MY_SUM_TYPE IS
…
END;
Create Function MY_SUM (val IN number) return number
parallel_enable
aggregate using MY_SQL_TYPE;
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 24
24. MY_SUM() (Return„s)
Create Type MY_SUM_TYPE is object
( SUM Number
, Static Function ODCIAggregateINITIALIZE(…)return number
, Member Function ODCIAggregateITERATE (…)return number
, Member Function ODCIAggregateMERGE (…)return number
, Member Function ODCIAggregateTERMINATE (…)return number
);
Create Type Body MY_SUM_TYPE IS
… Function … begin … return ODCICONST.SUCCESS; end; …
END;
Create Function MY_SUM (val IN number) return number
parallel_enable
aggregate using MY_SQL_TYPE;
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 25
25. MY_SUM() (In / Out)
Create Type MY_SUM_TYPE is object
( SUM Number
, …
, Member Function ODCIAggregateITERATE (…, val IN NUMBER)…
, …
, Member Function ODCIAggregateTERMINATE (…, val OUT NUMBER)…
);
Create Type Body MY_SUM_TYPE IS
…
END;
Create Function MY_SUM (val IN number) return number
parallel_enable
aggregate using MY_SQL_TYPE;
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 26
26. MY_SUM() (Instanz-Referenz)
Create Type MY_SUM_TYPE is object
( SUM Number
, …INITIALIZE(INST in out MY_SUM_TYPE )…
, …ITERATE (SELF in out MY_SUM_TYPE, VAL in NUMBER )…
, …MERGE (SELF in out MY_SUM_TYPE, OTH in MY_SUM_TYPE)…
, …TERMINATE (SELF in out MY_SUM_TYPE, VAL out NUMBER )…
);
Create Type Body MY_SUM_TYPE IS
…INITIALIZE … INST := MY_SUM_TYPE (SUM => 0); …
…ITERATE … SUM := SUM + VAL; …
…MERGE … SUM := SUM + OTH.SUM; …
…TERMINATE … VAL := SUM; …
END;
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 27
27. MY_SUM() (Initialize)
Create Type MY_SUM_TYPE is object
( SUM Number
, …INITIALIZE(INST in out MY_SUM_TYPE )…
, …ITERATE (SELF in out MY_SUM_TYPE, VAL in NUMBER )…
, …MERGE (SELF in out MY_SUM_TYPE, OTH in MY_SUM_TYPE)…
, …TERMINATE (SELF in out MY_SUM_TYPE, VAL out NUMBER )…
);
Create Type Body MY_SUM_TYPE IS
…INITIALIZE … INST := MY_SUM_TYPE (SUM => 0); …
…ITERATE … SUM := SUM + VAL; …
…MERGE … SUM := SUM + OTH.SUM; …
…TERMINATE … VAL := SUM; …
END;
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 28
28. MY_SUM() (Iterate)
Create Type MY_SUM_TYPE is object
( SUM Number
, …INITIALIZE(INST in out MY_SUM_TYPE )…
, …ITERATE (SELF in out MY_SUM_TYPE, VAL in NUMBER )…
, …MERGE (SELF in out MY_SUM_TYPE, OTH in MY_SUM_TYPE)…
, …TERMINATE (SELF in out MY_SUM_TYPE, VAL out NUMBER )…
);
Create Type Body MY_SUM_TYPE IS
…INITIALIZE … INST := MY_SUM_TYPE (SUM => 0); …
…ITERATE … SUM := SUM + VAL; …
…MERGE … SUM := SUM + OTH.SUM; …
…TERMINATE … VAL := SUM; …
END;
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 29
29. MY_SUM() (Merge)
Create Type MY_SUM_TYPE is object
( SUM Number
, …INITIALIZE(INST in out MY_SUM_TYPE )…
, …ITERATE (SELF in out MY_SUM_TYPE, VAL in NUMBER )…
, …MERGE (SELF in out MY_SUM_TYPE, OTH in MY_SUM_TYPE)…
, …TERMINATE (SELF in out MY_SUM_TYPE, VAL out NUMBER )…
);
Create Type Body MY_SUM_TYPE IS
…INITIALIZE … INST := MY_SUM_TYPE (SUM => 0); …
…ITERATE … SUM := SUM + VAL; …
…MERGE … SUM := SUM + OTH.SUM; …
…TERMINATE … VAL := SUM; …
END;
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 30
30. MY_SUM() (Terminate)
Create Type MY_SUM_TYPE is object
( SUM Number
, …INITIALIZE(INST in out MY_SUM_TYPE )…
, …ITERATE (SELF in out MY_SUM_TYPE, VAL in NUMBER )…
, …MERGE (SELF in out MY_SUM_TYPE, OTH in MY_SUM_TYPE)…
, …TERMINATE (SELF in out MY_SUM_TYPE, VAL out NUMBER )…
);
Create Type Body MY_SUM_TYPE IS
…INITIALIZE … INST := MY_SUM_TYPE (SUM => 0); …
…ITERATE … SUM := SUM + VAL; …
…MERGE … SUM := SUM + OTH.SUM; …
…TERMINATE … VAL := SUM; …
END;
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 31
31. Demo 01
3 MY_SUM()
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 32
32. 3 Parametrisierung
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 33
33. Objekte als IN/OUT-Parameter
ODCIAggregateITERATE, ODCIAggregateDELETE
Erlaubt nur EINEN Input-Parameter
ODCIAggregateTERMINATE
Erlaubt nur EINEN Rückgabewert
Aber:
Input-Parameter / Rückgabe kann sein:
nicht nur: skalarer Typ (Number, Varchar2, Date, o.ä.)
sondern auch: Object-Type (!)
und: Collection
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 34
34. Demo 02
3 MY_SUM()
mit Objektparametern
mit/ohne Parallelisierung
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 35
35. 4 Eigene nützliche Data Cartridges
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 37
36. HistCheck()
Ist bedarfsspezifisch !!!! (aber leicht anzupassen)
Prüft Historisierung (gueltig_von, gueltig_bis)
Prüfung innerhalb der Zeile
Prüfung auf Zeilen-Set
Rückgabewert
positive Werte für fehlerfreie Sätze
Negative Werte für Fehler wie:
Überlappungen
Gueltig_von >= Gueltig_bis
Gueltig-Datum liegt außerhalb von Minus-Unendlich und Unendlich
…
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 38
37. Demo 3:
4 HistCheck()
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 39
38. DistListAgg()
Seit Oracle 11.2 existiert Function: LISTAGG()
Konkateniert Eingangsspalte als Komma (o.ä.) -separierte Liste
Keine Distinct-Variante
Proprietäre SQL-Klausel
LISTAGG(last_name, '; ')
WITHIN GROUP (ORDER BY hire_date, last_name)
OVER (PARTITION BY department_id)
Kein Windowing möglich
Arbeitet fehlerhaft!!!! (z. B. bei großen Group-By-Partitions)
Komma-separierte Liste mit distinkten Werten
erzeugt von Data Cartridge “DistListAgg()”
(s.a. Demo)
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 40
39. Demo 4:
4 DistListAgg()
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 41
40. 5 Nutzung im OWB
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 42
41. Einbau als analytische Function im Mapping
Als Attribut
im Expression-Operator
Im nachfolgenden
Filter-Operator nutzen
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 43
42. Aggregate Function im OWB deklarieren
Import aus Datenbank importiert nur Object-Types
Function wird nicht übernommen (Grund: Body fehlt?)
Also Handarbeit:
Transformations -> Functions: New Function
OUT-Parameter typisieren (ggf. gewünschter OUT-Object-Type)
IN-Parameter anlegen (ggf. gewünschter IN-Object-Type)
Function -> Configure -> Identification -> Deployable: false
Geht auch: Function weglassen ->
Validierung in Expression schlägt fehlt
Aber: Deployment und Ausführung funktioniert !
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 44
43. Einbau als aggregierende Function im Mapping
Als Funktion auf Spalte
im Aggregate-Operator
OWB kennt keine
Aggregate-Data-Cartridges
(s.a. Drop-Down-Liste)
Workaround:
Expression als Freitext erfassen
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 45
44. Online-Dokumentation:
6 Data Cartridge Developers Guide
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 46
46. 6 Fazit
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 48
47. Fazit
Pro
Bedarfsspezifische zeilenübergreifende SQL-Algorhythmen als integrative
Datenbankerweiterung
Upgrade-Sicherheit: Mitnahme der DB-Verbesserungen ohne
Anpassungsbedarf
Geringer Implementierungsaufwand
Leichte und generische Nutzbarkeit (entspricht „Oracle“-SQL-Standard)
Contra
Performance-Einbußen durch Kontext-Switches (Oracle verspricht
Gegenmaßnahmen: höhere Integration SQL-Engine PLSQL-Engine)
OWB kennt User-defined Aggregate-Function nicht (Workaround existiert)
Gewöhnungsbedürftig: Mehrere Input-Parameter nur über Input-Object-Type
möglich
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 49
48. Fragen & Antworten
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 50
49. Kontakt
Gero Knapstein
Senior Architekt
OPITZ CONSULTING Gummersbach GmbH
Kirchstraße 6
81677 Gummersbach
gero.knapstein@opitz-consulting.com
Phone +49 22061 6001 - 0
Besuchen Sie uns im Internet:
www.opitz-consulting.com
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 51
50. Besuchen Sie auch die anderen Vorträge von
OPITZ CONSULTING und den Stand auf Ebene 2
Dienstag, 16.11.2010 Mittwoch, 17.11.2010 Donnerstag, 18.11.2010
10:00 bis 10:45 Uhr, Raum Oslo 09:00 bis 09:45 Uhr, Raum Kiew 10:00 bis 10:45 Uhr,
Alles geregelt: Einsatz der Oracle Rules Engines Vorgehensmodell für die Raum St. Petersburg
11g im SOA-Umfeld Prozessautomatisierung mit der BPM Suite ASMFS & ADVM – Oracle Home im ASM
11g
11:00 bis 11:45 Uhr, Raum Neu Delhi 09:00 bis 09:45 Uhr, Raum Oslo 10:00 bis 10:45 Uhr, Raum Istanbul
Security Hardening SOA Suite 11g Planung und Konfiguration von Oracle VM Forms 11g und das iPhone
Clustern für HA
11:00 bis 11:45 Uhr, Raum Prag 09:00 bis 09:45 Uhr, Raum Istanbul 12:00 bis 12:45 Uhr, Raum Sydney
Oracle BI Suite EE 11g ApEx effektiv: Lösungen für Migration einer datenbanknahen
Hat sich das Warten gelohnt? Standardanforderungen mit Köpfchen Anwendung in eine Java RIA
11:00 bis 11:45 Uhr, Raum Budapest 10:00 bis 10:45 Uhr, Raum Kiew 13:00 bis 13:45 Uhr, Raum Seoul
SCA & SDO Konzepte und Design Volle Übersicht über Metadaten und Oracle Advanced Compression
Prozessdaten mit Oracle BAM
12:00 bis 12:45 Uhr, Raum Oslo 13:00 bis 13:45 Uhr, Raum Singapur 13:00 bis 13:45 Uhr, Raum Riga
Benutzeroberflächen in SOA-Landschaften Spezialitäten zur Oracle Lizenzierung Strategien auf dem Weg zum Cloud Computing
12:00 bis 12:45 Uhr, Raum Budapest 16:00 bis 16:45 Uhr, Raum Singapur 15:00 bis 15:45 Uhr, Raum Kiew
SOA Antipatterns eine wilde Reise durch die Welt Modeling the business – Integration und Betriebsüberwachung mit der
der SOA Projekte Oracle BPA Suite and BPM Suite in Practice Oracle SOA Suite 11g
13:00 bis 13:45 Uhr, Raum Budapest 16:00 bis 16:45 Uhr, Raum Kiew
Formulare in Papierform ablösen SOA-Testing
mit der BPM Suite 11g
14:00 – 14:45 Uhr, Raum Helsinki
Plan-Build-Run Oracle BPA Suite und
Oracle Grid Control kombiniert
14:00 bis 14:45 Uhr, Raum Prag
Analytische Funktionen selbst gemacht
16:00 bis 16:45 Uhr, Raum Budapest
Prozessautomatisierung am Beispiel: Wie passen
BPMN und BPEL zusammen?
Analytische Funktionen leicht gemacht – Data Cartridges für Data Warehouses © OPITZ CONSULTING GmbH 2010 Seite 52