Die folgende Tabelle stellt die Grundbegriffe der objektorientierten und der relationalen Welt gegenüber:

Ähnliche Dokumente
Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs Datenbanksysteme. Von den Konzepten bis zur Anwendungsentwicklung ISBN:

Inhaltsverzeichnis Einleitung Imperative Sprachkonzepte Objektorientierte Sprachkonzepte

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

Datenzugriffskomponente mit JPA 2.1

Oberseminar Datenbanksysteme: Aktuelle Trends

OODBMS Revival oder Renaissance? Einführung und Werkstattbericht über db40

Objektorientierte Datenbanken

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Nonstandard Datenbanken

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

Geoinformation Abbildung auf Tabellen

Kapitel 14. Objekt-relationales Mapping (ORM) mit Hibernate bzw. Java Persistance API (JPA) Prof. Dr. Wolfgang Weber Vorlesung Datenbanken

10. Datenbank Design 1

Praktische SQL-Befehle

Objekt-relationales Mapping und Performance-Tuning

Java Datenbankpersistenz mit OJB

Objektbasierte und objektorientierte Datenbanken

Praxisbuch Objektorientierung

Java-Grundkurs für Wirtschaftsinformatiker

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Einführung in die Informatik II

Datenmanagement in Android-Apps. 16. Mai 2013

Native Queries Datenbankabfragen in reinem Java. Carl Rosenberger Chief Software Architect, db4objects Inc. Java Forum Stuttgart 2006, 6.

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

Objektorientierte Datenbanken

Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Java-Grundkurs für rtschaftsinformatiker

Datenbanken Grundlagen und Design

O/R Mapper. O/R Mapper anhand von NHibernate & Entity Framework Thomas Mentzel März 2010

Java Database Connectivity (JDBC) zum Zugriff aus in z.b. in Java geschriebenen Applikationen

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

Objektorientierte Programmierung

1 Klassen und Objekte

Datenmodelle und Datenbanken 2

Visualisierung in Informatik und Naturwissenschaften

Enterprise JavaBeans Überblick

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Eclipse und EclipseLink

Datenbanken und Datenbanktypen Tag 1 : Kapitel 1. Christian Inauen. Lernziele. Entwicklung der Datenbanken.

Java Persistence API 2.x. crud + relationships + jp-ql

Inhaltsverzeichnis Vorwort zur vierten Auflage Vorwort zur dritten Auflage Vorwort zur zweiten Auflage Vorwort zur ersten Auflage Hinweise zur CD

Objektorientierte Datenbanken

6 Implementierung komplexer Systeme. 6.2 Datenbank-Anbindung

Migration der Datenbankzugriffsschnittstelle in Client-/Server-Systemen

SODA. Die Datenbank als Document Store. Rainer Willems. Master Principal Sales Consultant Oracle Deutschland B.V. & Co. KG

Datenbankpraktikum, Gruppe F. JPA mit Hibernate. Alexander Stautner, Harald Zauner, Sascha Schreier

Datenbanken Unit 9: OLAP, OLTP und objektrelationale Datenbanken

OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE

Objektorientierte Datenbanken

[ SQL] Wissen, das sich auszahlt

S(tructured)Q(uery)L(anguage)

Referenzielle Integrität SQL

Einführung: Verteilte Systeme - Remote Method Invocation -

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

J2EE-Praktikum. Enterprise JavaBeans Patterns. Peter Thiemann. J2EE-Praktikum, WS2005/2006. Universität Freiburg

Zweite Klassenarbeit der Jahrgangsstufe 1 (Wirtschaftsgymnasium) Thema: Relationale Datenbanken

Microsoft Access 2010 SQL nutzen

Integritätsbedingungen für komplexe Objekte in objektrelationalen Datenbanksystemen

7. Datenbankdefinitionssprachen

OR-Mapping. WS2008/2009 DBIS/Dr. Karsten Tolle

LINQ to SQL. Proseminar Objektorientiertes Programmieren mit.net und C# Christoph Knüttel. Institut für Informatik Software & Systems Engineering

Java Persistence API. Phillip Ghadir Oliver Tigges

DB1. DB SQL-DQL 1 Mario Neugebauer

In diesem Abschnitt wollen wir uns mit dem Thema XML Datenbank beschäftigen. Das Ziel ist, herauszufinden, was XML Datenbank überhaupt sind und was

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

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders

Teil VIII. Weitere Datenbanksprachen

Java-Persistence-API mit Hibernate

SQL structured query language

CORBA Lebensdauer von Objekten, Transaktionen MD 5/02

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

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

Ein Ausflug zu ACCESS

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Konzeption und Implementierung eines Datenbank-Agenten für die Bereitstellung von Daten aus dem Verkehr

4. Datenbanksprache SQL

Java-Objekte mit SQL verheiraten

Einführung SQL Data Definition Language (DDL)

Indizes. Index. Datenfeld Normale Tabelle. Gesucht wird: Zugriff. 3. Zugriff 1. Zugriff.

Übung 01 Tabellen erstellen

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Universität Augsburg, Institut für Informatik WS 2011/2012 Prof. Dr. W. Kießling 09. Dez Dr. M. Endres, Dr. S. Mandl, F. Wenzel Lösungsblatt 6

Grails Ein modernes MVC Framework zur Erstellung von Webanwendungen Gabriel Münch

Anwendungsentwicklung Datenbanken Datenbankentwurf. Stefan Goebel

Erzeugung und Veränderung von Tabellen

Objektorientierte Datenbanken

Inhaltsverzeichnis. Inhalt. 1 Einführung in die Datenbanktechnologie

Probeklausur mit Musterlösung

10. Datenbank- Design

Informatik B. Vorlesung 14 Serialisierung, Autoboxing. Dr. Ralf Kunze

Objektorientierte Datenbanken

Query Result Caching. Optimierung des Datenbankzugriffs

Moderne Datenbankkonzepte

Hibernate Das Praxisbuch für Entwickler

Transkript:

1.Einleitung: Bei der Arbeit mit objektorientierten Programmiersprachen stellt sich häufig die Frage wie Objekte persistiert werden können. Da vor allem relationale Datenbanken sich großer Beliebtheit erfreuen, lag der Schluss nahe Objekte auf Tabellenschemen abzubilden. Dieses Vorgehen führte zu objektrelationen Datenbanksystemen, die jedoch einen großen Nachteil mit sich bringen: das Mapping zwischen der objektorientierten und der relationalen Welt. Um dieses Problem zu umgehen entstanden die Objektdatenbanken wie zum Beispiel db4o. db4o wurde im Jahr 2000 durch Carl Rosenberger entwickelt und 2001 veröffentlicht. 2004 wurde es durch die Db4objects Inc. übernommen und kommerzialisiert. 2008 erhielt die Versant Corporation die Rechte an db4o und vertreibt seit dem das kostenpflichtige Produkt Versant Object Database und unter freier Lizenz db4o. db4o liegt aktuell in Version 8.0 vor, die 2011 veröffentlicht wurde. 2.Basiskonzepte Der wohl größte Unterschied zu objektrelationalen Datenbanksystemen besteht darin, dass die Objekte nicht in Tabellen abgelegt werden und somit kein Mapping zwischen den beiden Welten nötig ist. Die Speicherung erfolgt über die Serialisierung von Objekten (siehe Java ObjectOutputStream/ ObjectInputStream) was dazu führt, dass die Objekte im Binärformat abgelegt werden und somit nicht ohne Weiteres lesbar sind, wie es bei Tabellen der Fall ist. Die folgende Tabelle stellt die Grundbegriffe der objektorientierten und der relationalen Welt gegenüber: OODB RDB Gemeinsamkeiten Unterschiede Klasse Tabelle Definition einer Datenstruktur - Klasse kann auch Methoden definieren - Tabelle nur statische Daten Objektinstanz Tupel Repräsentation von Daten Attribut Spalte Festlegung eines Feldes der Datenstruktur Methode Prozedur Festlegung eines bestimmten Verhaltens - Objekt kann Daten mit verschiedenen Sichtbarkeiten und Referenzen zu anderen Objekten halten - Tupel nur Systemdatentypen - RDB hat eine feste Menge von Datentypen - OODB kann beliebigen Datentypen enthalten - Methode gehört zu einer bestimmten Klasse - Prozedur ist ein eigenes Objekt Identität Schlüssel Identifikation eines Objektes/Tupel Referenz Relation Stellt Verbindung zwischen verschieden Objekten/Tabellen dar - Objektidentität (==) unabhängig vom Inhalt - Einzigartigkeit von Werten - OODB Objektreferenzen - RDB Fremdschlüssel

db4o speichert primitive Datentypen, deren Wrapperklassen, Strings- und Date-Objekte als Attribute direkt in einem Objekt, in denen sie referenziert werden. Alle anderen Datentypen werden als Objekt einzeln abgelegt und nur die Referenz auf diese direkt gespeichert. Intern werden die Objekte über eine eindeutige Objekt-ID unterschieden. 3. Modellierung relationaler Beziehungen Die Modellierung relationaler Beziehungen in einer objektorientierten Welt soll an folgendem Beispiel illustriert werden: Die 1:1 Beziehung Gast/ Guthaben könnte als Attribut in beiden Klassen abgebildet werden:

Die 1:n Beziehung könnte als Liste auf 1-Seite und als Attribut auf der n-seite abgebildet werden Die n:m Beziehung könnte als Liste auf beiden Seiten abgebildet werden:

4. CRUD-Operationen Create, Read, Update, Delete sind Methoden um Objekte zu erstellen, zu lesen, zu manipulieren und zu löschen. Eine beispielhafte Verwendung dieser Methoden ist in dem Beispielprojekt DbOs unter /src/main/java/de/htwk/mhantel/examples/dbos/crud/crudoperations.java zu finden. 5. Anfragen an die Objektdatenbank db4o kennt drei verschiedene Wege Anfragen an die bestehende Datenbank zu formulieren. Alle Beispiele befinden sich im Beispielprojekt DbOs unter /src/main/java/de/htwk/mhantel/examples/dbos/party/partyexample.java Query by Example: Erstellung eines Beispielobjektes mit Werten die gesucht werden alle nicht Defaultwerte gehen in die Suche ein Suche nach Defaultwerten nicht möglich Beispiel PartyExample.inviteToAnotherParty() Native Query: Anfragen vollständig in der Programmiersprache definierbar und ausführbar alle Vorteile die die Programmiersprache mit sich bringt siehe Predicate<>, Comparator<> Interface Beispiel PartyExample.nativeQuery() Simple Object Database Access Query benutzt Strings um Objektattribute zu identifizieren keine Typsicherheit, keine Meldung bei Schreibfehlern etc. bei dynamischen Queries vom Vorteil auch private Attribute zugreifbar arbeitet mit Reflection Suche auf Attribut des Typs Collection führt zu Suche in jedem Element der Collection Beispiel PartyExample.sodaQuery(), PartyExample.anotherSodaQuery()

6. Transaktionen db4o startet implizit für jedes ObjectContainer-Objekt eine Transaktion. Eine Transaktion wird durch ein commit() oder ein close() beendet, wobei ein commit() sofort eine neue Transaktion startet. Das Abbrechen bzw. Zurücksetzen einer Transaktion erfolgt über rollback(). Transaktion sind in db4o Read-Committed, das heißt eine Änderung an der Datenbank wird nach einem commit() für alle sichtbar. Um Schreibkonflikte zu vermeiden ist ein eigenes Objekt-Locking nötig, wobei db4o Semaphore zur Verfügung stellt (siehe 7. für Beispielverwendung). 7. Client/Server-Modes db4o kennt drei verschiedene Client/Server-Modes: Embedded-Modus: Client/Server befinden sich innerhalb einer virtuellen Maschine kein Login nötig eignet sich für Webanwendungen, Datenbanken für mobile Geräte Client/Server-Modus: Client und Server interagieren via TCP/IP Login via Name/Passwort Beispiel /src/main/java/de/htwk/mhantel/examples/dbos/clientserver zu speichernde Klasse muss nicht bekannt sein, da über GenericReflection persistiert wird Out-of-Band-Signalling: senden von Signalen vom Client an den Server Beispielsignale close, defragment siehe Interfaces: MessageSender/MessageRecipient 8. Features Weitere interessante Features in db4o sind unter anderem: Callbacks Event/Listener-System um auf Systemereignisse zu reagieren Replikationen Ladeverhalten große Objektbäume werden nicht vollständig geladen nur bis zu definierbarer Tiefe geladen Objektbäume müssen über activate() nachgeladen werden, liefern sonst null Activatable Interface und weitere Konfiguration bieten Möglichkeit Objekte lazy nachzuladen

9. Zusammenfassung db4o eignet sich vor allem für mobile Datenbanken wie zum Beispiel auf Smartphones oder Tabletts, da diese mit objektorientierten Sprachen arbeiten und somit ihre Objekte einfach persistieren können. Durch den Einsatz von db4o wird das Mapping zwischen Objekten und Tabellen überflüssig und produziert somit weniger Overhead bei der Speicherung von Daten. Darüber hinaus bieten objektorientierte Datenbanken den Vorteil, dass Entwickler sich nicht mit mehreren Paradigmen auseinandersetzen müssen, wie es zum Beispiel bei SQL der Fall ist. Die db4o Datenbanken ist einfach einzurichten und über einbinden von wenigen Java-Bibliotheken (Jar- Dateien) nutzbar. db4o Datenbanken sind nur von innen durch Code konfigurierbar und sollten eine Größe von 10 Gigabytes nicht überschreiten (siehe db4o Versant: Reference Documentation/Evaluation Guide/Scalability). Da viele Entwickler nicht auf die Vorteile von relationalen Datenbanken verzichten wollen, bietet db4o die Möglichkeit eine relationale Datenbanken als Backend über Hibernate zu verwenden.