Richtige Ablage von Bildern bei SQL-Server-Datenbank

  • VB.NET

Es gibt 30 Antworten in diesem Thema. Der letzte Beitrag () ist von KSE.

    Richtige Ablage von Bildern bei SQL-Server-Datenbank

    Hallo zusammen,

    bisher hatte ich immer mit einer lokalen Datenbank gearbeitet(Debug\DB). Jetzt möchte ich eine Anwendung schreiben, die auf eine SQL-Datenbank zugreift. Das Programm bietet dann auch die Möglichkeit Bilder anzuhängen. Bei bisherigen Anwendungen hatte ich Bilder auch lokal in einen Ordner kopiert u. den Pfad in der DB hinterlegt (Debug\Bilder...).

    In meinem Fall wird es so sein, dass der SQL-Server bspw. in Berlin steht. Wie lege ich jetzt ordnungsgemäß die Bilder ab? Auf dem SQL-Server nicht, oder? Ich vermute dort wo die Anwendung liegt??

    Schon mal vielen Dank im voraus!
    Gruß von der KSE

    ks-entwicklung.de
    Du könntest auch die "Bilder" in einen Text umwandeln und in der Datenbank selber speichern.
    Ist ja nicht schwer... Copy-Paste XD
    Kommt auf die Größe der Bilder und die Geschwindigkeit der Datenbank & der Internetverbindung an.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Du musst halt entscheiden ob du die Bilder nur lokal brauchst, oder ob mehrere auf das gleiche Bild zugreifen sollen.
    Wenn sie nur lokal gebraucht werden kannst du sie auch lokal speichern... Entlastet den Traffic ja...
    Wenn du sie aber auf mehreren Rechnern brauchst, würde es sich anbieten die Bilder in der Datenbank zu speichern. Was natürlich ne Sache des Traffics und der Geschwindigkeit ist...
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Die Bilder werden von mehreren Benutzern benötigt. Die Anwendung kann/wird auf einem Netzwerklaufwerk liegen, die dann jeder Benutzer ausführen kann.

    Von daher ist es wohl am besten die Bilder auch dort abzulegen, oder nicht?
    Gruß von der KSE

    ks-entwicklung.de
    Ja, das kannst du machen. Ich würde sie in diesem Fall bei deinem Programm belassen.
    Ich ging davon aus, dass du das Programm über das Internet verwendest. Da wäre der Bilder-Traffic dann recht hoch, wenn sie auf dem Server liegen.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    eigentlich hätte ich nur bei Access Bedenken, bei eingespeicherten Bildern an die Leistungsgrenze zu kommen.
    Jdfs. SqlServer hat glaub kein Problem, BildDaten zu bunkern.

    Frühermal war das glaub eine Optimierung zur Schonung der DBProvider, dass man nur die Pfade in der DB hatte, und die Bilder in einem zusätzlichen DateiOrdner. Aber heutzutage nicht mehr nötig, und birgt nurnoch die Gefahr, dass was blödes mit den Dateien passiert, und dann die Datensätze nicht mehr stimmen.

    Mit dem Abruf von Bildern muß man sowieso aufpassen, dass man nicht seine Performance kellert und/oder den ArbeitsSpeicher zumüllt. - ob man die Bilder nun aussem Dateisystem zieht oder vonne DB.
    Mir ging es eher immer um den Traffic vom Server zum Client. Übers Netz je nach Bildern ja nicht immer gescheit.
    Aber hatte ja auch schon angeregt die Bilder direkt in der Datenbank zu speichern.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    MemoAnMichSelbst schrieb:

    Übers Netz je nach Bildern ja nicht immer gescheit.

    Ja, aber wenn mehrere Clients was von der DB wollen gibts ja garkeine Alternative dazu, dass die Bilder beim Server liegen.

    Um den NetzTraffic gering zu halten kann man sich auch irgendeine Form von Cashing ausdenken, bei dem mw. beim Client während der Sitzung ein temporäres Bilder-Directory angelegt wird oder sowas.
    Also nochmal zum mitschreiben..

    Ich soll also doch die Bilder in der SQL-DB speichern.

    Wir reden hier von >1000 Bildern. Wenn ich überlege, dass die Bilder (max. 50 Bilder auf einmal) über das Internet jedes mal von Berlin gezogen werden müssen leidet doch eindeutig die Preformance darunter, oder nicht?
    Gruß von der KSE

    ks-entwicklung.de

    KSE schrieb:

    Wenn ich überlege, dass die Bilder (max. 50 Bilder auf einmal) über das Internet jedes mal von Berlin gezogen werden müssen leidet doch eindeutig die Preformance darunter, oder nicht?

    Ja, aber ich sehe keine Alternative, wie die Bilder anders als übers Internet zum Client kommen sollen.
    Du hast doch nur zwei Möglichkeiten...
    Und du kannst die Bilder NUR beim Client lassen, wenn sie fix sind und nicht geändert werden können.
    Dann kannst du sie alle beim Client speichern.

    Wenn die Bilder sich jedoch ändern, hast du garkeine Wahl als sie irgendwo gebündelt zu halten und nur bei Bedarf zu laden (zu cachen)...

    Die Frage ist: Wie groß sind die 1000 Bilder?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Natürlich ist eine Datenbank kein Filesystem, allerdings dient eine Datenbank auch zur zentralen Datenhaltung und zur Verminderung von Redundanzen. Wenn die Bilder nicht ständig mehr werden ist das kein Problem ich habe hier Datenbank die enthalten keinerlei Datein oder Bilder und sind an die 2 - 3 GB groß. Dafür sind sie gemacht und da gibt es auch keine Probleme mit den Backups, schließlich ist das ganze hierfür ausgelegt um eben große Datenmengen zu verwalten.

    Aber es gibt auch NoSQL und da gibt es verschiedene Variante auch spezielle zur Speicherung von Daten.
    @sweeneytodd am besten speichere ich die Daten auf dem Filesystem.Würde ich auch sagen!

    Nochmal kurz zur Grundstruktur die in diesem Fall gegeben ist.

    Ich habe ein Netzwerklaufwerk, welches direkt an meinem Standort im Netzwerk integriert ist. Der SQL-Server befindet sich in Berlin. D.h. ich könnte meine Anwendung auf dem Netzwerklaufwerk für alle Benutzer (ca. 50) zur Verfügung stellen u. dort auch die Bilder ablegen( wie gehabt Debug/Bilder ...). Die Daten würde ich dann über den SQL-Server in Berlin beziehen/ablegen. Somit wäre sicher gestellt, dass die Bilder in meiner Anwendung schnell eingelsen bzw. gespeichert werden. Backups werden sowohl von der Netzwerkplatte als auch von dem SQL-Server täglich durchgeführt.

    Würde dadurch die Preformance leiden bzw. wäre diese Vorgehensweise professionell?
    Gruß von der KSE

    ks-entwicklung.de
    Außer dass du was in nem Debug Ordner im Netzlaufwerk bereit stellst ist das so schon passend ;)
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D