Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Expertenrunde: BLOBS als externe Dateien oder in der DB? (https://www.delphipraxis.net/104150-expertenrunde-blobs-als-externe-dateien-oder-der-db.html)

alzaimar 28. Nov 2007 08:17

Datenbank: MSSQL, FB oder PostGres • Version: egal • Zugriff über: Das ist die Frage

Expertenrunde: BLOBS als externe Dateien oder in der DB?
 
Hi

Nehmen wir an, ich hab ne Tabelle in einer Datenbank mit einer BLOB-Spalte. Dort drin sind Dateien abgelegt (Bilder, Dokumente, egal), die Größe variiert zwischen 1k und 10MB je Datei.

Es gibt nun zwei Möglichkeiten, das zu realisieren
A) Man kann einfach so lassen, wie sie ist, also den DB-Server die BLOB-Verwaltung überlassen (Auf dem Standpunkt steh ich).
B) Andere Coder meinen nun, es sei 'besser', die Dateien im Fileserver abzulegen und in der DB nur den Dateinamen zu speichern.

Wie würdet ihr die beiden Alternativen hinsichtlich

- Performance
- Sicherheit
- Wartbarkeit

des DBMS bewerten?

Wie würdet ihr so etwas implementieren?

Eure Meinungen würden mich interessieren.


Danke.

mkinzler 28. Nov 2007 08:39

Re: Expertenrunde: BLOBS als externe Dateien oder in der DB?
 
Ich bevorzuge auch die Verwendung von Blobs. Dafür benötigt aber das DBMS eine richtige BLOB-Unterstützung, damit meine ich das er Blobs nicht als Teil der Tabelle sondern in einem eigenen Tablespace ablegt, was bei Oracle und FB der fall ist. Bei den anderen DBMS weiß ich nicht, wie diese das händeln.

Performance: Bei BLOBS nur gut, wenn Speicherung getrennt von Tabelle
Sicherheit: Alles liegt in der Datenbank, kein Zugriff von außerhalb möglich.
Wartbarkeit: Es reicht die Datenbanken zu kopieren, kein Problem mit Pfaden.

Codewalker 28. Nov 2007 08:41

Re: Expertenrunde: BLOBS als externe Dateien oder in der DB?
 
Ich teile Deinen Standpunkt. Alleine im Hinblick auf Konsistenz und Sicherheit ist das Speichern der Namen der falsche Ansatz. Du bist dann sehr unflexibel, falls Dateien auf einen anderen Server umziehen und Fehlersuche (z.B. wenn "jemand" ein Verzeichnis umbenennt - man muss ja mit allem rechnen :mrgreen: ) ist deutlich schwieriger. Moderne Datenbanksysteme sind optimiert, mit großen Dateien zu jonglieren. Auf der Arbeit speichern wir Fotos der Mitarbeiter als BLOBs. Damit erreichen wir zwar nicht die 10 MB pro BLOB, aber man vergrößert die Datenbank schon deutlich. Trotzdem kann ich bei der Performance absolut nicht meckern.

hanspeter 28. Nov 2007 08:42

Re: Expertenrunde: BLOBS als externe Dateien oder in der DB?
 
Zitat:

Zitat von alzaimar

Wie würdet ihr die beiden Alternativen hinsichtlich

Unendliches Thema.
In manchen Bereichen ist die Speicherung als Blob (aus Gründen der Datensicherheit) gesetzlich vorgeschrieben.
Vorteil ist sicherlich das Daten und Information zusammen gehören und so abgespeichert sind.
Manipulationen an dem Datenbestand sind außerhalb der Datenbank nicht möglich.
Was nach meiner Meinung dagegenspricht ist das Aufblähen der Datenbank.
Bei Terrabyte wird die Datensicherung sicherlich auch ein Problem.
Aber auch darunter ist die Datensicherung mit einem File-gestützten System einfacher.
Ich könnte bei dem Datensatz z.B. angeben CD-Nr/ Dateinamen.
Ist die zugehörige Information nicht auffindbar, dann erfolgt die Aufforderung zum Einlegen einer CD.
Ein weiteres Argument für filegestütztes Speichern ist die Möglichkeit mit mehr als einem Datensatz auf das gleiche
Object zu verweisen. (z.B. unterschiedliche Suchkriterien)

Mit Gruß
Peter

Ghostwalker 28. Nov 2007 08:51

Re: Expertenrunde: BLOBS als externe Dateien oder in der DB?
 
Also..einfach mal eine Aufstellung der Vor-/Nachteile der System so wie ich das sehe (natürlich hinsichtlich der genannten Punkte :) )

Speicherung ausßerhalb des DBMS:

Vorteil:

- Blob-Daten können unabhängig von der DB aktualisiert werden. Ich muß als nicht immer die DB belästigen, wenn
ich z.B. an einem Textdokument etwas ändere.

- Im Falle eines DB-Crashes hab ich immernoch meine Blob-Daten und kann ggf. weiterarbeiten und muß nicht warten
bis die DB wieder zurückgesichert ist.

- Schnellere DB-Bearbeitung, da die Blob-Daten z.B. Bei Suchanfragen nicht mit berücksichtigt und auch nicht
mit übertragen werden müssen.

Nachteile:

- Es kommt zu Inkonsistenzen, da man z.B. ein Dokument löschen kann, ohne den entsprechenden Eintrag in der DB zu
entfernen.

- Die Daten sind nicht durch das DBMS abgesichert. D.h. Jeder der auf den Fileserver Zugriff hat kann an den Daten
rumfummeln.

- Erhöter Wartungsaufwand, da man die Daten konsistent halten muß ("manuell"). Auch müssen die Blob-Daten extra
gesichert werden.

Dementsprechend sind die o.g. Vorteile die Nachteile bei Speicherung in der DB und die Nachteile die Vorteile bei Speicherung in der DB.

Letztendlich würde ich das von Fall zu Fall entscheiden. Viel hängt davon ab, welche Anforderungen für die Bearbeitung gestellt sind, welche Resourcen (Hardware/Software) vorhanden ist, sowie welche Daten den gespeichert
werden sollen und wie sie Verknüpft sind.

Codewalker 28. Nov 2007 08:56

Re: Expertenrunde: BLOBS als externe Dateien oder in der DB?
 
Zitat:

Zitat von hanspeter
Bei Terrabyte wird die Datensicherung sicherlich auch ein Problem.

Das ist ja eigentlich egal: Ob ich jetzt die DB in Terabyte-Größe sichere oder eine kleine DB und muss dann den FileServer sichern - die zu sichernde Menge bleibt ja fast gleich (DB hat evtl. noch Overhead - aber bei der BLOBgröße eigentlich zu vernachlässigen)

noidic 28. Nov 2007 09:00

Re: Expertenrunde: BLOBS als externe Dateien oder in der DB?
 
Vor dieser Entscheidung stand ich auch schon einige male und werde auch noch häufiger entscheiden müssen, welchen Weg ich gehe. In den meisten Fällen entscheide ich das zusammen mit unserem DBA und als Faustregel haben wir gesetzt, dass wir auf die Fileserver-Lösung gehen, wenn die Gesamtgröße pro Monat 100MB übersteigt.

Eine generelle Aussage, was besser ist, wird man kaum treffen können, hier mal Vor- und Nachteile der Fileserverlösung (DB-Lösung entsprechend umgekehrt) aus meiner Sicht.

pro:
- Speicherkapazität kann leichter erhöht werden (zumindest nach Aussage unseres DBA)
- Bei Ausfall der Datenbank Zugriff auf die Dateien weiterhin möglich
- Dateien können direkt mit dem Standardprogramm geöffnet oder z.B. als Mailanhang verwendet werden.


kontra:
- Berechtigungen für Fileserver müssen zusätzlich gesetzt werden
- 2 Server, die ausfallen können
- 2 Zugriffsmethoden in der Anwendung nötig, damit mehr Codingaufwand und schlechtere Performance.

Was die Sicherheit angeht sehe ich da keinen Unterschied, wie aus den kontras ersichtlich hat eine Fileserver-Lösung meistens eine schlechtere Performance und ist aufwändiger zu warten.
Ich persönlich bevorzuge die DB-Lösung, aber in einigen Fällen macht Fileserver wohl mehr Sinn.

hanspeter 28. Nov 2007 09:26

Re: Expertenrunde: BLOBS als externe Dateien oder in der DB?
 
Zitat:

Zitat von Codewalker
Das ist ja eigentlich egal: Ob ich jetzt die DB in Terabyte-Größe sichere oder eine kleine DB und muss dann den FileServer sichern - die zu sichernde Menge bleibt ja fast gleich (DB hat evtl. noch Overhead - aber bei der BLOBgröße eigentlich zu vernachlässigen)


Ich meine nicht ganz.
Bei einem Fileserver kann ich Daten einfacher auf mehrere Medien aufteilen.
z.B. Bilder jahrgangsweise auf eine DVD.
Insbesondere wenn viele Daten gespeichert werden, die nur zu Archivzwecken interessant sind,
ist hier die Auslagerung einfacher.

Eine weitere Möglichkeit wäre für diese Daten eine eigene Datenbank zu verwenden und diese bei Erreichen einer
bestimmten Größe zu archivieren.

Die 4,5 Gbyte einer DVD sind immer noch eine Grenze und das Aufteilen eines Backup auf mehrere Medien ist auch nicht ganz trivial.

Gruß
Peter

hoika 28. Nov 2007 09:35

Re: Expertenrunde: BLOBS als externe Dateien oder in der DB?
 
Hallo,


Ich hatte mich das eine mal auch zusammen mit dem Admin
der Firma für FileServer entschieden (FB als DB).

Grund war die bessere Speicherung/Archivierung für den Admin.


Mal was anderes zu mkinzler.
TableSpace und FB ?
Seit wann geht das denn ?


Heiko

mkinzler 28. Nov 2007 09:40

Re: Expertenrunde: BLOBS als externe Dateien oder in der DB?
 
Zitat:

TableSpace und FB ?
War vielleicht die falsche Begrifflichkeit. Aber BLOBS werden in FB, wenn sie eine bestimmte Größe erreichen in einem eigenen Bereich der DB gespeichert und in der Tabelle nur noch einen Verweis auf den Blob


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz