Ab 4D v13 können Sie wählen, wo Sie Daten aus einem Datenfeld vom Typ BLOB, Bild bzw. Text speichern wollen. Sie können den Inhalt dieser Felder jetzt, zusätzlich zu den bereits vorhandenen Speicheroptionen (im Datensatz oder in der Datendatei), auch außerhalb der Datendatei abspeichern. In diesem Fall werden Ihre Daten als externe Dateien gespeichert, die 4D verwaltet und auch über Programme von Drittherstellern steuerbar sind - vorausgesetzt, Sie sorgen für den Erhalt der Datenintegrität.
Dies läuft für den Benutzer unsichtbar ab: Der Zugriff auf die Daten bleibt gleich, egal wo sie gespeichert sind.
Durch externes Speichern der Daten können Sie die Funktionsweise der Anwendung optimieren. So können Sie beispielsweise umfangreiche Daten transportieren oder über das Betriebssystem auf Text bzw. Bilder innerhalb der Datenbank zugreifen, selbst wenn sie nicht geöffnet ist.
Es gibt zwei Möglichkeiten, um Daten extern zu speichern:
Automatischer Modus: In diesem Modus erstellt und verwaltet 4D einen Standardordner, der in einer bestimmten Art strukturiert ist und alle extern gespeicherten Daten enthält. Diese Daten werden im Hintergrund gesteuert und haben die gleiche Funktionsweise und automatischen Aktionen wie intern gespeicherte Daten. Sie können den automatischen Modus folgendermaßen steuern:
Über den Befehl SET EXTERNAL DATA PATH mit einem leeren String im Parameter Pfad (die Einstellung gilt für die Arbeitssitzung).
Eigener Modus: In diesem Modus wählen Sie selbst, wo die externen Dateien zu Datenfeldern bzw. Datensätzen gespeichert werden. 4D behält dann nur den Link zwischen dem Feld und seinen Daten, einige Mechanismen der Datenbank sind nicht länger verfügbar.
Sie aktivieren den eigenen Modus über den Befehl SET EXTERNAL DATA PATH und geben einen anderen Ordner als den Standardordner an.
Nachfolgende Tabelle zeigt die Funktionsweise und automatischen Aktionen im automatischen und im eigenen Modus:
Automatischer Modus
Eigener Modus
Ordner zum Speichern einrichten
Name und Speicherort werden von 4D gesetzt; nur ein Standardordner für die gesamte Datenbank
Name und Speicherort frei wählbar; kann für jedes Feld anders sein
Externe Dateien erstellen, laden und sichern
Automatisch
Automatisch
Externe Datei löschen, wenn der Datensatz gelöscht wird
Ja
Nein
Externe Datei löschen, wenn dem Feld Nullwert zugewiesen wird
Ja
Nein
Automatische Integration beim Sichern der Datenbank
Ja
Ja (externer Pfad)
Automatische Unterstützung, wenn das Logbuch integriert wird
Ja
Ja (externer Pfad)
Unterstützung von Standardindizes (Textfelder)
Nein
Nein
Unterstützung von Volltext-Indizes (Text- und Bildfelder)
Außerhalb der Datendatei gespeicherte Daten werden nach folgenden Kriterien organisiert:
Die Daten werden für jeden Datensatz in einer externen Datei mit Namen xxx.txt (Textfeld), xxx.blob (Blobfeld) oder xxx.jpg/xxx.tiff... (Bildfeld) gespeichert, wobei xxx ein einmaliger Identifier (UUID) ist, den 4D verwaltet.
Im automatischen Modus werden alle externen Daten in einen Ordner mit Namen<DatabaseName>.ExternalData gelegt und <DatabaseName> wird durch den Namen der Strukturdatei der Anwendung ersetzt. Dieser Ordner wird neben die Datendatei (.4DD Datei) der Anwendung gelegt. Innerhalb dieses Ordners erstellt 4D pro Tabelle mit externen Daten einen Ordner mit Namen Tabelle+Tabellennummer, dann pro externes Datenfeld einen Unterordner mit Namen Feld+Feldnummer. Die ersten 100 Einträge des Feldes werden auf der obersten Ebene dieses Ordners gespeichert, die darauffolgenden in Unterordnern, beginnend mit Nr. 2. Jeder Unterordner kann bis zu 100 Elemente enthalten. Wird z.B. der Inhalt von Feld Nr. 5 von Tabelle Nr.3 in der Anwendung "Accounting" außerhalb der Datei gespeichert, erstellt 4D hierfür folgende Baumstruktur: Accounting.4DD [Accounting.ExternalData] Table3 Field 5 Data_1B7F3A 56F6544B45951EFA60426D5ABC.txt Data_1B7F3A 56F6544B45951EFA60426D5CCC.txt ... 2 Data_2ADBFBA478AAE4409DA9C2D13C90A53B.txt Data_32F8A30B87EE7E4BBC802468D553DC43.txt ...
Im eigenen Modus bestimmen Sie Name und Speicherort des Ordners selbst und lassen sich für den extern gespeicherten Inhalt jedes Datenfeldes über den Befehl SET EXTERNAL DATA PATH separat angeben. Diese Einstellung wird nicht in der Struktur der Anwendung gespeichert.
Daten von Datenfeldern werden in einer externen Datei gespeichert, wenn der Datensatz auf die Festplatte gesichert wird - falls erforderlich nach Bestätigen der Transaktion:
Existiert die externe Datei nicht, wird sie angelegt;
Existiert bereits eine externe Datei, wird sie durch eine neue ersetzt. Um die bisherige Datei beizubehalten, können Sie entweder einen anderen Pfad angeben (über den Befehl SET EXTERNAL DATA PATH) oder über den Befehl RELOAD EXTERNAL DATA den Inhalt des Feldes aus seiner externen Datei in den Speicher laden, bevor er erneut auf der Festplatte gesichert wird. Diese Option ist hilfreich, wenn die Datei nach dem Laden des Datensatzes von einer anderen Anwendung geändert wurde.
Der Speicherplatz für die Daten ist in jeder Anwendung ein lokaler Parameter. Er kann beim Synchronisieren oder Replizieren der Daten (siehe Replication via SQL in der lokalen und in der remote Anwendung unterschiedlich sein. In diesem Fall passt das Speichern zum Parameter der jeweiligen Anwendung; Synchronisieren oder Replizieren ändert diese Parameter nicht.
Beispiel: Ein Datenfeld vom Typ Bild wird in der remote Anwendung außerhalb der Datendatei gespeichert; dasselbe Datenfeld wird in der lokalen Anwendung innerhalb der Datendatei gespeichert. Beim Replizieren werden alle Daten, die diesem Datenfeld in der lokalen Anwendung hinzugefügt wurden, in der remote Anwendung weiterhin außerhalb der Datendatei gespeichert.
Extern gespeicherte Dateien lassen sich auch von anderen Programmen als 4D im Lese-/Schreibmodus öffnen (Betriebssysteme, Text- oder Grafikeditoren, usw.). Das sollte jedoch mit Bedacht geschehen, da es u.U. die Funktionsweise der Anwendung beeinträchtigen kann:
Wird eine extern gespeicherte Datei durch das Betriebssystem oder ein third-party Programm gelöscht, umbenannt oder verschoben, wertet 4D, dass das dazugehörige Feld den Wert Null hat und die Datei wird erneut angelegt (sofern sie nicht Null ist), wenn der Datensatz gesichert wird.
Verwenden Sie Indizes und werden die gespeicherten Dateien über ein third-party Programm geändert, ohne die dazugehörigen Datensätze erneut zu speichern, werden die Indizes nicht aktualisiert.
Hinweis: Externe Textdateien werden in UTF-8 ohne BOM-Format gesichert. Werden sie über ein third-party Programm geöffnet und dann mit einem BOM gesichert, kann 4D sie weiterhin öffnen, sie werden dann jedoch wieder ohne BOM gesichert.
Beachten Sie, dass Laden eines Datensatzes im Nur-Lesen Modus nicht die externen Dateien für die Datenfelder dieses Datensatzes sperrt. Die Dateien sind über 4D oder ein anderes Programm weiterhin änderbar, selbst wenn 4D ihren Inhalt in den Speicher lädt.