Frage

Die Anforderungen an meinem Dokumentenmanagement-System waren:

  1. Muß vor Diebstahl durch einfaches Kopieren von Verzeichnissen, Dateien usw. sicher sein.
  2. Müssen gegen traditionelle Virusinfektion (Infektion der physischen Datei) sicher
  3. Muss schnell sein abrufen
  4. Das Repository darf nicht sichtbar sein zu lässig (Verzeichnis) Surfen Benutzer etc.

Ich habe beschlossen, alle Dokumente zu speichern (und gescannte Bilder) als Blobs in der Datenbank und so weit meine Erfahrung ist wunderbar und Abrufen von Dokumenten ist unglaublich schnell und - er alle Kriterien von oben erfüllt und es gibt sogar ein paar zusätzliche Vorteile, wie zum Beispiel Dokumente zusammen mit dem Unternehmen AUTOSTORING es, einfach und schnell seaching von Inhalten betrifft, die Beseitigung aller Arten von Benutzeraktivitäten um die Öffnung und Benennung von Dokumenten usw. etc.

Meine Frage ist - gibt es keine ernsthaften Risiken oder Dinge, die ich mit diesem Entwurf und Implementierung übersehen

EDIT Hinweis: DB ist PostgreSQL, Griffe BLOBS sehr gut und außergewöhnlich gut skaliert. Die Umgebung ist Multi-User.

War es hilfreich?

Lösung

Wenn Ihre DB größer und größer wächst es schwieriger zu Backup zu machen. Wiederherstellen einer Sicherung einer Tabelle mit mehr als 100 GB Daten ist nicht etwas, das Sie glücklich macht.

Eine andere Sache, die erhalten ist, dass alle Tabellenverwaltungsfunktionen erhalten langsamer und langsamer als die Datenmenge wächst.
Aber dies kann, indem Sie Ihre Datentabelle überwunden werden enthalten nur 2 Felder:  ID und BLOB.

Das Abrufen von Daten (durch Primärschlüssel) wird sich wahrscheinlich nur ein Problem, lange, nachdem Sie gegen eine Wand mit den Datensatz zu sichern.

Andere Tipps

Der Hauptnachteil, dass ich oft hören Blobs ist, dass ab einer bestimmten Größe, das Dateisystem zu speichern ist viel effizienter und Abrufen von großen Dateien. Es klingt wie Sie dies bereits im Konto von der Liste der Anforderungen getroffen haben.

Es gibt eine gute Referenz (PDF) hier , dass die Profis abdeckt und Nachteile von Blobs.

Aus meiner Erfahrung einige Probleme waren:

  1. Geschwindigkeit vs Dateien auf dem Dateisystem.

  2. Caching. IMO der Webserver eine bessere Arbeit des Caching tun statische Inhalte. Die DB tun ein gute Arbeit zu, aber wenn die DB ist auch alle möglichen anderen Anfragen verteilen, nicht jene große Dokumente erwarten gecached für lange zu bleiben. Sie im Wesentlichen haben, zu übertragen, die Dateien zweimal. Einmal aus der DB zu dem Web-Server und dann Web-Server Client.

  3. Speicherbeschränkungen. Bei meinem letzten Job hatten wir eine 40MB PDF in der Datenbank und hielten Java OutOfMemoryErrors in der Log-Datei zu bekommen. Wir erkennen schließlich, dass das gesamte 80MB PDF in den Heap gelesen wurde nicht nur einmal, sondern zweimal durch eine Einstellung in Hibernate ORM (wenn ein Objekt wandelbar ist, macht es eine Kopie zur Bearbeitung im Speicher). Einmal wurde die PDF für den Benutzer gestreamt zurück, wurde der Haufen aufgeräumt, aber es war ein großer Hit 80MB aus dem Haufen zu saugen auf einmal nur ein Dokument zu streamen. Kennen Sie den Code und wie Speicher verwendet wird!

Ihr Webserver sollte in der Lage sein, die meisten Ihrer Sicherheitsprobleme zu handhaben, aber wenn Dokumente klein sind und die DB nicht bereits unter einer großen Last, dann ich nicht wirklich ein großes Problem sehen, mit ihnen in der DB mit .

Ich habe gerade begonnen, für BLOBs SQL Server 2008 ist FILESTREAMing Erforschung und haben über eine riesige Begrenzung (IMO) laufen - es funktioniert nur mit integrierter Sicherheit. Wenn Sie Windows-Authentifizierung nicht den DB-Server verbinden, sind Sie nicht in der Lage, die BLOBs lesen / schreiben. Viele Anwendungsumgebungen können Windows-Authentifizierung verwenden. Sicherlich nicht in heterogenen Umgebungen.

Eine bessere Lösung für die Speicherung von BLOBs muss vorhanden sein. Was sind die besten Praktiken?

Das Artikel Abdeckungen die meisten Probleme. Wenn Sie SQL Server 2008 verwenden, überprüfen Sie die Verwendung des neuen FILESTREAM Typ, wie von Paul Randal hier .

Es hängt von der database. Oracle oder SQL Server? Achten Sie auf einen Nachteil -. Wiederherstellung eines einzelnen Dokuments

Sorry - die Antwort, die ich angeboten wurde basierend auf SQL Server, so dass der Wartungsabschnitt nicht geeignet ist. Aber Datei-I / O wird auf Hardware-Ebene erreicht und eine beliebige Datenbank sorgt für zusätzliche Verarbeitungsschritte.

Die Datenbank wird zusätzlichen Aufwand verhängen, wenn das Dokument abgerufen werden. Wenn die Datei auf der Festplatte ist sind Sie nur so langsam oder so schnell wie das I / O auf dem Server. Sie sollten auf jeden Fall Ihre Meta in einer Datenbank verwalten, aber am Ende wollen Sie die UNC der Datei und weisen den Benutzer auf die Quelle und sich aus dem Weg.

Von einer Wartung und Administration Perspektive Sie sich auf ein SAN begrenzen, wenn sie mit MS SQL Server handelt. Lösungen wie Documentum nehmen einen anderen Ansatz mit einfacher Speicherung auf der Festplatte und ermöglicht es Ihnen, eine Speicherlösung zu implementieren, wie Sie sehen, passen.

Bearbeiten

Lassen Sie mich meine Aussage klären - mit SQL Server Sie Optionen haben eine begrenzte, wenn Sie die physische Speicherkapazität des Behälters nicht überschreiten. Dies ist in der Tat eine der großen Schwächen von Sharepoint, die Sie nicht in der Lage sind, einfach jede Art von Netzwerkspeicher zu anschließen.

Von dem, was ich erlebt habe Speicherung von Inhaltsdateien als Blobs, in SQL Server und Oracle, arbeitet OK mit einer kleinen Datenbank und mit einer geringen Anzahl von eingeloggten Kunden. ECM-System trennt sie und separate Dienste nutzen für Streaming-Inhalte. Je nach Größe der Dateien, können die Server-Ressourcen bei gleichzeitigem Abruf von großen Dateien betroffen sein. Archiv von Datenbanken mit großen Mengen von Dateien wird problematisch, aufgrund der Zeit, wieder herzustellen und die Unfähigkeit, Dokumente des Archivs bilden abgerufen werden.

Wenn diese Dateien Corporate Aufzeichnungen sind, und dies ist die maßgebliche Kopie der Aufzeichnungen, können Sie Compliance und Retention Management-Themen, vor allem wenn Sie die Dateien archivieren. Auch suchen und Versionskontrolle kann ein großes Problem werden, voran.

Sie mögen ein ECM-System mit einer API von einer Art zu untersuchen, anstatt neu zu erfinden das Rad.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top