Objekt-relationales Mapping und Performance-Tuning



Ähnliche Dokumente
Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Von ODBC zu OLE DB. Neue Möglichkeiten der Datenintegration. Harald Gladytz, Team Vertrieb ESRI Niederlassung Leipzig

Performance Tuning

Objektorientierte Datenbanken

Referenzielle Integrität SQL

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

Ein Ausflug zu ACCESS

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

Hibernate Das Praxisbuch für Entwickler

Datenbanksysteme 2015

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Prozedurale Datenbank- Anwendungsprogrammierung

Was ist LDAP. Aufbau einer LDAP-Injection. Sicherheitsmaßnahmen. Agenda. LDAP-Injection. ITSB2006 WS 09/10 Netzwerkkonfiguration und Security

3. Stored Procedures und PL/SQL

OP-LOG

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Lokale Installation von DotNetNuke 4 ohne IIS

Zend PHP Cloud Application Platform

Externe Authentifizierung. Externe Authentifizierung IACBOX.COM. Version Deutsch

Continuous Database Integration mit Flyway


Aktuelle Entwicklungen

desk.modul : WaWi- Export

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

ORACLE Business Components for Java (BC4J) Marco Grawunder

CAIRO if knowledge matters

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

PostgreSQL in großen Installationen

1 Application Compatibility Toolkit (ACT) 5.6

BigTable Else

EINSATZ VON MICROSOFT TERMINAL-SERVICES ODER CITRIX METAFRAME

Choosing Database Technology for Object-Oriented Applications

Hardware- und Softwareanforderungen für die Installation von California.pro

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Dokumentation zur Anlage eines JDBC Senders

Perceptive Document Composition

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller

Oracle: Abstrakte Datentypen:

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

FileMaker Konferenz 2011 Hamburg Speed. Performance Optimierung für Ihre Lösung / Entwickler

Bei der Benutzung des NetWorker Client Configuration Wizards könnten Sie die Namen Ihrer Datenbanken verlieren

Anleitung Installation Microsoft SQL-Server 2005 (Express Edition)

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

HERZLICH WILLKOMMEN SHAREPOINT DEEP DIVE FOR ADMINS IOZ AG 2

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Perceptive Document Composition

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

NoSQL mit Postgres 15. Juni 2015

Workstations. Server. Recovery Log. Database. SQL Queries. Query Processing Object Mgmt. Transaction Mgmt. Buffer Mgmt. I/O Layer

NHibernate vs. Entity Framework

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

7. Übung - Datenbanken

Inhaltsverzeichnis. Bernd Müller, Harald Wehr. Java Persistence API 2. Hibernate, EclipseLink, OpenJPA und Erweiterungen ISBN:

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Microsoft SharePoint 2013 Vorteile und Neuheiten. Fachseminar Microsoft SharePoint 2013

JDO Java Data Objects

Solaris Cluster. Dipl. Inform. Torsten Kasch Bielefeld.DE> 8. Januar 2008

Informatik 12 Datenbanken SQL-Einführung

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

smartea Installationsguide Insight Solutions SYSTEMS MANAGEMENT IMPROVED. ENTERPRISE AGREEMENT MANAGEMENT. TRACK YOUR SPEND. CONFIGURATION SIMPLIFIED.

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel Michael Kluge (michael.kluge@tu-dresden.

SQL und MySQL. Kristian Köhntopp

CLR-Integration im SQL-Server. Alexander Karl

Interoperabilität mit Office-Anwendungen (1)

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Notes2DB. Machen Sie Ihre Notes-Datenbanken relational! Vortragender: Mag. Ing. Johannes Fiala, Fiala Web Development GmbH

SQL. Fortgeschrittene Konzepte Auszug

Lizenzierung von System Center 2012

SQL Cockpit & SAP HANA Prüfen Sie Ihre SQL Abfragen auf HANA-Tauglichkeit

OFFLINE SYNCHRONISATION - ENIQ ACCESSMANAGEMENT PROGRAMMIER-CLIENT (ENIQ DEVICEMANAGEMENT) EINRICHTEN INSTALLATION DER SQL SERVER INSTANZ

Kopplung von Datenbanken

Oracle GridControl Tuning Pack. best Open Systems Day April Unterföhring. Marco Kühn best Systeme GmbH

Anleitung OpenCms 8 Webformular Auswertung

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

Mein Name ist Legion

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

Oracle Database Backup Service - DR mit der Cloud

Lehrveranstaltung Grundlagen von Datenbanken

SQL Server 2008 Standard und Workgroup Edition

am Beispiel - SQL Injection

OKB Die MS SQL-Volltextsuche für organice SQL einrichten

IV. Datenbankmanagement

Version Deutsch In diesem HOWTO wird beschrieben wie Sie Ihr vorhandenes PMS-System mit der IAC-BOX verbinden und konfigurieren.

Der Begriff Cloud. Eine Spurensuche. Patric Hafner geops

Typo 3 installieren. Schritt 1: Download von Typo3

Werkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT

Tuning des Weblogic /Oracle Fusion Middleware 11g. Jan-Peter Timmermann Principal Consultant PITSS

Installation der SAS Foundation Software auf Windows

Tec Local Systemvoraussetzungen (Software) TecLocal 4.0 Systemvoraussetzungen (Software)

Qt-Projekte mit Visual Studio 2005

Kurzanleitung Installation der Zend Studio Sprachpakete

Objektrelationale Datenbanken

Tec Local Systemvoraussetzungen (Software) TecLocal Systemvoraussetzungen (Software)

Onlinebanking mit PHP

Transkript:

Objekt-relationales Mapping und Performance-Tuning Thomas Krüger tkrueger@vanatec.com

Agenda Wege um Daten zu lesen Wege um Daten zu modellieren Wege um Datenbanken effizient zu nutzen 2

2 Wege, Daten zu lesen Queries: OQL, SQL Navigation: 1:1 / GetObjectById(), 1:n, Hashtable 3

Queries - einfach Queries: OQL, SQL Navigation: 1:1 / GetObjectById(), 1:n, Hashtable SELECT * FROM PersonExtent AS p WHERE p.size > 180 AND p.partner.size < 160 4

Queries - einfach Queries: OQL, SQL Navigation: 1:1 / GetObjectById(), 1:n, Hashtable IObjectScope scope = ; IQueryResult result = scope.getoqlquery( OQL string ).Execute(); 5

Queries - schwerer Queries: OQL, SQL Navigation: 1:1 / GetObjectById(), 1:n, Hashtable SELECT p.id, p.name, p.size, p.partnerid FROM Person p JOIN Person AS b ON (p.partnerid = b.id) WHERE p.size > 180 AND b.size < 160 6

Queries - schwerer Queries: OQL, SQL Navigation: 1:1 / GetObjectById(), 1:n, Hashtable IObjectScope scope = ; IQueryResult result = scope.getsqlquery( SQL string, typeof(person),null).execute(); 7

Objektidentitäten nutzen Queries: OQL, SQL Navigation: 1:1 / GetObjectById(), 1:n, Hashtable IObjectScope scope = ; IObjectId id = scope.getobjectid(p); IObjectScope scope2 = ; Person p2 = scope2.getobjectbyid(id); 8

Speicherreferenzen Queries: OQL, SQL Navigation: 1:1 / GetObjectById(), 1:n, Hashtable Person p = scope.getobjectbyid( ); if (p.size > 180 && p.partner.size < 160) { } 9

Mengenobjekte nutzen Queries: OQL, SQL Navigation: 1:1 / GetObjectById(), 1:n, Hashtable Person p = scope.getobjectbyid( ); foreach(address a in p.addresses) { assert( a.owner == p ); } 10

Mappings nutzen Queries: OQL, SQL Navigation: 1:1 / GetObjectById(), 1:n, Hashtable String key = CultureInfo.CurrentUICulture.Name; Configuration config = user.configuration; Settings s = config.settings[key]; // Nutzer- und Kultur-abhängige persistente // Einstellungen 11

Wege um Daten zu lesen Wege um Daten zu modellieren Wege um Datenbanken effizient zu nutzen 12

OpenAccess API Mapping Optionen Flach Vertikal Horizontal 13

OpenAccess API Mapping Optionen Flach (Default) Vertikal Horizontal Eine Tabelle mit allen Feldern 14

OpenAccess API Mapping Optionen Flach (Default) Vertikal Horizontal Separate Tabelle für die zusätzlichen Felder jeder Klasse 15

OpenAccess API Mapping Optionen Flach (Default) Vertikal Horizontal Abstrakte Basisklasse wird in erster Ebene mitgespeichert 16

OpenAccess API Mapping Optionen Embedded [Persistent] struct Phone { string number; } [Persistent] class Person { Phone mobile; } [Persistent] class Address { Phone phone; } Typ kann in mehreren Tabellen für abhängige 1:1 Beziehungen genutzt werden 17

Wege um Daten zu lesen Wege um Daten zu modellieren Wege um Datenbanken effizient zu nutzen 18

Effizienz Ziele: (A) Genau so viel Daten übertragen, wie gerade nötig, nicht mehr (B) Wenige Requests an den DB-Server. Lazy Loading Fetch Groups Reference Prefetching Prefetch + MaxResultCount Change Tracking Caching Stored Procedures 19

Lazy Loading Wenn ein Feld nicht angefordert wird von der Applikation, dann wird es auch nicht vom Server geholt. Im Extremfall werden nur identifizierende Felder vom Server geholt. Normalfall: alle Spalten einer Tabelle werden geholt. Enge Verzahnung mit Fetch Groups. 20

Fetch Groups Applikation kann benennen, welche Felder zusammen vom Server geholt werden. Jede Klasse hat eine Default Fetch Group. Normalfall: alle value types (incl. string) und references sind enthalten; collections nicht. DefaultFetchGroup kann deklarativ verändert werden Zusätzliche Fetch Groups können deklariert und genutzt werden 21

Reference Prefetching Erlaubt effizientes Laden von referenzierten Objekten Reduziert die Anzahl von C/S calls. Gut verwendbar bei abhängigen Objekten 22

Prefetch + MaxResultCount Erlaubt effizientes Lesen von größeren Ergebnismengen Default-Wert ist vom verwendeten Treiber abhängig MaxResultCount begrenzt die maximale Anzahl der Ergebnisse IQuery q = scope.getoqlquery(oql); q.prefetch(20).maxresultcount(20) 23

Change Tracking Optimierung beim Schreiben von Daten Veränderte Objekte werden protokolliert Während Commit werden nur veränderte Felder gespeichert Pendant zum Lazy Loading 24

OpenAccess Runtime Object Layer Session Management API Metadata XML Souce Code Relational Layer Storage Management Query Processing OQL SQL Object Data DB-Metadata FetchGroups DB-Query Driver Layer Backend Capabilities Logging Service Generic ADO 2 SQLServer Oracle... SQLServer (TDS) Oracle (ADO 1) 25

Caching Caches auf mehreren Ebenen: für Objekte für Queries für States für Datenbank-Statements für Datenbank-Verbindungen 26

OpenAccess Caches Object Layer Session Management First Level API Metadata XML Souce Code Relational Layer Compiled Queries Storage Management Query Processing OQL SQL Second Level Object Data DB-Metadata Prepared Statements Backend Capabilities Driver Layer FetchGroups DB-Query Connections Logging Service Generic ADO 2 SQLServer Oracle MySql SQLServer (TDS) Oracle (ADO 1) 27

Stored Procedures Werden benutzt für Updates von Nutzertabellen für Updates von voa_keygen Tabelle für Queries Können von der Applikation benutzt werden über scope.getsql() Methode 28

Diskussion 29

T-Shirt und Demo am Stand! Thomas Krüger tkrueger@vanatec.com

31

Vanatec OpenAccess Hervorgegangen aus bewährter JDO- Techologie (Versant OpenAccess / JDOGenie) Enge Integration in MS Visual Studio Nutzbar mit C#, Visual Basic und J# Für.Net Framework 1.1 und 2.0 Unterstützt MS-SQL, Oracle und MySQL (beta) 32

Performance : Torpedo Benchmark http://www.torpedo-group.org/torpedo-2005.jsp It is a benchmark for Java O/R Mapper Description : TORPEDO measures the number of times the database is accessed by the O-R mapping software for each application level operation. The SQL that was executed by the O-R mapping software is captured by TORPEDO and returned to the TORPEDO clients. O-R mapping software products with sophisticated caching algorithms are going to shine because TORPEDO will reveal less database access. 33

Performance : Torpedo Results Date Product Hit Count Vendor 09/27/2004 Versant Open Access 3.2.0beta8 (openaccess-1) 16 Versant Corporation 10/01/2004 SolarMetric Kodo JDO 3.2 (kodo-5) 16 SolarMetric 11/15/2004 JCredo Enterprise Edition 1.3.7 (jcredo-1) 17 Riflexo SRL 08/15/2004 BEA WebLogic Server (CMP) 8.1 SP2 (weblogic-3) 20 BEA Systems, Inc 09/07/2004 Oracle Toplink (POJO) 10.0.3 Dev Preview (toplink- 3) 21 Oracle Corporation 10/01/2004 SolarMetric Kodo JDO 3.2 (kodo-4) 21 SolarMetric 08/22/2004 Hibernate 2.1.6 (hibernate-3) 22 JBoss, Inc. Vanatec OpenAccess based on the mapping engine of Versant OpenAccess JDO 34