Überblick über das poet-datenbanksystem

21
1 Überblick über das POET-Datenbanksystem Kurzvortrag im Rahmen der Vorlesung Datenbanksysteme II FU-Berlin im WS03/04 by Jürgen Broß

Upload: ramiro

Post on 30-Jan-2016

48 views

Category:

Documents


0 download

DESCRIPTION

Überblick über das POET-Datenbanksystem. Kurzvortrag im Rahmen der Vorlesung Datenbanksysteme II FU-Berlin im WS03/04. by Jürgen Broß. Inhalt. Einführung Architektur (Java Binding) Java Binding (ODMG) Beispiel: Ferienhaus Datenbank Einschränkungen Konformität zum ODMG Standard Fragen. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Überblick über das POET-Datenbanksystem

1

Überblick über dasPOET-Datenbanksystem

Kurzvortrag im Rahmen der Vorlesung Datenbanksysteme II

FU-Berlin im WS03/04

by Jürgen Broß

Page 2: Überblick über das POET-Datenbanksystem

2

Inhalt

Einführung Architektur (Java Binding) Java Binding (ODMG)

Beispiel: Ferienhaus Datenbank Einschränkungen Konformität zum ODMG Standard

Fragen

Page 3: Überblick über das POET-Datenbanksystem

3

Einführung

Gründung der Poet Software GmbH 1993 Hauptsitz in Hamburg Börsennotiertes Unternehmen Zwei Produktreihen:

Katalogplattform: Poet X-Solutions Datenbanksystem: FastObjects

Produktreihe FastObjects: Objektorientierte Datenbank wird in verschiedenen Versionen angeboten (t7, e7, j2) j2 in 100% Java geschrieben < 500KB (für eingebettete

Systeme)

Page 4: Überblick über das POET-Datenbanksystem

4

Architektur

Binding Language Unterstützt C++ und Java

Java Binding mit ODMG oder JDO ODMG-Gruppe 2001 aufgelöst, JDO soll anstelle des

ODMG Java Bindings treten Smalltalk Binding nicht unterstützt

Page 5: Überblick über das POET-Datenbanksystem

5

Architektur

Java Binding (postprocessing)

Java source file

Java class file

Java enhancedclass file

Property fileptj.opt

javac

ptj –enhance

Databasedictionary

Page 6: Überblick über das POET-Datenbanksystem

6

Architektur

Dictionary enthält alle Informationen über die Struktur der

persistenten Klassen Klassenschema

kann verschiedene Versionen von Klassen verwalten teilt der DB mit, wie Klassen gelesen und

geschrieben werden müssen

Page 7: Überblick über das POET-Datenbanksystem

7

Architektur

Datenbank ist ein Verzeichnis des Dateisystems enthält hauptsächlich die beiden Dateien

objects.dat und objects.idx objects.dat enthält persistente Objekte objects.idx enthält Indexinformationen

Name der Datenbank entspricht Namen des Verzeichnisses

Objekte werden in kanonischer Form in der DB abgelegt Plattformunabhängigkeit Anwendungen in unterschiedlichen Bindings können auf die

gleiche DB zugreifen proprietäres Format (andere Implementierungen können

nicht auf DB zugreifen)

Page 8: Überblick über das POET-Datenbanksystem

8

Architektur

Datenbank & Dictionary Dictionary ist auch eine DB, also auch ein Verzeichnis

(_objects.dat, _objects.idx) Ein Dictionary kann von mehreren Datenbanken benutzt

werden

Datenbank Datenbank Datenbank

Dictionary

Page 9: Überblick über das POET-Datenbanksystem

9

Architektur

Datenbank Objektnetzwerk Persistance by reachability

(unabhängig von Sichtbarkeit)

Wurzelobjekte werden mit eindeutigem Namen an Datenbank gebunden

Alle Objekte, die von einem persistenten Objekt referenziert werden, müssen persistenten Klassen angehören

Objektnetzwerk

RDBMS OODBS

Interface Database { … public void bind(Object o, String name); public Object lookup(String name); …}

Page 10: Überblick über das POET-Datenbanksystem

10

Architektur

Transaktionen Erstellen, Zugriff und

Modifikation von persistenen Objekten nur innerhalb einer Transaktion möglich

Transaktionen können verschachtelt werden(nicht mehr ODMG Standard) jede Transaktion hat ihren eigenen Puffer

besonders nützlich bei GUI Programmierung (Wizards)

Verschiedene Threads können sich eine Transaktion “teilen” eigene Synchronisation notwendig

txn.begin(); //Level 1// some Product objects to work with . . .Product firstProduct = . . .Product secondProduct = . . .Product thirdProduct = . . .firstProduct.setTitle( “Ferrari" );

txn.begin(); //Level 2 secondProduct.setTitle( “Porsche" );

txn.begin(); //Level 3 secondProduct.setTitle( “Mercedes" ); thirdProduct.setTitle( "Stock Fishing" ); txn.commit(); //commit to transaction level 2 txn.commit(); // commit to level 1txn.abort(); // abort to level 0

Page 11: Überblick über das POET-Datenbanksystem

11

Architektur

Referentielle Integrität Einfügen: persistance by reachability garantiert beim

Einfügen, dass alle referenzierten Objekte persistent werden Löschen:

ODMG Standard sieht garbage collection vorPersistente Objekte, die nicht mehr referenziert werden oder per Namen gebunden sind, werden automatisch gelöscht

Nachteil: FastObjects weicht hier vom Standard ab Programmierer muss sich selber um referentielle Integrität kümmern

Datenintegrität Datenintegrität nicht durch Anweisungen oder Deklarationen

im Datenbankschema zu gewährleisten Programmierer muss sich um Integrität der Daten kümmern

Page 12: Überblick über das POET-Datenbanksystem

12

Architektur

Interface Constraints

Beispiel

public interface Constraints{ public void postRead(); public void preWrite() throws ConstraintViolation; public void preDelete() throws ConstraintViolation;}

class Provider implements Constraints{ private SetOfObject houses; private Address address; private Date birthday; transient int age; // don’t make it persistent … public void postRead(){ // berechne Alter aus aktuellem Datum und Geburtstag } public void preWrite() throws Constraint Violation{ // prüfe z.B. die Addressangaben auf Integrität } public void preDelete() throws ConstraintViolation{ Iterator iter = houses.iterator(); while(iter.hasNext()) Database.current().deletePersistent(iter.next()); //may cascade }}

Page 13: Überblick über das POET-Datenbanksystem

13

Architektur

FastObjects Sperr-Typen

Angeforderte Sperre

Gehaltene Sperre

RvD

RvW

WvW

DvW

DvR

Exc

None + + + + + +

ReadvDelete

+ + + - - -

ReadvWrite

+ + - - - -

WritevWrite

+ - - - - -

DeletevWrite

- - - - - -

DeletevRead

- - - - - -

Exc - - - - - -

ODMG Java Standard FastObjects

Transaction.READ READvDELETE

Transaction.UPGRADE WRITEvWRITE

Transaction.WRITE DELETEvWrite

Transaction.DELETETransaction.DELETE DELETEvREADDELETEvREAD

Mapping der Sperr-Typen kanndynamisch verändert werdenjava.util.PropertiesmyTransaction.setProperties(props)

Page 14: Überblick über das POET-Datenbanksystem

14

Architektur

Extents Extents sind im ODMG 3.0 Standard nicht vorgesehen FastObjects unterstützt Extents:

Ein mit einem eindeutigen Namen an die DB gebundenes Wurzelobjekt ist nicht mehr notwendigObjekte über Extents erreichbar

FastObjects-API stellt Extent Klasse zur Verfügung Extents spiegeln Vererbungsstruktur wieder

Beispiel: Der Extent von Kunde ist eine Untermenge des Extents von Person

jede persistente Klasse hat standardmäßig einen Extent Extents werden automatisch von FastObjects verwaltet

Verwaltung verschlechtert die Performance so wenig Extents wie möglich nutzen (in ptj.opt ausschalten)

txn.begin() Extent ext = new Extent(Person.class); int size = ext.size(); while(ext.hasNext()){ … }txn.commit();

Page 15: Überblick über das POET-Datenbanksystem

15

Architektur

Indexstrukturen Indexe können auf

Membervariablen persistenter Objekte angelegt werden

mehrdimensionale Indexe möglich

Indexsystem von FastObjects ist erweiterbarDrittanbieter können FastObjects Service Provider Interface (SPI) nutzen

Indexe werden werden in ptj.opt deklariert

ptj.opt/** CLASS* Provider**/[classes\Provider]persistent = trueschema = FerienhausSchemahasExtent = true //optionaluseIndexes = ProviderNameIndex/** INDEX* ProviderNameIndex**/[indexes\ProviderNameIndex]class = Providermembers = name

prometheus
vererbung bei indexen
Page 16: Überblick über das POET-Datenbanksystem

16

Architektur

Objektzugriffsverhalten (Access Patterns) Nur sinnvoll bei Client-Server-Architektur Zweischneidiges Schwert:

Bei Zugriff auf ein persistentes Objekt wollen wir nicht direkt alle referenzierten Objekte mitübertragen Traffic sparen

Wir wollen nicht jedes referenzierte Objekt bei explizitem Zugriff einzeln übertragen Verbindungsoverhead sparen

Lösung: Lege mit Access Patterns fest welche Zugriffspfade in welcher

Tiefe genutzt werden Gesamtzahl der zu übertragenden Objekte kann beschränkt

werden Access Patterns werden in der ptserver.cfg Datei angegeben

Zu beachten: Access Patterns gelten für alle Versionen einer Klasse

Access Patterns die sich auf Instanzvariablen beziehen, die eine Version der Klasse nicht mehr besitzt werden für diese ignoriert

Page 17: Überblick über das POET-Datenbanksystem

17

Architektur

Person7

Person7

Person6

Person1

Person2

Person3

Person4

Person5

fathermother

friends

Person8

father

friends mother

level 0

level 1

level 2

ptserver.cfg Datei:[schemata\dict\accessPatterns]usedPatterns = FriendsAndRelativesmaxPreloadObjects = 7[schemata\dict\accessPatterns\FriendsAndRelatives]pattern = *.Person.father:2, *.Person.mother:4,*.Person.friends[0-$]:1

Page 18: Überblick über das POET-Datenbanksystem

18

Architektur

Objektauflösung Java: Objekte werden per Referenz modifiziert,

Objektvariablen enthalten Zeiger auf Speicheradresse Wohin zeigt eine Objektvariable, wenn sie ein persistentes

Objekt referenziert? FastObjects implementiert Objektvariablen als spezielle

Referenzobjekte, die die eigentliche Referenz kapseln Referenzobjekte dienen als Proxy und liefern die eigentlichen

Objekte nur, wenn auf diese wirklich zugegriffen wird Basistypen wie int, float, double, … werden nicht gekapselt

und direkt in den Speicher geladen FastObjects behandelt folgende Typen als Basistypen:

eindimensionale Arrays von Java-Basistypen String, Date und eindimesionales Array von beiden alle durch FastObjects definierten Collections (SetOfObject,

BagOfObject,…) com.poet.Blob

Page 19: Überblick über das POET-Datenbanksystem

19

Architektur

//…Product product = db.lookup(“Ferrari”);//…

DIRECTData-member

String titlevalue: “Ferrari”

DIRECTData-member

int yearvalue: 1999

OBJECTProduct

REFERENCEData-member

Person manager

OBJECTPerson

DIRECTData-memberString name

value: “Enzo”

REFERENCEApplication variable

Product productresolves

resolves

Page 20: Überblick über das POET-Datenbanksystem

20

Architektur

Objektidentität Jedes Objekt in der DB hat eine eindeutige ObjectID

zugeordnet

ObjectID: (<db>:<HVal>-<LVal>#<blkid>,<classid>Komponente Beschreibung

<db> Datenbankidentifikation innerhalb der Anwendung (ändert sich je nachdem in welcher Reihenfolge versch. Datenbanken geöffnet werden)

<HVal> High-order bytes (Konstante für den gesamten Lebenszyklus des Objekts)

<LVal> Low-order bytes (Konstante für den gesamten Lebenszyklus des Objekts)

<blkid> Blockadresse des Objekts in der Datenbankdatei

<classid> Interne Identifizierung für die zugehörige Klasse

Page 21: Überblick über das POET-Datenbanksystem

21

OQL Einschränkungen

In SELECT keine kommagetrennte Liste möglich es können keine Strukturtypen selektiert werden

Nur zwei Mengendefinitionen in FROM Klausel möglich. Die Mengen sind entweder Extents, eingebettete Mengen oder das Resultat einer verschachtelten Anfrage

nur ein Extent in FROM Klausel Kein DISTINCT Operator Kein Zugriff auf Methoden der Objekte, also auch kein

late binding GROUP BY nicht implementiert Ausser COUNT keine weitere Aggregatfunktion Keine Vergleichsoperatoren für Mengen (Inklusion,…)