Ich habe gerade bemerkt, dass meine Datenbank für eine Hashfunktion
noch nicht vorbereitet ist. Dazu muss ich intern noch einiges ändern, was
fast in jeder Funktion drin ist. Und zwar brauche ich gleichzeitig ein Array
und eine LinkedList, damit es schnell genug bleibt.
Ich werde das Problem mal kurz erläutern:
Die kommende Hashfunktion soll Strings oder Zahlen durch einen
Hash-Generator schicken und mit dem Hash dann eine Tabelle anlegen, in
der jedem Hash eine eindeutige ID zu einem Eintrag in der eigentlichen
Datenbank zugewiesen wird.
Jetzt unterstützt aber meine Datenbank noch nicht die Rückgabe einer
eindeutigen ID. Bisher kann man Zeilen nur per Index ansprechen, der
sich aber bei allen Zeilen aber ändert, wenn man z.B. vor der ersten Zeile
noch eine Zeile einfügt. Logisch. Also kann ich diesen Index schonmal
nicht als eindutige ID in die Hashtabelle einbauen.
Aber jede Zeile hat ihren eigenen Pointer, den ich verwenden könnte. Aber
um eine Zeile mit dem Pointer zur aktuellen zu machen, muss ich wieder
alle Zeilen durchsuchen bis ich den Pointer gefunden habe. Also brauche
ich in der Datenbankstruktur nicht nur eine Variable, die festhält, welchen
Index die gerade aktuelle Zeile hat, sondern auch noch eine Variable, die
den Pointer der aktuellen Zeile behält.
Jetzt werde ich es so machen, dass jede Zeile zusätzlich noch die Pointer
der Vorgänger- und Nachfolgerzeile und außerdem ihren eigenen Index
besitzt. Der Index wird ignoriert, wenn vorher irgendwo eine Zeile
eingefügt wurde, weil er dann ja nicht mehr gültig ist. Wird der Index dann
aber irgendwann wieder gebraucht, wird er kurz neu erstellt und ist
dadurch wieder benutzbar.
Naja, so genau kann ich es gar nicht erklären, weil eigentlich noch ein
bisschen mehr dahinter steckt. Tatsache ist, dass das ganze Problem mit
der Hashfunktion noch größer ist als angenommen, aber ich der Lösung
auf der Spur bin.
Ich bin außerdem noch am Schwanken, ob ich eine statische Hashtabelle
oder eine dynamische benutze. Die statische ist wohl die schnellste,
beansprucht aber von Anfang an direkt viel Speicherplatz, der immer
weiter zunimmt, je mehr Einträge es gibt, während die Größe der
dynamischen Hashtabelle fast proportional zu der Anzahl der Einträge
wächst und einen geringen Teil langsamer ist.
Wie auch immer. Ich habe wieder genug geschwafelt und muss mal wieder
als Zivi etwas tätig werden und Zeitung lesen.

Danach noch ein paar
Pressemitteilungen online stellen und Kaffe trinken. Dann fange ich mal an
mit dem Umbau der Datenbank.
PS.: Wer wissen will, wo ich Zivi mache:
Universitätsklinikum des Saarlandes