Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Johannes Passing, 17.01.2006 Prevayler. HPI, Seminar Advanced Database Technology - WS2005/2006 2 Agenda Einführung Persistenzhaltungs-Konzepte Einsatzarten.

Ähnliche Präsentationen


Präsentation zum Thema: "Johannes Passing, 17.01.2006 Prevayler. HPI, Seminar Advanced Database Technology - WS2005/2006 2 Agenda Einführung Persistenzhaltungs-Konzepte Einsatzarten."—  Präsentation transkript:

1 Johannes Passing, 17.01.2006 Prevayler

2 HPI, Seminar Advanced Database Technology - WS2005/2006 2 Agenda Einführung Persistenzhaltungs-Konzepte Einsatzarten von Datenbanken Object Prevalence Konzepte Prevayler Konzepte Datensicherheit Performanz Fazit

3 HPI, Seminar Advanced Database Technology - WS2005/2006 3 Einführung Persistenzhaltung für objektorientierte Programme Verwendung von RDBMS und O/R-Mapping Objektmodell und relationales Modell sehr unterschiedlich Mapping idR nicht transparent Mapping aufwändig und teuer Ideal: Objektmodell mit Geschäftsobjekten Objekte besitzen ACID-Eigenschaften Objekt-Implementierung entspricht der transienter Objekte Kein Mapping o.ä. notwendig Einfachere und schnellere Entwicklung

4 HPI, Seminar Advanced Database Technology - WS2005/2006 4 Persistenzhaltung – Einsatzarten von Datenbanken Application Database [Fowler] Exklusiv von einer einzigen Applikation verwendet Schema ist auf spezifische Anforderungen angepasst Evolutionäre Schemaentwicklung möglich Konsistenz kann von Applikation sichergestellt werden Trigger, Constraints etc. nicht unbedingt erforderlich Einfach verständliches Schema

5 HPI, Seminar Advanced Database Technology - WS2005/2006 5 Persistenzhaltung – Einsatzarten von Datenbanken Application Database (2) Interoperabilität hat geringen Stellenwert In-Process-Implementierung möglich Kein externer Zugriff notwendig (ODBC etc) Typische Anwendungen 3 Schichten-Systeme Datenbank durch Applikation verkapselt (EJB, COM+, WebServices etc) Desktop-Anwendungen Kein externer Zugriff notwendig Datenbank wird an Applikation angepasst Datenbank ist Mittel, Applikations-Daten persistent zu halten

6 HPI, Seminar Advanced Database Technology - WS2005/2006 6 Persistenzhaltung – Einsatzarten von Datenbanken Integration Database [Fowler] Wird von mehreren Applikationen genutzt Dient der Daten-Integration zwischen Applikationen Schema muss allen Applikationen gerecht werden Generelles, oftmals komplexes Schema Hohe Schemastabilität notwendig Hoher Stellenwert von Konsistenzsicherung auf Datenbank-Ebene Einsatz von Trigger, Constraints, Stored Procedures

7 HPI, Seminar Advanced Database Technology - WS2005/2006 7 Persistenzhaltung – Einsatzarten von Datenbanken Integration Database (2) Hoher Stellenwert von Interoperabilität Netzwerkzugriff erforderlich Meist separate Maschine für Datenbank Schnittstellen wie ODBC, JDBC, OLEDB notwendig Typische Anwendungen ERP-Systeme OLTP-Systeme Applikation wird an Datenbank angepasst Applikation ist Mittel zum Zugriff auf die Datenbank und deren Modifizierung

8 HPI, Seminar Advanced Database Technology - WS2005/2006 8 Object Prevalence Konzept, In-Memory Datenstrukturen mit ACID-Semantik zu versehen Erstmals 1987 von A. D. Birrell, M. B. Jones und E. P. Wobber in A Simple and Efficient Implementation for Small Databases veröffentlicht Name Object Prevalence von Klaus Wuestefeld eingeführt Gründer des Prevayler-Projektes

9 HPI, Seminar Advanced Database Technology - WS2005/2006 9 Object Prevalence Konzepte Alle Daten werden in einer einzigen Datenstruktur abgelegt Gesamte Datenstruktur befindet sich im Arbeitsspeicher Prämissen: Es steht stets genug Arbeitsspeicher zur Verfügung RAM-Preise sinken stetig Durch 64 Bit-Maschinen kann Adressknappheit umgangen werden In-process Ausführung Application Database Gegensatz zu RDBMS-Konzept – RDBMS ist so konzipiert, dass nicht alle Daten im Arbeitsspeicher gehalten werden müssen

10 HPI, Seminar Advanced Database Technology - WS2005/2006 10 Object Prevalence Konzepte (2) Periodischer Snapshot der Datenstruktur Abspeicherung auf persistentem Medium Zugriff auf Datenstruktur geschieht indirekt Command-Pattern Write Ahead Log für modifizierende Zugriffe Log beinhaltet Modifizierungen seit letztem Snapshot Abspeicherung auf persistentem Medium Startup/Recovery Einlesen des letzten Snapshots Log wird eingespielt

11 HPI, Seminar Advanced Database Technology - WS2005/2006 11 Prevayler Projekt Prevayler Gegründet durch Klaus Wuestefeld Erste öffentliche Implementierung des Object Prevalence- Konzeptes Konzept nicht grundsätzlich neu, aber erstmals universell implementiert Implementiert in Java Open Source (BSD Lizenz) Erstes Release 2001 (noch unter LGPL) Inzwischen existieren weitere Implementierungen neben Prevayler Bekannt durch Performanz-Angaben 9000 mal schnellere Abfragen als Oracle (über JDBC) 3000 mal schnellere Abfragen als MySQL (über JDBC) kein TPC-C o.ä. verfügbar

12 HPI, Seminar Advanced Database Technology - WS2005/2006 12 Prevayler – Konzepte Datenstruktur Objektbaum als Datenstruktur Keine Einschränkung bzgl. Implementierung Enthält sämtliche Business-Objekte Es existiert ein einziges Wurzel-Objekt Alle weiteren Objekte sind über Wurzel-Objekt erreichbar wird als PrevalentSystem bezeichnet Objektbaum muss serialisierbar sein Implementierung von java.io.Serializable oder java.io.Externalizable Zur Snapshot-Erzeugung

13 HPI, Seminar Advanced Database Technology - WS2005/2006 13 Prevayler – Konzepte Datenzugriff Zugriffe nur durch Command-Objekte Lesen: Query-Objekt Schreiben: Transaction-Objekt Nur programmatischer Zugriff möglich Keine Query Language o.ä. Prevayler weiß nicht, was Transactions/Queries tatsächlich tun Synchronisation und Snapshots auf Datenstruktur- statt Objekt-/Page-Ebene Gegensatz zu RDBMS

14 HPI, Seminar Advanced Database Technology - WS2005/2006 14 Prevayler – Konzepte Datenzugriff (2) Alle Zugriffe werden seriell ausgeführt Während Ausführung wird gesamte Datenstruktur gesperrt Lesender Zugriff Implementierung der Query-Schnittstelle Zugriffe werden nicht protokolliert Query-Objekte dürfen niemals Modifikationen ausführen public interface Query { public Object query( Object prevalentSystem, Date executionTime) throws Exception; }

15 HPI, Seminar Advanced Database Technology - WS2005/2006 15 Prevayler – Konzepte Datenzugriff (3) Modifizierender Zugriff Implementierung der Transaction-Schnittstelle (bzw. TransactionWithQuery) Transaction-Objekt muss serialisierbar sein Wird vor Ausführung in Transaction Log serialisiert Verhalten muss deterministisch sein Während Startup/Recovery werden Commands erneut ausgefüht Externe Ressourcen dürfen idR nicht verwendet werden Prevayler-Zeit muss statt Systemzeit verwendet werden public interface Transaction extends java.io.Serializable { public void executeOn( Object prevalentSystem, Date executionTime); }

16 HPI, Seminar Advanced Database Technology - WS2005/2006 16 Prevayler – Datensicherheit Snapshots Gesamter Objektbaum wird serialisiert Standard: Java Object Serialization Alle Objekte, nicht nur dirty Objekte werden serialisiert Ablauf 1.Objektbaum sperren 2.Objektbaum serialisieren und speichern 3.Objektbaum entsperren 4.Snapshot als vollständig markieren 5.Transaction Log trunkieren, alte Snapshots löschen (optional) Downtime während Serialisierung Kann durch Replikation vermieden werden Periodische Durchführung Intervalldauer bestimmt Downtime und Recovery-Dauer

17 HPI, Seminar Advanced Database Technology - WS2005/2006 17 Prevayler – Datensicherheit Transaktionsverarbeitung Ablauf 1.Test auf Serialisierbarkeit des Transaction-Objekts 2.Approval durch Censor 3.Eintrag in Transaction Log 4.Aufruf Transaction.executeOn() Transaction-Command gilt als atomar Atomarität muss durch Command selbst sichergestellt werden Bei Fehler müssen alle Modifikationen rückgängig gemacht werden Aufwändig bei kompositen Aktionen Transaction.executeOn kann Exception werfen Ergebnis hängt von verwendetem Censor ab

18 HPI, Seminar Advanced Database Technology - WS2005/2006 18 Prevayler – Datensicherheit Transaktionsverarbeitung – Censors Censors Genehmigen Commands (Approval) vor Ausführung LiberalTransactionCensor Keine Prüfung der Commands Commands werden sofort auf Haupt-Datenstruktur ausgeführt Wenn Fehler auftritt, muss dies von Command behandelt werden – sonst: inkonsistente Datenstruktur

19 HPI, Seminar Advanced Database Technology - WS2005/2006 19 Prevayler – Datensicherheit Transaktionsverarbeitung – Censors (2) StrictTransactionCensor Command wird doppelt ausgeführt Command wird zunächst auf Kopie der Datenstruktur (Food Taster) ausgeführt Wenn erfolgreich: Ausführung auf Haupt-Datenstruktur Bei Fehler (Exception): Transaktion wird abgebrochen Kopie der Datenstruktur wird verworfen und neu erstellt Sehr teure Operation Konsequenz Höhere Konsistenz-Sicherheit Erhöhter Speicherbedarf und Ausführungszeit

20 HPI, Seminar Advanced Database Technology - WS2005/2006 20 Prevayler – Datensicherheit ACID Durability durch Snapshots und Logs sichergestellt Isolation durch serielle Command-Ausführung Entwickler muss Atomarität von Commands sicherstellen Ggf. durch Kompensation Sonst: Gefahr inkonsistenter Datenstruktur Entwickler muss Konsistenz der Datenstruktur sicherstellen Vor und nach erforgreicher/fehlerhafter Ausführung eines Commands muss Datenstruktur konsistent sein Fehlerhafte Command-Implementierung kann gesamte Datenkonsistenz zerstören

21 HPI, Seminar Advanced Database Technology - WS2005/2006 21 Prevayler – Performanz Allgemein Vergleich mit RDBMS schwierig RDBMS meist out-of-process Verwendung von ODBC/JDBC/etc Verfügbare Performanz-Messungen beziehen sich auf 1- Prozessor-Maschinen Flaschenhals Synchronisation Serielle Ausführung von Queries und Transactions Problematisch bei stark nebenläufigen Systemen Problematisch auf SMP-Systemen Weitere CPUs werden nicht optimal ausgenutzt Problematisch bei langen Transaktionen Lange Wartezeit auf Lock

22 HPI, Seminar Advanced Database Technology - WS2005/2006 22 Prevayler – Performanz Lesender Zugriff Kein Zugriff auf persistenten Speicher notwendig Alle Daten befinden sich in Arbeitsspeicher Bei sinnvollem Einsatz von Hashtables etc sehr schneller Zugriff Minimaler Overhead Kann Größenordnungen schneller sein als RDBMS Modifizierender Zugriff Zugriff auf persistenten Speicher notwendig WriteAhead-Logging Bei StrictTransactionCensor: Zusätzlicher Overhead Rollbacks teuer Etwa gleiche Größenordnung wie RDBMS

23 HPI, Seminar Advanced Database Technology - WS2005/2006 23 Prevayler – Schemaevolution Schemaevolution Werden Klassen ausgetauscht, müssen diese mit Snapshot bzw. Transaction Log kompatibel sein Sonst: Deserialisierung nicht mehr möglich Beispiel: Löschen/Hinzufügen eines Attributs Einschränkungen hängen von Serialisierungsverfahren ab Standard: Java Object Serialization Sehr strikt Durch serialVersionUID, transient fields, SerialPersistentFields und Externalizable lässt sich Serialisierung beeinflussen Abwärtskompatibilität häufig nicht realisierbar Workaround: 1.Snapshot mit alten Klassen laden 2.Datenstruktur mit neuen Klassen erzeugen 3.Snapshot erzeugen Sehr aufwändig, erfordert Downtime

24 HPI, Seminar Advanced Database Technology - WS2005/2006 24 Fazit Einsatz Als Application Database für moderate Datenmengen Vornehmlich Lese-Zugriff auf Daten Verwendung Keinerlei O/R-Mapping notwendig Schnelle Entwicklung Hohe Transparenz für Geschäfts-Objekte Jedoch geringe Transparenz bei Datenzugriff (Query/Transaction-Modell proprietär) Performanz Hohe Lese-Performanz Nicht für stark nebenläufige oder SMP-Systeme ausgelegt Datensicherheit Erfordert Sorgfalt vom Entwickler Erreicht nicht die Sicherheit und Robustheit moderner RDBMS

25 HPI, Seminar Advanced Database Technology - WS2005/2006 25 Referenzen [RJW] Birrell, Andrew; Jones, Michael; Wobber, Edward: A Simple and Efficient Implementation for Small Databases, digital Systems Reseach Center, 1987 [Carver] Carver, Frank: Thoughts about Prevayler and Databases http://radio.javaranch.com/frank/2004/12/27/1104152030000.html (10.11.2005) [Evans] Evans, Huw: Why Object Serialization is Inappropriate for Providing Persistence in Java, Department of Computing Science, University of Glasgow [Fowler] Fowler, Martin: Design Bliki http://www.martinfowler.com/bliki/design.html (19.12.2005) [Melton] Melton, Hayden: An Evaluation of Object Prevalence, Dept. of Electrical and Electronic Engineering, University of Auckland [ON] Obermayer, Nathanael: ACID gratis, iX Ausgabe 02.2004 [Prevayler] Prevayler Homepage, http://www.prevayler.org [Spille] Spille, Mike: Prevayler Revisited http://www.pyrasun.com/mike/mt/archives/2004/12/25/15.02.00/index.html (10.11.2005) [PT] Printezis, Tony: Garbage Collection in the Java HotSpot Virtual Machine, DevX http://www.devx.com/Java/Article/21977/0/ (10.01.2006) [WE] Wolff, Eberhard: Die schnellste Datenbank der Welt, Java Magazin Ausgabe 06.2004


Herunterladen ppt "Johannes Passing, 17.01.2006 Prevayler. HPI, Seminar Advanced Database Technology - WS2005/2006 2 Agenda Einführung Persistenzhaltungs-Konzepte Einsatzarten."

Ähnliche Präsentationen


Google-Anzeigen