Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verwendung von SQL Server als Bildspeicher

10 GB ist keine große Datenmenge, daher können Sie wahrscheinlich die Datenbank zum Speichern verwenden und haben keine großen Probleme, aber natürlich ist es am besten, das Dateisystem zu verwenden, und in Bezug auf das Sicherheitsmanagement ist es besser, die DB zu verwenden (Sicherungen und Konsistenz).

Glücklicherweise erlaubt SQL Server 2008 Ihnen, Ihren Kuchen zu essen und ihn auch zu essen, mit:

Das FILESTREAM-Attribut

In SQL Server 2008 können Sie das FILESTREAM-Attribut auf eine varbinary-Spalte anwenden, und SQL Server speichert dann die Daten für diese Spalte im lokalen NTFS-Dateisystem. Das Speichern der Daten im Dateisystem bringt zwei entscheidende Vorteile:

  • Die Leistung entspricht der Streaming-Leistung des Dateisystems.
  • Die BLOB-Größe ist nur durch die Größe des Dateisystem-Volumes begrenzt.

Die Spalte kann jedoch wie jede andere BLOB-Spalte in SQL Server verwaltet werden, sodass Administratoren die Verwaltungs- und Sicherheitsfunktionen von SQL Server nutzen können, um die BLOB-Datenverwaltung mit den restlichen Daten in der relationalen Datenbank zu integrieren – ohne die Dateisystemdaten getrennt.

Durch die Definition der Daten als FILESTREAM-Spalte in SQL Server wird auch die Konsistenz auf Datenebene zwischen den relationalen Daten in der Datenbank und den unstrukturierten Daten sichergestellt, die physisch im Dateisystem gespeichert sind. Eine FILESTREAM-Spalte verhält sich genauso wie eine BLOB-Spalte, was eine vollständige Integration von Wartungsvorgängen wie Sicherung und Wiederherstellung, vollständige Integration mit dem SQL Server-Sicherheitsmodell und vollständige Transaktionsunterstützung bedeutet.

Anwendungsentwickler können mit FILESTREAM-Daten über eines von zwei Programmiermodellen arbeiten; Sie können Transact-SQL verwenden, um auf die Daten zuzugreifen und sie zu bearbeiten, genau wie Standard-BLOB-Spalten, oder sie können die Win32-Streaming-APIs mit Transact-SQL-Transaktionssemantik verwenden, um die Konsistenz sicherzustellen, was bedeutet, dass sie Standard-Win32-Lese-/Schreibaufrufe an FILESTREAM verwenden können BLOBs wie bei der Interaktion mit Dateien im Dateisystem.

In SQL Server 2008 können FILESTREAM-Spalten Daten nur auf lokalen Datenträgervolumes speichern, und einige Funktionen wie transparente Verschlüsselung und Tabellenwertparameter werden für FILESTREAM-Spalten nicht unterstützt. Außerdem können Sie keine Tabellen verwenden, die FILESTREAM-Spalten in Datenbank-Snapshots oder Datenbank-Spiegelungssitzungen enthalten, obwohl der Protokollversand unterstützt wird.