PDA

View Full Version : Grösse ein BLOB-Feldes



HeymannJ
06-03-12, 09:58
Hallo *all,

wir möchten, in einer mittels SQL erstellten Tabelle, PDF-Files archivieren. Hierfür habe ich in der Tabelle ein BLOB-Feld wie folgt angelegt:

BFILE BLOB (10M) NOT LOGGED COMPACT

Fragen:
a.) Das Feld ist ja mit einer Größe von 10MB angelegt. Wird der Speicherbereich immer reserviert auch wenn die Datei nur z.B. 75K groß ist? M.E. bewirkt die Option COMPACT, dass nur die tatsächliche Dateigröße belegt wird - ist das so?

b.) werden die BLOB's eigentlich in der Tabelle gespeichert, oder nur der Verweis (*POINTER) auf das Objekt?

c.) Gibt es eine Möglichkeit die PDF-Files vor der Archivierung zu komprimieren und nach dem Auslesen aus dem Archiv wieder zu dekomprimieren

Vielen Dank im voraus.

B.Hauser
06-03-12, 12:01
Large Objects werden NICHT in der Tabelle sondern in der Overflow-Area gespeichert. In der Tabelle wird nur ein 16 Byte großer Bereich (für die Adresse) reserviert.
Es sei den mit ALLOCATE wurde ein anderer Bereich angegeben, so dass "kleinere" Large Objects in der Tabelle gespeichert werden können, dann wird dieser Bereich in der Tabelle gespeichert. Alles was über diesen allokierten Bereich hinausgeht wird in der Overflow-Area gespeichert.
Ein Datensatz darf 32K nicht überschreiten.

Die Overflow-Area ist variabel und kann pro Datensatz bis zu 3 Gig groß werden. Pro Tabelle können maximal 256 Gig Overflow-Area zugeordnet werden.

Birgitta

Robi
06-03-12, 12:43
und selbstverständlich kannst du die PDF's vorher Zippen und nach dem rausholen wieder entzippen.

Auf der Iseries am besten mit JAR,
ich glaube Dieter Bender hat da mal was gepostet.

Robi

Fuerchau
06-03-12, 13:42
Da man das IFS inzwischen auch journalisieren kann, ist es ggf. besser externe Dateien im IFS zu belassen und nur einen Link in die Tabelle zu legen.
Das IFS-Objekt unterliegt dann auch entsprechenden Schutzbestimmungen und man spart sich den Doppelplatz.