Me ocurrió algo curioso hoy dia. Estaba paseando por el área donde estan los stands de especialistas de producto (hay de Sharepoint, SQL Server, Team System etc.), cuando me detuvo una chica que estaba exponiendo y me preguntó de que queria saber (sobre SQL Server) y lo primero que me vino a la mente fue el tipo FileStream y, coincidencias de la vida, ella, Joanna Omel, es Program Manager del SQL Server Engine y responsable de características como el manejo del FileStream en SQL Server 2008.
Para ser sincero, he logrado despejar varias dudas en ese tiempo que estuvimos conversando, que si hubiera asistido a varias charlas del evento. Primero le comenté la preocupación mia debido a que siempre me preguntan: «donde deben, mis aplicaciones, almacenar los archivos, en la base de datos o en el File System?». Si, ya sé que muchos dirán «depende», lo mismo que diria yo:) y en realidad aunque no hay una respuesta absoluta al tema, me recomendo un link muy interesante en el que recomienda para archivos mayores a 1MB usar el File System, el documento se titula: To BLOB or not To BLOB y está escrito por gente de Microsoft Research.
Le comentaba que porque Sharepoint guarda los archivos en la base de datos y me explico que lo que hace Sharepoint realmente es dividir el documento en varias partes que se almacenan y luego cuando se accede a ellos, Sharepoint los recompone. Ademas, me comento que probablemente en siguientes versiones Sharepoint usara el File System para almacenar los archivos, de modo que pueda manejar archivos de gran tamaño cion una óptima performance. Y que usara para almacenar los archivos en el File System?? Nada mas y nada menos que que la nueva opcion FileStream de SQL Server 2008, ojo ella misma me aclaro que NO es un nuevo tipo de dato, sino una opcion mas que tiene varbinarymax().
Para configurar el uso de FileStream hay una serie de pasos que seguir, desde activar opciones de la configuración, crear un FileGroup especial para ellos y activar el uso de FileStream en la Instancia de SQL Server, ah! tambien crear un File Share en el File System, no son pocos pasos 🙂
Lo bueno es que asi use Attach/Dettach o Backup/Restore se guardará tambien la carpeta con los archivos referenciados. Lo malo es que solo hay soporte local, por ahora, es decir que los archivos se mantendran en la misma maquina donde este instalado SQL Server.
Además le comente el caso de un cliente mio que queria almacenar archivos de 4 Gigabytes en Sharepoint y realmente es una mejor alternativa usar el File System. Ella me comento en la etapa de pruebas un cliente de ellos habia llevado a Microsoft un archivo de 9GB y lo probaron con el FileStream sin ningun problema. cool!!!
En cuanto a la programación, en el SP1 de Visual Studio 2008 habra soporte completo para crear aplicaciones .NET que utilicen esta característica.