75
Praktikum Praktikum “Datenbanksystementwick “Datenbanksystementwick lung” lung” – System J – – System J – Knut Stolze [email protected] jena.de

Praktikum Datenbanksystementwicklung – System J – Knut Stolze [email protected]

Embed Size (px)

Citation preview

Page 1: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

Praktikum Praktikum “Datenbanksystementwicklung”“Datenbanksystementwicklung”

– System J –– System J –

Knut Stolze

[email protected]

Page 2: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

2

AgendaAgenda

EinführungSystemarchitekturProzessmodellKomponenten im DetailOrganisationErfahrungen

Page 3: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

3

Einführung – System JEinführung – System J

Vollständiges Datenbankmanagementsystem (DBMS)

Entwickelt im WS 2004/2005– 13 Studenten (7./8. Fachsemester)

Entwicklungsprozess stark praxisorientiert– Angelehnt an DB2-Prozess

Implementierung in C/C++ SQL Syntax stark vereinfacht

– Details beim Compiler mit erwähnt

Page 4: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

4

Motivation & ZielsetzungMotivation & Zielsetzung

Ergänzung der Vorlesung DBS 2, insbesondere des Teils zur „Implementierung von Datenbanksystemen“

Arbeiten in einem (kleinen) Team, und alle Teams sind zusammen an einem größeren Projekt beteiligt– Gemeinsam ein Ziel (lauffähiges System) zu erreichen– Kommunikation mit anderen Teams um Schnittstellen

zu definieren und Probleme zu diskutieren/lösen– Organisation innerhalb eines Teams ist nicht festgelegt

Page 5: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

5

Motivation & Zielsetzung (2)Motivation & Zielsetzung (2)

Selbständiges Einarbeiten in neue Konzepte und Programmiersprachen

Einschränkungen und Abhängigkeiten von heutigen Datenbanksystemen von der internen Programmierung zu verstehen

Umgang mit und Implementierung für verschiedenen Betriebssysteme

Anwendung von „version control“ Systemen zur Verwaltung von Quelltexten

Page 6: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

6

SystemarchitekturSystemarchitektur

Page 7: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

7

Compiler

Catalog Manager

Index Manager

Buffer Manager

File Manager

Betriebssystem

abstraktion (OS

S)

Fehlerbehandlung (E

rror)Optimizer

RunTime

Record Manager

Lock Manager

Page 8: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

8

ProzessmodellProzessmodell

Page 9: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

9

ÜberblickÜberblick

LocklisteBuffer

Session 2Session n

Serverprozesslegt an /zerstört

Session 1

Page 10: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

10

Internas von SessionsInternas von Sessions

Session iJe 1 Instanz von:•Compiler•Optimizer•Catalog Manager•RunTime•Record Manager•Index Manager•Lock Manager•Buffer Manager•Memory Manager•File Manager

Page 11: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

11

ErläuterungenErläuterungen

Jede Transaktion/Session wird in genau einem Prozess abgearbeitet– Kein IPC (inter-process-communication)– Jeder Prozess hat eigene Instanzen von den

verschiedenen Komponenten (Managern) Buffer & Lockliste liegen im Shared Memory

– Zugriff von mehreren Transaktionen muss mittels Latches synchronisiert werden

– Serverprozess ist nur für das Anlegen der Shared Memory Segmente zuständig und beendet sich anschließend wieder

Page 12: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

12

– – Compiler –Compiler –

Page 13: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

13

Aufgaben des CompilersAufgaben des Compilers

Parsen der SQL-AnweisungAufbau des internen Zugriffsplan (Baum)Ermitteln der internen Spalten-, Tabellen-

und Index-IDsZuordnung der Spalten zu den Tabellen

(SELECT)

Page 14: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

14

CompilerCompiler

Klasse: DbjCompilerDatenstrukturen

– Eingabe: String mit SQL Anweisung, DbjTable, DbjIndex

– Ausgabe: DbjAccessPlan

Verwendet– Katalog Manager zur Validierung des Plans

Page 15: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

15

Unterstütze SQL-Syntax (1)Unterstütze SQL-Syntax (1)

>>--CREATE TABLE--table-name--(------------------------>

.--,-------------------------------------------. V |>-----column-name--| data-type |--+------------+--+----> '--NOT NULL--'

>-----+-------------------------------------+--)------>< '--,--PRIMARY KEY--(--column-name--)--'

>>--DROP TABLE--table-name----------------------------><

Page 16: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

16

Unterstütze SQL-Syntax (2)Unterstütze SQL-Syntax (2)

data-type:

|--+--INTEGER----------------+-------------------------|

+--INT--------------------+

'--VARCHAR--(--length--)--'

.--WORK--.

>>--COMMIT--+--------+--------------------------------><

.--WORK--.

>>--ROLLBACK--+--------+------------------------------><

Page 17: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

17

Unterstütze SQL-Syntax (3)Unterstütze SQL-Syntax (3)

>>--CREATE--+----------+--INDEX--index-name--ON-------->

'--UNIQUE--'

.--OF TYPE BTREE--.

>--table-name--(--column-name--)--+-----------------+--><

'--OF TYPE HASH---'

>>--DROP INDEX--index-name----------------------------><

Page 18: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

18

Unterstütze SQL-Syntax (4)Unterstütze SQL-Syntax (4)

>>--INSERT--INTO--table-name--VALUES------------------->

.--,------------------. | .--,------. | V V | |>-----(-----value--+--)--+---------------------------><

.--AS--corr-name--.>>--DELETE--FROM--table-name--+-----------------+----->

>--+--------------------+---------------------------->< '--| where-clause |--'

Page 19: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

19

Unterstütze SQL-Syntax (5)Unterstütze SQL-Syntax (5)

.--,-------------------------------. | | V .--AS--new-name--. |>>--SELECT--+---column-name--+----------------+--+--+--> '--*------------------------------------'

.--,--------------------------------. V .--AS--corr-name--. |>---FROM-----table-name--+-----------------+--+------->

>--+--------------------+---------------------------->< '--| where-clause |--'

Page 20: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

20

Unterstütze SQL-Syntax (6)Unterstütze SQL-Syntax (6)

where-clause:|--WHERE--| predicate |--------------------------------|

predicate:|--+--| expression |--| operation |--| expression |----------+-| +--| expression |--IS--+-------+--NULL--------------------+ | '--NOT--' | +--(--| predicate |--)------------------------------------+ +--NOT--(--| predicate |--)-------------------------------+ +--| expression |--+-------+--LIKE--REGEX--value----------+ | '--NOT--' | +--| expr |--+-------+--BETWEEN--| expr |--AND--| expr |--+ | '--NOT--' | '--| predicate |--+--AND--+--| predicate |----------------'

'--OR---'

Page 21: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

21

Unterstütze SQL-Syntax (7)Unterstütze SQL-Syntax (7)

operation:|--+--"="---+--------------------------------| +--"<"---+ +--"<="--+ +--">"---+ +--">="--+ '--"<>"--'

expression: .--correlation-name--"."--.|--+--+-------------------------+--column-name--+-----| '--value-------------------------------------'

Page 22: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

22

Interner ZugriffsplanInterner Zugriffsplan – Datenstruktur – – Datenstruktur –

DbjAccessPlan– DbjAccessPlanTable (mit Korrelationsname)

DbjAccessPlanColumn (zusätzlich mit neuem Spaltenname bei umbenannten Spalten)

Aufgebaut von Parser Parser wurde mittels Bison generiert

– Schlüsselworte dürfen nicht als Spalten-, Tabellen- oder Indexnamen verwendet werden

Ungültig ist also: SELECT SELECT SELECT, FROM FROM FROM WHERE WHERE = WHERE

Lexer per Hand geschrieben

Page 23: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

23

Interner ZugriffsplanInterner Zugriffsplan– Beispiel 1 –– Beispiel 1 –

CREATE TABLE t1 ( a INT NOT NULL, b VARCHAR(10), c INTEGER, PRIMARY KEY (a) )

CreateTableStmt |Table ('T1') - Column ('A') |Column ('A') - Column ('B') - Column ('C') | | | | | DataType ('INTEGER') | | | DataType ('VARCHAR'/10) |DataType ('INTEGER') - NotNullOption

Page 24: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

24

Interner ZugriffsplanInterner Zugriffsplan– Beispiel 2 –– Beispiel 2 –

SelectStmt

|

Projections - Column ('A'/0) - Column ('D'/0)

|

Sources - Table ('T1'/1) - Table ('T2'/2)

|

WhereClause - Pred - LogicalOp ('AND') - Neg - Pred - LogicalOp ('AND') - Pred

| | |

| | Pred

| | |

| | Column ('D'/0) - Comp ('=') – Varchar('text')

| |

| Pred

| |

| Column ('B'/1) - Comp ('=') - Integer (7)

|

Column ('C'/2) - Comp ('=') - Column ('F'/2)

SELECT t1.a, t2.d FROM t1, t2WHERE T1.C = T2.F AND NOT (T1.b = 7) AND ( T2.D = 'text' )

Page 25: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

25

– – Optimizer –Optimizer –

Page 26: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

26

ÜbersichtÜbersicht

Erhält vom Compiler geparsten und validierten Ausführungsplan

Regelbasierte Optimierung– Keine kostenbasierte Optimierung!

Optimierungen nur für SELECT- und DELETE – Anweisungen– alle anderen Anweisungen werden unverändert

durchgereicht

Page 27: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

27

OptimierungenOptimierungen

1. Negationen (NOT) wird entfernt; Klammerungen werden aufgelöst

2. Evaluieren konstanter Prädikate3. Selektionen vor Joins wenn Prädikat sich

ausschließlich auf eine Tabelle bezieht4. Nutze Indexscans wenn entsprechendes Prädikat auf

Tabelle existiert• Erstbester Index wird verwendet

5. Sortiere Tabellen aufsteigend nach Tupel-Anzahl (Tabelle mit geringster Anzahl ist innere Tabelle im NLJOIN)

Page 28: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

28

InternasInternas

Klasse: DbjOptimizerDatenstruktur: DbjAccessPlan, DbjIndex,

DbjTableVerwendet

– Katalog Manager um Indexe und Tupel-Anzahl der Tabellen zu ermitteln

– Eingebaute Regeln zur Optimierung (keep it simple!)

Page 29: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

29

– – Catalog Manager –Catalog Manager –

Page 30: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

30

AufgabenAufgaben

Verwaltet Katalogtabellen und den Zugriff darauf

Wird bei DDL modifiziertKennt Struktur aller Tabellen

– Definiert internen Aufbau von Tupeln– Kann Records (Byte-Stream) in Tupel

umwandeln

Page 31: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

31

CatalogCatalog SYSTABLES (

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

– Index auf tableName und tableId

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

– Index auf columnName und tableId

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

– Index auf tableId, indexName und indexId

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

Page 32: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

32

Aufbau eines RecordsAufbau eines RecordsBeispieltabelle:

Angest( PNr Integer not Null,

Name Varchar(128) not Null,

AbtNr Integer not Null

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 33: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

33

InternasInternas

Klasse: DbjCatalogManager Datenstrukturen:

– Eingabe: DbjRecord– Ausgabe: TableId/IndexId/…, DbjTable, DbjIndex

Verwendet– Record Manager um Kataloginformationen von den

entsprechenden Tabellen zu erhalten– Eingebaute Definition der Katalogtabellen

Page 34: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

34

– – RunTime –RunTime –

Page 35: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

35

RunTimeRunTime

Aufgabe– Abarbeitung des Optimierten Zugriffsplanes

Verwendet Iterator-Konzept

Page 36: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

36

IteratorenIteratoren

Record-Iterator & Index-Iterator– Geliefert von Record bzw. Index Mgr

Tuple-Iteratoren– RecordTuple, IndexTuple, CrossProduct, Projection,

Selection Einfache Berechnung der Ergebnismenge durch

Verschachtelung der Iteratoren Bäume Iteratorenbäume– Recht einfach aus Zugriffsplan aufgebaut– Können leicht erweitert werden (Sort, HashJoin, …)

Page 37: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

37

InternasInternas

Klasse: DbjRunTime Datenstrukturen: DbjAccessPlan, DbjTuple, DbjRecord,

DbjIndexKey Verwendet

– DbjTable (von Katalog Manager) zur Interpretation der Records in Tupel

– Record Manager um die Records zu erhalten– Index Manager um Indexzugriff durchzuführen

Anmerkungen– Physische Daten werden nicht kopiert (zu teuer) Referenzen

Page 38: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

38

– – Record Manager –Record Manager –

Page 39: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

39

AufgabenAufgaben

Verwaltet Records auf DatenseitenVerwaltet Datenseiten im Segment

– Freispeicherverwaltung

Stellt Record-Iterator zur Verfügung

Page 40: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

40

DatenseitenDatenseiten255 Records pro Seite freeSpace, biggestFreeBlock jeweils genaue Angabe der

verwendeten BytesTID Konzept (tableId, pageId, slotId)

Page 41: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

41

FreispeicherverzeichnisFreispeicherverzeichnis

2043 Einträge pro FSI-Seite bei 4kB Seitengröße freeSpace & freeSpaceBlock je 1 Byte – fassen 16 Byte auf Seite

zusammenSeitennummern werden implizit (Array-Index) mitgeführt

pageId pageType

currentEntries

freeSpace freeSpaceBlockfreeSpace freeSpaceBlockfreeSpace freeSpaceBlock

...freeSpace freeSpaceBlock

Page 42: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

42

InternasInternas

Klasse: DbjRecordManager Datenstrukturen: TupelId, DbjRecord, DbjPage Verwendet

– Buffer Manager zum Zugriff auf die Seiten– Lock Manager um Datenseiten zu sperren

Anmerkungen– Die Daten der Records werden aus dem Systempuffer

in die DbjRecord Struktur kopiert Seite kann schnell wieder freigegeben werden

Page 43: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

43

– – Index Manager –Index Manager –

Page 44: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

44

ÜbersichtÜbersicht

Aufgabe– Anlegen und Verwalten von Indexen auf

Tabellenspalten– Verwaltung der Index-Strukturen– Verwaltung der Seiten im Index-Segment

Arten von Indexen– BTree Index (B* Baum)– Hash Index aus Zeitmangel nicht implementiert

Datentypen– Integer– Varchar mit 256 Zeichen Begrenzung

Page 45: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

45

Physische StrukturenPhysische Strukturen

Knoten im B-Baum = Seite– Innere Knoten und Blätter

Dynamisches Freispeicherverzeichnis (verkettet)

Page 46: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

46

Innere KnotenInnere Knoten

Globaler Seitenheader (Seiten-ID, Seitentyp) Spezifischer Header

– Erster linker Eintrag– Verweis auf Vater– Anzahl der Einträge im Knoten

Array von Einträgen (Entry)– Schlüsselwert– Verweis auf Sohn dessen Schlüssel größer sind

Page 47: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

47

BlattknotenBlattknoten

Globaler Seitenheader (Seiten-ID, Seitentyp) Spezifischer Header

– Verweis auf Vater– Verweis auf rechter und linker Bruder– Anzahl der Einträge im Knoten

Array von Einträgen (Entry)– Schlüsselwert– Teil einer Tupel-ID

nur Seiten-ID und Slot-ID, keine Segment-ID

Page 48: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

48

InternasInternas

Klasse: DbjIndexManagerDatenstrukturen: DbjKey, TupelId, DbjPageVerwendet

– Buffer Manager zum Zugriff auf die Seiten– Lock Manager um Indexseiten zu sperren

Anmerkungen– Verwendet nicht Record Manager;

Seiteninhalte werden selbst verwaltet!

Page 49: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

49

– – Lock Manager –Lock Manager –

Page 50: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

50

ÜbersichtÜbersicht

Aufgaben– Verwaltung von logischen Sperren auf

SeitenNur Schreib- und Lese-SperrenDeadlock-Erkennung

– Timeout

Page 51: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

51

DatenstrukturDatenstruktur

Im Shared Memory Header

– Statusinformationen– Hash-Tabelle Einstieg in kürzere Listen mit Lock-

Einträgen Lock-Einträge

– Segment-ID + Page-ID– Sperrtyp– Transaktions-ID (= Prozess-ID)– Verkettung mit nächtem/vorherigen Lock-Eintrag

Page 52: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

52

InternasInternas

Klasse: DbjLockManagerDatenstrukturen: SegmentId, PageId

Page 53: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

53

– – Buffer Manager –Buffer Manager –

Page 54: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

54

AufgabenAufgaben

Stellt benötigte Daten- und Index-Seiten bereit

Schreibt beim COMMIT alle geänderten Seiten auf Platte

Verdrängen von Seiten bei Bedarf

Page 55: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

55

DatenstrukturDatenstruktur

Im Shared MemoryVerkettete LRU-Liste

– Array mit 1 Eintrag pro Seite/Slot im PufferHash-Tabelle

– Zum schnellen Auffinden einer Seite– Verkettete Liste von Seiten– Array mit 1 Eintrag pro Seite/Slot im Puffer

Array von Slots für Seiten (Daten)

Page 56: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

56

InternasInternas

Klasse: DbjBufferManager Datenstrukturen: DbjPage, “char *” (Blöcke) Verwendet

– File Manager um die Blöcke bereitzustellen– Shared memory für den Puffer

Anmerkungen– Implementiert Force/Steal;

ausser für geänderte Seiten – dort erfolgt No-Steal

Page 57: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

57

– – File Manager –File Manager –

Page 58: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

58

ÜberblickÜberblick

Aufgabe– Verwaltung der geöffneten Dateien– Speicherung der Blöcke in Dateien– Pro Operation 1 Block gelesen/geschrieben

Konventionen– 1 Block = 1 Seite– 1 Datei = 1 Segment

Page 59: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

59

InternasInternas

Klasse: DbjFileManagerDatenstrukturen: SegmentId, Dateien, “char

*” (Blöcke)Anmerkungen

– Verwendet keine anderen Komponenten; basiert nur auf Betriebssystem

Page 60: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

60

– – Sonstige Dienste –Sonstige Dienste –

Page 61: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

61

FehlerbehandlungFehlerbehandlung

Zentrale Klasse zur Fehlerverwaltung– Würde leicht NLS unterstützen können

Klasse: DbjErrorDatenstrukturen: DbjComponent,

DbjErrorCodeAnmerkungen

– Verwendet keine anderen Komponente; wird aber von allen anderen genutzt!

Page 62: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

62

SystemsteuerungSystemsteuerung

Klasse: DbjSystemDatenstrukturen: keineVerwendet

– Buffer Manager um Puffer einmalig anzulegen (bzw. freizugeben)

– Lock Manager um Lockliste einmalig anzulegen (bzw. freizugeben)

– Catalog Manager um Katalog zu initialisieren

Page 63: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

63

Operating System Services Operating System Services (OSS)(OSS)

Abstraktion aller kritischen Betriebssystemfunktionen– File-I/O– Speicherverwaltung

Private & Shared Memory

– Latching Kurzzeitsperren; über Semaphoren realisiert

Unterstützte Platformen– AIX, Linux, Windows/Cygwin

Page 64: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

64

OrganisationOrganisation

Page 65: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

65

OrganisationOrganisation

Teams von 2-3 Mann– Team-Größe ist abhängig von jeweiliger Komponente– Arbeit im Team aufteilen

das „wie“ bleibt jedem Team selbst überlassen

Praktikumszeiten:– 3 Stunden pro Woche– Zusätzlicher Aufwand in Freizeit– Remote-Arbeit jederzeit möglich

Versions Management System “BitKeeper” unterstützt dies sehr gut

Page 66: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

66

Organisation (1)Organisation (1)

Jedes Team gibt einmal pro Monat einen Statusbericht (ca. 10 min)– Überblick, was gemacht wird und wie die

eigene Komponente funktionieren soll.– Was funktioniert, was noch nicht?– Welche Probleme traten auf?– Welche Zuarbeit von anderen Teams ist noch

nötig?– …

Page 67: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

67

EntwicklungsumgebungEntwicklungsumgebung

Programmiersprache: C++ Platform: AIX 5.1 Compiler: Visual Age C++ 6.0 Versions Management: BitKeeper Tools:

– GNU Tools (gmake, perl, …)– Editor: Emacs, vi, ..– Bei Bedarf wurde nachinstalliert

PCRE, readline

Page 68: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

68

Versions Management Versions Management System “BitKeeper”System “BitKeeper”

Jeder Nutzer hat eigenes Repository und arbeitet nur lokal

Eigenes Repository wird mit “Parent” Repository zu einem selbst gewählten Zeitpunk synchronisiert

Änderungen an mehreren Dateien werden zu sogenannten “ChangeSets” zusammengefasst– Jedes ChangeSet muss beschrieben/dokumentiert

werden Quelle: http://www.bitkeeper.com/

Page 69: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

69

Repository Struktur (1)Repository Struktur (1)

Parent Repositoryiibm08.inf.uni-jena.de

/home/db2prak/implprak/mgr/dbj

Lokales Repository 1ipc640.inf-db.uni-jena.de/home/stolze/dbj-projekt

Lokales Repository niibm08.inf.uni-jena.de

~iprak00/dbj

bk clone mgr@iibm08:dbj dbj-projekt bk clone ~mgr/dbj dbj

Page 70: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

70

Repository Struktur (2)Repository Struktur (2)

Lokales Repository niibm08.inf.uni-jena.de

/home/db2prak/implprak/mgr/dbj

Lokales Repositorymerkur.somewhere.de

/home/obihan/dbj

bk clone iprak00@iibm08:dbj dbj

Page 71: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

71

bk revtoolbk revtool

Page 72: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

72

ErfahrungenErfahrungen

Page 73: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

73

ErfahrungenErfahrungen

Teilnehmer– 2 von ursprünglich 15 Studenten haben abgebrochen

Zeitaufwand trotz vorheriger Warnung unterschätzt

– 13 Studenten sehr knapp bemessen– Ehrgeiz bei einigen sehr motivierend

Programmierkünste recht dürftig– Shared Memory verstehen– Verständnis für die eigene Aufgabe

Page 74: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

74

Erfahrungen (2)Erfahrungen (2)

Gewöhnungsbedürftig– Arbeiten im größeren Team– Verwendung einer komplexeren

Entwicklungsumgebung– Einhalten von Coding Standards– Testen

Was implementiert wurde macht Sinn– Wir schlagen dabei problemlos MySQL; siehe http://sql

-info.de/mysql/gotchas.html

Page 75: Praktikum Datenbanksystementwicklung – System J – Knut Stolze stolze@informatik.uni-jena.de

75

URLURL

http://iibm08.inf.uni-jena.de/~mgr/http://www.informatik.uni-jena.de/dbis/lehr

e/ws2004/