2009-07-14 9 views
8

Derzeit haben wir Tausende von Microsoft Word-Dateien, Excel-Dateien, PDFs, Bilder usw. in Ordnern/Unterordnern gespeichert. Diese werden regelmäßig von einer Anwendung generiert und können innerhalb dieser Anwendung jederzeit abgerufen werden. Während wir uns um ein Upgrade bemühen, werden jetzt alle diese Dokumente in SQL Server 2005 gespeichert. Die Gründe dafür liegen darin, die Dokumente komprimieren zu können, indem zusätzliche Felder hinzugefügt werden, um weitere Informationen zu diesen Dokumenten zu speichern und gegebenenfalls Indizes anzuwenden.Speichern Sie Dateien in SQL Server oder behalten Sie sie auf dem Dateiserver?

Ich nehme an, was ich suche ist die Vor- und Nachteile der Verwendung von SQL Server als Dokument-Repository, anstatt sie auf dem Dateiserver zu halten, sowie jede Erfahrung, die Sie dabei haben können.

Wir würden C# und Windows Workflow verwenden, um diese Aufgabe zu erledigen.

Vielen Dank für Ihre Kommentare.

bearbeiten


Wie groß sind die Dateien?

zwischen 100k = 200k in der Größe (durchschnittl. 70KB)

Wie viele werden?

Im Moment sind es rund 3,1 Millionen Dateien (von Word/Excel und PDFs), die um 2600 pro Tag wachsen können. (Das Wachstum wird auch im Laufe der Zeit erhöhen)

Wie viele liest?

Dies ist schwer zu quantifizieren, da unser altes System/Anwendung es schwierig macht, dies auszuarbeiten.


Auch eine weitere nützliche Link wies darauf hin, auf eine ähnliche Position die Vor- und Nachteile beider Methoden abdeckt.

Files Stored on DB vs FileSystem - Pros and Cons

+0

Wie groß sind die Dateien? Wie viele werden? Wie viele Lesevorgänge? Entscheidungen wie diese sollten immer mit Metriken getroffen werden. – Ricardo

+1

Mögliche doppelte ... siehe http://stackoverflow.com/questions/616762/what-is-the-best-way-to-associate-a-file-with-a-piece-of-data –

+0

sicherlich ähnlich welche Ich habe nicht entdeckt, wenn ich meins erstellt habe. Gute Vor- und Nachteile sind da drin. – kevchadders

Antwort

8

Ich hätte beides.

Ich würde die Dateien mit einem eindeutigen Namen umbenannt, so einfacher zu verwalten, und ich würde alle Metadaten in der Datenbank (Dateiname, Inhaltstyp, Speicherort im Dateisystem, Größe, Beschreibung, usw.), Die Dateien werden also indirekt über die Datenbank aufgerufen.

Vorteile:

  • Dateien sind einfach zu handhaben; Sie können mehrere Laufwerke in den Mix
  • bringen die Datenbank kann eine beliebige Anzahl von Meta-Informationen, einschließlich der Dateibeschreibung, auf der Sie suchen können.
  • halte Spur auf Dateizugriffe und andere statistische Informationen
  • die Dateien mit verschiedenen Paradigmen neu ordnen: Baum (Verzeichnisstruktur), Tags, Suche oder Kontext

Sie Komprimierung auch auf einem Laufwerk haben. Sie können RAID für Backup und Geschwindigkeit haben.

1

Welche Art von Dokumenten reden wir?

Das Speichern von Dokumenten in Ihrem SQL-Server kann nützlich sein, da Sie die Dokumente mit anderen Tabellen verknüpfen und Techniken wie Volltextindizierung verwenden und z. B. unscharfe Suchen durchführen können.

Ein Nachteil ist, dass es ein bisschen schwieriger sein könnte, ein Backup der Dokumente zu erstellen. Und Komprimierung ist auch mit NTFS-Komprimierung oder anderen Techniken möglich.

+0

Sie wären Mircosoft Word Docments. – kevchadders

+0

sry ... auch Excel und PDF-Dateien zu. – kevchadders

+0

speichert auch Bilder sowie JPEG & BMP-Dateien. – JamesM

1

Sind diese Dokumente textbasiert und planen Sie die Volltextsuche von SQL Server, um diese Dokumente zu durchsuchen? Wenn nicht, sehe ich keinen Vorteil beim Speichern dieser Dokumente in der Datenbank. Natürlich können Sie die Metadaten zu den Dokumenten einschließlich der Pfadinformationen immer in der Datenbank speichern.

+0

Wir würden die Volltextsuche verwenden und zusätzliche Felder hinzufügen, um Metadaten für diese Dokumente zu speichern. – kevchadders

1

Ein großer Vorteil von stroing docs in der DB ist, dass es viel einfacher ist, den Sicherheitszugriff auf sie zu steuern, da Sie alles über die Zugriffskontrolle in Ihrer App erledigen können. Um sie auf einem Dateiserver zu speichern, müssen Zugriffsrechte auf Datei- und Ordnerebene behandelt werden, um direkten Zugriff zu verhindern. Haben Sie sie auch in einer Datenbank für einen einzelnen Sicherungspunkt, so können Sie leichter eine vollständige Kopie erstellen und/oder sie bei Bedarf verschieben.

12

Wenn Sie den vollständigen Upgrade auf SQL Server 2008 durchführen, können Sie die neue FILESTREAM-Funktion verwenden, mit der das Dokument als Spalte in einer Tabelle angezeigt wird und dennoch als Datei in einer Freigabe enthalten ist kann direkt von einem Programm (wie Word) zugegriffen werden.

+0

Schön, wusste nicht über diese Fähigkeit. – kenny

17

Daumenregel für doc Größe:

size < 256 kb: store in db 
265 kb < size < 1 MB: test for your load 
size > 1 Mb: store on file system 

EDIT: Diese Faustregel gilt: gilt auch für FILESTREAM-Speicherung in SQL Server 2008

+2

+1 Ein pragmatischer Ansatz. –

1

vielmehr ein eigenes DMS (Dokumentenmanagementsystem) als das Schreiben, Sie sollten wahrscheinlich in Erwägung ziehen, einen zu kaufen oder WSS/SharePoint zu verwenden, da dies alle alltäglichen Details (Speicherung, Indizierung, Metadaten) behandelt und Ihnen ermöglicht, Ihre benutzerdefinierte Funktionalität oben zu erstellen.

+0

Sharepoint wurde in Betracht gezogen, aber die Kosten wurden als zu viel angesehen! :( – kevchadders

+0

Welche Kosten? Es ist kostenlos pro Server. –

+0

Mein Verständnis war Windows SharePoint Services (WSS) ist die kostenlose Version, die mit vielen Einschränkungen kommt.Die lizenzierte Version, über die ich war etwa Microsoft Office SharePoint Server (MOSS). Entschuldigung für jede Verwirrung. – kevchadders

Verwandte Themen