PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie sind Datenbanken aufgebaut?


M@tes
2008-01-28, 12:48:47
Ich beschäftige mich seit neustem einwenig mit dem Eigenbau von kleinen Datenbanksystemen.
(Vorweg: Bin einfach jemand, der das Rad gern neu erfindet und schaut wies funktioniert, drum will ich kein fertiges MySQL und Co.)
Naja jedenfalls weiss ich in etwa wie die Datenbanken aufgebaut sind. Mit DBMS, Schichten,..
Was mich allerdings mal interessieren würde, wäre der Aufbau einer Containerdatei.
Sind Verzeichnisse getrennt von den Dateien? Hat die Verzeichnisstrucktur festgelegte grösse oder sind variabel?
Wie wird das mit den Dateinamen gemacht? Bekommt jede Datei/ Verzeichnis eine eindeutige Indexnummer oder wird das ganze Hierarchisch aufgebaut.
Was mich verwundert ist nämlich folgende Tatsache:
Indexnummern wären ja nicht schlecht, aber wenn man dann nach Namen suchen will, muss man effectiv alle Indexes durchsuchen.
Ausser man machts wie MS und man kreiert gerad ein eigens dafür gedachtes Indexverzeichnis.
Würde man jetzt den Namen einer Datei z.B. als Hash speichern, wäre das Auffinden wesentlich einfacher.
Nachteil wäre wiederum, wenn man gleichnamige Dateien in verschiedenen Ordnern hat.
Eine Idee wäre hier mit verschiedenen Dimensionen zu arbeiten.
Derzeit meine beste Idee um an die Sache ranzugehen. Mit variabler Dateiverzeichnisgrösse am Anfang
und damit man nciht den ganzen Container in den Speicher laden muss, werden halt die Bytebereiche vom Start und Ende einer Datei angegeben.
Aber irgendwie ists auch nich gerad das gelbe vom Ei...
Kennt jemand gute Seiten darüber, bzw hat sich schon mal damit auseinandergesetzt?

Shink
2008-01-28, 14:19:07
(Vorweg: Bin einfach jemand, der das Rad gern neu erfindet und schaut wies funktioniert, drum will ich kein fertiges MySQL und Co.)
Oh Mann:D

Ja, damit hat sich schon jemand auseinandergesetzt (z.B. IBM, Oracle...)
Mal im Ernst: Wieso siehst du dir nicht an, wie das bei diversen OpenSource-Datenbanken implementiert wurde? (Apache Derby aka JavaDB, PostgreSQL o.ä.)

Coda
2008-01-28, 15:18:10
Für die interne Datenstruktur ist das meistens die Grundlage: http://de.wikipedia.org/wiki/B-Baum

Wenn man keinen Index angelegt hat für einen Wert, dann muss man wirklich alles durchsuchen ("Full Table Scan"). Da muss man auch sehr aufpassen, damit die Queries wirklich so schnell sind wie sie sollen.