SQL Server 2008

Novedades

Randy Dyess

 

Resumen:

  • Administración más eficaz
  • Rendimiento y escalabilidad mejorados
  • Mayor seguridad y disponibilidad
  • Cambios para los desarrolladores

Una vez más, Microsoft ha lanzado una nueva versión de SQL Server que promete facilitar el trabajo de los administradores de bases de datos. La última versión es SQL Server 2008 y ofrece una gran variedad de características

y funcionalidad nuevas que mejorarán en gran medida la administración.

Los administradores de bases de datos que hayan usado SQL Server® 2005, durante el tiempo que sea, encontrarán muchas de las mismas características que usan en su trabajo diario y también descubrirán en poco tiempo que SQL Server 2008 ha mejorado estás herramientas. La nueva funcionalidad basada en las características existentes contribuye en gran medida a reducir el número de soluciones alternativas y personalizaciones que eran necesarias para usar diferentes características en entornos de base de datos complejos.

Las nuevas características de SQL Server 2008 suponen una amplia gama de funciones de trabajos de bases de datos, lo que dificulta la tarea de categorizarlas. A medida que clasifico las características en diferentes temas, me doy cuenta de que algunos lectores se preguntarán por qué he situado la función X en la categoría Y si, claramente, pertenece a la categoría Z. Es una cuestión de perspectiva y está afectada por el modo de trabajar su empresa.

Comprendo que quien trabaja con bases de datos a menudo acaba desempeñando muchas funciones distintas, pero intentaré desglosar las nuevas funciones para que encajen en las siguientes categorías genéricas: administración, escalabilidad, rendimiento, alta disponibilidad, seguridad, desarrollo e inteligencia empresarial.

Novedades de la administración

Para los administradores de bases de datos (como yo), la funcionalidad de administración adicional hace de SQL Server 2008 un producto nuevo y muy interesante. La nueva administración de directivas, la capacidad de realizar consultas en varios servidores, los servidores de configuración y el almacén de recopilación y de administración de datos ofrecen capacidades nuevas y eficaces para los administradores de bases de datos que, a menudo, son los responsables de la administración de entornos de base de datos grandes y complejos que cuentan con cientos o miles de bases de datos o, incluso, cientos de servidores.

La característica de administración de directivas de SQL Server 2008, que en las CTP se llamó Declarative Management Framework, le permite crear y ejecutar las directivas de configuración en uno o más servidores de bases de datos. Gracias a estas directivas, puede asegurarse de que se aplican y se mantienen los valores de configuración estándares en cada uno de los servidores y de las bases de datos de destino. Puede ver un ejemplo de esta característica en la Figura 1.

Figura 1 Directiva de procedimientos recomendados de ubicación de archivos de datos y de registro

Figura 1** Directiva de procedimientos recomendados de ubicación de archivos de datos y de registro **(Hacer clic en la imagen para ampliarla)

Las directivas se crean a partir de un conjunto predeterminado de facetas. Cada faceta contiene un subgrupo de los valores de configuración de SQL Server 2008 y de otros eventos que puede controlar. Puede emparejar estas facetas con condiciones para crear una directiva. Las condiciones son los valores permitidos para las propiedades de una faceta, los valores de configuración u otros eventos contenidos en dicha faceta.

Las condiciones también son valores usados para los filtros de directiva. Supongamos que desea que se ejecute la directiva sólo en una base de datos determinada. En este caso, puede crear una condición que contenga el nombre de la base de datos y agregar a continuación dicha condición a la directiva. A partir de entonces, la directiva sólo se aplicará en esa base de datos. Le puedo asegurar que aunque la característica de administración de directivas de SQL Server 2008 pueda parecer complicada, una vez que la pruebe, se dará cuenta de que es muy intuitiva.

Las nuevas capacidades de interacción de varios servidores y de servidores de configuración son muy útiles cuando es necesario ejecutar consultas en varios servidores al mismo tiempo. Puede registrar servidores en Management Studio y reunir dichos servidores en una agrupación. Cuando necesite ejecutar una directiva o una consulta en todos los servidores de la agrupación, sólo tiene que hacer clic con el botón secundario en la agrupación y llevarla a cabo.

Como ventaja añadida, puede configurar esta característica para que devuelva un conjunto de resultados por servidor o unir todos los conjuntos de resultados en uno solo de gran tamaño. Además, puede especificar si desea que el servidor y los nombres de las bases de datos formen parte de los resultados, lo que le permite separar los resultados individuales de cada servidor. Tener la capacidad de almacenar los servidores registrados en el servidor de configuración en lugar de en cada Management Studio es una gran ventaja.

Otra característica interesante de administración que se ha incluido es el recopilador de datos. Los administradores de bases de datos suelen necesitar recopilar información de administración de un gran número de servidores. Para poder hacerlo, la mayoría de los administradores han creado su propia solución personalizada. El recopilador de datos es un mecanismo integrado que facilita la tarea de recopilar datos relacionados con la administración. Le permite usar el Agente SQL Server y SQL Server Integration Services (SSIS) para crear un marco que recopile y almacene su información a la vez que ofrece control de errores, auditoría e historiales de recopilación.

A diferencia de lo que ocurre con los trabajos personalizados y las herramientas de terceros, la mayor parte de los administradores de bases de datos puede entender el recopilador de datos fácilmente, ya que usa el Agente SQL Server y SSIS para crear un conjunto de trabajos y de paquetes para controlar las conexiones, la recopilación y el almacenamiento de datos (como puede ver en la Figura 2). Una vez que almacena esta información en una ubicación central, a la que se hace referencia como Almacén de administración, tiene la posibilidad de verla y de organizarla mediante un conjunto de instrucciones de T-SQL y de informes de SQL Server 2008 Reporting Services. Este almacén de datos central facilita en gran medida el análisis y la vista de las métricas de administración generales del entorno de base de datos.

Figura 2 Archivo de registro de uso de disco del colector de datos

Figura 2** Archivo de registro de uso de disco del colector de datos **(Hacer clic en la imagen para ampliarla)

Novedades de escalabilidad

A lo largo de los años, los administradores de bases de datos de SQL Server han observado que sus entornos de base de datos son cada vez más grandes. A medida que el entorno de base de datos crece, se necesitan nuevos métodos y herramientas para conseguir la escalabilidad que la mayoría de las empresas necesita. SQL Server 2008 ha introducido varias características nuevas que le serán de ayuda

SQL Server 2008 dispone de compresión integrada que le permite comprimir las bases de datos y los archivos de registro de transacciones asociados con la base de datos comprimida. SQL Server 2005 introdujo la capacidad de comprimir datos en un archivo o grupo de archivos de sólo de lectura, pero esta forma de compresión sólo usaba la capacidad de compresión de NTFS de Windows®. Con SQL Server 2008, ahora dispone tanto de compresión a nivel de fila como a nivel de página, lo que ofrece ventajas que no puede conseguir con la compresión a nivel de archivos de datos.

La compresión a niveles de fila y de página reduce la cantidad de espacio de datos que necesita y, además, reduce la cantidad de memoria necesaria, ya que los datos permanecen comprimidos mientras que están en la memoria. Los datos comprimidos en la memoria dan como resultado una mayor utilización de la memoria, lo que beneficia a la escalabilidad de muchos sistemas.

SQL Server 2008 también introduce compresión a nivel de copias de seguridad. Mientras que las copias de seguridad de las bases de datos sólo realizan copias de seguridad de la parte activa de la base de datos, esto supone de todos modos cientos de gigabytes o, incluso, docenas de terabytes. En los entornos de base de datos que tienen más de una copia de un archivo de copia de seguridad de varios terabytes, estas copias a menudo ocupan un espacio de almacenamiento de gran valor que se podría usar de forma más eficaz. Al permitir a los administradores de bases de datos que compriman sus archivos de copia de seguridad, SQL Server 2008 libera parte de este espacio, de manera que se puede usar para datos activos.

También cabe destacar el regulador de recursos. Esta nueva característica le permite definir la cantidad de recursos que las cargas de trabajo individuales o las agrupaciones de las mismas pueden usar durante su ejecución. Con el regulador de recursos, puede crear un entorno en el que muchas cargas de trabajo diferentes coexisten en un sólo servidor sin que una o más de dichas cargas congestionen el servidor y se reduzca el rendimiento de las otras cargas de trabajo.

La ventaja de esta característica es que puede usar de forma más eficaz la cantidad total de recursos disponibles en sus servidores de bases de datos. En la Figura 3 se muestra un ejemplo del uso del regulador de recursos para limitar la actividad en un servidor.

Figure 3 Limite la actividad con el regulador de recursos

USE master
go

--Drop function
IF OBJECT_ID('rgclassifier_demo','Function') IS NOT NULL
DROP FUNCTION rgclassifier_demo
go

--Create a classifier function for report group
CREATE FUNCTION rgclassifier_demo() RETURNS SYSNAME 
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @group_name AS SYSNAME
  IF (USER_NAME() LIKE '%Launch_Demo%')
         SET @group_name = 'demogroup'
    RETURN @group_name
END
GO

--Drop workload group for anything coming from Management Studio
IF EXISTS (SELECT name FROM sys.resource_governor_workload_groups 
  WHERE name = 'demogroup')
BEGIN
  DROP WORKLOAD GROUP demogroup
END
GO

--Create workload group
CREATE WORKLOAD GROUP demogroup
GO

--Register the classifier function with 
--Resource Governor
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION= dbo.rgclassifier_demo)
GO

--Alter the dbogroup workload group to only 
--allow 10% of CPU for each workload request 
ALTER WORKLOAD GROUP demogroup
WITH (REQUEST_MAX_CPU_TIME_SEC = 10)
GO

--Create a new resource pool and set a maximum CPU limit for all workloads.
IF EXISTS (SELECT name FROM sys.resource_governor_resource_pools
  WHERE name = 'pooldemo')
DROP RESOURCE POOL pooldemo
GO
  
CREATE RESOURCE POOL pooldemo
WITH (MAX_CPU_PERCENT = 40)
GO

--Configure the workload group so it uses the 
--new resource pool. 
ALTER WORKLOAD GROUP demogroup
USING pooldemo
GO

--Apply the changes to the Resource Governor
--in-memory configuration.
ALTER RESOURCE GOVERNOR RECONFIGURE
GO

Novedades del rendimiento

El rendimiento general de las bases de datos mejora con SQL Server 2008. Gracias a varias características nuevas de SQL Server 2008, puede controlar y supervisar el rendimiento de sus bases de datos y de las aplicaciones que se ejecutan en ellas.

Al realizar grandes cantidades de transacciones cada segundo, el bloqueo que generalmente se produce durante estas transacciones puede tener un impacto negativo en el rendimiento de sus aplicaciones de base de datos. SQL Server está diseñado para reducir el número total de bloqueos que produce un proceso al extender los bloqueos de los niveles de fila y de página a bloqueos más grandes de nivel de tabla. Es importante ser consciente de que esta extensión de bloqueos puede producir problemas. Por ejemplo, una única transacción puede bloquear una tabla entera y evitar que se ejecuten otras transacciones con esa tabla.

SQL Server 2008 funciona con el mecanismo de partición de tablas (que se introdujo en SQL Server 2005) para permitir al motor de SQL Server extender los bloqueos al nivel de partición antes que al nivel de tabla. Este nivel intermedio de bloqueo puede reducir radicalmente los efectos de la extensión de bloqueos en sistemas que tienen que procesar cientos y miles de transacciones por segundo.

SQL Server 2008 ofrece varias mejoras nuevas en el procesador de consultas para el momento en que la consulta interactúa con tablas con particiones. El optimizador de consultas puede realizar búsquedas de consultas en particiones de la misma forma que lo haría en índices individuales al trabajar sólo con el identificador de la partición y no con el mecanismo de partición a nivel de tabla.

Novedades de la alta disponibilidad

A medida que los entornos de base de datos se vuelven más complejos y crece el tamaño de las bases de datos, cada vez es más difícil asegurar la disponibilidad de dichas bases de datos. Los mecanismos conocidos que ya ha usado en el pasado para obtener una alta disponibilidad siguen presentes en SQL Server 2008. Además, en SQL Server 2008 se han mejorado algunas características y se han añadido otras nuevas.

Con SQL Server 2005, muchos administradores comenzaron a implementar la creación de reflejos de bases de datos para obtener una alta disponibilidad. SQL Server 2008 proporciona muchas mejoras para la creación de reflejos de bases de datos. Por ejemplo, en el pasado, la creación de reflejos de bases de datos rara vez producía problemas de rendimiento relacionados con el movimiento de datos de registro de transacciones de la base de datos principal a las bases de datos reflejadas. Por eso, SQL Server 2008 reduce la cantidad de información que se mueve del registro de transacciones de la base de datos principal al registro de transacciones de la base de datos reflejada a través de la red mediante la compresión de la información antes de enviarla al registro de transacciones de la base de datos reflejada para conseguir una mayor solidez.

Ahora puede reparar páginas de datos corruptas en la base de datos principal. Si una base de datos principal tiene páginas de datos dañadas a causa de los errores 823 y 824, puede solicitar una copia nueva de dichas páginas de datos a los servidores reflejados. La solicitud de páginas de datos en buen estado es un proceso automatizado y transparente para cualquier usuario que acceda a las bases de datos principales en ese momento.

Otra característica nueva, Agregar CPU sin interrupción, le permite agregar CPU adicionales a un servidor de bases de datos sin afectar a la disponibilidad de las bases de datos que residen en ese servidor. No obstante, debe saber que Agregar CPU sin interrupción tiene algunas limitaciones, ya que sólo se puede usar en la versión de 64 bits basada en Itanium de Windows Server® 2008 Enterprise Edition o Datacenter Edition, y necesita la versión Enterprise Edition de SQL Server 2008.

Novedades de la seguridad

SQL Server 2005 introdujo la seguridad de los datos en forma de cifrado de los mismos. Con SQL Server 2008, el cifrado se ha mejorado en gran medida con la introducción de dos características: Administración extensible de claves y Cifrado de datos transparente.

La Administración extensible de claves permite obtener una estructura mejorada para almacenar de forma segura las claves que se han usado en la infraestructura de cifrado (no sólo en la base de datos en sí misma, también en módulos de software de terceras partes o con un módulo de seguridad de hardware fuera de la base de datos).

El Cifrado de datos transparente ofrece una flexibilidad mejorada para el cifrado de datos al permitir que el cifrado sea una propiedad de la base de datos y no sólo el resultado de las funciones de una línea de código. El resultado es que los administradores no tienen que realizar todos los cambios necesarios en la estructura de la base de datos y el código de aplicación al realizar el cifrado a nivel de datos. El código que aparece en la Figura 4 muestra cómo cifrar una base de datos mediante el Cifrado de datos transparente.

Figure 4 Use el Cifrado de datos transparente

USE master;
GO

--Create a master key
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'YouWillNeedToCreateAStrongPassword';
GO

--Create a certificate to use with TDE
CREATE CERTIFICATE TDECERT WITH SUBJECT = 'TDECert'
GO

--Change to the database to encrypt
USE AdventureWorks
GO

--Create your database master key
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128 --Use a strong algorithm
ENCRYPTION BY SERVER CERTIFICATE TDECERT
GO

--Alter the database to encrypt it with the
--master database key
ALTER DATABASE AdventureWorks
SET ENCRYPTION ON
GO

Preparado especialmente para los desarrolladores

Los administradores de bases de datos no son los únicos que se beneficiarán directamente de los cambios en SQL Server 2008. Hay un gran número de características nuevas que se han diseñado para ayudar a los desarrolladores de bases de datos. Entre estas características, podemos encontrar desde nuevas mejoras de T-SQL hasta nuevos componentes que pueden ayudar a los desarrolladores a crear y a usar consultas de bases de datos.

Muchos desarrolladores de bases de datos son los responsables de la creación de las consultas necesarias para devolver los datos necesarios para sus aplicaciones. Probablemente ya esté familiarizado con la herramienta LINQ (Language Integrated Query), que permite a los desarrolladores de bases de datos realizar consultas en una base de datos mediante un lenguaje de programación basado en Microsoft® .NET en lugar de con instrucciones T-SQL. En realidad, SQL Server 2008 mejora el LINQ al ofrecer un nuevo proveedor de LINQ to SQL que permite a los desarrolladores ejecutar comandos LINQ directamente en las tablas y columnas de SQL Server. De esta manera se reducirá el tiempo necesario para crear nuevas consultas de datos.

Al desarrollar sobre bases de datos, los desarrolladores emplean objetos de alto nivel que asignan a las tablas y columnas individuales de las bases de datos. Estos objetos, también conocidos como entidades, representan los datos necesarios para las aplicaciones de bases de datos y, por lo tanto, el desarrollador no necesita entender la estructura de almacenamiento real de los datos ni el esquema de la base de datos. El nuevo ADO.NET Entity Framework permite a los desarrolladores crear bases de datos mediante estas entidades. A través de la abstracción de la estructura subyacente de la base de datos, los desarrolladores pueden conseguir una mayor productividad.

SQL Server 2008 ofrece muchas mejoras diferentes en T-SQL que permiten que los desarrolladores sean más eficaces. Un ejemplo de ellas es la nueva instrucción MERGE, que permite al desarrollador detectar la existencia de datos antes de intentar insertar datos nuevos. Al realizar esta comprobación antes de ejecutar la instrucción INSERT, se pueden actualizar los datos. Ya no es necesario crear uniones complejas para actualizar datos existentes y para insertar datos que aún no existen, todo con una única instrucción.

Además, se ha facilitado la separación de datos de tiempo y de datos de fecha del tipo de datos de fecha y hora. SQL Server 2008 introduce dos tipos de datos independientes para tratar los datos de fecha y de tiempo. Los diferentes tipos de datos se traducirán en un rendimiento mejorado para muchas consultas, debido a que ya no será necesario realizar una operación en los datos antes de poder usarlos en la consulta.

Al crear estructuras de bases de datos nuevas, los desarrolladores de bases de datos a menudo tienen que extender la estructura de las bases de datos para implementar aplicaciones de asignación. SQL Server 2008 ayuda a resolver este problema con nuevos tipos de datos de espacio. Los dos tipos de datos de espacio, GEOGRAPHY y GEOMETRY, permiten a los desarrolladores almacenar datos específicos de ubicación directamente en la base de datos sin tener que dividir esos elementos de datos en formatos que encajen con otros tipos de datos estándares. El código de la Figura 5 es un ejemplo de una tabla de espacio simple.

Figure 5 Tabla de espacio simple

IF OBJECT_ID ( 'Demo_SpatialTable', 'Table' ) IS NOT NULL 
    DROP TABLE Demo_SpatialTable
GO

--Create table to hold spatial data
CREATE TABLE Demo_SpatialTable 
    ( SpatialID int IDENTITY (1,1),
    SpatialInputCol geography, 
    SpatialOutputCol AS SpatialInputCol.STAsText() )
GO

--Insert data into table
INSERT INTO Demo_SpatialTable (SpatialInputCol)
VALUES (geography::STGeomFromText('LINESTRING(47.656 -122.360, 47.656 -122.343)', 4326));

INSERT INTO Demo_SpatialTable (SpatialInputCol)
VALUES (geography::STGeomFromText('POLYGON((47.653 -122.358, 47.649 -122.348, 47.658 -122.348, 47.658 -122.358, 47.653 -122.358))', 4326));
GO

--View data to see that data has been converted and stored in col2
SELECT * FROM Demo_SpatialTable

Un problema muy común al que se tenían que enfrentar los desarrolladores en el pasado era la forma de almacenar y usar grandes objetos binarios, como documentos y archivos multimedia. El método que usaban generalmente consistía en almacenar los archivos fuera de la base de datos y almacenar sólo un puntero en la base de datos que condujese al archivo externo. No obstante, con este método, al cambiar la ubicación del archivo, es necesario actualizar el puntero también.

SQL Server 2008 se ocupa de este problema con el nuevo tipo de datos FILESTREAM. Con este tipo de datos, se pueden almacenar los datos fuera de la base de datos, pero los datos se consideran parte de la misma para obtener coherencia transaccional. De esta manera, se pueden usar operaciones de archivos comunes al tiempo que se mantiene el rendimiento y las ventajas de seguridad de la base de datos.

Novedades de inteligencia empresarial

El aumento en el uso de SQL Server durante los últimos años se ha producido en gran parte como consecuencia de la adopción de estrategias de inteligencia. Las capacidades de inteligencia empresarial no son una novedad en SQL Server, pero SQL Server 2008 incorpora algunas características nuevas.

Por ejemplo, al almacenar datos en almacenes de datos, a menudo se desperdicia espacio debido a los valores NULL. Las columnas que almacenan valores NULL ocupan el máximo espacio permitido para datos que se ha definido en la columna. Esto significa que una columna con miles de valores NULL puede consumir muchos MB de espacio sin almacenar ningún dato.

SQL Server 2008 introduce columnas dispersas, que permiten el almacenamiento de valores NULL sin tener ocupar espacio físico en el disco. Ya que las columnas dispersas no consumen espacio real, las tablas que contienen columnas dispersas pueden superar el límite de columna de 1.024.

SQL Server 2008 también introduce un nuevo mecanismo, la captura de datos modificados, para administrar los cambios incrementales que necesitan ser cargados en el almacén de datos. De esta manera, se capturan y se colocan los datos modificados en un conjunto de tablas de cambios. La captura de datos actualizados, eliminados e insertados en un esquema de almacenamiento permite la carga incremental de almacenes de datos de esas tablas (en lugar de tener que crear instrucciones de inserción personalizadas que intenten determinar los cambios realizados a las filas existentes de datos antes de actualizar el almacén de datos).

Conclusión

Esto no es más que una breve descripción de lo que SQL Server 2008 tiene preparado. Ofrecerá un amplio conjunto de características nuevas y de actualizaciones para las características existentes que facilitarán el trabajo tanto de administradores como de desarrolladores de bases de datos. Finalmente, ofrecerá escalabilidad y rendimiento muy mejorados para las bases de datos actuales, cada vez más exigentes.

Randy Dyess es consejero de Solid Quality Mentors. Está especializado en sistemas OLTP de SQL Server. Randy es el autor de TransactSQL Language Reference Guide y coautor de MCTS Self-Paced Training Kit: Microsoft SQL Server 2005 Implementation and Maintenance (Exam 70-431), así como de numerosos artículos de revistas y boletines. Randy es también el Director de programas de North Texas SQL Server Users Group y es MVP de SQL Server. Visite su blog en blogs.solidq.com/EN/rdyess/default.aspx.

© 2008 Microsoft Corporation and CMP Media, LLC. Reservados todos los derechos; queda prohibida la reproducción parcial o total sin previa autorización.