Tech-Ed 2008: "To BLOB or not to BLOB" y la opción FileStream en SQL Server 2008

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.

Tech-Ed 2008: Soporte WCF para SOAP/WS-* y REST

Esta semana estoy en el Tech-Ed for Developers 2008 en Orlando. Quise escribir antes pero aqui el tiempo se va rápido y por las noches uno llega tan cansado que se va directo a la cama 🙂


Hay muchas cosas por contar de este evento que, básicamente, se centra en lo ultimo que ha sacado Microsoft (lo futuro se ve en el PDC). Realmente, uno de los expositores que marca la diferencia es David Chappell, lo digo no solo por su experiencia y conocimiento, sino por su forma de hacer de las cosas «complicadas» para muchos, algo entendible para todos….o casi todos.


Bueno me toco ver ayer su comparacion entre plataformas Java vs. .NET muy bueno, pero de eso no hablare ahora, sino de la charla de hoy que fue sobre la comparacion entre SOAP/WS-* y REST.


Son dos estilos diferentes, para escenarios distintos. Primero hizo una explicacion de WFC con SOAP, haciendo incapie en que SOAP define una forma de mensaje XML descriptiva de la operacion y usa POST para el envio. Tambien hablo sobre WS-*, algo que no es reciente, pero que es soportado tambien por WCF Describio los binding que se usan en cada caso:


BasicHttpBinding, para SOAP


WSHttpBinfing, para SOAP/WS-*


NetTcpBinding, para usar TCP


Sobre WS-* mencionó que no es el predominante para Web Services en Windows y que la interoperabilidad entre vendedores sigue siendo imprefecta.


Luego, le toco el turno a REST, nos hablo que usa verbos HTTP (GET, POST, PUT, DELETE) y que todo es accedido a través de URIs. El binding que usa es «webHttpBinding». El Transporte HTTP puede enviar XML, JSON o datos binarios sobre HTTP.


SOAP/WS-* viene de una larga historia : RPC, RMI, CORBA, DCOM, etc. REST es Web Services puro.


REST es mas Internet, SOAP-WS-* no necesariamente fue creado para Internet sino para entornos corporativos y tambien internet.


En seguridad REST usa HTTPs, mientras que SOAP/WS-* puede usar HTTPs y estandares de seguridad WS.


La mejor decision debe ser por la razon, no por la emocion.


Lo mejor de todo, WCF soporta ambos!!  🙂


Antes de terminar, para los interesados en conocer más sobre REST, Chappell recomendo un libro RESTful Web Services por Leonard Richardson, de hecho estara pronto en mi biblioteca personal.


 


 


BasicHttpBinding