Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Record Manager Andreas Bräu, Martin Salzbrenner. Record Manager - Übersicht ● Datenstrukturen – Freispeicherverzeichnis – Datenseiten ● Record Manager.

Ähnliche Präsentationen


Präsentation zum Thema: "Record Manager Andreas Bräu, Martin Salzbrenner. Record Manager - Übersicht ● Datenstrukturen – Freispeicherverzeichnis – Datenseiten ● Record Manager."—  Präsentation transkript:

1 Record Manager Andreas Bräu, Martin Salzbrenner

2 Record Manager - Übersicht ● Datenstrukturen – Freispeicherverzeichnis – Datenseiten ● Record Manager – Funktionen ● Record Iterator ● Record

3 Freispeicherverzeichnis ● currentEntries momentan nicht in Benutzung ● 2043 Einträge pro FSI-Seite bei 4kB Seitengröße

4 Freispeicherverzeichnis ● Seitennummern werden implizit mitgeführt ● Funktionen zur Manipulation des FSI: – addFsiPage(...) – addFreeSpaceInventoryEntry(...) – editFreeSpaceInventoryEntry(...) ● Abfrage des FSI: – findFreeSpaceInventoryEntry(...) – findFreeMemoryBlock(...) ● Suche über alle FSI-Seiten, bis entsprechende Seite gefunden

5 Datenseiten ● 255 Records pro Seite ● freeSpace, biggestFreeBlock jeweils genaue Angabe der verwendeten Bytes ● TID Konzept (tableId, pageId, slotId)

6 Funktionen RM ● insert – einfügen eines Records in eine angegebene Tabelle – die pageId und die slotId der TID wird ermittelt – d.h. suchen einer passenden Seite / eines Slot – einfügen – FSI updaten ● getNewPageId unperformant – ermitteln einer noch nicht vergebenen pageId – Schleife pageId solange erhöhen bis eine ungenutzte pageId gefunden – derzeit mit findFreeSpaceInventoryEntry – >unperformant für jede pageId einzeln

7 Funktionen RM ● freeAvailableSpaceInPage – berechnen des freien Speichers auf einer Datenseite – Summe des PageHeader und der Länge der Records – wenn 255 Records in Seite, dann wird der freie Speicher auf 0 gesetzt ● findLargestFreeBlockInPage – ermitteln des größten freien Blockes einer Seite und dessen Offset – ordnen der Recordslots nach Offset – berechnen der freien Zwischenräume

8 Funktionen RM ● createTable: – neues Segment erstellen – und erste FSI-Seite (Seite 0) ● dropTable: – nur durchreichen von oben ● commit: – Schreiben aller veränderten Daten – Freigabe aller Sperren ● rollback: – zurücksetzten aller Änderungen – Freigabe aller Sperren

9 Funktionen RM ● get: – springt zu der in TupleId angegebenen Seite – sperrt Seite – liest Record aus angegebenen Slot ● remove – löschen eines Records – im Slotpagearray wird recordLength des zu löschenden Records 0 gesetzt – FSI Eintrag aktualisieren

10 Funktionen RM ● replace – ersetzten eine vorhandenen Records nur möglich, wenn neuer Record kleiner oder gleich lang wie der alte Record ist (kein Verändern der TID nötig) – FSI Eintrag aktualisieren ● showPageContent – zeigt die Inhalte der FSI und Datenseiten an

11 Funktionen RM ┌------------------------------------------------------------------------------------------------------- ┐ │┌-----------------------------globaler Pageheader------------------------------------------┐│ ││ Seitennummer: 3 -- Seitentyp: DataPage ││ │┌-----------------------------Slot Page Header----------------------------------------------┐│ ││Anzahl der Slots auf der Seite: 16 ││ ││gesamter freie Speicher der Seite: 3817 ││ ││größter freier Block auf der Seite: 3817 ││ ││offset des Records: 4076 -- laenge des records: 20 -- slotnummer: 0 ││ ││offset des Records: 4056 -- laenge des records: 20 -- slotnummer: 1 ││ ││offset des Records: 4036 -- laenge des records: 20 -- slotnummer: 2 ││ ││offset des Records: 4016 -- laenge des records: 20 -- slotnummer: 3 ││ ││offset des Records: 3996 -- laenge des records: 20 -- slotnummer: 4 ││ ││offset des Records: 3987 -- laenge des records: 9 -- slotnummer: 5 ││ ││offset des Records: 3978 -- laenge des records: 9 -- slotnummer: 6 ││ ││offset des Records: 3969 -- laenge des records: 9 -- slotnummer: 7 ││ ││offset des Records: 3960 -- laenge des records: 9 -- slotnummer: 8 ││ ││offset des Records: 3951 -- laenge des records: 9 -- slotnummer: 9 ││ ││offset des Records: 3942 -- laenge des records: 9 -- slotnummer: 10 ││ ││offset des Records: 3933 -- laenge des records: 9 -- slotnummer: 11 ││ ││offset des Records: 3924 -- laenge des records: 9 -- slotnummer: 12 ││ ││offset des Records: 3915 -- laenge des records: 9 -- slotnummer: 13 ││ ││offset des Records: 3906 -- laenge des records: 9 -- slotnummer: 14 ││ ││offset des Records: 3897 -- laenge des records: 9 -- slotnummer: 15 ││ │└--------------------------------------------------------------------------------------------------- ┘│ └------------------------------------------------------------------------------------------------------- ┘

12 Funktionen RM ┌--------------------------------------------------------------------------------------------------------------------------┐ │┌-----------------------------globaler Pageheader-------------------------------------------------------------┐│ ││ Seitennummer: 0 -- Seitentyp: FSIPage ││ │└----------------------------------------------------------------------------------------------------------------------┘│ │┌-------------------------------FSI Pageheader-----------------------------------------------------------------┐│ ││ currentEntries: 0 -- zur Zeit nicht in Benutzung ││ │└----------------------------------------------------------------------------------------------------------------------┘│ │┌----------------------------------FSI-Tabelle--------------------------------------------------------------------┐│ ││ Seite│ GFS │ LFB │ │Seite │GFS │ LFB │ │Seite│ GFS │ LFB │ │Seite│ GFS │ LFB ││ ││ 1 │ 8 │ 0 │ │ 2 │ 0 │ 0 │ │ 3 │ 238 │ 238 │ │ 4 │ --- │ --- ││ ││ 5 │ --- │ --- │ │ 6 │ --- │ --- │ │ 7 │ --- │ --- │ │ 8 │ --- │ --- ││ ││ 9 │ --- │ --- │ │ 10 │ --- │ --- │ │ 11 │ --- │ --- │ │ 12 │ --- │ --- ││ ││ 13 │ --- │ --- │ │ 14 │ --- │ --- │ │ 15 │ --- │ --- │ │ 16 │ --- │ --- ││ ││........ ││ ││ 2033│ --- │ --- │ │ 2034│ --- │ --- │ │ 2035│ --- │ --- │ │ 2036│ --- │ --- ││ ││ 2037│ --- │ --- │ │ 2038│ --- │ --- │ │ 2039│ --- │ --- │ │ 2040│ --- │ --- ││ ││ 2041│ --- │ --- │ │ 2042│ --- │ --- │ │ 2043│ --- │ --- │ │----- │ --- │ --- ││ │└---------------------------------------------------------------------------------------------------------------------┘│ │*GFS = Ges. freier Speicher, LFB = Largest free Block, Angabe in 16-Byte-Blöcken │ └-------------------------------------------------------------------------------------------------------------------------┘

13 RecordIterator ● Sperrung der Seiten erfolgt Zug um Zug ● getRecordIterator (im RecordMgr) – sucht nach erstem Record der Tabelle – Festlegung erster Record

14 RecordIterator ● findNextRecord (im RecordMgr) – Suche nach dem nächsten Record ● keine Ordnung ==> Slots auf Datenseiten werden nacheinander durchgegangen – Unterscheidung, ob nach erstem Record gesucht wird – jede neu aufgeschlagene Seite wird gesperrt – nutzt FSI, um leere Seiten zu überspringen – geringe Performance, da viele get/releasePage, Spielraum für Optimierungen (direktes Operieren auf den FSI-Seiten)

15 RecordIterator ● getNext – Suche nach nächstem Record ● falls vorhanden, Ausgabe dessen, sonst DBJ_NOT_FOUND_WARN ● hasNext – true, falls nächster Record vorhanden, sonst false

16 Record ● Record wird bei erstem Gebrauch neu angelegt ● später Wiederverwendung möglich – nur rawData wird zerstört und neu angelegt

17 Record ● getTupleId, getRecordData, getLength, getBufferLength – öffentliche Funktionen ● setData, setTupleId – private Funktionen, RecordManager darf diese nutzen ● Veränderung der Recorddaten nur über Konstruktor oder setData


Herunterladen ppt "Record Manager Andreas Bräu, Martin Salzbrenner. Record Manager - Übersicht ● Datenstrukturen – Freispeicherverzeichnis – Datenseiten ● Record Manager."

Ähnliche Präsentationen


Google-Anzeigen