Go to the first, previous, next, last section, table of contents.


Projekte verwalten

In diesem Kapitel wird aufgezeigt, wie MUIbase Projekte organisiert, sie öffnet, speichert, löscht und schließt, wie die Integrität der Daten geprüft wird und wie das Auslagern funktioniert.

Dateiformat

Ein MUIbase-Projekt besteht aus einigen Dateien, die in einem eigenen Verzeichnis gespeichert werden. Auf der Workbench wird man die Verzeichnisstruktur nicht bemerken, da das Doppelklicken auf ein Projekticon nicht das Verzeichnis öffnen wird, sondern veranlaßt MUIbase, das Projekt zu laden. Von CLI aus ist die Verzeichnisstruktur eines MUIbase-Projekts jedoch sichtbar.

Alle Dateien eines Projekts werden in einem Verzeichnis abgelegt, welches beim Speichern eines Projekts angelegt wird. Es dürfen weder Dateien aus diesem Verzeichnis entfernt noch in dieses Dateien und weitere Verzeichnisse plaziert werden! Diese werden verloren gehen, wenn das Projekt neu organisiert wird.

Das Verzeichnis enthält eine Datei mit Namen `Structure.mb', in der die Beschreibungen aller Tabellen, Felder, Filter, usw. gespeichert sind. Die Datensatzköpfe sind auch dort vermerkt. Für jede Tabelle wird eine Datei mit dem Namen der Tabelle angelegt. In ihnen werden alle Datensätze gespeichert. Schließlich gibt es eine Datei mit Namen `.lock'. Sie darf nicht entfernt werden. Falls es doch versehentlich passiert sein sollte, genügt es, wenn sie nur neu erzeugt wird, der Inhalt ist dabei unwichtig. Diese Datei wird zum Sperren verwendet, was bedeutet, daß MUIbase diese Datei exklusiv sperrt und dann erst die anderen Dateien öffnet. Wenn das Sperren mißlingt, dann weiß MUIbase, daß bereits eine MUIbase-Anwendung an diesem Projekt arbeitet. Immer nur eine MUIbase-Anwendung ist berechtigt, zu einem Zeitpunkt an einem Projekt zu arbeiten, da Datensatzdateien im Schreib-/Lesemodus geöffnet werden und gemischt geschriebene Daten von mehreren Anwendungen sicher nicht gewünscht ist. ;-)

Information

MUIbase hält einige Informationen über jedes Projekt bereit. Um Informationen über das aktuelle Projekt zu erhalten, wird der Menüpunkt `Projekt - Information...' ausgewählt. Die erhaltene Information enthält den Namen des Projekts, die Anzahl der Tabellen, die Gesamtanzahl aller Datensätz in allen Tabellen und ein Wert, der anzeigt, wieviele Bytes beim Neuorganisieren eingespart werden könnten. Diese Einsparung ist jedoch nur ein Schätzwert und sollte nicht als genaue Zahl angesehen werden. Besonders dann, wenn viele Änderungen an der Struktur des Projekts durchgeführt wurden (Hinzufügen oder Entfernen von Feldern), ist der Wert weit vom tatsächlichen entfernt.

Projekt löschen

Um ein neues Projekt zu beginnen, wird der Menüpunkt `Projekt - Neu - Projekt' angewendet. Dies löscht das aktuelle Projekt und MUIbase öffnet ein leeres Fenster, das das MUIbase-Logo anzeigt. In diesem Modus befindet sich MUIbase automatisch nach dem Starten, wenn kein Projekt vorhanden ist.

Über den Menüpunkt `Projekt - Neu - Datensätze' läßt sich ein Projekt neu beginnen, das auf der Struktur des aktuellen Projekts basiert. Dies bedeutet, daß alles außer die Datensatzdaten des aktuellen Projekts für das neue Projekt verwendet wird.

Wenn das Projekt noch nicht gespeichert wurde, bevor einer der beiden Menüpunkte ausgeführt wird, fragt eine Sicherheitsmeldung nach der Bestätigung der Operation.

Projekt öffnen

MUIbase kann mehrere Projekte gleichzeitig behandeln. Dies ist nur begrenzt durch den vorhandenen Speicher. Wenn ein anderes Projekt bearbeitet werden soll, wird `Projekt - Neu öffnen' aufgerufen. Dies öffnet ein neues Projekt mit einem Hauptfenster. Nun läßt sich ein Projekt für dieses Fenster laden.

Um ein Projekt zu laden, wird `Projekt - Öffnen - Projekt...' aufgerufen. Dies öffnet ein Dateiauswahlfenster, in dem ein Projekt ausgewählt werden kann. Es ist auch möglich, nur die Struktur eines Projekts zu laden, wenn das gesamte Projekt ohne die Daten geladen werden soll. Um dies zu bewerkstelligen, wird `Projekt - Öffnen - Struktur...' aufgerufen.

Wird beim Ändern eines Projekts eines der oben genannten Menüpunkte ausgewählt und das Projekt wurde noch nicht gespeichert, dann erscheint eine Sicherheitsmeldung, die nach einer Bestätigung fragt.

Projekt speichern

Alle Änderungen an einem Projekt werden nur im Speicher durchgeführt. Um sie permanent zu machen, muß daher das Projekt auf Platte gespeichert werden. Dies wird durch `Projekt - Speichern' erledigt. Wenn das Projekt noch keinen Namen trägt, erscheint zuerst ein Dateiauswahlfenster und fragt nach einem Dateinamen.

Der Grund, warum MUIbase das Projekt nicht automatisch speichert, wenn sich etwas ändert, ist der, daß der Benutzer entscheidet, wann das Projekt gespeichert wird und der Benutzer immer zur zuletzt gespeicherten Version des Projekts zurückkehren kann. Dieses Verfahren entspricht den Befehlen `COMMIT' und `ROLLBACK' in SQL-basierten Systemen.

Wenn ein Projekt gespeichert wird, dann werden alle geänderten Datensätze auf Platte gespeichert und die Datei `Structure.mb' erzeugt. Vor dem Erzeugen der neuen Datei benennt MUIbase eine möglichweise schon existierende Datei `Structure.mb' in `Structure.old', um eine Sicherheitskopie zu haben, falls das Speichern mißlingt.

Dieser Mechanismus garantiert schnelles Laden und Speichern, ist aber nicht frei vom Umschichten. Wenn viele Datensätze geändert wurden, dann werden die physikalische Reihenfolge der Datensätze und die daraus resultierende Fragmentierung zum Nachteil. Deshalb exisitiert ein Menüpunkt `Projekt - Umschichten & Speichern', der eine Umschicht- und Speicheroperation durchführt. Diese Operation kann etwas Zeit in Anspruch nehmen, die von der Anzahl und Größe der Datensätze abhängt. Die Umschicht- und Speicheroperation erzeugt ein neues Verzeichnis und schreibt alle projektabhängigen Dateien erneut. Das alte Verzeichnis wird nach erfolgreicher Operation gelöscht.

Wenn Änderungen an der Struktur des Projekts durchgeführt wurden, wie z.B. Einfügen eines neuen Feldes in einer Tabelle, ist ein Umschichten auch sinnvoll. Diese Änderungen werden nicht automatisch an allen Datensätzen durchgeführt, da es zuviel Zeit in Anspruch nehmen würde, jeden Datensatz zu laden, ihn zu verändern und wieder auf Platte zurückzuschreiben. Daher werden diese Änderungen auf eine interne `todo'-Liste gesetzt, die nach dem Laden eines Datensatzes abgearbeitet wird. Das Anwenden dieser Liste auf einen Datensatz verbraucht nur wenig Zeit, wobei jedoch eine längere Liste mehr Zeit benötigt. Umschichten eines Projekts führt dazu, daß die `todo'-Liste an allen Datensätzen durchgeführt wird. Wenn also viele Änderungen am Projekt durchgeführt wurden, wird ein Umschichten des Projekts die Zeit zum Laden einzelner Datensätze verkürzen.

Es ist auch möglich, ein Projekt unter einem neuen Dateinamen umzuschichten und zu speichern, ohne daß das alte Projekt geändert wird. Dies wird über den Menüpunkt `Projekt - Umschichten & Speichern als ...' angestoßen. MUIbase wird nach einem neuen Namen für das Projekt fragen.

Projekt entfernen

MUIbase bietet einen Menüpunkt zum Löschen eines Projekts. Nach `Projekt - Löschen' wird ein Dateiname verlangt und das Löschen des angegebenen Projekts mit einer separaten Sicherheitsmeldung bestätigt, bevor das Projekt von Platte gelöscht wird.

MUIbase macht nichts anderes, als das Verzeichnis mit allen darin befindlichen Dateien zu löschen. Dies kann ohne Probleme auch über die Workbench bzw. eine Amiga-Shell geschehen.

Projekt schließen

Falls das Projekt fertig ist, kann es über den Menüpunkt `Projekt - Schließen' geschlossen werden. Dies löscht das Projekt aus dem Speicher und schließt alle dazugehörigen Fenster. Falls das Projekt Änderungen hat, die noch nicht gespeichert wurden, bietet eine Sicherheitsmeldung an, es zu speichern, fortzusetzen oder die Operation abzubrechen.

Zum Schließen eines Projekts kann auch der Menüpunkt `Projekt - Speichern & Schließen' verwendet werden, bei dem das Projekt zuerst gespeichert wird, wenn Änderungen vorlagen, und dann geschlossen wird.

Integrität der Daten prüfen

MUIbase kann überprüfen, ob alle Daten im Projekt noch gültig sind und noch nicht durch Systemabstürze oder durch Programme beschädigt wurden, die die Projektdateien entfernen. Der Menüpunkt `Projekt - Prüfe Integrität der Daten...' startet diesen Prozeß.

Normalerweise benötigt man diese Funktionalität nie und MUIbase sollte immer melden, daß die Integrität der Daten perfekt ist. Sollte es aber doch passieren, daß das Projekt `interne Fehler' hat, was bedeutet, daß einige Datensätze nicht mehr geladen werden können, dann kann das Projekt über diesen Menüpunkt repariert werden.

MUIbase schreibt dann eine Logdatei mit allen betroffenen Datensätzen und man kann anschließend das Projekt umschichten und speichern. In der Logdatei werden die Datensätze, die möglicherweise beschädigt und nicht mehr erreichbar sind (so daß sie gelöscht wurden), nach ihrer Datensatznummer im alten (beschädigten) Projekt und nach ihrer Datensatznummer (in Klammern) im umgeschichteten Projekt aufgelistet.

Hinweis: Bis MUIbase v1.4 gab es einen Bug, der fehlerhaft geschriebene Projektdateien erzeugte. Mit diesem Menüpunkt sollte es möglich sein, diese Projekte zu reparieren. Seit MUIbase v1.4 ist dieser Fehler repariert und sollte nie mehr beschädigte Projekte erzeugen und das Überprüfen der Datenintegrität sollte immer melden, daß die Integrität der Daten perfekt ist.

Datensätze auslagern

MUIbase muß nicht alle Datensätze eines Projekts im Speicher halten. Dadurch wird das Laden und Speichern von Datensätzen beschleunigt. Beim Laden eines Projekts wird für jeden Datensatz ein Datensatzkopf angelegt. Die Daten selbst werden nur dann geladen, wenn sie benötigt werden, z.B. wenn sie auf dem Bildschirm angezeigt werden sollen. Die Gesamtanzahl der Datensätze ist nur durch den verfügbaren Speicher begrenzt, da jeder Kopf einige Bytes Speicher benötigt.

Es kann festgelegt werden, wieviel Speicher für die Datensätze eines Projekts verwendet werden darf. Dazu wird einer der vorgegebenen Werte im Menü `Einstellungen - Datensatzspeicher' eingestellt. MUIbase wird keinen Speicher der angegebenen Größe vorab belegen, sondern es prüft von Zeit zu Zeit, ob die Größe des momentan belegten Speicher größer ist als die angegebene. Der angegebene Wert ist keine genaue Grenze, sondern nur ein Vorschlag. Wenn MUIbase mehr Speicher benötigt, dann wird es die Obergrenze ignorieren und ihn belegen.

Wenn MUIbase der Speicher ausgeht oder die Obergrenze für den Datensatzspeicher erreicht, dann versucht es, so viele Datensätze wie möglich freizugeben. In dem Fall schreibt MUIbase veränderte Datensätze auf Platte, um ein Maximum an verfügbaren Speicher zu erhalten. Dieser Vorgang kann über den Menüpunkt `Projekt - Datensätze auslagern' erzwungen werden.

Wenn genug Speicher vorhanden ist, um alle Datensätze im Speicher zu halten und eine Obergrenze festgelegt wurde, die hoch genug ist (z.B. `unbegrenzt'), dann braucht MUIbase keine Datensätze auszulagern.

MUIbase verwaltet eine Frei-Liste für jede Datensatzdatei. Ein gelöschter Datensatz wird in dieser Frei-Liste eingetragen. Auch bei einer Änderung eines Datensatzes, der auf die Platte geschrieben werden soll, wird der alte Platz der Datei in der Frei-Liste eingetragen. MUIbase stellt jedoch sicher, daß beim Neuladen immer zum Status der letzten Speicheroperation zurückgegekehrt werden kann. Es wird keine Bereiche zerstören, die frei aber dennoch von einem Datensatz belegt sind, die beim Neuladen des Projekts erreicht werden könnten.


Go to the first, previous, next, last section, table of contents.