SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller...

20
SystemJ SystemJ Abschlußpräsentation Abschlußpräsentation DBJCatalogManager DBJCatalogManager Dennis Heimann + Marcus Hetterle Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005 Friedrich Schiller Universität Jena 2005

Transcript of SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller...

Page 1: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

SystemJSystemJAbschlußpräsentationAbschlußpräsentation

DBJCatalogManagerDBJCatalogManagerDennis Heimann + Marcus HetterleDennis Heimann + Marcus Hetterle

Friedrich Schiller Universität Jena 2005Friedrich Schiller Universität Jena 2005

Page 2: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Welche Klassen werden von Welche Klassen werden von unserer Gruppe bereitgestellt?unserer Gruppe bereitgestellt?

DbjTableDbjTablebeschreibt eine Tabellebeschreibt eine Tabellewird zum erzeugen und auslesen einer Tabelle verwendetwird zum erzeugen und auslesen einer Tabelle verwendet

DbjRecordTupelDbjRecordTupelenthält Methoden zum auslesen eines Recordsenthält Methoden zum auslesen eines Records

DbjIndexDbjIndexbeschreibt einen Index auf eine Tabelle beschreibt einen Index auf eine Tabelle

DbjCatalogManagerDbjCatalogManagerverwaltet die Katalogtabellenverwaltet die Katalogtabellen

Page 3: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

DbjTableDbjTable

Anwendung des DbjTable Objekts:Anwendung des DbjTable Objekts:

Containerobjekt zum verwalten von Containerobjekt zum verwalten von TabellendefinitionenTabellendefinitionen Katalogmanager erzeugt ein DbjTable Objekt und Katalogmanager erzeugt ein DbjTable Objekt und

füllt dessen Klassenvariablen mit Information aus füllt dessen Klassenvariablen mit Information aus dem Systemkatalogdem Systemkatalog

zum erstellen einer neuen Tabelle wird ein zum erstellen einer neuen Tabelle wird ein DbjTable Objekt erzeugt und dann in Katalog DbjTable Objekt erzeugt und dann in Katalog eingetrageneingetragen

Page 4: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Methoden von DbjTableMethoden von DbjTable

setColumnNamesetColumnName Setzt den Namen einer SpalteSetzt den Namen einer SpaltesetTableNamesetTableNameSetzt den Namen einer TabelleSetzt den Namen einer TabellecreateColumnscreateColumnsErzeugt SpaltenErzeugt SpaltensetColumnDefinitionsetColumnDefinitionDefiniert Spalten und deren DatentypenDefiniert Spalten und deren Datentypen

-->Intern: Belegen der Klassenattribute -->Intern: Belegen der Klassenattribute

Methoden die Informationen eintragen

Page 5: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Methoden von DbjTableMethoden von DbjTable

getTableIdgetTableIdgetTableName getTableName getTupleCountgetTupleCountgetNumColumnsgetNumColumnsgetMaxRecordLengthgetMaxRecordLengthgetColumnNamegetColumnNamegetColumnNumbergetColumnNumber

getColumnDatatypegetColumnDatatypegetmaxColumnLengthgetmaxColumnLength

->für Integer 11, sonst Varcharlength->für Integer 11, sonst Varcharlength

getIsNullable getIsNullable getNumIndexesgetNumIndexesgetIndexgetIndexhasIndexhasIndex

Methoden die Klassenattribute auslesen

Page 6: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Methoden von DbjTableMethoden von DbjTable

calculateMaxRecordLengthcalculateMaxRecordLength--> Berechnet Länge eines Records--> Berechnet Länge eines Records

getTuple getTuple Überprüft die Kompatibilität des Überprüft die Kompatibilität des

übergebenen Records zum DbjTable übergebenen Records zum DbjTable Objekt bzw. der Tabelle. Objekt bzw. der Tabelle. --> Erzeugung eines DbjRecordTuple Objekts --> Erzeugung eines DbjRecordTuple Objekts

Page 7: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

DbjRecordTupleDbjRecordTuple

Abgeleitete Klasse von DbjTupleAbgeleitete Klasse von DbjTuple zur Darstellung von Records als Tupelzur Darstellung von Records als Tupel

DbjRecordTupel besteht aus einem DbjTable DbjRecordTupel besteht aus einem DbjTable Objekt und einem Record zur Konvertierung Objekt und einem Record zur Konvertierung

bzw. zum indirekten Zugriff auf die bzw. zum indirekten Zugriff auf die TupelelementeTupelelemente

Page 8: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Aufbau eines RecordsAufbau eines RecordsBeispieltabelle:Beispieltabelle:Angest(Angest( PNr Integer not Null,PNr Integer not Null, Name Varchar(128) not Null, Name Varchar(128) not Null,

AbtNr Integer not NullAbtNr Integer not NullAnzahl_Kinder Integer)Anzahl_Kinder Integer)

4711 Weihnachtsmann 81514 N 50

010101…010100…00101010100…001011…010…1011…110

4712 Osterhase 81510 Y

4 byte

2 byte

14 byte

4 byte

1 byte

4 byte

010101…010100…0010101…0010…010…1

4 byte

2 byte

10 byte

4 byte

1 byte

Page 9: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Methoden von DbjRecordTupleMethoden von DbjRecordTuple

getVarchar getVarchar getInt getInt getColumnNamegetColumnNamegetMaxDataLengthgetMaxDataLengthgetNumberColumnsgetNumberColumns

getDataTypegetDataType getRecordgetRecord setVarcharsetVarchar setIntsetIntgetTupleIdgetTupleId

Public

Private

findAttributeOffsetfindAttributeOffsetcloseGapInRecordcloseGapInRecordmakeSpaceInRecordmakeSpaceInRecord

Page 10: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

DbjIndexDbjIndex

Containerobjekt zum Speichern von IndexdefinitionenContainerobjekt zum Speichern von Indexdefinitionen Index-Id, Type, Name, zugehörige Tabellen-IdIndex-Id, Type, Name, zugehörige Tabellen-Id Spalte auf der Index liegt Spalte auf der Index liegt Erstellungszeit Erstellungszeit Information über UniquenessInformation über Uniqueness

Katalogmanager erzeugt Index-Objekt und füllt es mit Katalogmanager erzeugt Index-Objekt und füllt es mit Informationen aus dem Systemkatalog Informationen aus dem Systemkatalog ODERODERzum Erstellen eines neuen Indexes wird Index-Objekt zum Erstellen eines neuen Indexes wird Index-Objekt erzeugt und in den Katalog eingetragenerzeugt und in den Katalog eingetragen

Page 11: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Methoden von DbjIndexMethoden von DbjIndex

getIndexId getIndexId getIndexName getIndexName getIndexType getIndexType getTableId getTableId getColumnNumber getColumnNumber getUnique getUnique

getCreateTimegetCreateTime

setIndexName setIndexName setIndexType setIndexType setTableId setTableId setColumnNumber setColumnNumber setUnique setUnique setCreateTimesetCreateTime

Abfragen der Abfragen der InformationenInformationen

Setzen der Setzen der InformationenInformationen

Page 12: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

DbjCatalogManagerDbjCatalogManagerverwaltet Datenbankkatalog des Systems verwaltet Datenbankkatalog des Systems AufgabenAufgaben

Katalog auslesen Katalog auslesen Erweiterungen und Änderungen im KatalogErweiterungen und Änderungen im Katalog

Create Table, Delete Table, Create Index, … Create Table, Delete Table, Create Index, …

Katalog implementiert drei "hard-verdrahtete" Tabellen Katalog implementiert drei "hard-verdrahtete" Tabellen Systemtabellen Systemtabellen

SYSTABLES, SYSCOLUMNS, SYSINDEXESSYSTABLES, SYSCOLUMNS, SYSINDEXES

enthält Metainformationen über sich selbstenthält Metainformationen über sich selbstZugriff auf Daten über Record-Manager Zugriff auf Daten über Record-Manager

Page 13: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

DbjCatalogManager-DbjCatalogManager-SystemtabellenSystemtabellen

SYSTABLESSYSTABLES ((tableName tableName VARCHAR(128), VARCHAR(128),tableId tableId INTEGER, INTEGER,columnCount INTEGER,columnCount INTEGER,createTime createTime VARCHAR(26), VARCHAR(26),tupleCount tupleCount INTEGER ) INTEGER )

Index auf tableName Index auf tableName und tableIdund tableId

SYSCOLUMNSSYSCOLUMNS ((tableId tableId INTEGER, INTEGER,columnName VARCHAR(128),columnName VARCHAR(128),columnId columnId INTEGER, INTEGER,dataType dataType VARCHAR(128), VARCHAR(128),maxLength maxLength INTEGER, INTEGER,nullable nullable VARCHAR(1)) VARCHAR(1))

Index auf columnName und tableIdIndex auf columnName und tableId

SYSINDEXESSYSINDEXES ( (tableId tableId INTEGER,INTEGER,indexName indexName VARCHAR(128),VARCHAR(128),indexId indexId INTEGER,INTEGER,type type VARCHAR(5),VARCHAR(5),columnId columnId INTEGER,INTEGER,unique unique VARCHAR(1),VARCHAR(1),createTime createTime VARCHAR(26))VARCHAR(26))

Index auf tableId, Index auf tableId, indexName und indexIdindexName und indexId

Alle Index-Informationen der Alle Index-Informationen der Systemtabellen liegen ebenfalls Systemtabellen liegen ebenfalls „„fest verdrahtet“ vor!fest verdrahtet“ vor!

Page 14: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Methoden von DbjCatalogManagerMethoden von DbjCatalogManager

getTableId getTableId getTableDescriptor getTableDescriptor getIndexId getIndexId getIndexDescriptor getIndexDescriptor addTable addTable removeTable removeTable addIndex addIndex removeIndex removeIndex updateTupleCount updateTupleCount getTupleCountgetTupleCount

initializeCataloginitializeCataloggetCurrentTimestampgetCurrentTimestamp

Public:Public: Private:Private:

Page 15: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Methoden von DbjCatalogManagerMethoden von DbjCatalogManager

initializeCatalog()initializeCatalog() kann nur von der Klasse DbjSystem aufgerufen kann nur von der Klasse DbjSystem aufgerufen

werdenwerden legt den Katalog anlegt den Katalog an

die drei Katalogtabellen direktdie drei Katalogtabellen direktdie Indexe auf Katalogtabellen über den die Indexe auf Katalogtabellen über den Index-ManagerIndex-Managergeneriert Tupel mit den Kataloginformationen, die generiert Tupel mit den Kataloginformationen, die

über den Record-Manager eingefügt werdenüber den Record-Manager eingefügt werden komplett selbst beschreibender Katalogkomplett selbst beschreibender Katalog

Page 16: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Methoden von DbjCatalogManagerMethoden von DbjCatalogManagergetTableDescriptor(tableIdgetTableDescriptor(tableId, *&tableDesc), *&tableDesc) erzeugt aus Tabellen-Id ein DbjTable-Objekterzeugt aus Tabellen-Id ein DbjTable-Objekt

Überprüfung der Tabellen-Id bzgl. Systemtabellen-Id‘s Überprüfung der Tabellen-Id bzgl. Systemtabellen-Id‘s falls Systemtabelle, dann Descriptor mit fest falls Systemtabelle, dann Descriptor mit fest

kodierten Informationen füllen kodierten Informationen füllen

falls keine Systemtabelle falls keine Systemtabelle Daten aus Datenbank holenDaten aus Datenbank holen

mit Hilfe des Index-Managers wird anhand der Tabellen-Id das mit Hilfe des Index-Managers wird anhand der Tabellen-Id das passende Record-Tupel aus der DB geholtpassende Record-Tupel aus der DB geholtaus dem Record-Tupel werden mit getInt() und getVarchar() aus dem Record-Tupel werden mit getInt() und getVarchar() die einzelnen Attribute ausgelesen und im Descriptor abgelegtdie einzelnen Attribute ausgelesen und im Descriptor abgelegt

Page 17: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Methoden von DbjCatalogManagerMethoden von DbjCatalogManager

updateTupleCount(tableId, tupleCount)updateTupleCount(tableId, tupleCount) holt Record mit entsprechender Tabellen-Id aus derholt Record mit entsprechender Tabellen-Id aus der

Datenbank und aktualisiert es bzgl. der Tupel-AnzahlDatenbank und aktualisiert es bzgl. der Tupel-Anzahl mit Index-Manager wird anhand der Tabellen-Id mit Index-Manager wird anhand der Tabellen-Id

(SYSTABLES_ID) passendes Record-Tupel aus DB (SYSTABLES_ID) passendes Record-Tupel aus DB geholtgeholt

im Record-Tupel wird mit setInt(4, tupleCount) gesetztim Record-Tupel wird mit setInt(4, tupleCount) gesetzt über RecordManager mit replace(Tupel-Id, record)über RecordManager mit replace(Tupel-Id, record)

wird altes Record durch neues ersetztwird altes Record durch neues ersetzt

Page 18: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Methoden von DbjCatalogManagerMethoden von DbjCatalogManager

addIndex()addIndex()--> fügt Index in Katalog ein (Sysindexes)--> fügt Index in Katalog ein (Sysindexes)

1. generieren der IndexID 1. generieren der IndexID (find last + first fit)(find last + first fit)

2. erzeugen des Records zum Einfügen in 2. erzeugen des Records zum Einfügen in SysindexesSysindexes

3. Einfügen in Katalog mithilfe RecordManager3. Einfügen in Katalog mithilfe RecordManager tableId | IndexName | indexId|type | columnId | unique | createTimetableId | IndexName | indexId|type | columnId | unique | createTime

Page 19: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Methoden von DbjCatalogManagerMethoden von DbjCatalogManager

getTableId getTableId getTableDescriptorgetTableDescriptor getIndexId getIndexId getIndexDescriptor getIndexDescriptor addTable addTable removeTable removeTable addIndexaddIndex removeIndex removeIndex updateTupleCountupdateTupleCount getTupleCountgetTupleCount

Public:Public:

Page 20: SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller Universität Jena 2005.

Fragen?Fragen?

AbschlußpräsentationAbschlußpräsentationDBJ Catalog ManagerDBJ Catalog Manager

(Dennis Heimann + Marcus Hetterle)@Friedrich Schiller Universität (Dennis Heimann + Marcus Hetterle)@Friedrich Schiller Universität JenaJena