Cierre
Y así se cerraba el PASS European Conference 2006. Dos días de conocimientos sobre SQL Server 2005, con sus más y sus menos, pero sin duda interesantes. Y a esperar al año que viene, si es que se deciden a celebrarla de nuevo.
Y así se cerraba el PASS European Conference 2006. Dos días de conocimientos sobre SQL Server 2005, con sus más y sus menos, pero sin duda interesantes. Y a esperar al año que viene, si es que se deciden a celebrarla de nuevo.
Don Vilen es Program Manager del motor de almacenamiento de SQL Server en Microsoft. Y propuso algunas ideas interesantes en cuanto a disponibilidad, además de cómo solucionarlas con SQL Server.
Antes que nada, dejar claro que la disponibilidad no es un tema sólo de producto, sino que hay muchos aspectos relacionados. Lo ilustra la siguiente “pila” (stack) de disponibilidad, en la que se muestran las distintas categorías de las que depende:
Los problemas más habituales que a partir de estas categorías podemos deducir constituyen las barreras a la alta disponibilidad:
SQL Server 2005 proporciona distintas herramientas para solucionar estas barreras. Cada herramienta tiene su objetivo, sus pros y sus contras. Las podemos agrupar en tres grupos según la respuesta que dan a la alta disponibilidad:
a) Basic: No failover and a potential data loss. Son técnicas totalmente manuales y que pueden tener pérdida de datos en caso de caída el sistema. Son lentas de recuperar pero fáciles de implementar.
Backup / restore: incorpora diferentes mejoras en SQL 2005, como por ejemplo la opción RESTORE VERIFYONLY.
Detach / copy / attach: Uno de los sistemas más simples para tener una copia de los datos. Desvincular la base de datos, copiar los ficheros y volver a vincularla.
b) Better: Manual failover and potencial data loss. Es posible recuperar la información, pero de forma manual y de nuevo con una eventual pérdida de datos.
Peer-to-peer replication: Funcionalidad nueva en SQL 2005. Replicación en la que todos los participantes son iguales. El esquema de datos es común, pero cada conjunto de datos sólo puede actualizarse en uno de los servidores miembro cada vez. Permite balanceo de cargas y alta disponibilidad. La posibilidad de pérdida de datos es baja.
Log shipping: La idea es hacer backup del log en la base de datos origen y aplicarlo en la de destino. La replicación es siempre a nivel de base de datos y la base de datos de destino es de sólo lectura.
Database mirroring – high performance mode: Ver más adelante.
c) Best: Automatic failover and zero data loss. En este grupo de métodos aseguramos que la disponibilidad es total y que no hay pérdida de datos.
Database mirroring – high availability mode: Ver más adelante.
Failover clustering: El clásico mecanismo de clustering, tiene el “down time” más bajo y una pérdida de datos prácticamente nula.
El mecanismo de Database Mirroring es una de las novedades más destacables de SQL Server 2005, aunque en la versión RTM no se soporta; se espera que sí se soporte en la a partir del Service Pack 1. Mediante Database Mirroring se puede tener una copia actualizada de la base de datos en un servidor de Standby. En caso de fallo del servidor principal, la redirección al servidor de Standby puede ser manual o automática, transparente al cliente. Lo mejor de este mecanismo es que no necesita ningún hardware especial, aunque sí necesita de un tercer servidor SQL Server que haga de testigo (witness). El servidor testigo, que puede ser un SQL Server Express, es quien dice qué servidor es el “bueno”. Hay tres modos de Database Mirroring:
High-Availability Mode: Seguro, no hay pérdida de datos, “failover” automático (con testigo).
High-Protection Mode: Seguro, no hay pérdida de datos, “failover” manual – puede haber un tiempo de no-disponibilidad.
High-Performance Mode: Hay pérdida de datos, “failover” manual.
En definitiva, como se puede ver, el tema de la alta disponibilidad en SQL Server 2005 da bastante de sí. El ponente, Don Vilen, acabó de explicar los distintos mecanismos y las posibilidades que se tienen al combinarlos entre ellos, pero como resumen creo que más o menos lo aquí expuesto ya sirve...
Bien, ¿cuál es el objetivo del Report Builder? Para los usuarios de los informes está el Report Viewer. Para los desarrolladores está el Report Designer. Y para los “Business Users” y los usuarios expertos, está el Report Builder.
El Report Builder es una nueva herramienta de diseño dirigida a aquellos usuarios de la empresa que necesitan de la capacidad de realizar consultas e informes por sí mismos. Utiliza un “modelo de datos” previamente preparado por el personal técnico para modelar su informe. Su objetivo no es reemplazar el Report Designer (más potente) ni las tablas dinámicas de Excel (análisis), sinó cubrir el vacío entre ambos. Está completamente integrado con los Reporting Services, y puede atacar SQL Server 2000 y 2005 y Analysis Services 2005.
Físicamente, el Report Builder es una aplicación Windows, basada en el .NET Framework 2.0, que se lanza a partir del Report Manager. La interfaz de usuario sigue las guías de estilo de Office. Soporta tablas y gráficos, y una vez diseñado el informe puede almacenarse en el servidor.
Los informes generados con Report Builder son RDLs como cualquier otro, que posteriormente pueden editarse con el Report Designer. Incorporan la capacidad de hacer infinitos “drill-through” a través de la información relacionada con los datos del informe.
El diseño del modelo se realiza con el Model Designer, herramienta basada (¡como no!) en Visual Studio 2005. Permite definir un modelo con entidades, campos y roles a partir de un origen de datos. El modelo se almacena el el Report Server, y sobre el mismo se puede definir seguridad para determinar qué datos puede ver el usuario.
En definitiva, como se puede deducir, es el invento del siglo en cuanto a Reporting Services se refiere. No queda más que decir que ¡tienes que probarlo!
Otra ponencia extremadamente específica. Personalmente, creo que Greg Low (consultor de Readify, MVP, MSDN Regional Director, etc.) no es quizás de los mejores ponentes, pero hay que reconocer que los conocimientos los tiene…
Bien, algunas ideas que dio Greg... Desde hace unas cuantas versiones de SQL Server, es de todos conocido que antes de ejecutar un Stored Procedure, el motor lo compila, lo cual significa elegir un plan de ejecución. Tras la compilación, los Stored Procedure se almacenan en una cache de forma que se reutiliza el plan de ejecución siempre que se puede y se evita su recompilación.
SQL2005 incorpora algunas mejoras en este tema. Por ejemplo, la recompilación a nivel de sentencia en vez de a nivel de batch. Aún y así, hay muchos casos en que no se usa la cache entre llamadas, por ejemplo las consultas “ad-hoc” requieren que el texto sea exactamente el mismo (SQL Server es “case sensitive” y “space sensitive”). Por tanto hay que estudiar los accesos de nuestras aplicaciones con cuidado, ya que fácilmente se puede incurrir en recompilaciones...
De hecho, el mecanismo en el que se basa la cache de SQL Server es complejo. Parte del concepto de coste en “ticks”, y según se reutiliza un Stored Procedure, y en función de los costes que supone su compilación, se incrementa o decremente el coste, jugando entre 0 y 31 "ticks".
La verdad es que hay muchos aspectos que pueden intervenir en la recompilación de sentencias. La explicación de Greg, bastante exhaustiva, hizo que nos diésemos cuenta de la complejidad de la situación. No puedo decir más que si queremos optimizar nuestros accesos a base de datos en este punto, vale la pena estudiar con detalle las posibilidades…
El ponente de esta específica conferencia fue Reed Jacobson, de Hitachi Consulting, un auténtico experto en BI sobre SQL Server, y también un gran ponente.
En primer lugar Reed centró la problemática de la explotación de datos, y para ello ejemplarizó el tema a través de los conceptos de base de datos vs. Excel. Con una base de datos, disponemos de la capacidad de tratar un alto volumen de datos, pero la capacidad de cálculo es limitada. Con Excel pasa lo contrario, tenemos una gran capacidad de cálculo pero podemos tratar un volumen de datos limitado.
La solución a esta problemática son, obviamente, los Analysis Services. Una de sus principales bazas es el precálculo de resultados, que permiten bajar enormemente los tiempos de respuesta en el caso de que tratemos con grandes volúmenes de datos. Precalcular los valores que se quieren estudiar necesita que las operaciones que queramos realizar sean aditivas, cosa que no siempre es posible. Si las operaciones que se desean estudiar no son aditivas, aún cabe la posibilidad de ver si se pueden derivar de operaciones que sí lo sean…
Una vez sabemos que podemos agregar los datos, podemos afinar el sistema mediante controlar cómo los AS2005 calculan estas agregaciones. Para ello disponemos de un conjunto de atributos en el diseño de los cubos (IsAggregatable, AttributeHierarchyEnabled, AttributeHierarchyVisible) que nos ayudan en el tema. No me voy a extender en su uso, para ello están los Books on line, pero queda dicho.
En cambio sí es interesante saber que de los posibles conjuntos de permutaciones que Analysis Services utiliza para generar las agregaciones, en realidad sólo aplica aquellas cuyo tamaño estimado sea menor que el 30% de la tabla de hechos. Esta regla descarta aquellas agregaciones que llevarán más tiempo usarlas que realizar los cálculos directamente sobre la tabla de hechos, y “de fábrica” viene que esto ocurre cuando el tamaño de la agregación es superior a este número.
Otro hecho destacable de los AS2005 es que por defecto, los atributos no están incluidos en el “pool” de valores a agregar. Este es un cambio respecto la versión anterior (la 2000) en que por defecto sí estaban incluidos. Si se desea que se agreguen, por tanto, hay que decírselo explícitamente.
Bien, aunque el contenido de la conferencia aún dio para más, creo que lo importante está dicho, con lo que lo dejo aquí. Repito, ¡lo que da de si un aspecto tan específico de los Analysis Services!
en una aplicación (WinForms o WebForms). E incluso el nivel estaba bien puesto: un 2, o sea, la cosa iba a ser sencillita, digamos, lo justo para abrir boca sobre el tema.
Bob Meyers es un chico Microsoft. Venía de una empresa llamada Active Views, comprada por Microsoft por lo que ha acabado siendo el Report Builder, así que Bob como es natural ha ido a parar al equipo de SSRS, donde es “Development Lead”. También a Bob tuve la ocasión de entrevistarlo para la dotNetMania, entrevista que también está a la espera de ser publicada (o no).
Objetivo: integrar Reporting Services en las aplicaciones cliente (Windows o Web). Incorporar a una aplicación la capacidad de realizar informes y consultas con resultados atractivos. Nos “cargamos” con esto los “Crystal Reports” y controles del estilo, pero podemos ir aún más lejos. Posiblemente podamos también sustituir gran parte de las “grids” que tengamos en nuestra aplicación…
Solución: Los Report Controls. “Run-time free”, pueden mostrar informes remotos (cargados de un Report Server) o locales (sin necesidad de servidor). Estos últimos se integran completamente con los proyectos estándar de Visual Studio: se construyen a partir de los mismos orígenes de datos de la aplicación y soportan todo tipo de interactividad.
Bien, en cuanto a la ponencia en sí lo que pretendía era mostrar una solución de generación “dinámica” de informes diseñada por los autores, como respuesta a las “limitaciones” de los Reporting Services.
El problema de los Reporting Services está en que en tiempo de diseño se deben definir las consultas y sus parámetros de forma estática. Davide y Alessandro propusieron un diseño (con componentes software) mediante los cuales se construyen los reports en tiempo de ejecución. De esta forma las consultas pueden definirse de forma dinámica y tener una potencia superior en el momento de generar los informes.
Personalmente encontré que la idea era bastante acertada, pero que las desventajas de este sistema –su complejidad, el hecho de ser un sistema “ad-hoc”, y el no poder trabajar si se utiliza con el Report Manager– posiblemente hará que sólo lo utilicen aquellos que tengan una necesidad imperiosa de disponer de este mecanismo, y esto si encuentran este “framework” (los autores prometieron en el turno de preguntas y respuestas que publicarían el código).
Rápidamente descubrimos que el objetivo de la ponencia era en realidad mostrar las nuevas características del motor de SQL Server 2005: las mejoras en el uso de XML, los Web Services y el CLR (los puntos que prometía el título de la ponencia) e ilustrarlo todo con un ejemplo. En cualquier caso, la verdad es que la ponencia de Tony destacó por su claridad, hay que reconocer que tiene "tablas" para hablar en público.
Como resumen de la conferencia, y empezando con las funcionalidades XML de SQL Server 2005, podríamos decir que las mejoras que esta versión incorpora hacen que el uso de XML pueda ser una realidad efectiva. El nuevo tipo de datos XML y las operaciones asociadas permiten tener estructuras de datos nativas XML dentro del motor y trabajar más o menos cómodamente con ellas. Así pues el tener columnas de tipo XML sirve realmente para algo.
En cuanto a WebServices. Se basan en el mecanismo llamado ENDPOINT, que lo que hace es publicar WS a través del ya conocido HTTP.SYS. Una llamada a WS en SQL Server 2005 es básicamente una llamada a un Stored Procedure… La cuestión que gira alrededor de los WS es qué uso hay de darles. ¿Hay que usarlos como DAL? ¿Se pueden exponer a Internet? Este es el punto actual de debate…
Finalmente, en cuanto al CLR de nuevo hay que ubicar correctamente el posible uso de sus funcionalidades. En campos como el tratamiento de strings sin duda se puede hacer un buen uso de la potencia del CLR, pero se deja en entredicho de nuevo un uso generalizado del CLR. Porque ¿te atreves a poner dentro del motor de SQL Server un pedazo de código que podría echar a bajo tu servidor? ¿Justifica la potencia del CLR sus riesgos?
El 23 y 24 de febrero se celebró en Barcelona la edición europea del encuentro anual del PASS, la Professional Association for SQL Server. Este encuentro, llamado PASS European Conference 2006, expone de la mano de los expertos de Microsoft y de reconocidos autores y MVPs de todo el mundo, el state-of-the-art de SQL Server.