SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller...
-
Upload
johanna-franke -
Category
Documents
-
view
214 -
download
0
Transcript of SystemJ AbschlußpräsentationDBJCatalogManager Dennis Heimann + Marcus Hetterle Friedrich Schiller...
SystemJSystemJAbschlußpräsentationAbschlußpräsentation
DBJCatalogManagerDBJCatalogManagerDennis Heimann + Marcus HetterleDennis Heimann + Marcus Hetterle
Friedrich Schiller Universität Jena 2005Friedrich 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
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
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
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
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
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
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
Methoden von DbjRecordTupleMethoden von DbjRecordTuple
getVarchar getVarchar getInt getInt getColumnNamegetColumnNamegetMaxDataLengthgetMaxDataLengthgetNumberColumnsgetNumberColumns
getDataTypegetDataType getRecordgetRecord setVarcharsetVarchar setIntsetIntgetTupleIdgetTupleId
Public
Private
findAttributeOffsetfindAttributeOffsetcloseGapInRecordcloseGapInRecordmakeSpaceInRecordmakeSpaceInRecord
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
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
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
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!
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:
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
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
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
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
Methoden von DbjCatalogManagerMethoden von DbjCatalogManager
getTableId getTableId getTableDescriptorgetTableDescriptor getIndexId getIndexId getIndexDescriptor getIndexDescriptor addTable addTable removeTable removeTable addIndexaddIndex removeIndex removeIndex updateTupleCountupdateTupleCount getTupleCountgetTupleCount
Public:Public:
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