Performance Tuning bei komplexen Domainmodellen

Größe: px
Ab Seite anzeigen:

Download "Performance Tuning bei komplexen Domainmodellen"

Transkript

1 Performance Tuning bei komplexen Domainmodellen Christian Dedek Falk Sippach Orientation in Objects GmbH Weinheimer Str Mannheim Version: 1.1 Java, XML und Open Source seit 1998 ) Projekte ) ) Beratung ) ) Akademie ) Schlüsselfertige Realisierung von Software Unterstützung laufender Projekte Pilot- und Migrationsprojekte Methoden, Standards und Tools für die Entwicklung von offenen, unternehmensweiten Systemen Schulungen, Coaching, Weiterbildungsberatung, Train & Solve-Programme 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 2

2 Performance? "You need the computing power of a Pentium, 16 MB RAM and 1 GB Harddisk to run Win95. It took the computing power of 3 Commodore 64 (C64) to fly to the Moon. Something is wrong here, and it wasn't the Apollo." Autor unbekannt 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 3 Agenda Problemstellung Navigation in Objektnetzen Caching Veränderung von Objektnetzen Diverses Lessons learned 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 4

3 Hibernate ist ein "einfaches" Persistenzframework Person 1 n Collection Adresse Adresse Adresse Adresse <<Tabelle>> Person PERSON_ID<<PK>> FIRSTNAME... <<Tabelle>> Adresse session.save(person);... person = session.load(person.class, 1L); for (Adresse a : person.getadressen) {... } ADRESSE_ID<<PK>> PERSON_ID<<FK>> STRASSE Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 5 Was ist bei komplexen Domänenmodellen? Entität Collection Beleg Gruppen G1 G2 Positionen Positionen Positionen P11 P12 P21 P101 P Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 6

4 Performance-Probleme mit Hibernate? Hibernate verursacht natürlich Overhead durch OR-Mapping, Dirty-Checking, DB-Unabhängigkeit,... Hibernate bringt auch Vorteile: z. B. Caches aber ggf. nutzlos durch falsche Verwendung Was tun? Optimierungsmöglichkeiten von Hibernate ausnutzen Stored Procedures oder direkt SQL aus Hibernate aufrufen (DB spezifische Abfrage-Optimierung) Alternativen zu Hibernate: JDBC, ibatis, Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 7 Vorgehensweise Performance-Tuning Durchführung von Last- und Performanztests Testszenarien (aus Use Cases) und deren Qualitätsziele festlegen sinnvolle Testdaten (wenn möglich auch Massendaten für Lasttests) Problem Testdatenbeschaffung und -reproduktion Testszenarien sollten mit vertretbarem Aufwand wiederholbar sein ev. Definition von Key Performance Indikator Testläufe müssen reproduzierbar sein vor Performance-Tuning muß das mehrfache Ausführen eines Testlaufs gleiche oder zumindest ähnliche Ergebnisse liefern Scheduling, Netzwerk... kleine Performance-Iterationen ein spezielles Tuning und danach Testlauf um Effekt zu erkennen Einsatz spezialisierter Werkzeuge 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 8

5 Aktivitäten bei der Testdurchführung Zielbestimmungen und Mengengerüst festlegen Testumgebung und Rahmenbedingungen erfassen Testplan festlegen Maßnahmen durchführen Testszenarien festlegen [gewichtiger Fehler] Test durchführen [nicht aussagekräftig] Analyse durchführen [nicht erfolgreich] [erfolgreich] Misserfolg analysieren [behebbar] [nicht behebbar] 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 9 Lasttesttreiber - The Grinder 3 helloworldservice.py from net.grinder.script.grinder import grinder from net.grinder.script import Test from examples.webservices.basic.javaclass import HelloWorld_Impl from java.lang import System System.setProperty( "javax.xml.rpc.servicefactory", "weblogic.webservice.core.rpc.servicefactoryimpl") webservice = HelloWorld_Impl("http://localhost:7001/basic_javaclass/HelloWorld?WSDL") port = webservice.gethelloworldport() porttest = Test(1, "JAXP Port test").wrap(port) class TestRunner: def call (self): result = porttest.sayhello(grinder.threadid, grinder.grinderid) grinder.logger.output("got '%s'" % result) 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 10

6 Lasttestanalysen durchführen logs skript1 data_xxx.log Analyseunterstützung error_xxx.log skript2 Skript Grinder-Import Anzahl Instanzen Speichern als PNG Anzahl Testläufe 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 11 Werkzeuge - Monitoring Tools Profiler: z. B. JProfiler, JProbe, PerformaSure JMX-Tooling: z. B. JConsole, AdventNet, MC4J, Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 12

7 Hibernate Statistics: JConsole, Statsviewer <bean id="jmxexporter" class="org.springframework.jmx.export.mbeanexporter"> <property name="beans"> <map> <entry key="hibernate:name=statistics"> <ref local="statisticsbean" /> </entry> </map> </property> </bean> <bean id="statisticsbean" class="org.hibernate.jmx.statisticsservice"> <property name="statisticsenabled"> <value>true</value> </property> <property name="sessionfactory"><ref bean="sessionfactory"/></property> </bean> 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 13 Werkzeuge - DB-Analyzer Tracer: z. B. P6Spy, IronTrack SQL, Elvyx SQL-Clients: z. B. Toad, SQL-Developer (für Oracle DB) 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 14

8 Live-Demo Anwendung steht für mehrere Minuten Ermittlung der Ursache per P6Spy und IronTrack SQL eine bestimmte DB-Abfrage dauert sehr lange per SQL-Tool (Explain-Plan, Autotrace) <<Tabelle>> Tabelle Einträge aus Tabelle1 löschen "delete from Tabelle1 where..." Full Table Scan in Tabelle2 (Constraint-Überprüfung) Ursache: Index auf TABELLE1_FK-Spalte fehlt ID <<PK>>... <<Tabelle>> Tabelle2 ID <<PK>> TABELLE1_FK <<FK>> Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 15 Autotrace-Auswertung in SQL-Tool: Optimierung durch Einführung von DB-Indizes ohne Index mit Index 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 16

9 Agenda Problemstellung Navigation in Objektnetzen Caching Veränderung von Objektnetzen Diverses Lessons learned 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 17 Hibernate in 30 Sekunden Java Compiler *.class Java Virtual Machine *.hbm.xml Hibernate DB hibernate.cfg.xml 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 18

10 Schichtentrennung Business Layer Interceptor UserType Persistence Layer Session Transaction Query SessionFactory Configuration JNDI JDBC JTA 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 19 Optimierte Navigation in komplexen Objektnetzen/Relationen? Mannheim Heidelberg GreenSupply G7/2 Hauptstrasse 174 <<Tabelle>> Person PERSON_ID<<PK>> FIRSTNAME... <<Tabelle>> Adresse ID<<PK>><<FK>> STRASSE... id strasse position plz 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 20

11 Relationen navigieren Navigationsgeschwindigkeit optimieren vollständiges Objektnetz in Speicher laden komplexe Netze brauchen viel Speicher Speicherverbrauch optimieren Relationen werden bei Bedarf nachgeladen sog. N+1 Problem mögliche Lösungen Batch Fetching Subselect Fetching Join Fetching (Achtung: Karthesisches Produkt) HQL Filter 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 21 N+1 Problem List<Person> allpersons = session.createquery("from Person").list(); // List<Person> allpersons = session.createcriteria(person.class).list(); Map<Person, Address> highestaddresss = new HashMap<Person, Address>(); for (Person person : allpersons) { Address highestaddress = null; for (Address address : person.getaddresss() ) { // Initialize the coll. if (highestaddress == null) highestaddress = address; if (address.getplz() > highestaddress.getplz()) highestaddress = address; } highestaddresses.put(person, highestaddress); } 1 select für Liste der Entitäten + n select für jede navigierte Relation 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 22

12 Batch-Fetching <set name="addresss" inverse="true" batch-size="10"> <key column="person_id"/> <one-to-many class="address"/> </set> 1 select für Liste der Entitäten select Persons... + n/batchsize selects für jede Gruppe navigierter Relationen select a.* from Address a where a.person_id in (?<,?>) 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 23 Laden mit Subselects <set name="addresss" inverse="true" fetch="subselect"> <key column="person_id"/> <one-to-many class="address"/> </set> 1 select für Liste der Entitäten select Persons select für alle navigierte Relationen select a.* from Address a where a.person_id in (select p.person_id from Person p) 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 24

13 Laden mit joins Fetchplan <set name="addresses" inverse="true" fetch="join"> <key column="person_id"/> <one-to-many class="address"/> </set> 1 select für Liste der Entitäten mit allen navigierbaren Relationen select p.*, a.* from Person p left outer join Address a on p.person_id = a.person_id besonders interessant für n-1-relation 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 25 Laden mit expliziten Queries Alternative Abfrage für eine Liste der Entitäten mit allen navigierbaren Relationen in spezifischem Anwendungsszenario List<Person> allpersons = session.createquery("from Person p left join fetch p.addresss").list(); List<Person> allpersons = session.createcriteria(person.class).setfetchmode("addresses", FetchMode.JOIN).list(); // Iterate through the collections... Es resultiert eine Datenbankanfrage select p.*, a.* from Person p left outer join Address a on p.person_id = a.person_id 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 26

14 Kartesische Produkte id name Bewoh.. Fla.. id name leistung satz id name vorname akti 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 27 Kartesische Produkte mit jeder Relation potenziert sich die Größe des resultierenden Anfrageergebnisses DB-Server Abfragezeit IO-Aufwand Applikation Speicherverbrauch Mappingaufwand in Hibernate 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 28

15 Filter Mapping <class name= City" table= KA_STADT" lazy="false">.. <set name= dezernenten table= KA_DEZERNENT cascade="all,delete-orphan" lazy="false"> <key foreign-key="fk_ka_dezernenten column= KA_STADT_ID" not-null="true" /> <one-to-many class="de.ex.dezernent" /> <filter name="limitbyparty condition= PARTY_NAME = :partid"/> </set>.. </class> Anwendung gethibernatetemplate().enablefilter("limitbyparty").setparameter( partid", DIE GRAUEN );.. gethibernatetemplate().getsessionfactory().getcurrentsession().disablefilter ("limitbyparty"); 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 29 Feintechniken Value types Komponente im Kompositum (fehlender Lebenszyklus) extra Lazy Proxy Collection ev. nützlich bei sehr großen Assoziationsmengen Lazy Attribute Fetching bei LOB-Feldern bereits implizit Interception statt Proxies Aufwand eigenimplementierter Lösungen? 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 30

16 Feintuning zu komplexe DB-Anfragen DB-spezifische Optimierung der execution plans Minimierung von join-fetches zu viele DB-Anfragen fetch-typen definieren eher an der Abfrage als global Batchsizes an Verarbeitungsgruppen(Screens) orientieren Alternative - Caching erwägen? 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 31 Optimierungsstrategie Ausgangspunkt: Lazy Default-Fetch-Plan n-1/1-1-relationen mit lazy=false dann: Szenarien bezogenes Aufzeichnen der auslösenden Hibernateanfragen der resultierenden DB-anfragen daraus: Optimierung der Zahl und Komplexität der resultierenden DB-Anfragen durch Anpassung der Fetchstrategie der initiierten Hibernateanfragen spezifische Optimierung einer Anfrage seltener Optimierung des globalen Fetchplans Vorsicht Kostenfalle: manuelle Testausführung globale Fetchplanänderungen erfordern Regressionstest Lernkurve beachten 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 32

17 bekannte Architektur Muster Open Session in View Pattern Navigation nutzt Sessioncache aber nutzt globale Fetchoptimierung(side Effects?) Query wirkt nicht auf Session Cache Vorteil optimierter spezifischer Fetchplan spezifische Service Fassade Ausgangspunkt Navigation über Session Optimierung über spez. Finder in DAO DAO-Schnittstelle wird breiter/wartungsaufwand generisches DAO (Preload Pattern JavaMagazin 4/08) schmale Finder-Schnittstelle keine spezifischer Fetch-Plan 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 33 Agenda Problemstellung Navigation in Objektnetzen Caching Veränderung von Objektnetzen Diverses Lessons learned 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 34

18 Live Demo: Hibernate Statistics 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 35 Caches in Hibernate First-Level: immer aktiviert nur solange die eine Session offen ist funktioniert nur bei Aufruf von load/get und bei Assoziationen-Fetch funktioniert nicht bei Queries Second-Level: muß erst aktiviert werden Konfiguration nicht trivial Query-Cache muß separat aktiviert werden 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 36

19 Cache-Konfiguration in Hibernate-Settings aktivieren CacheProvider (EHCache, OSCache, SwarmCache, TreeCache) use_second_level_cache=true Cache Regions (angeben für Klassen, Collections oder Queries) Usecase spezifisch optimieren usage: Caching Strategie read-only:beste Performance nonstrict-read-write: nur für nicht konkurrierende Zugriffe read-write: gewährleistet read-commited transactional: nur bei JTA-Umgebungen 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 37 Gefahren bei Second Level Caches andere Applikationen, welche die DB ändern Cache muß regelmäßig validiert werden zu viele schreibende Zugriffe Cache-Miss größer als Cache-Hit: schlechtes Cache-Ratio zu kleine Dimensionierung des Cache sollte aber auch nicht zu groß dimensioniert werden (GC dauert länger, längere Validierungsphase mit DB) Performance kann sogar sinken (durch hohen Verwaltungsaufwand) Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 38

20 Problem: fehlender Cache-Hit Beobachtung: Session Cache arbeitet nicht richtig immer wieder die gleichen SQL-Selects im Log-Output Ursache: statt mit load/get wird mit HQL-Findern gearbeitet von AndroMDA generierter Code arbeitet mit findbyid Bug mittlerweile gefixed: AndroMDA generiert jetzt session.get() Alternative für finder: Query-Cache einschalten 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 39 Query-Cache Query-Cache überhaupt erstmal einschalten <prop key="hibernate.cache.use_query_cache">true</prop> Query-Cache speichert nur IDs muß mit Entity-Cache zusammen arbeiten nur sinnvoll für häufige Abfragen mit immer gleichen Parametern darum werden Queries defaultmäßig nicht gecached setcacheable(true) aufrufen! public Object getobjectbyname(string name) { Query q = session.createquery("from Object where name =?"); q.setparameter(0, name); q.setcacheable(true); return q.uniqueresult(); } 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 40

21 Unwirksamer Cache z. B. bei Abfragen mit ständig wechselnden Parametern hql = "from de.oio.firma... where validfrom <= :date and validto >= :date"; Query q = session.createquery(hql); for(..) { q.setdate(..); q.list(); } ggf. eigene Caches implementieren insbesondere wenn immer der gleiche Datensatz geholt wird dazu alle abzufragenden Datensätze laden und in Java vergleichen funktioniert nur bei überschaubarer Anzahl von Datensätzen! 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 41 Agenda Problemstellung Navigation in Objektnetzen Caching Veränderung von Objektnetzen Diverses Lessons learned 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 42

22 Collections Arten Indizierte collections maps/lists/arrays über eine index Spalte Sets Uniqueness Bags keine Garantien zu Reihenfolge oder Uniqueness Id-bag TODO Visuell 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 43 Flushing-Probleme: Vorher 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 44

23 Hintergrund Hibernate Session: 1st Level Cache, muß mit DB synchronisiert werden -> Flushing Flushing: Session.flush() Transaction.commit() bei DB-Abfragen (Dirty Check) Dirty Check: Objektänderungen so lange wie möglich in der Session vorgehalten bei Abfragen ggf. zuerst aufgelaufene Änderungen wegschreiben Änderungen werden ermittelt und DML-Anweisungen generiert 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 45 Probleme je mehr Daten in der Session, desto länger dauert Dirty Check Flush aber oftmals gar nicht notwendig Lösungen: Operationen neu ordnen Objekte aus Session abhängen (read-only) mit dem Flush warten bis zum Commit (write behind) Anwendung kontrolliert explizit Flushing Default Flushing Verhalten ändern: MANUAL, COMMIT, AUTO, ALWAYS 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 46

24 Nachher: Flushmode.COMMIT 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 47 Massendaten-Verarbeitung: 1000 Datensätze löschen for (...) { Entity e = session.load(entity.class, id); session.delete(e); } 2000 SQL-Anweisungen Session-Cache wird unnütz befüllt eine SQL-Anweisung minimale DB-Kommunikation String hql = "delete from Entity where id between..."; session.createquery(hql).execute(); 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 48

25 Single SQL statement Objekte können verarbeitet werden, ohne sie vorher in Speicher zu laden (Hibernate unterstützt INSERT/UPDATE/DELETE) update Person set gehalt = :newgehalt where status = 'Chef' separates Löschen von vielen Elementen ist ineffizient session.delete() Vorsicht: Springs HibernateTemplate.deleteAll(Collection col) iteriert über Collection und löscht jedes Element einzeln Collection-Mapping Delete-Optimierung Hibernate erzeugt einzelnes DELETE bei Collection.clear() funktioniert nicht mit inverse="true" (bidirektionalen Beziehungen) 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 49 Stateless Session sessionfactory.openstatelesssession() ideal für Ausführung von Bulk/Batch Operationen (funktioniert auch mit detached Objects) ähnlich einer normalen Session, aber kein Persistenz-Kontext, kein Cache (weder 1st noch 2nd) kein automatisches Dirty Checking oder transaktionales Write Behind kein kaskadierendes Verhalten, ignoriert Collections umgeht Event-Modell und Interceptoren 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 50

26 DB Performance Tuning DB Administratoren fragen SQL-Dialect nach herstellerspezifische Features untersuchen ggf. eigenen Dialekt schreiben DB-Indizes fehlen meist bei Grüne-Wiesen-Projekten DB generiert typischerweise nur Unique-Constraints (PK,...) FK-Felder sollten Index erhalten, wenn Sie oft abgefragt werden aber: nicht zu viele Indizes sonst leidet Insert/Update Performance Indizes immer überprüfen, ob sie überhaupt verwendet werden 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 51 Hibernate Indizes Hibernate unterstützt Index-Definition in Mapping-Files für Properties und Assoziationsenden <property name=".." index="idx" /> <many-to-one name=".." index="fk_idx" /> 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 52

27 Agenda Problemstellung Navigation in Objektnetzen Caching Veränderung von Objektnetzen Diverses Lessons learned 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 53 Probleme bei Rich-Client Architekturen leider oft: feingranulare Services CRUD-Schnittstelle für jede Domain-Klasse (auch für jedes Kind) viele Aufrufe an Backend (Netzwerkverkehr) bei Objektnetzen hängt teilweise der ganze Objektbaum dran Speicherprobleme bei falschem oder fehlendem Umhängen der Abhängigkeiten (besonders bei bidirektionalen Verbindungen) besser: grobgranulare Fassaden Usecase-spezifisch Minimierung der Aufrufe ans Backend Verringerung der Memory-Spitzen durch weniger RMI-Kopien 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 54

28 C2 wird ans Backend geschickt und dann in Collection Children ausgetauscht vorher: Parent C1 Children C2 service.method(c2) IN OUT nachher: Parent Children Parent_1 Children_1 C1 C2 C1_ Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 55 Herausgelöste Objekt-Teilgraphen Speicher läuft voll bei Remote-Kommunikation durch RMI erhalten wir mehrere Objekte im Speicher mit gleicher Datenbank-Identität diese "Kopien" enthalten ggf. wieder den kompletten (kopierten) Objektgraphen, je nach globaler Fetching-Strategie GC kann Speicher nicht freiräumen, wenn noch Referenzen auf Kopien des Objektgraphen bestehen z. B. durch falsches Setzen der bidirektionale Beziehungen Workaround für bidirektionale Beziehungen: addchild(child child) { this.getchildren().add(child); child.setparent(this); } 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 56

29 Probleme Hibernate Interceptor public interface Interceptor { public boolean onload(..) throws CallbackException; public boolean onflushdirty(..) throws CallbackException; boolean onsave(..) throws CallbackException; public void ondelete(..) throws CallbackException; [..] public void postflush(iterator entities) throws Callba..; public void aftertransactioncompletion(transaction tx); Aufräumen des Interceptor: aftertransactioncompletion() Aber: Aufruf nur bei Hibernate-Transaktionen, nicht bei JTA 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 57 ThreadLocal bei Hibernate Interceptor ThreadLocal-Variable muß immer aufgeräumt werden ThreadLocal.remove(); ThreadLocal kann sonst Memory-Leaks verursachen Verwendung eines ThreadLocals im Hibernate Interceptor bei Nicht-Hibernate-Transaktionen wird nicht aufgeräumt ThreadLocal-Objekt bleibt also bei einer Exception im Speicher gefixed ab Hibernate 3.2.6: es wird nun immer implizit eine Hibernate-Transaktion gestartet dadurch wird Interceptor korrekt deinitialisiert Spring-Workaround für ältere Hibernate-Versionen: AOP-Throw-Advice für Service-Aufrufe, der Interceptor aufräumt 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 58

30 Garbage Collector Aufwand optimieren Genutzten Speicher minimieren Speicher ist zwar immer billiger aber weiterhin begrenzt z.b. ineffizientes caching führt zu erhöhtem Bedarf an Garbage Collections Caching ist kein High-level-Fix für Probleme tieferer Schichte explizite Eviction an der SessionFactory als manueller Eingriffspunkt im API Bessere GC-algorithmen hilft bei typischen Verfügbarkeitsproblemen Phänomen seit Jahrzehnten bei GC-Sprachen bekannt paralleler GC-algorithmus auf multi-prozessor systemen schwierig (aber notwendig) zu testen 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 59 Spring Bugs falsche Errorcodes für Deadlocks in DB Deadlock bei spezieller init Deadlock beim Exceptionhandling von Connections Running benchmarks under high loads with 8 or more concurrents threads I see significant lock contention from the synchronized block in org.springframework.aop.framework.advisedsupport.getinterceptorsa nddynamicinterceptionadvice. This is a significant bottleneck in our benchmarks. wzeite readonly Session in Spring um JSF zu unterstützen 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 60

31 Hibernate Bugs Deadlock im Jboss offen mögliches Memoryleak seltener Deadlock wont fix Deadlocks in Treibern Deadlocks in Pools Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 61 Agenda Problemstellung Navigation in Objektnetzen Caching Veränderung von Objektnetzen Diverses Lessons learned 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 62

32 Best Practices I Anwendung einer optimistic concurrency zur Implementierung einer hohen Skalierbarkeit sinnvoll Definition einer klaren Sessionmanagement Strategy vorteilhaft ist Einbindung in gut dokumentierte Patterns Default Fetch Plan für Assoziationen ist lazy Optimierung erfolgt gemäß Kapitel 2 sehr breiter Featureset(Filter,Projektionen,Interceptoren..) zur Optimierung 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 63 Best Practices II Definition der Caching Strategie Festlegen welche Bereiche über Navigation (Session Cache) und welche über Finder (Query Cache optimieren) Entity-Cache fein anpassen und tunen Verständnis für Implementierungsdetails hilft beim Optimieren Definition einer einheitlichen flush-strategie Feintuning: Hibernate auto-flush vs. use case spezifische Synchronisation Untersuchung der GC-Aktivitäten Minimierung des GC-Aufwands Erkennung (minimaler) Memoryleaks 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 64

33 Nichtfunktionale QM-Strategie Performance Meta Antipattern Performance Afterthoughts ist Realität in der agilen Entwicklung nichtfunktionales Qualitätsmanagement benötigt fachlich richtige und realitätsnahe Testfälle Automatisierung Entwicklungsbegleitung Technologische Kompetenz Hibernate/Spring eingesetztes RDBMS Integration ins Entwicklungsteam Empfehlung: Definition von Key Performance Indikatoren 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 65 Architekturelle Reife Die vorkonfektionierte Grobarchitektur Spring/Hibernate hat viele gute Standardeinstellungen in Bezug auf Performanzaspekte in beiden Frameworks Communities sorgen für Praxisnähe und -einsatz der Ideen bietet bei Bedarf sehr viele Möglichkeiten für Performanzoptimierungen oft einfach durch reine Konfiguration Leistungsgrenzen der Kombination Spring/Hibernate sind am technologischen Gesamtstack aus JVM/OS/RDBMS/Netzwerk/IO angelehnt 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 66

34 Der Kaufmann rechnet - oder Reife vs. Produktivität POJO-Development erhöht Entwicklungsgeschwindigkeit und senkt den technischen QM-Aufwand fast direkte Implementierung fachlicher Modelle möglich rasante Entwicklung von Spring/Hibernate/Tooling seit 2003 senkte bisher die Entwicklungsgeschwindigkeit sehr hoher Entwicklungsdruck fordert Qualitätsopfer Vorteil: Open Source schafft hier Transparenz erfordert ständigen KnowHow-Transfer in die Entwicklung gerechtfertigt durch Produktivitäts- und Qualitätssteigerungen zwingt zu Migrationen der Infrastruktur Bsp. MDD-Generatoren, Konfigurations-, Buildmanagement, Codeanalysewerkzeuge 2008 Orientation in Objects GmbH Performance Tuning bei komplexen Domainmodellen 67??? Orientation in Objects GmbH Weinheimer Str Mannheim? Fragen?? Version: 1.1

35 Vielen Dank für Ihre Aufmerksamkeit! Orientation in Objects GmbH Weinheimer Str Mannheim Version: 1.1

Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Version: 2014 Orientation 1.0 in Objects GmbH Der Sprecher Erik Bamberg (OIO) 2 1 s Aufgaben des Cachings Datenbank

Mehr

Ihre Persistenzschicht?

Ihre Persistenzschicht? Ihre Persistenzschicht? Kunde, Chef, DBA? Wahrnehmung endet oft mit Fingerpointing richtung ORM Unnützer Konflikt mit DBAs (wertvolle Hilfe beim Debugging) Tuning von Hibernate und JPA Anwendungen Michael

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

Objekt-relationales Mapping und Performance-Tuning

Objekt-relationales Mapping und Performance-Tuning 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

Mehr

Open-Source Transparente Persistence (keine Interfaces, keine Ober- Klassen) Caching

Open-Source Transparente Persistence (keine Interfaces, keine Ober- Klassen) Caching 1 Was ist Hibernate Hibernate ist ein Open-Source-Java-Persistenz-Framework für relationale Datenbanken Persistenz-Frameworks: kapseln und abstrahiert den Zugriff auf eine Speicherschicht -> Zwischenschicht

Mehr

Last- und Stresstest mit the Grinder 3

Last- und Stresstest mit the Grinder 3 Last- und Stresstest mit the Grinder 3 Orientation in Objects GmbH oder auch mein Leben mit the Grinder 3 Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source

Mehr

Performance Tuning mit @enterprise

Performance Tuning mit @enterprise @enterprise Kunden-Forum 2005 Performance Tuning mit @enterprise Herbert Groiss Groiss Informatics GmbH, 2005 Inhalt Datenbank RMI JAVA API HTTP Konfiguration Analyse Groiss Informatics GmbH, 2005 2 Datenbank

Mehr

Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0

Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0 Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0 Alle Unterlagen und Übungen sind in folgenden Google Code Project abgelegt und frei zugänglich: https://code.google.com/p/jpaworkshop/ Aktualisierung

Mehr

Einführung in den NetBeans Profiler

Einführung in den NetBeans Profiler Let s talk about IT Wenn s mal wieder länger dauert Einführung in den NetBeans Profiler Dominik Hofmann 14.01.2010 Themenüberblick Themen Grundlagen und Features des NetBeans Profilers CPU Profiling Memory

Mehr

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate Hibernate Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen Nabil janah 1 Hibernate Inhalt Hibernate allgemeines Vorteile von Hibernate Hibernate-Architektur

Mehr

Hibernate. Objekt/Relationales Mapping für Java

Hibernate. Objekt/Relationales Mapping für Java Hibernate Objekt/Relationales Mapping für Java Wer bin ich? Stefan Wille Softwareentwickler / Architekt seit 1996 Freelancer seit 2000 Autor von Goto JavaServer Pages in 2001 Wesentliche Themen Was ist

Mehr

Objektorientierte Datenbanken

Objektorientierte Datenbanken OODB 11 Slide 1 Objektorientierte Datenbanken Vorlesung 11 Sebastian Iwanowski FH Wedel OODB 11 Slide 2 Wesentliche Eigenschaften von Hibernate Transparente Persistenz Transitive Persistenz (Persistenz

Mehr

Java Performance Tuning

Java Performance Tuning Seminarunterlage Version: 5.04 Version 5.04 vom 16. Januar 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

MySQL Performance Tuning für Entwickler

MySQL Performance Tuning für Entwickler MySQL Performance Tuning für Entwickler Cebit 2015, Hannover Oli Sennhauser Senior MySQL Consultant, FromDual GmbH oli.sennhauser@fromdual.com 1 / 18 FromDual GmbH Support Beratung remote-dba Schulung

Mehr

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

Werkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT Werkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT Neue Technologien effizient nutzen Ehningen, 3. Juli 2014 Rodney Krick rk@aformatik.de aformatik Training & Consulting GmbH & Co. KG

Mehr

Module für eine Java-Administrationsschulung

Module für eine Java-Administrationsschulung Module für eine Java-Administrationsschulung Schulungsmodule 1 Java Administration allgemein...2 1.1 Java und die Virtual Machine...2 1.2 Java EE Bestandteile...2 1.3 Java Management Extensions...2 1.4

Mehr

G s e a s m a t m ar a ch c i h tek e tur u I und IoC

G s e a s m a t m ar a ch c i h tek e tur u I und IoC Gesamtarchitektur I und IoC Schichten einer Web-Anwendung Initiiert durch J2EE und Spring: Strukturierte Sicht auf UI und Fachlogik (Domäne) Ergibt 5 Schichten: Man unterscheidet Präsentations- und Domänenmodell!

Mehr

Transaktionen in der Praxis. Dr. Karsten Tolle

Transaktionen in der Praxis. Dr. Karsten Tolle Transaktionen in der Praxis Dr. Karsten Tolle Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch (Exception e) { e.printstacktrace(); } con.setautocommit(false);

Mehr

Cassandra Query Language (CQL)

Cassandra Query Language (CQL) Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1 Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten Basic facts CQL kurz für

Mehr

ANDREAS PROUZA. Wien, 2015-03-27. andreaspr@aon.at andreas@prouza.at. http://www.prouza.at

ANDREAS PROUZA. Wien, 2015-03-27. andreaspr@aon.at andreas@prouza.at. http://www.prouza.at DB2 & SQL E I N F Ü H R U N G T U N I N G O P T I M I E R U N G S E C R E T S ANDREAS PROUZA andreaspr@aon.at andreas@prouza.at http://www.prouza.at Wien, 2015-03-27 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis...

Mehr

Java Batch Der Standard für's Stapeln

Java Batch Der Standard für's Stapeln Java Batch Der Standard für's Stapeln Berlin Expert Days 18.09.2015 Dirk Weil, GEDOPLAN GmbH Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Konzeption und Realisierung von IT-Lösungen GEDOPLAN

Mehr

NHibernate vs. Entity Framework

NHibernate vs. Entity Framework Manfred Steyer CAMPUS 02 softwarearchitekt.at NHibernate vs. Entity Framework Ziele NHibernate und Entity Framework sowie deren Unterschiede kennen lernen 1 Agenda Kriterien Beispiel mit EF Beispiel mit

Mehr

PostgreSQL im praktischen Einsatz. Stefan Schumacher

PostgreSQL im praktischen Einsatz. Stefan Schumacher PostgreSQL im praktischen Einsatz 2. Brandenburger Linux Infotag 2005 Stefan Schumacher , PGP Key http:/// $Header: /home/daten/cvs/postgresql/folien.tex,v 1.11 2005/04/25

Mehr

Infinispan - NoSQL für den Enterprise Java Alltag

Infinispan - NoSQL für den Enterprise Java Alltag Infinispan - NoSQL für den Enterprise Java Alltag Version: 1.1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Gliederung NoSQL und Java EE Infinispan Integrationsszenarien

Mehr

Performance Analyses with inspectit

Performance Analyses with inspectit Performance Analyses with inspectit 23.03.2012 Über uns Beratungsschwerpunkte Performanceanalyse und -optimierung, Application Monitoring, Lastund Performancetests Architekturberatung Java-basierte Anwendungsentwicklung

Mehr

LINQ. LANGUAGE INTEGREATED QUERY.net 3.5. Bernhard Grojer BernhardG@ppedv.de

LINQ. LANGUAGE INTEGREATED QUERY.net 3.5. Bernhard Grojer BernhardG@ppedv.de LINQ LANGUAGE INTEGREATED QUERY.net 3.5 Bernhard Grojer BernhardG@ppedv.de Agenda Übersicht LINQ Basistechnologien Verschiedene Arten von LINQ LINQ (to Objects) LINQ TO SQL Übersicht LINQ Aggregationen

Mehr

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

SQL Cockpit & SAP HANA Prüfen Sie Ihre SQL Abfragen auf HANA-Tauglichkeit SQL Cockpit & SAP HANA Prüfen Sie Ihre SQL Abfragen auf HANA-Tauglichkeit Johann Fößleitner Cadaxo GmbH email: johann.foessleitner@cadaxo.com Twitter: @foessleitnerj Agenda 1 SAP HANA Integrationsszenarien

Mehr

Persönlichkeiten bei bluehands

Persönlichkeiten bei bluehands Persönlichkeiten bei Technologien bei Skalierbare Anwendungen mit Windows Azure GmbH & co.mmunication KG am@.de; posts..de/am 1 2 3 4 5 6 7 8 9 Immer mehr Mehr Performance Mehr Menge Mehr Verfügbarkeit

Mehr

Persistenz mit Hibernate

Persistenz mit Hibernate Persistenz mit Hibernate Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Orientierung in Objekten ) Akademie ) ) Beratung ) ) Projekte ) Schulungen, Coaching, Weiterbildungsberatung,

Mehr

Erste Schritte, um selber ConfigMgr Reports zu erstellen

Erste Schritte, um selber ConfigMgr Reports zu erstellen Thomas Kurth CONSULTANT/ MCSE Netree AG thomas.kurth@netree.ch netecm.ch/blog @ ThomasKurth_CH Erste Schritte, um selber ConfigMgr Reports zu erstellen Configuration Manager Ziel Jeder soll nach dieser

Mehr

WHERE Klausel Generierung mit.net und Oracle. Aus unserer Projekterfahrung und Architektur-Kurs

WHERE Klausel Generierung mit.net und Oracle. Aus unserer Projekterfahrung und Architektur-Kurs Betrifft Art der Info Quelle WHERE Klausel Generierung mit.net und Oracle Technical Info Aus unserer Projekterfahrung und Architektur-Kurs Where ist the WHERE? Der Artikel untersucht die Möglichkeiten,

Mehr

Dokumentation zur Anlage eines JDBC Senders

Dokumentation zur Anlage eines JDBC Senders Dokumentation zur Anlage eines JDBC Senders Mithilfe des JDBC Senders ist es möglich auf eine Datenbank zuzugreifen und mit reiner Query Datensätze auszulesen. Diese können anschließend beispielsweise

Mehr

Inhaltsverzeichnis. Lutz Fröhlich. PostgreSQL 9. Praxisbuch für Administratoren und Entwickler. ISBN (Buch): 978-3-446-42239-1

Inhaltsverzeichnis. Lutz Fröhlich. PostgreSQL 9. Praxisbuch für Administratoren und Entwickler. ISBN (Buch): 978-3-446-42239-1 Inhaltsverzeichnis Lutz Fröhlich PostgreSQL 9 Praxisbuch für Administratoren und Entwickler ISBN (Buch): 978-3-446-42239-1 ISBN (E-Book): 978-3-446-42932-1 Weitere Informationen oder Bestellungen unter

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Die Structured Query Language SQL Prof. Dr. Nikolaus Wulff SQL Das E/R-Modell lässt sich eins zu eins auf ein Tabellenschema abbilden. Benötigt wird eine Syntax, um Tabellen

Mehr

REST. Sonderdruck. Plus CD! der Firma codecentric. OSGi. Java Magazin. Java Architekturen SOA Agile. CD-Inhalt

REST. Sonderdruck. Plus CD! der Firma codecentric. OSGi. Java Magazin. Java Architekturen SOA Agile. CD-Inhalt 1.09 Plus CD! Exklusiv für Abonnenten: Die Java Magazin Jahres-CD 2008! Sonderdruck Java Magazin Java Architekturen SOA Agile www.javamagazin.de Exklusiv für Abonnenten CD-Inhalt JAX TV: Angelika Langer:

Mehr

Hadoop. Simon Prewo. Simon Prewo

Hadoop. Simon Prewo. Simon Prewo Hadoop Simon Prewo Simon Prewo 1 Warum Hadoop? SQL: DB2, Oracle Hadoop? Innerhalb der letzten zwei Jahre hat sich die Datenmenge ca. verzehnfacht Die Klassiker wie DB2, Oracle usw. sind anders konzeptioniert

Mehr

IBM Informix Tuning und Monitoring

IBM Informix Tuning und Monitoring Seminarunterlage Version: 11.01 Copyright Version 11.01 vom 25. Juli 2012 Dieses Dokument wird durch die veröffentlicht. Copyright. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen

Mehr

ORA-600 und ORA-7445 in der Oracle- Datenbank. Referent: Volker Mach, Systemadministrator MT AG

ORA-600 und ORA-7445 in der Oracle- Datenbank. Referent: Volker Mach, Systemadministrator MT AG ORA-600 und ORA-7445 in der Oracle- Referent: Volker Mach, Systemadministrator MT AG Übersicht Motivation Definition ORA-600 Definition ORA-7445 Lösungsfindung Lookup-Tool unter Metalink Live-Demo Fazit

Mehr

Android Processes & Services

Android Processes & Services Android Processes & Services Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 4 besprechen (inkl. Repetition)

Mehr

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index!

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index! 1/40 PHP-User-Group Stuttgart 14.01.2009 Warum Datenbanken einen Hals bekommen und was sich dagegen tun lässt. Tuning und Performancesteigerung ohne zusätzliche Hardware. Ein. Loblied auf den Tabellen-Index!

Mehr

Scaling Rails. Jonathan Weiss, 02.09.2009 Peritor GmbH

Scaling Rails. Jonathan Weiss, 02.09.2009 Peritor GmbH Scaling Rails Jonathan Weiss, 02.09.2009 Peritor GmbH Scaling Rails 2 Scaling Rails 3 Rails 4 Performance Wikipedia: Das Wort Leistung (engl. Performance) wird in der Informatik verwendet, um das Vermögen

Mehr

MySQL Queries on "Nmap Results"

MySQL Queries on Nmap Results MySQL Queries on "Nmap Results" SQL Abfragen auf Nmap Ergebnisse Ivan Bütler 31. August 2009 Wer den Portscanner "NMAP" häufig benutzt weiss, dass die Auswertung von grossen Scans mit vielen C- oder sogar

Mehr

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring Dennis Schulte / Tobias Flohre Enterprise Java Batch mit Spring Dennis Schulte Düsseldorf @denschu www.github.com/denschu blog.codecentric.de/author/dsc tel +49 (0) 1515 _ 288 2395 dennis.schulte@codecentric.de

Mehr

Object Relational Mapping Layer

Object Relational Mapping Layer Object Relational Mapping Layer Views Controlers Business logic GUI OO-application logic Object-relational-Mapping Relational DBMS PHP (propel) 1/18 Propel - Persistance Layer OR-Mapper für PHP Portierung

Mehr

WebSphere Portal 8 Migrationen

WebSphere Portal 8 Migrationen WebSphere Portal 8 Migrationen Enrico Regge IT Specialist reggeenr@de.ibm.com André Hagemeier IT Specialist andre.hagemeier@de.ibm.com 2014 IBM Corporation Agenda Suche & Security Theme WCM Applikationen

Mehr

Einführung: Lasttests mit JMeter. Sitestress.eu Jesuitenmauer 24 33098 Paderborn www.sitestress.eu - karl@sitestress.eu - 05251 / 687060

Einführung: Lasttests mit JMeter. Sitestress.eu Jesuitenmauer 24 33098 Paderborn www.sitestress.eu - karl@sitestress.eu - 05251 / 687060 Einführung: Lasttests mit JMeter Agenda Über SITESTRESS.EU Tests planen Warum Lasttests? Testen Was ist JMeter? Ergebnisse analysieren Wie arbeitet JMeter? Beispiel JMeter-GUI Skripte für JMeter über SITESTRESS.EU

Mehr

SINT Rest App Documentation

SINT Rest App Documentation SINT Rest App Documentation Release 1.0 Florian Sachs September 04, 2015 Contents 1 Applikation 3 2 Rest Service 5 3 SOAP Service 7 4 Technologiestack 9 5 Deployment 11 6 Aufgabe 1: Google Webservice

Mehr

Datenbankprogrammierung 2

Datenbankprogrammierung 2 Datenbankprogrammierung 2 JDBC Java Database Connectivity Call Level Interface Schnittstelle zwischen DBMS und Applikation JDBC API ist seit JDK1.1 inkludiert Ermöglicht Zugriff aus Java-Applikationen

Mehr

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt. Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.

Mehr

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

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004) Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der

Mehr

Change Log. Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema..

Change Log. Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema.. Change Log 15.09.2015 Version 2.0.3.9 Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema.. 15.01.2015 Version 2.0.3.8 Unter Optionen können jetzt zusätzliche Parameter

Mehr

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221 Oracle 10g und SQL Server 2005 ein Vergleich Thomas Wächtler 39221 Inhalt 1. Einführung 2. Architektur SQL Server 2005 1. SQLOS 2. Relational Engine 3. Protocol Layer 3. Services 1. Replication 2. Reporting

Mehr

Welche GC-Strategie ist die richtige?

Welche GC-Strategie ist die richtige? BED-Con 4.4.2013 Memory Management und Garbage Collectoren: TP, CMS und G1 Welche GC-Strategie ist die richtige? Tobias@Frech.info / @TobiasFrech Tobias Frech Java Administrator 2 Objekte oder Garbage?

Mehr

Managed Services Zeitgewinn für die SAP Basis am Beispiel von EMCLink.net für SAP R/3

Managed Services Zeitgewinn für die SAP Basis am Beispiel von EMCLink.net für SAP R/3 Managed Services Zeitgewinn für die SAP Basis am Beispiel von EMCLink.net für SAP R/3 1 Wo liegt das Problem? Was jeder Basismanager wissen sollte... jedoch oft nicht weiß Wie sieht meine Infrastruktur

Mehr

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Präsentation zur Diplomarbeit von Übersicht Java 2 Enterprise Edition Java Servlets JavaServer Pages Enterprise JavaBeans Framework

Mehr

Performanceoptimierung mit Exadata Verarbeitung extremer Datenmengen mit PL/SQL basierter Datenbewirtschaftung (Erfahrungsbericht)

Performanceoptimierung mit Exadata Verarbeitung extremer Datenmengen mit PL/SQL basierter Datenbewirtschaftung (Erfahrungsbericht) Performanceoptimierung mit Exadata Verarbeitung extremer Datenmengen mit PL/SQL basierter Datenbewirtschaftung (Erfahrungsbericht) Christian Haag, DATA MART Consulting Consulting Manager Oracle DWH Team

Mehr

7.4 Analyse anhand der SQL-Trace. 7.3.5 Vorabanalyse mit dem Code Inspector

7.4 Analyse anhand der SQL-Trace. 7.3.5 Vorabanalyse mit dem Code Inspector 7.4 Analyse anhand der SQL-Trace 337 7.3.5 Vorabanalyse mit dem Code Inspector Der Code Inspector (SCI) wurde in den vorangegangenen Kapiteln immer wieder erwähnt. Er stellt ein paar nützliche Prüfungen

Mehr

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013 GTUG Java Arbeitskreis Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung September 2013 Jürgen Depping CommitWork GmbH Seite 1 Info@CommitWork.de www.commitwork.de Agenda Was ist OmnivoBase?

Mehr

Oracle Datenbank / Ubuntu

Oracle Datenbank / Ubuntu Oracle Datenbank / Ubuntu Sebastian Gath & Hannes Schwarz Seminar Database Tuning & Administration Universität Konstanz - SS 2007 Administration Vorbereitung Zeitmessung Erste Zeitmessung 2 Ausgangssituation

Mehr

Configuration Manager Hardware Inventory Erweiterungen. 22.05.2014 trueit TechEvent 2014 1

Configuration Manager Hardware Inventory Erweiterungen. 22.05.2014 trueit TechEvent 2014 1 Configuration Manager Hardware Inventory Erweiterungen It s all about WMI 22.05.2014 trueit TechEvent 2014 1 Agenda Grundlagen Inventory Arten Welche Daten können inventarisiert werden Anpassungen an Default

Mehr

Service Virtualisierung

Service Virtualisierung Service Virtualisierung So bekommen Sie Ihre Testumgebung in den Griff! Thomas Bucsics ANECON Software Design und Beratung G.m.b.H. Alser Str. 4/Hof 1 A-1090 Wien Tel.: +43 1 409 58 90 www.anecon.com office@anecon.com

Mehr

Caching. Hintergründe, Patterns &" Best Practices" für Business Anwendungen

Caching. Hintergründe, Patterns & Best Practices für Business Anwendungen Caching Hintergründe, Patterns &" Best Practices" für Business Anwendungen Michael Plöd" Senacor Technologies AG @bitboss Business-Anwendung!= Twitter / Facebook & co. " / kæʃ /" bezeichnet in der EDV

Mehr

Mobile Backend in der

Mobile Backend in der Mobile Backend in der Cloud Azure Mobile Services / Websites / Active Directory / Kontext Auth Back-Office Mobile Users Push Data Website DevOps Social Networks Logic Others TFS online Windows Azure Mobile

Mehr

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012 Isolationsstufen für Transaktionen / Sicherheit Dr. Karsten Tolle Dienstag 31. Januar 2012 Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch

Mehr

SPARC LDom Performance optimieren

SPARC LDom Performance optimieren SPARC LDom Performance optimieren Marcel Hofstetter hofstetter@jomasoft.ch http://www.jomasoftmarcel.blogspot.ch Mitgründer, Geschäftsführer, Enterprise Consultant JomaSoft GmbH 1 Inhalt Wer ist JomaSoft?

Mehr

In Tabelle 2.1 sehen Sie das Ergebnis beider Ausführungen auf meiner Maschine.

In Tabelle 2.1 sehen Sie das Ergebnis beider Ausführungen auf meiner Maschine. Kapitel 2 Datenverwaltung durch SQL Server Wir wollen das obige Skript zwei Mal laufen lassen, einmal mit und einmal ohne eingeschalteten Schreibcache der Festplatte. Für eine lokale Festplatte können

Mehr

Grundlagen zur nebenläufigen Programmierung in Java

Grundlagen zur nebenläufigen Programmierung in Java Grundlagen zur nebenläufigen Programmierung in Java Karlsruher Entwicklertag 2013 5. Juni 2013 Referent: Christian Kumpe Inhalt des Vortrags Was zeigt dieser Vortrag? Ein einfaches Beispiel mit allerlei

Mehr

Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH

Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme Tillmann Schall, anaptecs GmbH : Agenda Grundlagen modellgetriebener Entwicklungsprozesse Schritte zur Einführung Erfahrungen

Mehr

BigTable. 11.12.2012 Else

BigTable. 11.12.2012 Else BigTable 11.12.2012 Else Einführung Distributed Storage System im Einsatz bei Google (2006) speichert strukturierte Daten petabyte-scale, > 1000 Nodes nicht relational, NoSQL setzt auf GFS auf 11.12.2012

Mehr

Software Engineering II

Software Engineering II Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters

Mehr

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht.

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht. Technisches Design Inhalt Design Übersicht Menü und DispatcherServlet DWR Servlet Viewer Servlets Controllers Managers Sicherheit Anwendung Architektur Component Diagram Deployment Diagram Komponente Sequence

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

Datenbankanwendungen (JDBC)

Datenbankanwendungen (JDBC) Datenbankanwendungen (JDBC) Hierarchie: Connection Transaction Statement Connection Aufbau (klassisch): Registrierung des JDBC Driver beim DriverManager: Class.forName(JDBC Driver); Eigentlicher Verbindungsaufbau

Mehr

Prozessautomatisierung mit BPMN 2.0 und Java. bernd.ruecker@camunda.com

Prozessautomatisierung mit BPMN 2.0 und Java. bernd.ruecker@camunda.com Prozessautomatisierung mit BPMN 2.0 und Java bernd.ruecker@camunda.com Bernd Rücker camunda services GmbH Demo Was ist Prozessautomatisierung mit BPMN 2.0 Prozessautomatisierung mit Process Engine Monitoring

Mehr

Issue Tracker & Wiki

Issue Tracker & Wiki Kur für den Projektalltag Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 0.3 www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Projekte ) ) Beratung ) ) Akademie ) Schlüsselfertige

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

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

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller 2002 131 Architekturen Von der DB basierten zur Multi-Tier Anwendung DB/CRM (C) J.M.Joller 2002 131 Lernziele Sie kennen Design und Architektur Patterns, welche beim Datenbankzugriff in verteilten Systemen verwendet

Mehr

PHP & Windows. Jan Burkl System Engineer, Zend Technologies. All rights reserved. Zend Technologies, Inc.

PHP & Windows. Jan Burkl System Engineer, Zend Technologies. All rights reserved. Zend Technologies, Inc. PHP & Windows Jan Burkl System Engineer, Zend Technologies Wer bin ich? Jan Burkl jan.burkl@zend.com PHP Entwickler seit 2001 Projektarbeit Bei Zend seit 2006 System Engineer Zend Certified Engineer PHP

Mehr

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

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

Mehr

Web-Anwendungsentwicklung mit dem Delivery Server

Web-Anwendungsentwicklung mit dem Delivery Server Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010

Mehr

Übung: Data Warehousing und Data Mining

Übung: Data Warehousing und Data Mining Übung: Data Warehousing und Data Mining Sebastian Wandelt 20. Oktober 2011 wandelt@informatik.hu-berlin.de Überblick Organisatorisches Kurze Einführung JDBC PL/SQL 1. Aufgabenblatt Ablauf des Semesters

Mehr

ORACLE Business Components for Java (BC4J) Marco Grawunder

ORACLE Business Components for Java (BC4J) Marco Grawunder ORACLE Business Components for Java (BC4J) Marco Grawunder Gliederung 2 Probleme von J2EE/EJB J2EE-Pattern Lösungsansatz: BC4J Architektur einer BC4J-Anwendung Komponenten Entity Objects View Objects Application

Mehr

Implementierung der Jikes Research Virtual Machine

Implementierung der Jikes Research Virtual Machine Fakultät Informatik Institut für technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Implementierung der Jikes Research Virtual Machine Hauptseminar Technische Informatik

Mehr

anaptecs JEAF Plattform JEAF Developer Guide

anaptecs JEAF Plattform JEAF Developer Guide anaptecs JEAF Plattform JEAF Developer Guide : JEAF Framework Die technische Grundlage für Applikationen auf Basis der JEAF Plattform bildet das JEAF Framework. Dabei handelt es sich um ein leichtgewichtiges

Mehr

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen Programmieren von Datenbankzugriffen mit JDBC Fachbereich MNI Technische Hochschule Mittelhessen Sommersemester 2015 Überblick über das Package java.sql Übersicht Architektur von JDBC Grundstruktur eines

Mehr

TimeSafe Leistungserfassung

TimeSafe Leistungserfassung Keep your time safe. TimeSafe Leistungserfassung Adressimport 1/8 Inhaltsverzeichnis Inhaltsverzeichnis... 2 1 Allgemeines... 3 1.1 Adressen in der TimeSafe Leistungserfassung... 3 1.2 Organisationen und/oder

Mehr

DB2 SQL, der Systemkatalog & Aktive Datenbanken

DB2 SQL, der Systemkatalog & Aktive Datenbanken DB2 SQL, der Systemkatalog & Aktive Datenbanken Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele Auf DB2 Datenbanken zugreifen DB2 Datenbanken benutzen Abfragen ausführen Den Systemkatalog

Mehr

Tuning von PostGIS mit Read- Only-Daten von OpenStreetMap

Tuning von PostGIS mit Read- Only-Daten von OpenStreetMap Tuning von PostGIS mit Read- Only-Daten von OpenStreetMap Prof. Stefan Keller (Fach-)Hochschule für Technik Rapperswil (bei Zürich) 11.11.2011 PGConf.DE - Stefan Keller 1 Was ist OpenStreetMap? Wikipedia

Mehr

SemTalk Services. SemTalk UserMeeting 29.10.2010

SemTalk Services. SemTalk UserMeeting 29.10.2010 SemTalk Services SemTalk UserMeeting 29.10.2010 Problemstellung Immer mehr Anwender nutzen SemTalk in Verbindung mit SharePoint Mehr Visio Dokumente Viele Dokumente mit jeweils wenigen Seiten, aber starker

Mehr

Session Storage im Zend Server Cluster Manager

Session Storage im Zend Server Cluster Manager Session Storage im Zend Server Cluster Manager Jan Burkl System Engineer, Zend Technologies Agenda Einführung in Zend Server und ZSCM Überblick über PHP Sessions Zend Session Clustering Session Hochverfügbarkeit

Mehr

Web 2.0 Software-Architekturen

Web 2.0 Software-Architekturen Web 2.0 Software-Architekturen Servlets als Controller einer MVC Web Architektur Prof. Dr. Nikolaus Wulff HTTP und HTML Das HyperText TransferProtokoll (HTTP) beschreibt eine einfache verbindungslose Kommunikation,

Mehr

Datenbankoptimierung. Beispiele für die Optimierung an der Ruby-on-Rails-Schnittstelle. Karsten Meier meier-online.com

Datenbankoptimierung. Beispiele für die Optimierung an der Ruby-on-Rails-Schnittstelle. Karsten Meier meier-online.com Datenbankoptimierung Beispiele für die Optimierung an der Ruby-on-Rails-Schnittstelle Karsten Meier meier-online.com Mein Background 1986: SQL im Studium 1996: QuarkXpress -> HTML Converter 1998-2001:

Mehr

SQL Server 2014 Roadshow

SQL Server 2014 Roadshow 1 SQL Server 2014 Roadshow Kursleitung: Dieter Rüetschi (ruetschi@ability-solutions.ch) 2 Inhalt Allgemeine Informationen Buffer Pool Extension Column Store Index In Memory OLTP Scripting Security SQL

Mehr

Datenhaltung für Android. Model First

Datenhaltung für Android. Model First Datenhaltung für Android Model First Frederik Götz, Johannes Tysiak 26.05.2011 Unser Ziel! 26.05.2011 Datenhaltung in Android - Model First» Frederik Götz, Johannes Tysiak 2 Agenda Android Quickstart Datenhaltung

Mehr

Datenbankadministration

Datenbankadministration Datenbankadministration 10. Monitoring AG DBIS University of Kaiserslautern, Germany Karsten Schmidt kschmidt@informatik.uni-kl.de (Vorlage TU-Dresden) Wintersemester 2008/2009 Momentaufnahmen Momentaufnahmen

Mehr

Kapitel DB:VI (Fortsetzung)

Kapitel DB:VI (Fortsetzung) Kapitel DB:VI (Fortsetzung) VI. Die relationale Datenbanksprache SQL Einführung SQL als Datenanfragesprache SQL als Datendefinitionssprache SQL als Datenmanipulationssprache Sichten SQL vom Programm aus

Mehr

Einführung in SQL Datenbanken bearbeiten

Einführung in SQL Datenbanken bearbeiten Einführung in SQL Datenbanken bearbeiten Jürgen Thomas Entstanden als Wiki-Buch Bibliografische Information Diese Publikation ist bei der Deutschen Nationalbibliothek registriert. Detaillierte Angaben

Mehr

Einführung in Web-Security

Einführung in Web-Security Einführung in Web-Security Alexander»alech«Klink Gulaschprogrammiernacht 2013 Agenda Cross-Site-Scripting (XSS) Authentifizierung und Sessions Cross-Site-Request-Forgery ([XC]SRF) SQL-Injections Autorisierungsprobleme

Mehr

Oracle GridControl Tuning Pack. best Open Systems Day April 2010. Unterföhring. Marco Kühn best Systeme GmbH marco.kuehn@best.de

Oracle GridControl Tuning Pack. best Open Systems Day April 2010. Unterföhring. Marco Kühn best Systeme GmbH marco.kuehn@best.de Oracle GridControl Tuning Pack best Open Systems Day April 2010 Unterföhring Marco Kühn best Systeme GmbH marco.kuehn@best.de Agenda GridControl Overview Tuning Pack 4/26/10 Seite 2 Overview Grid Control

Mehr