Soll ich neu dynamisch eine PDF, anstatt speichern sie entweder in der Datenbank oder im Dateisystem?

StackOverflow https://stackoverflow.com/questions/227727

Frage

Ich brauche Kunden in der Lage sein, PDFs von Briefen herunterzuladen, die an sie gesendet wurden.

Ich habe die Threads über Datenbank-Vergleich Dateisystem Speicherung von Dokumenten oder Bildern zu lesen, und es klingt wie der Konsens ist, dass für etwas mehr als nur ein paar Bilder, Dateisystem ist der Weg zu gehen.

Was ich möchte wissen:

  • wäre eine sinnvolle Alternative sein, nur die Buchstaben Details in der Datenbank zu speichern, und erstellen Sie die PDF 'on the fly', wenn es angefordert wird?
  • Ist dieser Ansatz besser oder schlechter, um das PDF aus dem Dateisystem zu holen?
War es hilfreich?

Lösung

Ich würde es aus zwei Gründen speichern aus

1) Wenn Sie sich jemals ändern, wie Sie die PDF-Datei generieren, werden Sie wahrscheinlich nicht wollen, historische Elemente zu ändern. Wenn Sie sie jedes Mal erzeugen, entweder sie wird sich ändern, oder müssen Sie Kompatibilitätscode halten „im alten Stil“ Aufzeichnungen erzeugen

2) Speicherplatz ist billig. Benutzer Geduld nicht. Es sei denn, Sie sind wirklich für die Lagerung gedrückt oder aus der Lagerung ziehen sind härter als die PDF-Erzeugung, freundlich zu Ihren Benutzern und speichert es ab.

Natürlich, wenn Sie Tausende von diesen eine Stunde von einem spärlichen Daten-Set zu erstellen, können Sie den Speicher nicht haben. Aber wenn Sie den Raum haben, würde ich stimme für „benutzen“

Andere Tipps

Wenn es für Archivierungszwecke ist, würde ich auf jeden Fall die PDF speichern, weil in Zukunft Ihre PDF-Generierung Skript ändern kann und dann der Brief nicht genau das gleiche wie das, was ursprünglich gesendet wurde. Der Kunde wird es erwartet, genau gleich zu sein.

Es ist egal, welche Methode ist überlegen, manchmal ist es besser, zu gehen, was Ansatz ist sicherer.

Sie haben einen Forensik Grund, warum Sie haben Aufzeichnungen von Briefen zu halten an Kunden geschickt? Wenn Sie im laufenden Betrieb regenerieren gehen, wie Sie wissen, dass künftige Änderungen am Code nicht den Buchstaben umschreiben (oder zumindest der Kunde dieses Argument vor Gericht machen, wenn die Informationen in einem Rechtsstreit verwendet wird) ...

Ich bin geneigt zu sagen, "es kommt".

Wenn ein Dokument oft angefordert wird, kann es eine rettend sein, wenn Sie es auf der ersten Anforderung zusammenstellen und abrufen es subsequentially.

OTOH wenn die meisten Anfragen für ein Dokument der nur einmal beschreibbaren Typ sind, und der Erstellungsprozess nicht essen die meisten Ihrer Serverkapazität auf, on-the-fly wird klar im Vorteil.

Wenn Sie ASP.NET verwenden, warum nicht die PDF-Cache. Ihr Cache kann in der Datenbank gespeichert, wenn Sie so lange im Speicher mögen oder links, wie Sie es zuerst benötigen. Die Enterprise Library dies in dem Caching-Anwendungsblock für Sie implementiert und es ist bemerkenswert einfach zu bedienen. Wenn Sie das Objekt-Cache, erstellen Sie eine Speicherung in der Datenbank den Block verwenden und es dann laden, wenn Sie es brauchen Sie sich nicht um neu zu erstellen, kümmern.

Ein paar Dinge zu beachten, ist die PDF auf Basis von Daten zu erzeugen, wie es zu einem bestimmten Zeitpunkt existierte. Z.B. ein Bill auf Daten aus dem vorherigen Monat basiert?

Wenn ja, würde verwenden Sie die gleiche Vorlage jeden Monat diesen Brief zu generieren? Was passiert, wenn / wenn die Buchstaben Formatänderungen, wenn Sie auf der fliegen regenerieren es nicht mehr das gleiche ist, das ihnen geschickt wurde. Speichert die PDF-Stream in die Datenbank eine Möglichkeit?

Ich denke, was ich hinaus will, haben Sie eine genaue Darstellung benötigen, was an den Benutzer gesendet wurde, oder ist das flexibel?

Die Frage, ob die PDF-Dateien dynamisch erzeugen oder speichern sie statisch eher wie eine Rechtsfrage klingt als eine Frage der Programmierung.

Wenn Sie keinen Zugang zu einem Rechtsbeistand, die Leitlinien für diese dann zur Verfügung stellen kann, es wird viel sicherer sein, auf der Seite der Vorsicht irren und speichern sie statisch.

Solange die PDF-Dokument von dauerhafter Natur ist (nicht nur eine Arbeit doc, aber etwas offiziell unterzeichnet und an anderer Stelle im Unternehmen oder außerhalb des Unternehmens gesendet werden), sollten Sie eine Kopie haben diese PDF-Datei in Ihrem Netzwerk und ein Link zu dieser Datei in Ihrer Datenbank.

Sie können nicht auf den verfügbaren Daten stützen, um die selber Dokument zu einem anderen Zeitpunkt vor allem, weil zu reproduzieren:

  1. Die Daten können geändert werden (ja! Nehme an, dass der Brief von Abteilungsleiter unterzeichnet werden soll, angesiedelt, und das Personal hat sich geändert?)
  2. Ihr Berichtsformat ändert (Header, Footer, Logo, etc.)
  3. Das Dokument, das Sie von jemandem gehalten produziert wird sonst die Verwendung der verfügbaren Daten im Dokument machen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top