OmsCube Objektverwaltung, basierend auf einem relationalen Datenbankmanagementsystem.

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Object Relational Mapping (ORM). Objektmodell - Datenbankmodell.
Objektrelationales Mapping mit JPA
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Datenintegrität Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Formulierung von Integritätsbedingungen.
Datenintegrität Integitätsbedingungen Schlüssel
PL/SQL - Einführung. © Prof. T. Kudraß, HTWK Leipzig Vorteile Application Other DBMSs Application Oracle with PL/SQL SQL SQL SQL SQL SQLIF...THENSQLELSESQL.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
Transaction Synchronization for XML Data in Client Server Web Applications Stefan Böttcher & Adelhard Türling Universität Paderborn.
PL/SQL - Kurze Einführung -.
JPQL Java Persistence Query Language
Anwendungen des OODM auf die ADB / NDB
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
MySQL.
© A. Kemper / A. Eickler1 Kapitel 5: Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung.
JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding.
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
Binäre Bäume Richard Göbel.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
SQL als Abfragesprache
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
IS: Datenbanken, © Till Hänisch 2000 Tabellen In relationalen DB werden Daten in Tabellen organisiert Jede Spalte enthält eine bestimmte Art von Information,
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Dynamische Webseiten Java servlets.
Datenbank-Zugriffsschnittstellen am Beispiel von Oracle und PL/SQL.
PL/SQL - Einführung. © Prof. T. Kudraß, HTWK Leipzig Vorteile Application Other DBMSs Application Oracle with PL/SQL SQL SQL SQL SQL SQLIF...THENSQLELSESQL.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
Objektorientierte Programmierung JDK-Klassenbibliothek
Übung Datenbanksysteme WS 2003/ Übung Datenbanksysteme Hierarchische DBMS
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Oracle interMedia Audio Vortrag für das Seminar Oracle Zusatzoptionen Chris Haußmann.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Modulare Programmierung
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
Datenbanken 13: Objekt-Klasse-Datenbank
Datenbanken 10: Einfügen, Ändern, Löschen
GSI GSI Status Juni 2005 Michael Dahlinger, IT 14/6/2005.
objekt-relationale Datenbanken
Big-Data-Technology MongoDB Fabian Bielmeier, David Claybourne,
VS one Veranstalter: VSone Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #4 Anfragebearbeitung (Teil 2)
FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache.
Datenintegrität Integitätsbedingungen Schlüssel
ORMapper: NHibernate Henning Eiben
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Kap 4-1OHO Kap. 4.2 Das Orbix CORBA-System Kurzer überblick zu der CORBA-Implementierung Orbix •Unser Fahrplan: •IDL Verwendungsbeispiel •Zoom-In: CORBA.
Client Server Architektur
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #8 SQL (Teil 5)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #9 SQL (Teil 4)
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
Equals, Hashcode und CompareTo Micha Kessler
Softwaresponsoren Mediasponsoren. Vorstellung KnowledgeCenter Neue Sprachfeautres in VB 9.0 LINQ to SQL in der Praxis.
Compiled Queries: LINQ-Abfragen mit Pegasus-Stiefeln © msg systems ag, August Gordon Breuer IT Consultant & Software Engineer Travel & Logistics.
External Labels – The rules For all external labels the following rules apply (external labels are all labels which are not inside of a shape) - all labels.
2002 XML 10.1XML I (Parsing) 17.1XML II (XLST,XPATH) (keinPraktikum) 24.1XML III FOP 31.1Cocoon2, XSP 7.2Struts, Turbine, Velocity 14.2Testat / Evaluation.
Torque in Turbine Team 3 Alexander Mittermair Michael Wesinger.
RZPD Deutsches Ressourcenzentrum für Genomforschung GmbH DESPRAD-Meeting 02/09/2003 Steffen Schulze-Kremer (until 7/2003) Bernd Drescher (since 8/2003)
SQL Server 2005 CLR Integration Sebastian Weber Microsoft Deutschland GmbH
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
Prolog: Datenbanken Inhalt - Überblick - Erstellen einer Datenbank
Frank Schneede Senior Berater ORACLE Deutschland GmbH.
Vorlesung #8 SQL (Teil 5).
Arrays of Objects, a 3 part process
 Präsentation transkript:

omsCube Objektverwaltung, basierend auf einem relationalen Datenbankmanagementsystem

Wichtigkeit von Persistenz Persistenz ist eine der wichtigsten Funktionalitäten in Businessanwendungen In vielen Anwendungen bilden die Datenbankoperationen einen großen Teil des Sourcecodes Die Daten werden länger genutzt als die Anwendungen, die die Daten erzeugt haben Performance von Datenbankoperationen hat entscheidende Rolle in der Anwendungsperformance

Persistenz-Lösungen RDBMS – relational database management systems Problem: object-relational impedance mismatch ODBMS – object database management systems ORDBMS – object/relational database management systems Andere Lösungen flat files, XML, „in memory“

omsCube E/R Diagramm

omsCube Metadaten

omsCube Daten

stored procedures - Beispiel ... FUNCTION createElement( p_displayName IN VARCHAR2, p_bookmark IN VARCHAR2, p_scm_Id IN NUMBER, p_creating_elm_Id IN NUMBER ) RETURN NUMBER; FUNCTION updateElement( p_elm_Id IN NUMBER, p_displayName IN VARCHAR2, p_bookmark IN VARCHAR2, p_modifying_elm_Id IN NUMBER FUNCTION cloneElementAppend( p_elm_Id IN NUMBER, p_target_elm_id IN NUMBER, p_target_cat_id IN NUMBER, p_target_key IN VARCHAR, p_recursive IN NUMBER, p_cloneAssociations IN NUMBER, p_creating_elm_Id IN NUMBER FUNCTION removeElementRecursive( p_elm_Id IN NUMBER, includeSelf IN NUMBER, removeAssociations IN NUMBER PROCEDURE moveCompositionBefore( p_cmp_Id in number, p_before_cmp_Id IN NUMBER, p_modifying_elm_Id in number );

stored procedures - packages PCK_AUTHORISATION PCK_COMPOSITIONPATH PCK_ELEMENT PCK_EXCEPTION PCK_LOCKING PCK_META PCK_NAMESPACEPATH PCK_RELATION PCK_VALIDATOR

Architektur

omsCube core Klassen

omsCube core API

Anfragebeispiel DECLARE v_bookmark element.elm_bookmark%TYPE; v_id element.elm_id%TYPE; v_ids t_array; BEGIN v_bookmark := :in_string_bookmark; select elm_id into v_id from element where elm_bookmark = v_bookmark; EXCEPTION when NO_DATA_FOUND then v_id := 0; END; SELECT ass_target_elm_id BULK COLLECT INTO v_ids FROM association WHERE ass_cat_id = :in_int_members_att_id AND ass_source_elm_id = v_id; OPEN :out_cursor_tree FOR SELECT * FROM composition, association, element, simplevalue, uniquevalue, clobvalue, TABLE( CAST( v_ids AS t_array ) ) ids WHERE cmp_target_elm_id = ids.COLUMN_VALUE AND elm_id = cmp_target_elm_id AND ass_source_elm_id (+)= elm_id AND svl_elm_id (+)= elm_id AND cvl_elm_id (+)= elm_id AND uvl_elm_id (+)= elm_id;

DAO und Entities

Beispiel – generierte Klassen 1/2

Beispiel – generierte Klassen 2/2 Finders Entities

OmsManager

Beispiel: Benutzerverwaltung

Beispiel – Loginprozedur 1/3 Profile getProfile( String username, String password ) { DataStore store = Context.getDataStore(); ProfileFinder finder = new ProfileFinder( store ); Profile profile = finder.findProfileWithRolesByLogin( username ); store.commit(); password = MD5.getHashString( password ); if( profile == null || !profile.getPassword().equalsIgnoreCase( password ) ) return null; } return profile;

Beispiel – Loginprozedur 2/3 public Profile findProfileWithRolesByLogin( String loginName ) throws Exception { Scheme profileScm = getMetaData().getScheme( Profile.NAMESPACE_PATH, Profile.SCHEME_NAME ); BoundVariable[] bindVariables = new BoundVariable[] new BoundVariable( "out_cursor_tree", null ), new BoundVariable( "in_string_username", loginName ), new BoundVariable( "in_int_username_att_id", profileScm.getSimpleAttributeByName( Profile.SAT_USERNAME ).getId() ), new BoundVariable( "in_int_roles_att_id", profileScm.getComplexAttributeByName( Profile.CAT_ROLES ).getId() ), }; OMSStructure tree = getStructureByResource( ProfileFinder.class, "findProfileWithRolesByLogin.sql", null, bindVariables ); OMSElement[] elements = tree.getElements(); for (int i = 0; elements != null && i < elements.length; i++) if( elements[ i ].getNamespacePath().equals( Profile.NAMESPACE_PATH ) && elements[ i ].getSchemeName().equals( Profile.SCHEME_NAME ) ) return new Profile( elements[ i ] ); } return null;

Beispiel – Loginprozedur 3/3 DECLARE v_count INTEGER; v_roles_count INTEGER; v_profile_id element.elm_id%TYPE; v_roles_cat_id complexattribute.cat_id%TYPE; v_cur SYS_REFCURSOR; BEGIN v_roles_cat_id := :in_int_roles_att_id; SELECT MAX( uvl_elm_id ) into v_profile_id FROM uniquevalue WHERE uvl_sat_id = :in_int_username_att_id AND uvl_value = :in_string_username; IF v_profile_id IS NOT NULL THEN SELECT count(*) INTO v_roles_count FROM association WHERE ass_cat_id = v_roles_cat_id AND ass_source_elm_id = v_profile_id; IF v_roles_count > 0 THEN OPEN v_cur FOR -- ELSE END IF; SELECT * FROM DUAL WHERE ROWNUM = 0; :out_cursor_tree := v_cur; END; SELECT * FROM association JOIN element ON ( elm_id = ass_target_elm_id OR elm_id = v_profile_id ) LEFT OUTER JOIN simplevalue ON svl_elm_id = elm_id LEFT OUTER JOIN clobvalue ON cvl_elm_id = elm_id LEFT OUTER JOIN blobvalue ON bvl_elm_id = elm_id LEFT OUTER JOIN uniquevalue ON uvl_elm_id = elm_id WHERE ( ass_cat_id = v_roles_cat_id AND ass_source_elm_id = v_profile_id ) ; SELECT * FROM ELEMENT LEFT OUTER JOIN simplevalue ON svl_elm_id = elm_id LEFT OUTER JOIN clobvalue ON cvl_elm_id = elm_id LEFT OUTER JOIN blobvalue ON bvl_elm_id = elm_id LEFT OUTER JOIN uniquevalue ON uvl_elm_id = elm_id WHERE elm_id = v_profile_id;

omsCube Rechte

omsCube Locking

Vorteile Direkte Abbildung von Businessklassen in der Datenbank Leichte Erweiterbarkeit des logischen Datenbankschemas Gute Ablage von Baumstrukturen Gut für Speicherung von vielen unterschiedlichen Objekten geeignet Gute Performance von Suchoperationen Alle Objekte sind auf die selbe Weise in der Datenbank gespeichert Nutzt oft bereits vorhandene und gut bekannte relationale Datenbanken als Basis Kann mit relationalen Modellen kombiniert werden

Nachteile Komplizierte Abfragen Anwendungslogik-Klassen sind von der Datenbankschicht abhängig Schlechte Unterstützung für verschiedene Datenbanken Numerische- und Datums-Werte sind als VARCHAR gespeichert Schlechtere Performance von Schreiboperationen Die Technologie ist nicht weit verbreitet

There is no silver bullet Fazit Wähle immer die Technologie, die am besten Deinen Anforderungen und Bedürfnissen entspricht There is no silver bullet

Kontakt FINGO: www.fingo.pl Robert Marek: robert@fingo.pl Präsentationsfolien: www.fingo.info/omscube/ omsCube offizielle Seite: www.opencube.org openCube Verein: info@opencube.org