8 Stimmen

Wie kann ich einen Dateityp aus einem Blob/Filestream identifizieren?

Wir haben vor längerer Zeit eine Anwendung von der Stange gekauft, die in der Lage ist, Dateien als Blob in SQL Server zu speichern. Wir haben festgestellt, dass sich die Größe der Datenbank in den letzten sechs Monaten mehr als verdoppelt hat, weil eine Abteilung dieses Blob-Feld immer häufiger verwendet. Infolgedessen ist die Anwendung schmerzhaft langsam geworden.

Ich wurde damit beauftragt, das Blob-Feld aus der Datenbank zu entfernen und die Datei auf dem eigentlichen Dateisystem zu speichern. Leider speichert die Anwendung nicht, um welchen Dateityp es sich in der Datenbank handelt. Ich kann die Datei zwar so lesen, wie sie in der Datenbank vorhanden ist, aber ich weiß nicht, unter welcher Erweiterung ich die Datei speichern soll. Der Support der Anwendung unterstützt diese Version der Software nicht mehr und will mit uns nicht über die Extraktion der Daten sprechen. Leider haben wir keinen Zugang zu ihrem Quellcode.

Für Vorschläge wären wir sehr dankbar! Vielen Dank im Voraus!

0voto

Matt Spradley Punkte 7114

Eine andere Möglichkeit wäre, die Datenbank physisch zu partitionieren. Sie könnten die Tabelle, die das Blob-Feld enthält, in einer anderen Datenbankdatei speichern, die auf einer anderen Festplatte/Spindel gespeichert sein könnte. Die Festplatte, die die Blob-Tabelle enthält, könnte durch RAID 0 oder RAID 10 weiter optimiert werden.

Das könnte die Dinge beschleunigen. Außerdem entfällt bei diesem Ansatz die Notwendigkeit, die Anwendungslogik zu ändern.

0voto

Eric Smith Punkte 4982

Mit Ihren Worten "... ich wurde damit beauftragt, ..." - Sind Sie sicher, dass dieses Problem nicht durch eine Optimierung der Datenbank gelöst werden kann? Sie sollten es tunlichst vermeiden, eine alte Anwendung zu hacken, für die Sie den Quellcode nicht haben und für die es keine Unterstützung gibt.

Sehen Sie sich also das Problem an - die Langsamkeit der Anwendung. Warum ist sie also langsam? Kann ein Datenbankindex das Problem nicht lösen?

Wenn Sie die BLOBs in das Dateisystem extrahieren müssen, warum ist dann das Format der Datei relevant? Sicherlich ist die Anwendung so konzipiert, dass sie eine Abfrage in der Datenbank durchführt, um die Datei zu erhalten - wie würde Ihnen das Extrahieren der BLOBs in das Dateisystem helfen?

Nebenbei bemerkt - ich verwende normalerweise die Unix **file** um Dateien durch magische Zahlen zu identifizieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X