Präsentation zum Thema Datenbankoptimierung: Effektiver Einsatz von EHCache, etc. "Ein typisches Szenario bei Enterprise-Applications ist folgendes: mehrere Application-Server greifen auf eine Datenbank zu. Schnell wird dabei der Zugriff auf die Datenbank zum Performance-Engpass. Im Vortrag wird das Caching von Query-Ergebnissen auf den Application-Servern mit Hilfe der JPA erklärt."
Ein Standard für metadatenbasierte Validierung in allen Layern einer Applikation. Mit diesem Versprechen geht der neue Bean-Validation Standard, auch bekannt als JSR 303, ins Rennen. Von der Wiederverwendbarkeit von bestehenden Constraints zum einfacheren Aufbau eigener Constraints bis hin zur Validierung von Objektgraphen bietet diese Spezifikation einige Mechanismen für metadatenbasierte Validierungen. In einer Feature Tour werden die zentralen Bestandteile der Spezifikation vorgestellt.
In einem zweiten Teil wird die Nutzung von metadatenbasierter Validierung in JEE-Webapplikationen gezeigt. Anhand von kurzen Beispielen wird die Rolle von MyFaces Extensions Validator (aka MyFaces ExtVal) bei der Integration von JSR 303 in JSF-Applikationen veranschaulicht.
JSF und JPA effizient kombinieren (W-JAX 2011)Michael Kurz
Folien zum Vortrag JSF und JPA effizient kombinieren von Michael Kurz auf der W-JAX 2011 in München.
Die dazugehörenden Beispiele sind unter https://github.com/jsflive/mymail-owb zu finden.
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Michael Kurz
Folien zum Vortrag Go Fullstack: Webanwendungen mit Java EE 6 bauen von Michael Kurz auf der W-JAX 2011 in München.
Die dazugehörenden Beispiele sind unter https://github.com/jsflive/mygourmet-ee zu finden.
GWT wird verwendet um moderne, komplexe Rich Internet Applications zu erstellen. Durch die Generierung von JavaScript aus Java Code können alle Vorteile von Java genützt und gleichzeitig die immer größer werdenden Anforderungen der Web-Benutzer in Bezug auf Style, Performance, Interaktion und Browser-Kompatibilität von Webseiten abgedeckt werden. In dem Vortrag wird GWT vorgestellt und auf dessen Einsatz in der Praxis eingegangen.
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...OPEN KNOWLEDGE GmbH
Speaker: Sebastian Reiners
Seit Java EE 7 stehen auch Enterprise-Entwicklern Server-Sent Events und WebSockets in standardisierter Form zur Verfügung. Höchste Zeit also, sich diese andere Art der Kommunikation im Web einmal näher anzusehen. Was sind Server-Sent Events und WebSockets überhaupt, was sind ihre Vorteile und wo bieten sich sinnvolle Anwendungsbereiche?
Im Rahmen der Vorstellung der unterschiedlichen Ansätze werden praktische Erfahrungen und Fallstricke, insbesondere im Zusammenspiel mit JSF und CDI veranschaulicht, sowie ein erstes Resümee gezogen.
Präsentation zum Thema Datenbankoptimierung: Effektiver Einsatz von EHCache, etc. "Ein typisches Szenario bei Enterprise-Applications ist folgendes: mehrere Application-Server greifen auf eine Datenbank zu. Schnell wird dabei der Zugriff auf die Datenbank zum Performance-Engpass. Im Vortrag wird das Caching von Query-Ergebnissen auf den Application-Servern mit Hilfe der JPA erklärt."
Ein Standard für metadatenbasierte Validierung in allen Layern einer Applikation. Mit diesem Versprechen geht der neue Bean-Validation Standard, auch bekannt als JSR 303, ins Rennen. Von der Wiederverwendbarkeit von bestehenden Constraints zum einfacheren Aufbau eigener Constraints bis hin zur Validierung von Objektgraphen bietet diese Spezifikation einige Mechanismen für metadatenbasierte Validierungen. In einer Feature Tour werden die zentralen Bestandteile der Spezifikation vorgestellt.
In einem zweiten Teil wird die Nutzung von metadatenbasierter Validierung in JEE-Webapplikationen gezeigt. Anhand von kurzen Beispielen wird die Rolle von MyFaces Extensions Validator (aka MyFaces ExtVal) bei der Integration von JSR 303 in JSF-Applikationen veranschaulicht.
JSF und JPA effizient kombinieren (W-JAX 2011)Michael Kurz
Folien zum Vortrag JSF und JPA effizient kombinieren von Michael Kurz auf der W-JAX 2011 in München.
Die dazugehörenden Beispiele sind unter https://github.com/jsflive/mymail-owb zu finden.
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Michael Kurz
Folien zum Vortrag Go Fullstack: Webanwendungen mit Java EE 6 bauen von Michael Kurz auf der W-JAX 2011 in München.
Die dazugehörenden Beispiele sind unter https://github.com/jsflive/mygourmet-ee zu finden.
GWT wird verwendet um moderne, komplexe Rich Internet Applications zu erstellen. Durch die Generierung von JavaScript aus Java Code können alle Vorteile von Java genützt und gleichzeitig die immer größer werdenden Anforderungen der Web-Benutzer in Bezug auf Style, Performance, Interaktion und Browser-Kompatibilität von Webseiten abgedeckt werden. In dem Vortrag wird GWT vorgestellt und auf dessen Einsatz in der Praxis eingegangen.
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...OPEN KNOWLEDGE GmbH
Speaker: Sebastian Reiners
Seit Java EE 7 stehen auch Enterprise-Entwicklern Server-Sent Events und WebSockets in standardisierter Form zur Verfügung. Höchste Zeit also, sich diese andere Art der Kommunikation im Web einmal näher anzusehen. Was sind Server-Sent Events und WebSockets überhaupt, was sind ihre Vorteile und wo bieten sich sinnvolle Anwendungsbereiche?
Im Rahmen der Vorstellung der unterschiedlichen Ansätze werden praktische Erfahrungen und Fallstricke, insbesondere im Zusammenspiel mit JSF und CDI veranschaulicht, sowie ein erstes Resümee gezogen.
Folien zum Vortrag JSF 2 Kompositkomponenten von Michael Kurz auf der JAX 2012 in Mainz.
Die dazugehörenden Beispiele sind unter https://github.com/jsflive zu finden.
JavaServer Faces 2.2 (Herbstcampus 2013)Michael Kurz
Folien für die Session "Neues Gesicht: Neues und Erwähnenswertes aus JavaServer Faces 2.2" vom Herbstcampus 2013.
Die Beispiele für diese Session sind unter https://github.com/jsflive/jsf22-examples verfügbar.
Lernen Sie das Zusammenspiel von MongoDB und dem Zend Framework 2 anhand eines praktischen Beispiels kennen! Diese Session zeigt, wie Sie mit MongoDB eine der beliebtesten dokumentenorientierten Open-Source-Datenbanken in Ihren ZF2-Projekten unkompliziert einsetzen und welche Fallstricke Sie vermeiden können.
Der Talk wurde am 25.09.2013 auf der Java User Group Frankfurt gehalten und gibt einen Überblick und Einstieg in MongoDB aus der Sicht eines Java-Programmierers.
Dabei werden folgende Themen behandelt:
- Buzzword Bingo: NoSQL, Big Data, Horizontale Skalierung, CAP-Theorem, Eventual Consistency
- Übersicht über MongoDB
- Datenmanipulation: CRUD, Aggregation Framework, Map/Reduce
- Indexing
- Konsistenz beim Schreiben und Lesen von Daten
- Java API & Frameworks
Diverse In-Memory-Technologien sind bereits seit langer Zeit verfügbar, wie z.B. Result Caches, verschiedene Buffer Caches, Pre-Loading von Objekten etc. Die aktuellste Oracle12c-Version geht jedoch einen großen Schritt weiter. Ohne Änderungen werden SQL-Abfragen um Faktoren beschleunigt; die Grundlage für Real-Time Analysen ist damit gelegt. Wie die einzelnen Techniken funktionieren und mit welchem geríngem Aufwand sie konfiguriert werden, wird erklärt.
Wie skaliert man Software as a Service Applikationen in der Windows Azure CloudPatric Boscolo
Skalierung heißt eine Applikation möglichst vielen Benutzern mit der selben Funktionalität zur Verfügung zu stellen. In dieser Präsentation beschäftigen wir uns mit den unterschiedlichen Vorgehensweisen um Applikationen erfolgreich zu skalieren.
Tipps und Skripts aus dem Leben eines Connections AdminsKlaus Bild
Gekürzter Vortrag der Connect 2014 Präsentation "BP307 Practical Solutions for Connections Administrators – Tips and Scripts for Your Daily Business" Tipps und Skripts rund um die Connections Installation, Konfiguration, Dokumentation und Troubleshooting. Wir zeigen Skripte die jedem Administrator das Leben erleichtern können. Download der Skripts: http://github.com/stoeps13/ibmcnxscripting
SOA hat sich inzwischen als Architekturstil durchgesetzt und ist in vielen Unternehmen etabliert. Mit Einführung der Fusion Middleware 11g hat Oracle die SOA Suite erheblich verändert und stellt damit ein mächtiges Werkzeug für die Entwicklung und den Betrieb von Services, auf Basis der Service Component Architecture (SCA), zur Verfügung. Services können sehr einfach, schnell und vor allem deklarativ mit der SOA Suite entwickelt und betrieben werden. Die SOA Suite stellt damit eine gute und ausgereifte Plattform für den Betrieb von Services zur Verfügung.
Bei der Präsentation handelt es sich um einen Auszug aus dem DOAG Expertenseminar vom 14. und 15. Oktober 2013 in Berlin.
This presentation will show you how to use docker-compose in a practical example, discuss some alternative approaches and teach best practices (in german).
Dank vieler praktischer Funktionen können Entwickler unter ColdFusion relativ schnell und einfach Applikationen entwickeln und produktiv einsetzen.
Doch wie sieht es aus wenn diese Applikationen dann intensiv genutzt werden? Von hunderttausenden Usern in unzähligen Ländern, Sprachen und Zeitzonen? Wenn Inhalte laufend generiert und abgefragt werden?
Dieser Talk zeigt, wie ColdFusion in einem Enterprise Projekt eingesetzt werden kann. Welche Architektur für einen sicheren Betrieb rund um die Uhr und die Welt benötigt wird. Welche ColdFusion Enterprise-Funktionen gebraucht werden und welche nicht, welche überhaupt funktionieren, welche Lektionen wir im praktischen Einsatz gelernt haben und warum Optimierungen im Milisekunden-Bereich tatsächlich Tage sparen können.
Effiziente datenpersistierung mit JPA 2.1 und HibernateThorben Janssen
Daten mit Hilfe der Java Persistence API in der Datenbank zu speichern stellt den Standard für Java Enterprise Anwendungen dar. Der Applikationsserver stellt alle benötigten Bibliotheken bereits zur Verfügung und die Verwendung ist so einfach, dass sie innerhalb kürzester Zeit erlernt werden kann. Spannend wird es immer erst dann, wenn die Anforderungen steigen, z.B. weil das Domainmodell sehr komplex, die Datenmenge besonders groß oder die geforderten Antwortzeiten sehr kurz sind. Auch hierfür bietet JPA in der Regel gute Lösungen und wenn das nicht ausreicht, können wir immer noch auf Hibernate-spezifische Features zurückgreifen. Dazu sind allerdings deutlich detailliertere Kenntnisse erforderlich. Einige Beispiele dafür sind Caches, Entity Graphen und Attribute Converter. Wir werden uns genauer ansehen, wie wir diese und andere Features nutzen können, um auch komplexere Anforderungen mit Hilfe von JPA umzusetzen und wann wir auf Hibernate-spezifische Features zurückgreifen müssen.
Hierfür werden grundlegende Kenntnisse in der Verwendung von JPA und Hibernate vorausgesetzt.
Folien zum Vortrag JSF 2 Kompositkomponenten von Michael Kurz auf der JAX 2012 in Mainz.
Die dazugehörenden Beispiele sind unter https://github.com/jsflive zu finden.
JavaServer Faces 2.2 (Herbstcampus 2013)Michael Kurz
Folien für die Session "Neues Gesicht: Neues und Erwähnenswertes aus JavaServer Faces 2.2" vom Herbstcampus 2013.
Die Beispiele für diese Session sind unter https://github.com/jsflive/jsf22-examples verfügbar.
Lernen Sie das Zusammenspiel von MongoDB und dem Zend Framework 2 anhand eines praktischen Beispiels kennen! Diese Session zeigt, wie Sie mit MongoDB eine der beliebtesten dokumentenorientierten Open-Source-Datenbanken in Ihren ZF2-Projekten unkompliziert einsetzen und welche Fallstricke Sie vermeiden können.
Der Talk wurde am 25.09.2013 auf der Java User Group Frankfurt gehalten und gibt einen Überblick und Einstieg in MongoDB aus der Sicht eines Java-Programmierers.
Dabei werden folgende Themen behandelt:
- Buzzword Bingo: NoSQL, Big Data, Horizontale Skalierung, CAP-Theorem, Eventual Consistency
- Übersicht über MongoDB
- Datenmanipulation: CRUD, Aggregation Framework, Map/Reduce
- Indexing
- Konsistenz beim Schreiben und Lesen von Daten
- Java API & Frameworks
Diverse In-Memory-Technologien sind bereits seit langer Zeit verfügbar, wie z.B. Result Caches, verschiedene Buffer Caches, Pre-Loading von Objekten etc. Die aktuellste Oracle12c-Version geht jedoch einen großen Schritt weiter. Ohne Änderungen werden SQL-Abfragen um Faktoren beschleunigt; die Grundlage für Real-Time Analysen ist damit gelegt. Wie die einzelnen Techniken funktionieren und mit welchem geríngem Aufwand sie konfiguriert werden, wird erklärt.
Wie skaliert man Software as a Service Applikationen in der Windows Azure CloudPatric Boscolo
Skalierung heißt eine Applikation möglichst vielen Benutzern mit der selben Funktionalität zur Verfügung zu stellen. In dieser Präsentation beschäftigen wir uns mit den unterschiedlichen Vorgehensweisen um Applikationen erfolgreich zu skalieren.
Tipps und Skripts aus dem Leben eines Connections AdminsKlaus Bild
Gekürzter Vortrag der Connect 2014 Präsentation "BP307 Practical Solutions for Connections Administrators – Tips and Scripts for Your Daily Business" Tipps und Skripts rund um die Connections Installation, Konfiguration, Dokumentation und Troubleshooting. Wir zeigen Skripte die jedem Administrator das Leben erleichtern können. Download der Skripts: http://github.com/stoeps13/ibmcnxscripting
SOA hat sich inzwischen als Architekturstil durchgesetzt und ist in vielen Unternehmen etabliert. Mit Einführung der Fusion Middleware 11g hat Oracle die SOA Suite erheblich verändert und stellt damit ein mächtiges Werkzeug für die Entwicklung und den Betrieb von Services, auf Basis der Service Component Architecture (SCA), zur Verfügung. Services können sehr einfach, schnell und vor allem deklarativ mit der SOA Suite entwickelt und betrieben werden. Die SOA Suite stellt damit eine gute und ausgereifte Plattform für den Betrieb von Services zur Verfügung.
Bei der Präsentation handelt es sich um einen Auszug aus dem DOAG Expertenseminar vom 14. und 15. Oktober 2013 in Berlin.
This presentation will show you how to use docker-compose in a practical example, discuss some alternative approaches and teach best practices (in german).
Dank vieler praktischer Funktionen können Entwickler unter ColdFusion relativ schnell und einfach Applikationen entwickeln und produktiv einsetzen.
Doch wie sieht es aus wenn diese Applikationen dann intensiv genutzt werden? Von hunderttausenden Usern in unzähligen Ländern, Sprachen und Zeitzonen? Wenn Inhalte laufend generiert und abgefragt werden?
Dieser Talk zeigt, wie ColdFusion in einem Enterprise Projekt eingesetzt werden kann. Welche Architektur für einen sicheren Betrieb rund um die Uhr und die Welt benötigt wird. Welche ColdFusion Enterprise-Funktionen gebraucht werden und welche nicht, welche überhaupt funktionieren, welche Lektionen wir im praktischen Einsatz gelernt haben und warum Optimierungen im Milisekunden-Bereich tatsächlich Tage sparen können.
Effiziente datenpersistierung mit JPA 2.1 und HibernateThorben Janssen
Daten mit Hilfe der Java Persistence API in der Datenbank zu speichern stellt den Standard für Java Enterprise Anwendungen dar. Der Applikationsserver stellt alle benötigten Bibliotheken bereits zur Verfügung und die Verwendung ist so einfach, dass sie innerhalb kürzester Zeit erlernt werden kann. Spannend wird es immer erst dann, wenn die Anforderungen steigen, z.B. weil das Domainmodell sehr komplex, die Datenmenge besonders groß oder die geforderten Antwortzeiten sehr kurz sind. Auch hierfür bietet JPA in der Regel gute Lösungen und wenn das nicht ausreicht, können wir immer noch auf Hibernate-spezifische Features zurückgreifen. Dazu sind allerdings deutlich detailliertere Kenntnisse erforderlich. Einige Beispiele dafür sind Caches, Entity Graphen und Attribute Converter. Wir werden uns genauer ansehen, wie wir diese und andere Features nutzen können, um auch komplexere Anforderungen mit Hilfe von JPA umzusetzen und wann wir auf Hibernate-spezifische Features zurückgreifen müssen.
Hierfür werden grundlegende Kenntnisse in der Verwendung von JPA und Hibernate vorausgesetzt.
Im Kontext von APIs kommt derzeit keiner an REST (Representational State Transfer) vorbei. REST gilt als leichtgewichtige, skalierbare und schnell erlernbare Alternative zu SOAP, die sich die vorhandene Infrastruktur des WWW zunutze macht. In der Praxis hat aber auch REST seine Schwächen. So ist gutes API-Design häufig eine Herausforderung. Für mobile Anwendungen ist REST zu starr und geht nicht effizient genug mit Bandbreite um.
Im Vortrag werden Stärken und Schwächen von REST aufgezeigt und mit GraphQL eine Alternative speziell für den mobilen Kontext vorgestellt.
JavaLand 2022, März, Brühl, Dirk Kröhan, Software Architect bei QAware).
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
“Kann man das nicht einfach cachen?” - So oder so ähnlich hat es bestimmt schon jeder mal gehört. Hin und wieder auch mit einer Prise Sarkasmus, wenn Caching als das schnelle Pflaster für schlecht geschriebene Datenbankabfragen dienen soll.
Es gibt aber natürlich genügend Anwendungsfälle wo Caching nicht nur sinnvoll, sondern auch notwendig sein kann. Wenn niedrige Latenzen oder die Entlastung der Datenbank gefordert ist führt kaum ein Weg an Caching vorbei.
In unserem Projekt ist eine flexible Konfiguration und niedrige Latenz eine Kernanforderung und somit begann eine Reise von local caches zu distributed caches. Klingt einfach? Ist es auch, schließlich tauscht man durch die Spring Cache Abstraction nur eine Dependency aus - oder etwa nicht?
Packt die Kamera ein und geht mit mir auf Spring-Caching-Safari - wilde Invalidations und unangenehme Deployments inklusive! Erfrischung gibt es an der Learnings- und Good-Practices-Oase.
Seid gespannt auf:
- Local Caches vs. Distributed Caches
- Spring Caching Abstraction
- Resilient Cache Manager
- Caching Stats & Latency Metrics
- Self-made @CollectionCachable Annotation
next bullet point is loading... Cache is cold.
DIe Aufzeichnung dieses Webinars steht hier zur Verfügung: http://aws.amazon.com/de/recorded-webinar/
Amazon Redshift ist ein schneller und mächtiger, voll verwalteter Data Warehouse Dienst in der Cloud. Redshift skaliert von Terabytes bis über ein Petabyte bei sehr günstigen Kosten. In diesem Webinar geben wir einen Überblick über den Dienst, zeigen das Aufsetzen eines Redshift-Clusters, die Verwaltung, den Datenimport und die Abfrage des Data Warehouse über SQL und über Partnerwerkzeuge.
Um die Bedeutung moderner Cloud-Technologien einschätzen zu können, werden zunächst Grundlagen herkömmlicher Cluster-Architekturen behandelt. Darunter zählen Konzepte wie vertikale und horizontale Skalierung, Load-Balancing, Storage-Arten, usw.
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...André Krämer
Wenn Sie sich Beispielcode im MSDN ansehen, dann wird Eines ganz schnell klar: Wer einen O/R-Mapper wie das Entity Framework oder NHibernate einsetzt, der sollte ihn mit dem Repository Pattern paaren. Idealerweise sogar mit generischen Repositories. Schließlich können Sie nur so den O/R-Mapper Ihrer Wahl vor den darüber liegenden Schichten verbergen. Aber ist dieses Versteckspiel vorteilhaft? Wie sinnvoll ist es wirklich, höhere Schichten bewusst dumm zu halten? Und gewinnen Sie auch Flexibilität durch diese Herangehensweise? Genau um diese Fragen geht es in diesem Vortrag. Anhand einiger Praxisbeispiele werden wir uns im Vergleich zu den typischen MSDN-Anwendungen ansehen, ob das Repository Pattern tatsächlich seine Berechtigung hat.
Die Oracle Datenbank und Apache Hadoop
DOAG -Big Data für Oracle Entwickler: Zweitagesveranstaltung mit Hands-On - 25.09.2014 in Köln
DOAG 2014 -Die größte Anwenderkonferenz rund um alle Oracle Themen, vom 18.11.2014 - 20.11.2014 in Nürnberg
Die Oracle Datenbank in die Welt von Hadoop und NoSQL integrieren
Wie lassen sich die beiden Welten, Oracle RDBMS und der NoSQL Ansatz sinnvoll für die Archivierung und das Datensammeln einsetzen?
Ziel des Vortrags ist es aufzuzeigen, wie die Kombinationen aus den Vorteilen der beiden Welten für die Analyse und Archivierung von Daten eingesetzt werden kann.
Hadoop, mit einer entsprechen Container Datenbank Lösung, eignet sich gut, um im ersten Schritt Daten zu sammeln und/oder im letzten Schritt Daten zu archivieren.
Die eigentliche Oracle RDBMS Datenbank kann dabei schnell und schlank gehalten werden, um Hardware und damit Lizenzkosten einzusparen.
Es werden Architekturansätze aufgezeigt, wie die Integration der Oracle RDBMS und NoSQL Datenbank in das Hadoop Ökosystem dabei erfolgen kann.
Mit den kostenpflichtigen Adaptern der Oracle RDBMS lässt sich zwar einfacher eine tiefe Integration mit Hadoop erreichen, aber auch mit den freien Lösungen kann bereits eine umfangreiche Lösung implementiert werden.
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenDavid Schneider
Diese Slides zeigen, wie man Performanceprobleme von Microsoft SharePoint Server 2013 vorbeugt, analysiert und behebt. Die Slides sind im Rahmen einer Veranstalltung der SharePoint Community Mittelland Schweiz entstanden.
Caching mit Spring Boot - Pain & Gain @ JCON22QAware GmbH
JCON Online, September 2022, Dirk Kröhan, (Software Architect) at QAware.
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
"There are only two hard things in computer science: cache invalidation and naming things." …und doch kommt man an Caches manchmal nicht vorbei! Spring (Boot) bietet zur Rettung eine praktische Cache Abstraction an, die wir in unserem Projekt eingesetzt haben. Doch was passiert, wenn man von einem simplen in-memory cache auf einen distributed cache umsteigen will, wie z.B. Redis? Geht das wirklich so einfach? Nach einem Einstieg in die Spring Cache Abstraction, geht es um Themen wie Resilient Cache Manager, Cache Poisoning und was es neben klassischen Hit-/Miss-Rate Metriken noch so braucht. Das alles gepaart mit einer Live-Demo in der wir uns gemeinsam Schritt für Schritt die Themen anschauen. Zum Abschluss zeige ich euch gerne noch wie wir Spring Caching mit einer @CollectionCacheable Annotation erweitert haben, was euch als OpenSource Projekt zur Verfügung steht.
In diesem Vortrag stellte Michael Paege, Direktor Lizenzmanagement-Beratung bei OPITZ CONSULTING und DOAG Vorstandsmitglied, besondere Aspekte der Oracle Lizenzierung vor und ging in seiner Präsentation beispielweise näher ein auf die Lizenzierung von Hochverfügbarkeitsarchitekturen, Datentransfer, Unlimited License Agreement sowie Änderungen durch den Zukauf von Sun oder Änderungen im Bereich Middleware.
Michael Paege hielt diesen Vortrag im Rahmen der DOAG Konferenz 2010 in Nürnberg.
Performanter, hochskalierbarer Web 2.0-Dienst in Rubyvesparun
Ein neues Zeitalter ist angebrochen: Web2.0. Investoren geben viel Geld aus für Web2.0-Dienste. Ein rasanter Wettlauf um User-Generated Content hat begonnen und es ist kein Ende in Sicht. MySpace, Flickr, YouTube, Wikipedia, unzählige Blogs oder etwa Podcasting ist heute von jung bis alt vielen ein Begriff und wird oft auch im Alltag genutzt. Zeit spielt eine große Rolle bei der Planung und Konzeption eines neuen Web2.0-Dienstes. Deshalb findet man neben den üblichen nicht funktionalen Anforderungen wie Hochskalierbarkeit und Ausfallsicherheit auch Forderungen hinsichtlich immer kürzerer Implementierungszeiten. Neue Frameworks entstehen wie Sand am Meer und jedes verspricht dem Interessenten beim Faktor Time to Market das Beste zu sein. Eines der populärsten Frameworks dieser Art ist sicherlich Ruby on Rails.
4. Lösung 1: Datenbank
skalieren
Application- Application- Application-
Server Server Server
• Synchronisation
DB-Server DB-Server • Lizenzen
4
5. Lösung 2: Caching
Application- Application- Application-
Server Server Server
DB-Cache DB-Cache DB-Cache
• Entlastet DB
DB-Server • Beschleunigt Zugriff
5
6. Query Result Caching
• Ziel
– Hohe Cache-Hit-Rate
• Self-Management
– Schnelles Query-Matching
– Konsistenz
– Unabhängig von DB-Implementierung
• Tabellen-Cache vs. Objekt-Cache
6
7. Tabellen-Cache: DBProxy
• Materialized-Views in lokaler DB
• Implementiert als JDBC-Treiber
Query
Ergebnis Ergebnis
Query Query am Cache
DB-Call nein Treffer? ja
Rewrite ausführen
nein Insert? ja Cache Insert
Lokale DB
7
8. DBProxy: Lokale DB
• Pro gecachter Tabelle eine lokale
Kopie
– horizontal und vertikal unvollständig
• Pro gecachter Join-Query eine lokale
Tabelle
8
9. Beispiel
Lokale Kopie einer Tabelle produkt:
Id Preis Anzahl
Q1:
1 14 8 SELECT Id, Preis, Anzahl FROM produkt
2 15 22 WHERE Preis BETWEEN 14 AND 16
5 16 13
Q2:
7 NULL 18
SELECT Id, Anzahl FROM produkt
8 NULL 20 WHERE Anzahl BETWEEN 10 AND 20
Im Cache:
SELECT Id FROM produkt WHERE Anzahl BETWEEN 10 AND 15
9
10. Query Matching
• Gecachte Queries beschreiben Cache-
Inhalt
• Query Containment
– i.A. nicht lösbar
– aber für einfache Queries entscheidbar
• Schneller: Template-basiert
10
11. Konsistenz
• Update-Queries (update, delete, insert)
– werden am DB-Server ausgeführt
– werden vom DB-Server an die Proxies
weitergegeben
• Verzögerte Konsistenz
• Monotone Zustandsübergänge
• Sichtbarkeit von Updates
• Transaktionen nicht unterstützt
11
12. Praxis: Objekt-Cache
• Objektrelationaler Mapper (ORM)
– Entity: Klasse, die persistiert wird
• Transaktion pro Anwendungsfall
• RAM oder Festplatte
• Wichtig: Jeder DB-Zugriff geht über
den ORM
12
14. 1st-Level-Cache
• Hash-Tabelle pro Entity-Klasse
• Schlüssel: Objekt-ID =
Tabellenschlüssel
• Werte: Objektinstanzen
• Im Rahmen einer Transaktion
– Kein Synchronisationsbedarf zu anderen
Application-Servern
14
15. 1st-Level-Cache: Beispiel
Applikations-Code Was tatsächlich geschieht
BEGIN TX BEGIN TX
SELECT p FROM person AS p SELECT * FROM person
WHERE p.id=1 WHERE id=1
personCache.put(1, p)
SELECT p FROM person AS p personCache.get(1)
WHERE p.id=1
p.setFirma(‘Cenarion‘)
END TX UPDATE person SET firma=…
END TX
15
16. Puffer für Schreibzugriffe
• Update, Insert, Delete erst mit
Transaktionsende
• Ausnahme:
– Objekt vom Typ A wurde verändert: Vor
einer DB-Query über A müssen die
Änderungen persistiert werden
– Manueller Flush
16
17. 2nd-Level-Cache
• Pro Application Server
– Für alle Transaktionen gemeinsam
• Ebenso ID → Objekt
• Wird befüllt beim Lesen (SELECT) und
Commit (UPDATE, INSERT, DELETE)
17
18. 2nd-Level-Cache: Konsistenz
• Strategien:
– Read-Only
– Read-Write: keine serialisierbare
Transaktion
– Transaktional: 2PC (teuer)
• Mehrere Application-Server
– Synchronisation wie bei verteilter DB
(außer Read-Only)
– Veraltete Daten, TTL setzen
18
19. Query Cache
• SELECT … WHERE nonId=‘value‘
– Objekt-ID notwendig für 1st/2nd-Level-
Cache
• Schlüssel: Query
• Werte: Objekt-IDs
– Mit diesen 1st/2nd-Level-Cache befragen
• Pro Application Server
19
20. Query Cache: Konsistenz
• Bei Änderungen an einer Tabelle A
werden alle gecachten Ergebnisse für
Queries über A ungültig
• Mittels Timestamp
– Timestamp pro Tabelle und gecachter
Query
– Viel Locking notwendig
• Synchronisation der Tabellen-
Timestamps
20
21. Verwendungstipps (1)
• Zuerst andere Optimierungen (zB:
Indizes)
• 1st-Level-Cache ist immer aktiv
• 2nd-Level-Cache:
– Wenn viele Lesezugriffe vorkommen
– Veraltete Daten ohne
Transaktionsunterstützung
– Pro Entity entscheiden
– Performance messen (Speicherbedarf,
Beschleunigung, DB-Entlastung) 21
22. Verwendungstipps (2)
• Query-Cache:
– Nur mit 2nd-Level-Cache gemeinsam
– Tabellen mit (fast) nur Lesezugriff
– Bei natürlichen Schlüsseln
(≠Primärschlüssel)
• Speicherbedarf
– Objekte+Referenzen
• Keine direkten DB-Manipulationen per
SQL
22
23. Referenzen
• [1] Khalil Amiri, Sanghyun Park, Renu Tewari, Sriram Padmanabhan: DBProxy: A dynamic
data cache for Web applications. ICDE 2003: 821-831
• [2] Charles Garrod, Amit Manjhi, Anastasia Ailamaki, Bruce M. Maggs, Todd C. Mowry,
Christopher Olston, Anthony Tomasic: Scalable query result caching for web
applications. PVLDB 1(1): 550-561 (2008)
• [3] JPA offiziell: http://docs.oracle.com/javaee/6/tutorial/doc/bnbpy.html
• [4] JPA Tutorial: http://en.wikibooks.org/wiki/Java_Persistence
23
24. Zusammenfassung
• Problem: DB-Überlastung
• Lösung: Caching am Application-
Server
• Herausforderung Synchronisierung
– Caching besonders sinnvoll bei weniger
strikten Anforderungen
• Vorteil Objekt-Cache:
– Näher an der Applikation – leichter zu
steuern
• Self-Management ist eine Vision 24