[Allegro] Index-Erneuerung: ORG-Menü
Bernhard Eversberg
ev at biblio.tu-bs.de
Mi Dez 12 09:54:13 CET 2007
Thomas Berger schrieb:
>
> "Index erneuern" ist eine Funktion, die die .cld-Dateien
> nur liest und damit garantiert intakt laesst.
> Fast jede allegro-Datenbank, die einige Jahre in Betrieb ist,
> enthaelt korrupte Datensaetze,
Normalerweise aber äußerst wenige.
> und weil die allegro-Module
> nur von gesunden Datensaetzen ausgehen, ist voellig undefiniert,
> was in solchen Datenbanken bei einer Reorganisation passiert,
Nein. In Softwaresystemen ist nichts undefiniert, denn alles ist
deterministisch, höchstens undokumentiert.
Es gibt zwei Fälle:
1. Interne Satznummer zu groß: Datensatz fällt weg (Die 4 Byte der
internen Nr. sind dann vermutlich überschrieben, sowie auch noch
der eigentliche Anfang des Satzes und der Satz als Ganzes damit
nicht mehr brauchbar.) Solche Fehler wurden lange nicht mehr
bemerkt.
2. Interne Satznummer korrekt:
Die korrekt vorhandenen Datenfelder werden zu einem korrekten,
nicht mehr korrupten Satz zusammengefaßt. Felder, die nicht mit
einer gültigen Nummer beginnen, entfallen. Auf Gültigkeit der
Wiederholungsziffer und der Unterfelder kommt es nicht an.
Im Fall 2. kann es auch sein, daß die falsche CFG benutzt wird, in der
gewisse Feldnummern nicht verzeichnet sind und deshalb als ungültig
rausfliegen! Es wird stets die CFG auf dem Datenverzeichnis genommen,
wenn dort eine mit dem betr. Namen liegt. Deshalb dürfte das ein
äußerst seltenes Problem sein.
INDEX könnte in beiden Fällen Fehlermeldungen produzieren, darüber
wird nochmal nachzudenken sein (oder hätte längst nachgedacht werden
sollen, ja, richtig. Siehe aber Anmerkung unten.).
Andere Fälle von "Korruption" kann man nicht systematisieren, u.U. auch
gar nicht softwaretechnisch identifizieren, und somit auch keine
brauchbare Fehlerbehandlung oder -meldung konstruieren.
> die die .cld-Dateien liest und neu wegschreibt. Klar ist nur,
> dass es normalerweise keine Fehlermeldung gibt.
>
Anmerkung:
Zur Feststellung, ob alle internen Satznummern stimmen, gibt es die
Check-Funktion (h check: "Adressen checken"). Zur weitergehenden
Feststellung, ob ungültige Feldnummern vorhanden sind, gibt es immer
noch den Sniffer.
Sie wollen doch sicher nicht vorschlagen, daß man nie eine Erneuerung
der Datenbankdateien machen sollte, sondern immer nur eine der
Indexdatei? Das wäre ein extrem konservativ-defensiver Approach, der
natürlich auch nicht total von der Hand zu weisen ist.
B.E.
Mehr Informationen über die Mailingliste Allegro