27
S QL Server de Microsoft es un sistema gestor de bases de datos relacionales que se usa desde en portátiles y ordenadores de sobremesa hasta en servidores corporativos, con una versión compatible, basada en el sistema operativo PocketPC, disponible para dispositi- vos de bolsillo, tales como PocketPCs y lectores de código de barras. SQL Server se, desarro- lló originalmente en los años 80 en SyBase para sistemas UNIX y posteriormente pasado a sis- temas Windows NT para Microsoft. Desde 1994 Microsoft ha lanzado versiones de SQL Server desarrolladas independientemente de Sybase, que dejó de utilizar el nombre SQL Server a fina- les de IQS años 90. La ultima.versión disponible es SQL Server 2000, disponible en ediciones personales, para desarrolladores, estándar y-corporativa, y traducida a muchos lenguajes en todo el mundo. En este capítulo el término SQL Server se refiere a todas estas ediciones de SQL Ser- ver 2000. SQL Server proporciona servicios de, réplica entre varias copias de SQL Server así como con otros sistemas de bases de datos. Sus Analysis Services.tservicios de análisis). una parte integral del sistema, incluye dispositivos de procesamiento en conexión analítico (OLAP. Onli- ne Analytical Processiñg) y recopilación de datos. SQLServer proporciona una gran colección de herramientas gráficas y «asistentes» que guían a los administradores de las bases de datos por tareas tales como establecer copias de seguridad regulares. réplica de datos entre servido- res y ajuste-del rendimiento de una base de datos. Muchos entornos de desarrollo soportan SQL Server, incluyendo Visual Studio de Microsoft y productos relacionados, en particular los pro- ductos y servicios .NET. SQL Server proporciona un conjunto de herramientas para gestionar todos los aspectos del desarrollo de SQL Server, consulta, ajaste, verificación y administración. La mayoría de estas herramientas se centran alrededor del Administrador corporativo de SQL Server, El admi- nistradof corporativo es un complemento accesorio de Microsoft Management Console (MMC), una herra- mienta que proporciona una interfaz común para traba- jar con varias aplicaciones del servidor en una red Win- dows. 27.1.1.Desarrollo de bases de datos y herramientas visuales Mientras -se diseña una base de datos, el administrador de la base de datos crea objetos de bases de datos tales como tablas, coulmnas, claves. índices; relaciones, res- rricciones y vistas. Para ayudar a crear estos objetos -el Administrador corporativo de SQL Server proporciona acceso a herramientas visuales de bases de datos. Estas herramientas proporcionan tres mecanismos para.ayu- dar al diseño de la base de datos: el diseñador de bases de datos, el diseñador de tablas yel diseñador de vis- tas. Las herramientas visuales también proporcionan una herramienta de.consulta visual que permite 'al admi- nistrador de la base. de datos el uso de capacidades de arrastrar y soltar para construir consultas visualmente. El diseñador de bases de datos es una herramienta visual que permite al administrador de la hase de datos crear tablas. columnas, claves. índices, relaciones y res- tricciones. Con el diseñador de bases de datos, un usua- rio puede interactuar con los objetos de la: base-de datos mediante diagramas de base de datos, los cuales mues- tran de fonna gráfica la estructura de la base de datos. El usuario puede crear y modificar objetos que son visi- bles sobre diagramas (tablas, columnas, relaciones y claves) y algunos objetos que no son visibles en los dia- gramas (índices y restricciones). La Figura 27.1 mues- tra el diagrama de una base de datos abierto con el Admi- nistrador corporativo. 27.1.2. Herramientas de consulta y ajuste de las bases de datos SQL Server proporciona herramientas para ayudar al proceso de desarrollo de aplicaciones. Se pueden desa- rrollar y verificar inicialmente las consultas y procedi- mientos 'almacenados utilizando el Analizador de CQn- 645

Microsoft SQL

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Microsoft  SQL

SQL Server de Microsoft es un sistema gestor de bases de datos relacionales que se usadesde en portátiles y ordenadores de sobremesa hasta en servidores corporativos, con unaversión compatible, basada en el sistema operativo PocketPC, disponible para dispositi-

vos de bolsillo, tales como PocketPCs y lectores de código de barras. SQL Server se, desarro-lló originalmente en los años 80 en SyBase para sistemas UNIX y posteriormente pasado a sis-temas Windows NT para Microsoft. Desde 1994 Microsoft ha lanzado versiones de SQL Serverdesarrolladas independientemente de Sybase, que dejó de utilizar el nombre SQL Server a fina-les de IQSaños 90. La ultima.versión disponible es SQL Server 2000, disponible en edicionespersonales, para desarrolladores, estándar y-corporativa, y traducida a muchos lenguajes en todoel mundo. En este capítulo el término SQL Server se refiere a todas estas ediciones de SQL Ser-ver 2000.

SQL Server proporciona servicios de, réplica entre varias copias de SQL Server así comocon otros sistemas de bases de datos. Sus Analysis Services.tservicios de análisis). una parteintegral del sistema, incluye dispositivos de procesamiento en conexión analítico (OLAP. Onli-ne Analytical Processiñg) y recopilación de datos. SQLServer proporciona una gran colecciónde herramientas gráficas y «asistentes» que guían a los administradores de las bases de datospor tareas tales como establecer copias de seguridad regulares. réplica de datos entre servido-res y ajuste-del rendimiento de una base de datos. Muchos entornos de desarrollo soportan SQLServer, incluyendo Visual Studio de Microsoft y productos relacionados, en particular los pro-ductos y servicios .NET.

SQL Server proporciona un conjunto de herramientaspara gestionar todos los aspectos del desarrollo de SQLServer, consulta, ajaste, verificación y administración.La mayoría de estas herramientas se centran alrededordel Administrador corporativo de SQL Server, El admi-nistradof corporativo es un complemento accesorio deMicrosoft Management Console (MMC), una herra-mienta que proporciona una interfaz común para traba-jar con varias aplicaciones del servidor en una red Win-dows.

27.1.1.Desarrollo de bases de datosy herramientas visuales

Mientras -se diseña una base de datos, el administradorde la base de datos crea objetos de bases de datos talescomo tablas, coulmnas, claves. índices; relaciones, res-rricciones y vistas. Para ayudar a crear estos objetos -elAdministrador corporativo de SQL Server proporcionaacceso a herramientas visuales de bases de datos. Estasherramientas proporcionan tres mecanismos para.ayu-dar al diseño de la base de datos: el diseñador de basesde datos, el diseñador de tablas yel diseñador de vis-tas. Las herramientas visuales también proporcionan

una herramienta de.consulta visual que permite 'al admi-nistrador de la base. de datos el uso de capacidades dearrastrar y soltar para construir consultas visualmente.

El diseñador de bases de datos es una herramientavisual que permite al administrador de la hase de datoscrear tablas. columnas, claves. índices, relaciones y res-tricciones. Con el diseñador de bases de datos, un usua-rio puede interactuar con los objetos de la:base-de datosmediante diagramas de base de datos, los cuales mues-tran de fonna gráfica la estructura de la base de datos.El usuario puede crear y modificar objetos que son visi-bles sobre diagramas (tablas, columnas, relaciones yclaves) y algunos objetos que no son visibles en los dia-gramas (índices y restricciones). La Figura 27.1 mues-tra el diagrama de una base de datos abierto con el Admi-nistrador corporativo.

27.1.2. Herramientas de consulta y ajustede las bases de datos

SQL Server proporciona herramientas para ayudar alproceso de desarrollo de aplicaciones. Se pueden desa-rrollar y verificar inicialmente las consultas y procedi-mientos 'almacenados utilizando el Analizador de CQn-

645

Page 2: Microsoft  SQL

FUNDAMENTOS DE BASES DE DATOS

E:I Raíz de la consolaS,Servidores Microsoft SQL ServerEl-'. Grupo de SQL Server

Él" PC-FERNAN,[Windows NT)Él,·QBases de datos

rE", fi1 master!±J lj model¡íJ", l] msdb~lj Northwind

'·~.ííW."~ Tablas, fJó' Vistas.....~., Procedmientos e." Usuarios ,'. Funciones;, --: -: Reglas: .Q Valores predeterrl·fb Tipos de datos d¡.s¡¡ Fu~ciones definí(,:.tiI Catálogos de tex ,

fij pubstfj temodb

"',:'_._._.--------FIGURA 27.1. Diagrama que muestra las opcíonesdel diseñador de tablas para la tabla de empleados,

sultas de SQL Server, el cual proporciona herramientasbásicas de consulta yajuste de las bases de datos. Sepueden realizar otros análisis utilizando el Analizadorde ~QL Server. Las recomendaciones del ajuste de índi-ces vienen proporcionadas por una tercera herramien-ta, -el Asistente de optimización de índices.

27.1.2.1. Analizador de consultas de SQLEL Analizador de consultas. de SQL proporciona unainterfaz de usuario sencilla y gráfica para ejecutar con-sultas SQLy ver los resultados. Permite varias venta-nas de fonna qu.e pueden existir conexiones de bases dedatos simultánea" (una o más instalaciones de SQL Ser-ver), Un desarrollador de consultas puede elegir tenerresultados de consulta mostrados en una ventana de tex-to o en una rejilla. El Analizador de consultas de SQLproporciona una representación gráfica de showplan,los pasos elegidos por el optimizador para la ejecuciónde la consulta. También proporciona informes opcio-nales de los comandos reales procesados por SQL Ser-ver (una traza en el cliente) y el trabajo realizado por elcliente. El Analizador de consultas de SQL viene conun explorador de objetos y permite. al usuario arrastrar

y soltar objetes o nombros de tablas en la tabla. Tam-bien incluye.la herramienta de depuración de Transacr-SQL. El depurador permite a un usuario depurar pasoa paso cualquier procedimiento almacenado, .exami-nando el comportamiento de los parámetros, las varia-bles locales y las funciones del sistema mientras se eje-ocutan estos pasos.

Un administrador o desarrollador de la base dedatos puede utilizar el Analizador de consultas de SQLpara:

Analizarconsultas: el Analizador de consultas deSQL Server puede mostrar un plan de ejecucióngráfico o contextual para cualquier plan de con-sultas, así como mostrar estadísticas relacionadascon el tiempo y recursos requeridos para ejecutarcualquier plan.Dar formato a las consultas SQL: el Analizador deconsultas permite la sangría y su eliminación enlas líneas de código, cambio de la caja de las pala-bras o secciones de código, comentar una única ovarias líneas y mostrar las consultas ctih un códi-go de color controlado por .el usuarió.

646

Page 3: Microsoft  SQL

cAPlrULO21 S~QLSL'lVER DE MJCROSCTr

>'»SELECT e. Le.l'tName, p. ProductName, 3um (d. Quantity " d. UnitPrice)~'FROMjor cer Detailsj d

JOIN OrClers oONo.OrderID ~ d.OrderID

JOIN Products pONd.P~oduct~D p.ProductID

clOINEmp'loyee~ ePN e.EmployeeID ~ o.EmployeeID

GROUPBY' e.La~tName, p.ProductName

Consulta 1: CO<lto de la consulta (en relación al .pr oceeo por rceee) :0,00 .•Texto de la consulca:SELECT e.LastName, p.PrQductName, 3Um(d.Quantity ~ d.UnitPricel F•-, -,~

Sortcceec . 0'<

';,..-,

Hash Match! Inne .. .prcduct s . Pr,oduc.

Costo: 0'< ~I__ '~'~ c,~+-;__

Nested Loops/In .. Ne<COSto: O.•

FIGURA 27.2. Un plan de ejecución con showplan para una reunión de cuatro tablas con una agregación group by.

S~LEC.T St>::eam1l.ggregat ...Costo: 0%Costo: o.•

• Utilizar plantilla'> para procedimientos almacena-dos.funciones e instrucciones SQL básicas-el Ana-lizador de consultes viene con docenas de plantillaspredefinidas para construir instrucciones LDD, ylos usuarios pueden definir las suya.~ propias. Cuan-do se ejecuta una plantilla los usuarios pueden pro-porcionar valores específicos para los nombres deobjetos y columnas, tipos de datos y otra informa-ción específica.

Arrastrar nombres de objetos desde el Exploradorde objetos a la ventana Consulta: el Analizador deconsultas permite al desarrollador elegir la defini-ción de un objeto o. para tablas y vistas. ver plan-tillas para crear instrucciones insert, update, dele-te o select.Definir teclas de acceso directo y opciones de labarra de herramientas personales: el Analizador deconsultas permite definir teclas de acceso directopara una ejecución rápida de consultas comunes yproporciona un control completo sobre los coman-dos que están disponibles corno botones en la tablade herramientas y en qué posición aparecen losbotones.

La Figura 27.2 muestra el Analizador de consultas mos-trando el plan de ejecución gráfico para una consulta queinvolucra una reunión de cuatrc tablas y una agregación.

27.1.2.2. Analizador de SQLEl Analizador de SQL es una utilidad gráfica que, per-mite a los administradores de la base de datos supervi-sar y registrar la actividad de-la misma. El Analizadorde SQL puede mostrar toda la actividad del servidor entiempo real o puede crear filtros que se centren en lasacciones de usuarios particulares. aplicaciones o tiposde órdenes. El Analizador de SQL puede mostrar cual-quier instrucción SQL o procedimiento almacenadoenviado a cualquier ejemplar de SQL Server (si los pri--vilegios de seguridad 10 permiten] así como los datosde rendimiento que indican cuánto tiempo la consultatardó en ejecutarse y cuánta: CPU y E/S rue necesaria yel plan de ejecución que utilizó 1<Jconsulta.

EJ Analizador de SQL permite ahondar aun más enSQL Server para supervisarautomáticamente teda ins-trucción ejecutada como parte de un procedimientoalmacenado, toda operación de modificación de datos.todo bloqueo adquirido o liberado. o cada vez que; ere-

647

Page 4: Microsoft  SQL

FUNDAMENTOS DE BASES DE DATOS

ce un archivo de, base de datos. Hay docenas de even-lOS distintos que se pueden capturar y docenas de ele-mentos de datos que se pueden capturar para cada even-to. SQL Server realmente divide la funcionalidad detraza en dos componentes, separados aunque conecta-dos. El Analizador deSQL está en la traza del cliente.Mediante el uso del Analizador de SQL un usuario pue-de elegir guardar los datos capturados a un archivo ouna tabla, además de mostrarlos en la interfaz de usua-rio del Analizador (IU). El Analizador muestra todoevento ,que cumple el criterio del filtro mientras ocurre.Una vez que se han guardado los datos de la traza, elAnalizador de SQL puede leer los datos guardados paramostrarlos o analizarlos.

En el lado del servidor está la traza de SQL, quegestiona las colas de eventos generados por producto-res de eventos. Una hebra consumidora lee los even-tos desde las colasy los filtra antes de enviarlos al pro-ceso que las solicitó. Los eventos son la unidadprincipal dé actividad en lo que se refiere a la traza, yun evento' puede ser cualquier cosa que suceda dentrode SQL Servcr o entre SQL Server y un cliente. Porejemplo, la creación o eliminación de un objeto, la eje-cución de un procedimiento almacenado, la adquisi-ción o liberación de un bloqueo, y el envío. de un archi-vo de proceso por lotes Transact-SQL desde el clientea SQL Server son eventos. Hay un conjunte de proce-dimientos almacenados del-sistema para definir quéeventos se deberían seguir, qué datos-son interesantespara cada evento o dónde .guardar la información reco-gida por los eventos. Los filtros aplicados a los even-tos pueden reducir la cantidad de información recogi-da: -Yalmacenada. La Figura 27.3 muestra la ficha deeventos desde el cuadro de diálogo de definición detraza del Analizador dc SQL. -

SQL Server proporciona más de 100 eventos pre-definidos y ua usuario puede configurar 10 eventos adi-cionales, Las trazas en el lado del servidor se ejecutandeuna fonna invisible y se puede iniciar una traza deuna forma automática cada vez que se inicia SQL Ser-ver. Esto garantiza que siempre se recogerá cierta infor-mación crítica y se puede utilizarcorno un mecanismoútil de auditoria. SQL Server esta certificado para unnivel C2 de seguridad y muchos de los eventos que pue-den ser objeto dé traza están disponibles exclusiva-mente para soportar requisitos C2 de certificación.

27.1.2.3. Asistente paro la optimizaciónde índices

Con todas las posibles técnicas de procesamiento de laconsulta disponibles el optimizador de consultas puededeterminar un plan de consulta razonablemente efecti-vo incluso en ausencia de índices bien planeados. Sinembargo. esto no significa que una base de datos bienajustada no se beneficie de buenos índices. El diseño delos mejores índices posibles para las tablas en una basede datos grande es una tarea compleja, no solamente

requiere un conocimiento completo de cómo SQL.Ser-ver utiliza los índices y cómo el optimizador de con--sultas realiza sus decisiones sino cómo se utilizan real.mente los datos por las aplicaciones -Y consultasinteractivas. El Asistente para optimización de índicesde SQL Server es una herramienta poderosa parad dise-ño de los mejores índices basados en la consulta obser-vada y cargas de actualización.

El asistente ajusta una única base de datos cada vezy fundamenta sus recomendaciones sobre una carga detrabajo que puede ser un archivo de eventos de trazacapturados o un archivo con instrucciones SQL. El Ana-lizador de SQL está diseñado para capturar todas lasinstrucciones SQL enviadas portados los usuarios enun cierto periodo de tiempo. Bl asistenre puede enton-ces examinar los patrones de acceso a los datos paratodos los usuarios.aplicaciones y tablas, y realizar rece-mcndaciones razonables.

27.1.3. Administrador ccrporotívcde SQL Server

Además de proporcionar acceso a las herramientas dediseño y visuales de bases de datos, el Administradorcorporativo de SQL, de-fácil uso, soporta administracióncentralizada de todos los aspectos de vanas instalacio-nes de SQL Server, incluyendo la 'seguridad, eventos,alertas, programación, copias de seguridad, configura-ción delservidor, ajuste, búsqueda de texto completo yréplicas. EL Administrador corporativo de SQL Serverpermite aun administrador de la base de datos crear,modificar y copiar esquemas y objetos de la base de datosSQL Server tales.corno tablas, vistas y desencadenado-res. Debido a que se pueden organizaren grupos variasinstilaciones de SQLServer y ser tratadas como una uni-dad, el Administrador corporativo de SQLServer pue-de gestionar cientos de servidores simultáneamente.

Aunque se puede ejecutar .en la misma computadoraque el motor de SQL Server, el Administrador corporati-vo de SQL Server ofrece las misma s capacidades de ges-tión cuando se ejecuta en cualquier máquina basada. enWmdows NTnooo. El Administrador corporativo de SQLServer también se ejecuta sobre Windows 98 aunque noestán disponibles algunas capacidades en este entorno (esde mención la capacidad de utilizar el Administrador decontrol de servicios, una característica de windowsNT !2()(X),para iniciar y parar SQL Server de forma remo-ta). Además, la arquitectura eficiente cliente/servidor deSQL Server hace práctico el uso de capacidades de acce-so remoto (acceso telefónico a redes) de-Wmdows NTJ2(XXlasí como Windows 98 para la administración y gestión.

El Administrador corporativo de SQL Server evita queel Administrador- de la base de datos tenga que conocerlos pasos específicos y la sintaxis para completar un tra-bajo. Proporciona más de 20 asistentes para guiar-al admi-nistrador de la base de datos 'en el proceso de configurary mantener una instalación de SQL Server. La interfazdel Administrador corporativo.aparece.en la Figura 27.4.

648

Page 5: Microsoft  SQL

le

rrin,-rs.a-'Yterar,tos10-iasIUl-

ue-

lorarati-ges-a en,QLe noo (esor delowsemo-or deacce-(2JX1JiOO.laquecocer10 tra-adnll-ogurarnerfaza 27.4.

cAPlrULO 27 SOl. SCRVEn m: MICROSOPT

El t7-uditoría de seguridad-Audit LoginAudit Logout _

Procedimientos nlmllcenadc]:;RPC:Completed, _.

A~Sesiones ~f-'o,>'Exisf ngConnection

E TSQL

.~¡¡tu).

FIGURA 27.3. Ficha Eventos del Cuadro de diálogo Propiedades de traza.

Raíz'<iolocomol.B' S.rvido'''' M.iqosoll $QL.S.,v",El·e Grupo,,';" SQl Server,

!"!lb PC-FERNAN [Window, NTI~D Ba •• , de dOlos

:E lJ maslo,

::E IJ model'J'll1m'db -_~';fiJj Nor~

" tJ lIlI~ ¡j' 1erJ«\bm CJ , ••vicio. de tran.IÓlrna<:i·í CI A--';'Iroción!±iU Duplicación'±) CJ S"9-<idadif¡.:::J Se,.>:"" de co~,BJ'EJ ~eta D.laS""icei

Base de datos

Propietario:

Fechd de <;reac:rón:

Tamaño:~,50ML',

Espacio disponible:

Opciones de la base de datos:

Mantenimiento,,:J.~--. ---- ,-__o • _

FIGURA27.4. Interfaz de! Administrador corporativo de SOL Server.

64.

Page 6: Microsoft  SQL

FUNDAMENTOS DE BASES'DE DATOS

nas sql_variant. La función del sistema sqlvariam.pro-perty puede devolver detalles sobre los datos realesalmacenados en una columna de tipo sql_variant, inclu-yendo el tipo base e información del tamaño.

Transact-SQl, es el lenguaje de bases de datos soporta-do por SQL Server. Transact-SQL es un lenguaje com-pleto de programación de bases de datos que incluyeinstrucciones de definición y manipulación de datos.instrucciones iterativas y condicionales, variables, pro-cedimientos y funciones. Transact-SQL cumple el nivelde entrada de la norma SQL-92 pero también soportavarias características desde los niveles intermedios ysuperiores. Transact-SQL también soporta extensionesa la norma SQL-92.

27.2.1. Tipos de datos

SQL Server proporciona un conjunto de tipos de datosprimitivos que definen todos los tipos de datos que sepueden utilizar con SQL Server. El conjunto de tipos de,datos primitivos incluyen:

• Un conjunto completo de tipos de enteros con sig-no con 1,2,4 Y8 bytes de precisión (tinyint. sma-llint. int y bigint) .

• Un tipo de datos bit con valoresO 0,_ I (bit)• Tipo decimal con 38 dígitos de precisión (decimal,

nunieric)Tipos de moneda con precisión de 1/l 000 de launidad monetaria (money.smallmoney)

• Tiposde fecha-y hora con una precisión de hasta3.33 milisegundos (datetime, small-datetime)

• Tipos en coma flotante de precisión sencilla y doble(real, ñoat)Tipos, de cadenas de caracteres de tamaño fijo yvariable de hasta 2'°_1 caracteres, Unicode y noUnicode (char/nchar, varchar/nvarchar, text/ntext)

• Cadenas de bytes de tamaño fijo y variable de has-ta 2'1_1bytes (binary, varbinaiy, image)Un tipo cursor que pennite referencias a un obje-to cursor (cursor)

• Tipos de datos de identificadores únicos globales'y para la base de datos

Además. SQL Server soporta los tipos sql_variant ytable descritos 'en los apartados 27.2.1.1 y 27.2.1.2.

27.2.1.1. TIpo VariantSql_variant es un tipo de datos escalar que permite auna columna de una fila, variable o argumento de fun-ción contener valores de cualquier tipo escalar SQL(excepto text, ntext, image, rowversion y sql_variant).Es utilizado por aplicaciones que necesitan almacenardatos-cuyo tipo no se puede conocer cuando se definenlos datos. Internamente el sistema guarda el tipo origi-nal de datos. Es posible filtrar, reunir y. ordenar colum-

27.2.1.2. Tipo Tab1eTable es un tipo que permite a una variableguardar unconjunto de filas; Este tipo se utiliza principalmente paraespecificar el tipo devuelto por las funciones que devuel-ven tabla. Una variable table se comporta como unavariable local. Tiene un ámbito bien definido, que es lafunción, procedimiento almacenado. o proceso por lotesen el cual se declara ..Dentro de este ámbito se puedeutilizar una variable lable como una tabla nonna!. Sepuede aplicar en cualquier lugar donde se utiliza unatabla o expresión de tabla en instrucciones select.Insert,update y,delete.

Las variables table se limpian automáticamente alfinal de la función, procedimiento almacenado o pro-ceso por lotes en el cual se definen. Además, las varia-bles table utilizadas en procedimientos almacenadosresultan en menos recompilaciones de 'estos procedi-mientos que cuando se utilizan las tablas temporales.Las transacciones que involucran las variables tableduran solamente en la actualización de la variable tablepor lo que las variables rable requieren menos: recursosde bloqueos y de registro histórico.

27.2.2. Funciones definidas por el usuario

Las funciones definidas por el usuario permite a los mis-mos definir sus propias funciones Transact-SQL median-te el uso de la instrucción create function. SQL Servcrsoporta las funciones que devuelven un tipo escalar ouna tabla. Las funciones escalares se pueden utilizar encualquier expresión escalar dentro de una instrucciónLMD o LDD de SQL. Las funciones que devuelventablas se pueden utilizar en cualquier lugar donde sepermita una tabla el] una instrucción select. Las fun-cienes que devuelven una tabla cuyo cuerpo contieneuna única instrucción SQL select se tratan como unavista (entre líneas expandida) en la consulta que hacereferencia a la función. Puesto, que las funciones quedevuelven una tabla permiten la introducción de argu-mentos, las funciones entre líneas que devuelven tablasse pueden considerar vistas paramctrizadas.

27.2.3. Vistas

Una vista es una tabla virtual cuyos contenidos estándefinidos por una instrucción select. Las vistas son unpoderoso mecanismo de modelado de datos y seguri-dad. Las vistas indexadas (Apartado 27.2.3.1) tambiénpueden proporcionar un beneficio sustancial en el ren-

.so

Page 7: Microsoft  SQL

ee

s-o-

"o'05nensem-:nem'scejuegu-ilas

stano unmri-biénren-

ctimiento. Las tablas referenciadas por la definición dela vista se conocen como tablas base. En el ejemplo quesigue, vtstauuúos es una vista que selecciona los datosdesde tres tablas base: título, auiortiudo y títulos. Es41stablas son parte de la base de datos ejemplo pubs inclui-da con SQL Server.

create view vistatítulos asselect título, auord, au_nombre, precio, ventas,ideditorialfrom autores as a joln autonítulo as al 00 (a.au_id= at.au_id)

join títulos as t 00 (t.títulojd e at.títulojd)

Se puede hacer referencia a la vista vistatiudas eninstrucciones de la misma forma a corno se haría conuna tabla base:

select '"Irom visrantuloswhere precio >= 30

Una vista puede hacer referencia a otras vistas. Porejemplo vístautulos presenta información que es útilpara administradores, pero las empresas normalmenterevelan sus datos de venta sólo en los informes trimes-trales o anuales. Se puede construir una vista que selec-cione todas las columnas de vistatítulos excepto au_ordy ventas. Esta nueva vista puede ser utilizada por losclientes para obtener listas de los libros disponibles sinver la información financiera:

create vlew Cust vistatítulos asselect título. aunombre.precio, id_editorialfrom vistatítulos

Las consultas que emplean las vistas se optimizanexpandiendo la definición de la vista en la consulta (enotras palabras. el optimizador basado en el coste opti-miza toda la consulta como si se hubiera realizado sinel uso de vistas).

27.2.,3.1.. Vistas indexadasAdemás de las vistas tradicionales como se definieron enla norma ANSI de SQL. SQL Server soporta las vistasindexadas (materializadas). Las vistas indexadas puedenmejorar sustancialmente el rendimiento de las consultascomplejas de ayuda a la toma de decisiones que recupe-Tan un gran número de filas y agregan grandes cantida-des de información en sumas recuentos y medias. SQLServer soporta la creación de índices agrupados en unavista y subsecuentemente cualquier número de índicesno agrupados. Una vez que se indexa una vista, el opti-mizador puede utilizar sus índices en consultas que hacenreferencia a la vista o sus tablas base. Las consultas exis-tentes se pueden beneficiar de la eficiencia mejorada dela recuperación de los datos directamente de la viS14inde-xada sin tener que ser reescrita para hacer- referencia a la

CAPITULO 21 SOL SUi'hR D~ MICRO'SOfT

vista. Las instrucciones de actualización de las tablas basese propagan autométicamente a los índices de la vista .

27.2.3.2. Vistas divididasLas vistas divididas se, utilizan para dividir los datosentre varias tablas, bases de datos o ejemplares de SQLServer con el fin de distribuir la carga de trabajo. Si losdatos se dividen entre varios servidores, se pueden pro-porcionar los mismos beneficios en el rendimiento queun agrupamiento de servidores y se puede utilizar parasoportar las necesidades de procesamiento de los mayo-res sitios Web o centros de datos corporativos. Una tablabase se puede dividir-en varias tablas miembro, cadauna de las cuales tiene un subconjunto de filas de la tabla.original. Cada servidor debe tener definición de la tabla.dividida. Una vista dividida utiliza el operador uniónpara combinar todas las divisiones en las tablas base enun único conjunto de resultados que se comporta exac-tamente como una copia de la tabla original completa.Por ejemplo, una tabla de clientes se puede dividir entretres servidores. Cada servidor debe tener una divisiónde la tabla base disjunta como sigue:

• En Servidor 1:create rabie Cliente_33 e

IDCliente integer primary keycheck (IDCliente between 1 and32999),

Otras definiciones de columna)

En Servidor2:create table Cliente_66.(

IDCliente integer primary keycheck (IDCliente between 33000 and.65999),

... Otras definiciones de columna)

• En Servidor3:create reble Cliente_99 (

IDCliente integer primary keycheck (IDClientebetween 66000 and99999),

... Otras definiciones de columna)

Después de crear las tablas miembro, el administra-dor de la base de datos define una vista dividida distri-buida en cada servidor, cada vista teniendo el mismonombre. La vista dividida distribuida para Servidorl sedefiniría como sigue:

create view Clientes asselect :1< Irom Baseüeüatos.Propictario'Iabla.Clientes_33union allselect :1< from Server2.BaseDeDatos.PropietarioTabla.Clientes_66union allselect :1< Irom Serverá.BasefteDatos.PropjetarioTabla.Clientes_99

651

Page 8: Microsoft  SQL

FUNDAMENTOS DE BASES DE DATOS

Sobre-Serverz y Server3 se definirían vistas similares.El hecho de tener la vista definida sobre cada servi-

dor permite a las consultas que hacen referencia al nom-bre de la vista dividida y distribuida ejecutarse en cadauno delos servidores miembro. El sistema opera comosi en cada servidor miembro hubiera una copia com-pleta de la tabla original, aunque cada servidor tengasolamente una tabla miembro local y. una vista dividi-da y distribuida que referencia a la tabla local y las dostablas remotas. La ubicación de los datos es transpa-rente a la aplicación. Con estas tres vistas, cualquier ins-trucción Transact-Sfjl. sobre cualquiera de los tres ser--vidores que haga referencia a Clientes verá los mismosresultados que desde la tabla original. Se puede acce-der a las vistas divididas no solamente mediante, ins-trucciones select sino también mediante instruccionesinsert. update y delete, incluyendo instrucciones queafectan a varias divisiones e incluso aquellas que requie-ren trasladar filas de una división a otra.

27.2.3.3. Vistas actualizablesGeneralmente las vistas puede ser el objetivo de las ins-trucciones update, delete o insert si la modificación delos datos se aplica a solamente una de las tablas basede la vista. Las actualizaciones de las vistas divididasse pueden propagar a varias tablas base. Por ejemplo,la siguiente instrucción update incrementará los-pre-cios pata el editor «0736>:· en un 10 por ciento.

update vistatítulosset precio = precio * 1.10where ideditorial = '0736'

•Para las modificaciones de los datos que afectan a

más de una tabla base, la vista se puede actualizar si hay1,

un desencadenador instead (Apartado 27.2.4) definidopara la operación. Los desencadenadores insert para lasoperaciones ínsert, update o delete se pueden definiren una vista para especifiear las actualizaciones que sedeben ejecutar en las tablas base para implementar lasmodificaciones correspondientes en la vista.

27.2.4. Desencadenadores (disparadores)

Los desencadenadores son procedimientos Transact-SQL que se ejecutan automáticamente cuando se envíauna instrucción update, insert o delete a una tabla baseo vista. Los desencadenadores son un mecanismo queposibilita la aplicación de la lógica del negocio de for-ma automátiea cuando. se modifican los datos. Losdesencadenadores pueden extender la lógica de verifi-cación de la integridad de restricciones declarativas,predeterminadas y reglas" aunque las restricciones decla-rativas se deberían utilizar preferentemente siempre quese satisfagan las necesidades.

Hay dos clases generales de desencadenadores quedifieren en el tiempo con respecto a la instrucción dedesencadenamiento, bajo la que se realiza la acción. Losdesencadenadores after se ejecutan después de la ins-trucción de desencadenamiento y se aplican posterio-res restricciones declarativas. Los desencadenadoresinstead se ejecutan en lugar de la acción de desenca-denamiento. Los desencadenadores instead son simi-lares a los desencadenadores befure, pero realmentereemplazan la acción de desencadenamiento. En SQLServer los deseñcadenadores añer se pueden definirsolamente sobre, tablas base mientras que los desenca-denadores instead se pueden definir sobre tablas baseo vistas. Los desencadenadores lnstead permiten quese pueda actualizar prácticamente cualquier vista.

En SQL Server una base de datos se refiere a una coleo-ción de archivos que contienen datos y que son soporta-dos por un único registro histórico de transacciones. Labase de datos es la unidad principal de administración enSQL Server y también proporeiona un contenedor paraestructuras físicas tales Como tablas e índices y paraestructuras lógicas tales como restricciones, vistas, etc.

27.3.1. Grupos de archivos

Con el fin de gestionar el espacio en una base de datosde forma efectiva" el coqjuruo de archivos, en una basede datos se divide en grupos denominados grupos dearchivos (filegroups). Cada grupo de archivos contieneuno o más archivos del sistema operativo'.

Toda base de datos tiene-al menos un grupo de archi-

vos conocido corno el grupo de archivos primario. Estegrupo de archivos contiene todos Los metadatosde labase de datos en tablas del sistema. El grupo de archi-vos primario también puede contener datos de usuario.

Si se crean grupos de archivos definidos por el usua-rio adicionales, un usuario puede controlar de formaexplícita la ubicación de las tablas individuales, índiceso las columnas de objetos grandes de una tabla ubicán-dolas en un grupo de archivos. Por ejemplo, el usuariopuede elegir almacenar una tabla en el grupodearchi-vosA, su índice no agrupado en grupodearchivosb y laseolumnas de objetos grandes de la tabla en grupodear-chivase. La ubicación de estás tablas e índices en dis-tintos grupos de archivos permite al usuario controlarel uso de los recursos de hardware (esto es, discos y elsubsistema E/S). Uh grupo de archivos en concreto se

652,

Page 9: Microsoft  SQL

considera siempre el grupo de archivos predetermina-.do; inicialmente, el grupo de archivos predeterminadoes el grupo de archivos primario, pero se' puede dar a:cualquier grupo de archivos definido por el usuario lapropiedad de.determínado. Si una tabla o índice no estáubicada específicamente en un grupo de archivos, secrea en el grupo de 'archivos predeterminado.

27.3.2. Administración del espacio en gruposde archivos

Uno de los muchos propósitos principales es permitiruna gestión de espacio efectiva. Todos los archivos dedatos se dividen en unidades de 8 Kbytes de espacio fijodenominadas páginas. El sistema de asignación es res-ponsable de asignar estas páginas a tablas e Jndices. Elobjetivo del sisterna de asignación es minimizar la can-tidad de espacio malgastado mientras que, al mismotiempo, mantener el nivel de fragmentación de la basede datos en el mínimo pata as<:;gurar un buen rendi-miento de exploración. Con el fin de lograr este objeti-vo el administrador de asignación normalmente asignay desasigna todas las páginas en unidades de ocho pági-nas contiguas denominadas' extensiones.

El sistema de asignación gestiona estas extensionesmediante varios mapas de bits. Estos mapas de bits per-miten al sistema de asignación encontrar una página oextensión para la asignación de una forma rápida. Estosmapas de bits también se utilizan cuando se ejecuta unatabla completa o exploración de 'índices. La ventaja deusar mapas de bits basados en la asignación para laexploración es que permiten recorridos en e1 orden deldisco de todas las extensiones que pertenecen a una tablao en el nivel de las hojas de los índices, lo que mejorasignificativamente el rendimiento de la exploración.

Si hay más de un archivo en un grupo de archivos,el sistema de asignación proporciona extensiones paracualquier objeto en ese grupo de archivos utilizando unalgoritmo de «relleno proporcional». Cada archivo serellena con la proporción de la cantidad de espacio libreen ese archivo comparado con otros archivos. Esto lle-na todos los archivos de un grupo de archivos aproxi-madamente con el mismo factor y permite al sistemautilizar todos los archivos en un grupo de archivos deforma equitativa. Durante una exploración que utilizalos mapas de bits de asignación, el algoritmo de explo-ración aprovecha los distintos archivos enviando E/Sseparadas a cada uno de los archivos.

Una de las mayores decisiones al configurar una basede datos es determinar su tamaño. SQL Server permité.alosarchivos de datos cambiar su tamaño después de crearla base de datos. El usuario puede incluso elegir hacerqueel archivo de datos crezca automáticamente si la basede datos se queda sin espacio. Parella, el usuario puedeconfigurar la base, de datos a una aproximación razona-ble del tamaño esperado, pero hace que los archivos delabase de datos crezcan y se ajust.en al patrón de uso, sila aproximación inicial no es correcta. SQL Server per-

CAPiTULO 27 SOL SERVER DE MICROS9FT

mite a los archivos disminuir. Con el fin de disminuir unarchivo de datos, SQL Server traslada 1:0005los datos des-de el fin físico del archivo a un punto más cercano al ini-cio del archivo y entonces realmente reduce el archivo,devolviendo el espacio al sistema operativo;

27.3.3. Tablas

SQL Server soporta dos organizaciones diferentes paralas tablas: montículos e índices agrupados. En una tablaorganizada en montículos la ubicación de cada fila dela tabla se determina completamente mediante el siste-ma y. no es especificada de ninguna forma por el usua-rio. Las filas de un. montículo tienen un identificadorfijo como identificador de fila (RlD, Row ldentifier) ysu valor nunca cambia a no ser que se reduzca el archi-vo y la fila se traslade. Si la fila se torna lo suficiente-mente grande para no caber en la página en la que seinsertó originalmente, el registro se mueve a un lugardistinto, pero se deja un resguardo en la ubicación ori-ginal de forma que el registro todavía se puede encon-trar utilizando su RID original.

En una organización agrupada por índices para unatabla, las filas de la tabla se almacenan en un árbol B+ordenado mediante la clave de agrupamiento del índice.La clave de índice agrupado también sirve coma el iden-tificador único para cada fila. La clave para un índiceagrupado se puede definir como no único, en cuyo casoSQL Server agrega una columna oculta adicional parahacer la clave única. El índice agrupado también sirvecomo una estructura de búsqueda para identificar unafila de la tabla en una clave particular o explorar un con-junto de filas de la tabla con claves con un cierto' rango.

I

iI

27.3.4. índices ¡1

La forma más común 'de indexación son los índices no,agrupados, que también se conocen como índices secun-darios. Estos índices son árboles B+ sobre una o máscolumnas de la tabla base. Permiten acceso eficiente deuna fila de una tabla base basada en un criterio de bús-queda sobre las columnas indexadas. Además, las con-sultas que se refieren solamente a la'>columnas que, estándisponibles mediante índices secundarios se procesanmediante la recuperación de las páginas desde el nivelhoja de los índices sin tener que.recuperar los datos delíndice agrupado o montículo.

SQL Server soporta la adición de columnas calcula-das a una tabla. Una columna calculada es una colum-na cuyo valor es una expresión, normalmerue basada enel valor de otras columnas en esa fila. SQL Server per-mite al usuario construiríndices secundarios sobre co-lumnas calculadas.

27.3.5. Explonrcíones y lectura anticipada

La ejecución de las consultas en SQL Server puedeninvolucrar una 'serie de distintos modos de exploración .¡

653

Page 10: Microsoft  SQL

FUNDAMENTOS DE BASES DE DATOS

de las tablas e índices subyacentes. Éstos incluyen explo-raciones ordenadas y desordenadas, exploraciones enserie y paralelas, unidireccionales y bidireccionales,hacia delante-y hacia arras, y exploración de toda la tablao índice y-exploraciones de rango o filtradas.

Cada uno de los modos de exploración tiene un meca-nismo de lectura anticipada que intenta anticiparse a lasnecesidades del plan de ejecución con el fin de-reducir lalatencia y gastos y utilizar el tiempo sin trabajo del dis-

co. El algoritmo de lectura anticipada de SQL Server uti-liza el conocimiento del plan de ejecución de la consul-ta con el fin de. conducir la lectura anticipada y asegu-rarse de que solamente se leen los datos que son realmentenecesarios. Además, la cantidad de lectura anticipada sedimensiona de forma automática según el tamaño de lamemoria intermedia. la cantidad de E/S que el subsiste-ma del disco puede sostener y la velocidad a la que elplan de ejecución puede consumir los datos.

El procesador de consultas de SQL Server está basado enun entorno extensible que permite una rápida incorpora-ción de nuevas técnicas de ejecución y optimización. Laejecución encapsula los algoritmos de procesamiento dedatos en iteradores que se comunican entre sí utilizandola interfaz Getlcextkowü. La optimización genera alter-nativas utilizando transformaciones en árbol y estima elcoste de ejecución utilizando modelos detallados del com-portamiento de las selectividades e iteradores.

27.4.1. Visión general de los procesosde optimizaCión

-Las consultas complejas presentan oportunidades signi-ficativas de optimización que requieren la ordenación delos bloques de consulta, con selección del pla-n basadoen el coste estimado. SQL Server utiliza unenromo pura-mente algebraico. El entorno de optimización de SQLServer se basa en el prototipo de optimizador Cascades.Una instrucción SQL se compila como sigue:

Análisis/vinculación. El optimizador analiza lainstrucción y resuelve los nombres de tablas ycolumnas mediante el uso de catálogos. Resuelvee incorpora vistas para generar un árbol de opera-dores. Verifica la caché del procedimiento para versi ya hay un plan para la consulta, en cuyo caso seevita la optimización. El árbol de operadores uti-liza un álgebra relacional extendida donde no haynoción de bloque de consulta o tabla derivada sinosimplemente una combinación arbitraria de ope-radores relacionales.

• SimplifiCación/normalización. El optimizador apli-ca reglas de simplificación sobre.el árbol de opera-dores para obtener un formulario normal y simpli-ficado. Estas reglas implementan transformacionestales como enviar las selecciones hacia abajo y lasimplificación de reuniones extemasen reuniones.Durante la simplificación. el optimizador detenni-na y carga las estadísticas requeridas para laestimación de la cardinalidad. Si-se pierden las esta-dísticas requeridas, el optimizador las crea auto-máticamente antes de continuar la optimización.

Optimización basada en el coste. El optimizadoraplica la exploración e implementación de reglaspara generar alternativas, estimar el coste de la eje-cución y elegir el plan con el coste anticipado másbajo. Las reglas de 'exploración implementan lareordenación de operadores, incluyendo reorde-nación de la reunión y de la agregación. Las reglasde implementación introducen alternativas en laejecución tales como reuniones por mezcla y reu-mones por asociación.

• Preparación del plan. El optimizador crea estruc-turas del plan de ejecución para el plan seleccio-nado.

La optimización basada en el coste no se divide enfases que optimizandistintos aspectos de la consulta deforma independiente y no está restringida a una únicadimensión tal como la enumeración de reuniones. Ensu lugar una colección de reglas de transformación defi-ne el espacio de: interés y la estimación del coste se uti-liza uniformemente para seleccionar un plan eficiente.

27.4.2. Simplificación de la' consulta

Durante la simplificación, el optimizador envía las selec-ciones del árbol de operadores tan abajo como sea posi-ble. Verifica los predicados en busca de contradiccio-nes teniendo en cuenta las restricciones declaradas.Utiliza las contradicciones para identificar subexpre--siones vacías, que se eliminan del árbol. Un escenariocomún es la eliminación de ramas union que recuperanles datos de las tablas con distintas restricciones .

Una serie de reglas de simplificación son depen-dientes del contexto, es decir, la sustitución solamentees válida en el contexto de la utilización de la subex-presión. Por ejemplo.una reunión externa se puede sim-plificar en una reunión interna si una operación de fil-trado posterior elimina reglas no coincidentes que serellenaron con null. Otro ejemplo es la eliminación dereuniones sobre claves externas que no se necesitan eje-cutar si no hay uso posterior de las columnas desde latabla referenciada. Un tercer ejemplo es el contexto deindependencia de duplicados, que especifica que la dis-

'654

Page 11: Microsoft  SQL

,t

;-i~j-

s.

iom

n-uex-n-11-sedeje-dade

lis-

tribución de una o más copias de una fila no afecta alresultado de la consulta. Las subexpresiones bajo semi-rreuniones y bajo distinct son independientes de dupli-cados, lo que permite cambiar union a union all.

Para agrupar una agregación se utiliza el operadorGbAgg, que crea grupos y opcionalmente aplica una fun-ción de agregado sobre cada grupo. La eliminación deduplicados, expresado en SQL mediante la palabra cla-ve distinct es sencillamente unDhAgg sin funciones deagregado a calcular. Durante la simplificación. la infor-mación sobre las claves y dependencias. funcionales seutiliza para reducir el agrupamiento de columnas.

Las subconsultas se normalizan eliminando especi-ficaciones de consulta correlacionadas y utilizando algu-nas variantes dé la reunión en su lugar. La eliminaciónde correlaciones no es una «estrategia de ejecución desubconsultas» sino simplemente un paso de normaliza-ción. Se consideran entonces una serie de estrategias deejecución consideradas durante la optimización basadaen el coste.

27.4.3.Reordenación y optimización basadaen el coste

En SQL Server las transformaciones se integran com-pletamente en la generación basada en el coste y selec-ción de planes de ejecución. Además dé la reordenaciónde la reunión interna; el optimizador de consultas empleatransformaciones de reordenación para los operadoresreuniónexterna, semirreunión y antisemirreuníon delálgebra relacional estándar (con duplicados, para' SQL).GbAgg se reordena también. trasladándolo debajo delas reuniones siempre que sea posible. La agregaciónparcial. esto es. la introducción de un nuevo "GhAgg conagrupación sobre un superconjunto de las columnas deun GhAgg que se encuentre más arriba. se considera'debajo de las reuniones y union all y también en pia-nes paralelos. Véanse las referencias dadas en las notasbibliográficas para más detalles.

La ejecución correlacionada se considera durante laexploración del plan¡ el caso más simple es una reuniónde búsqueda en el índice. SQL Server modela.esto utili-zando Apply, que opera sobre una tabla T y una expre-sión relacional parametrizada E(t). APp/y ejecuta E patacada fila de T, que proporciona los valores de los pará-metros. La ejecución correlacionada se considera comounaalternativa a la ejecución. sin considerar el uso de lassubconsultasen la,formulacíónSrjt, original. Es una estra-tegia muy eficiente cuando latabla T es muy pequeña ylos índices soportan la ejecución parametrizada eficien-te de,E(t). Además se considera la reducción del núme-ro de ejecuciones de E(tJ donde hay valores de paráme-tros duplicados mediante dos técnicas: ordenar T segúnlos valores de los parámetros de forma que se reutiliceunúnico resultado de E(t) mientras que el valor del pará-metro no Cambia, o también utilizar .una tabla de asocia-ción que siga la pista del resultado de E(t) para (algúnsubconjunto) de valores anteriores del parámetro.

CAPITULO 27 SOL SERVER DE MICROSOFT

Algunas aplicaciones seleccionan filas según el resul-tado de algún agregado para su grupo. Por ejemplo«Hallar los clientes cuyo saldo es mayor que el doble dela media para su segmento de mercado». La formulaciónSQL requiere una autorreunién. Durante la exploraciónse detecta este patrón y se considera la ejecución por seg-mentos como una alternativa a la autorreunión. La utili-zación de la vista materializada también se consideradurante la optimización basada en el coste. El encaje devistas interactúa con la ordenación de operadores, en laque el uso puede que no sea aparente hasta que se reali-ce otra reordenación, Cuando se encuentra que una vistase ajusta a alguna subexpresión, la tabla que contiene elresultado; de la vista se agrega como alternativa a la expre-sión correspondiente. Dependiendo de la distribución dedatos e índices disponibles puede ser mejor o no que laexpresión original (la selección se realizará basándoseen la estimación del coste).

Para estimar el coste d~ ejecución del plan, el mode-lo tiene en cuenta el número de filas que se esperan pro-cesar, denominado el objetivo filas, así como el núme-ro de veces que se ejecuta-una subexpresión. El objetivofilas puede ser menor que la estimación de la cardina-lidad en casos tales como Apptytsemijoin. Appíytsemi-join devuelve la fila t de Ttan pronto como E(t) produ-'ce una única fila (es decir. comprueba E(t)). Por tanto,el objetivo filas de la salida de ECO es 1, y los objetivosfilas de los subárboles de E(t) se calculan para E(t) paraesre objetivo y se usan para la estimación del coste.

27.4.4. Planes de actualización

Los planes de actualizaoíón optimizan el mantenimien-to de índices, verifican las restricciones. aplican accio-nes en cascada y mantienen las vistas materializadas.Para el mantenimiento de los índices, en lugar de tomarcada fila y mantener todos sus índices los planes de actua-lización aplicanmOdlfic'aciones por índice, ordenamientode filas y aplican la operación de actualización según elorden de la clave. Esto minimiza las operaciones EISaleatorias. especialmente cuando el número de filas aoptimizar es grande. Las restricciones se manejan conun operador assert, que ejecutan un predicado y envíanun 'error si el resultado es false. Las restricciones de inte-gridad referencial se definen mediante predicados exlst.los cuales se convierten en semirreuniones y se optimi-zan considerando todos los algoritmos de ejecución.

El problema Halloween se soluciona utilizando elec-ciones basadas en el coste. El problema Halloween serefiere a la siguiente anormalídad: supongamos que selee en orden ascendente un índice sueldo y los salariosse suben un 10 por ciento. Como resultado de la actuali-zación, las filas se moverán hacia arriba en el índice y sevolverán a encontrar y actualizar de nuevo, llevándonosa un bucle infinito. Una forma de solventar este proble-ma es separar el procesamiento de dos fases: en primerlugar se leen todas las tilas que Se actualizarán y se haceuna copia de ellas en algún lugar temporal, después Se

655

Page 12: Microsoft  SQL

FUNDAMENTOS DE BASES DE DATOS

leen de este lugar y se.aplican todas las actualizaciones.Otra alternativa es leer desde un 'índice distinto donde lasfilas no se trasladarán. como resultado de la actualización.Algunos planes de ejecución proporcionan la separaciónde las fases de forma automática, si se ordena o constru-ye una tabla de asociación en las filas a actualizar. En eloptimizador de SQL Server la protección Halloween semodela como una propiedad de los planes. Se generan'varios planes que proporcionan la propiedad requerida yse selecciona uno según el coste de ejecución estimado.

27.4.5. Búsqueda parcial y heurísticas

Los optimizadores basados en el coste se enfrentan alproblema de la explosión del espacio de búsqueda pues-to que.las aplicaciones emiten consultas que involucrandocenas de tablas. Para solucionar esto, SQL Server uti-liza varios estados de optimización, cada uno de los cua-les utiliza transformaciones de la consulta para explo-rar regiones sucesivamente mayores del espacio de,búsqueda.

Hay transformaciones simples y completas diseñadaspara la optimización exhaustiva, así como transforma-ciones inteligentes que implementan varias heurísticas.Las transformaciones inteligentes generan planes queestán muy lejos en el espacio de búsqueda, mientras quelas transformaciones sencillas exploran' las cercanías. Losestados de, optimización aplican una mezcla de ambasclases de optimización, en primer lugar enfatizando enlas transformaciones inteligentes y posteriormente cam-biando a transformaciones sencillas, Se, preservan' losresultados óptimos en los subárboles. de forma que losestados posteriores se pueden beneficiar de los resulta-dos generados con anterioridad. Cada estado necesitaequilibrar técnicas de generación de planes opuestas:

• 'Generación exhaustiva de alternativas: paragenerar el espacio completo el optimizador debe-ría utilizar transformaciones completas; locales,no redundantes (una regla de transformación equi-valente a una secuencia de más transformacionesprimitivas solamente introduce costes adiciona-les).

• Generación heurfstica de candidatos: una seriede candidatos interesantes (seleccionados según elcoste estimado) probablemente están lejos en tér-minos de reglas de transformación primitivas. Aquílas transformaciones deseadas son incompletas,globales y redundantes.

La optimización se puede terminar en cualquier pun-to después de que el primer plan se haya generado. Talterminación se basa en el coste estimado del mejor planencontrado y el tiempo gastado ya-en la optimización.Por ejemplo, si una consulta requiere solamente mirarunas pocas filas en algunos índices, se producirá rápi-damente un plan muy barato en los primeros estados,terminando la optimización. Este enfoque nos ha per-

mitido agregar nuevas heurísticas fácilmente a lo largodel tiempo, sin comprometer la selección basada en elcoste de los planes o la exploración exhaustiva del espa-cio de búsqueda, cuando es apropiado.

27.4.6. Ejecución de la consulta

Los algoritmos de ejecución soportan el procesamientobasado en la ordenación y basado en la asociación, y susestructuras de datos se diseñan para optimizar el uso dela caché del procesador. Las operaciones de asociaciónsoportan agregación y reunión básica, con una serie deoptimizaciones, extensiones y ajuste dinámico del ses-go de datos. La operaciónjiuw-distinctes una variantede asociación con valores distintos (hash distinct). don-de las filas se devuelven tan pronto como se encuentraun nuevo valor distinto, en lugar de esperar a procesartoda la entrada. Este.operador es efectivo para consul-tas que utilizan distinct Y solicita solamente unas pocasfilas. como con la constructora top n. Los planes corre-lacionados la ejecución de E(t)"a menudo incluyendovarias búsquedas en el índice. basadas en el parámetropara cada fila I de la tabla: T. La preextracción asíncro-na permite la:emisión de varias solicitudes de búsquedaen el índice al motor de almacenamiento. Se implemen-ta de la siguiente forma: se hace una solicitud de bús-queda en el índice sin bloqueo para una filas de T, enton-ces 1 se sitúa en una cola de preextracción. Se sacan lasfilas de la cola y son utilizadas por Apply para ejecutarE(i). La ejecución de E(t) no requiere que los datos yaestén listos en la memoria intermedia, pero tener buenasoperaciones de preextracción maximiza la utilizacióndel hardware e incrementa el rendimiento. El tamaño dela cola se determina dinámicamente como una funciónde aciertos en caché. Si no se requiere ninguna ordena-ción.dc las filas de salida de Apply; las, filas de esta colase pueden descartar para minimizar la espera en la E/S.

La ejecución en paralelo se implementa mediante eloperador Iixchange, que gestiona varias hebras, parti-ciones o datos de difusión y alimenta los datos a variosproceses. El optimizador de consultas decide la ubica-ción dé Exchange según el coste estimado. El grado deparalelismo se determina dinámicamente en tiempo deejecución, según la utilización actual del sistema .

Los planes de índices están formados de' los trozosdescritos anteriormente. Por ejemplo, se considera eluso de una reunión de índices para resolver las conjun-ciones de predicados (o unión de índices para las dis-yunciones), basándose en el coste. Dicha reunión se pue-de realizar en paralelo, utilizando cualquiera de losalgoritmos de reunión del servidor. También se consi-deran reuniones de índices para el único propósito deensamblar una fila con el conjunto de columnas nece-sario en una consulta, que es algunas veces más rápidoque explorar una tabla base. Tomar identificadores deregistros de un índice secundario y localizar la filacorrespondiente de la tabla base es efectivamente equi-valente a ejecutar una reunión de búsqueda en índice.

656

¡¡

Page 13: Microsoft  SQL

1

Para ello se usan las técnicas genéricas de-ejecucióncorrelacionada como la preextracción asfncrcna.

La comunicación con el motor de almacenamientose realiza mediante OLE-DR, lo que permite acceder aotros proveedores de datos que implementan esta inter-faz. OLE-OB es un mecanismo utilizado para consul-

cAPlrULO 21 SQL SC)1VCP'DE MIC;;EOSOFT

tas distribuidas y remotas, que, las maneja directamen-te el procesador de consultas. Los proveedores de datosse clasifican según el rango de funcionalidad que pro-porcionan, desde simples proveedores de conjuntos defilas sin capacidades de indexación a proveedores consoporte completo de SQL.

Los subsistemas de transacciones, registro histórico,bloqueos y recuperación aseguran las propiedades AClDesperadas de un sistema de bases de datos.

27.5.1.Transacciones

En SQL Server todas las instrucciones son atómicas ylas-aplicaciones pueden especificar varios niveles deaislamiento ,para cada instrucción. Las.transacciones seutilizan para encuadrar una secuencia de instrucciones"haciendo el conjunto completo atómico y controlandosu aislamiento desde otras transacciones. Una única tran-sacción puede incluir instrucciones que no solamenteseleccionan, insertan, borrar o actualizan registros, sinoque también crean o eliminan tablas, construyen índi-ces y realizan importaciones masivas de datos. Las tran-sacciones pueden abarcar bases de datos en servidoresremotos. Cuando las transacciones se extienden porvarios servidores, SQL Server utiliza un servicio del sis-tema operativo windows, denominado coordinador detransacciones distribuidas (Microsoft Distributed Tran-saction Ccordinator, MS DTC) para ejecutar un proce-samiento de compromiso de dos fases. MS PTC sopor-ta el protocolo de transacción XA y, junto con OLE-OB,proporciona el fundamento para transacciones ACIDentre sistemas heterogéneos.

27.5.1.1.Puntos de almacenamientoSQL Server soporta dos tipos de puntos de almacena-miento: de instrucciones y con nombre. Los puntos dealmacenamiento de instrucciones son puntos tomadosal comienzo de una: instrucción de fO(01a que, si una

instrucción falla.se puede retroceder sin tener que retro-ceder loda la transacción. Un punto de almacenamien-to con nombre es· una instrucción save transactionenviada por una aplicación que etiqueta un punto en latransacción. Se puede enviar una instrucción rollbackposterior para retroceder 'hasta el punto con nombre.Un retroceso a un punto de almacenamiento no liberabloqueos y no se puede utilizar en transacciones dis-tribuidas.

27.5.1.2.Opciones de concurrenciapara cctuctrscctcnes

SQLServer ofrece control de concurrencia optimista ypesimista para las operaciones de actualización.

El COntrol de concurrencia optimista funciona bajola suposición de que los conflictos de recursos entrevarios usuarios son poco probables (aunque no imposi-bles) y permite a las transacciones ejecutarse sin blo-quear ningún recurso. Solamente cuando se intentancambiar los datos se verifican los recursos para deter-minar si han ocurrido conflictos. Si sucede un conflic-to, la aplicación debe leer los datos e intentar el cambiode nuevo. Las aplicaciones pueden elegir si se detectanlos cambios comparando los valores o verificando lacolumna especial rowversion de una fila. El control deconcurrencia optimista requiere el uso de cursores.

El control de concurrencia pesimista bloquea losrecursos cuando se requieren durante la duración de unatransacción. A no ser que ocurran interbloqueos se ase-gura la finalización satisfactoria de una transacción. Elcontrol de concurrencia pesimista es el predeterminadopara SQL Server.

IRID Identificador de fila, usado para bloquear una única fila de una tabla

Bloqueo de fila en un índice; protege tos rangos de clave en teenseccionessecuencíablee

Página de tabla o indice de 8 Kbyte

Grupo contiguo de ocho páginas de datos o de índice

Tabla completa, incluyendo todos los datos a índices

Base de datos

Clave

Página

Extensión

Tabla

BD

FIGURA 27.5. Recursos bloqueables.

657

Page 14: Microsoft  SQL

FUNDAMENTOS DE BASES DE DATOS

27.5.1-.3. Niveles de aislamientoSQL~92 define los siguientes niveles de aislamiento,todos ellos soportados por SQL Server:

• Lectura no comprometida (nivel inferior donde lastransacciones se aislan solamente para asegurarque no se leen físicamente datos corruptos).

• Lectura comprometida (Nivel pre9-et~rminado deSQL Server)

• Lectura repetibleSecuenciable (nivel' superior, .donde las transac-ciones están completamente aisladas entre sí)

27.5.2. BloqueosSQL Server proporciona bloqueos de varias granulari-dades que permiten que una transacción bloquee distin-tos recursos (véase la Figura 27.5, donde los recursos se,listan en orden creciente de granularidad). Para mini-mizar el coste del bloqueo, SQL Server bloquea los recur-sos automáticamente a una granularidad apropiada parala tarea. El bloqueo a una granularidad menor, tal comoñlas, aumenta la concurrencia, pero tiene un coste mayor,puesto que se deben realizar más bloqueos si se bloqueanmuchas filas. El bloqueo a una granularidad mayor, talcomo tablas, es costoso en términos de concurrenciapuesto que el bloqueo de,una tabla completa restringe aotras transacciones el bloqueo a cualquier parte de latabla, pero tiene unos costes de CPU y memoria meno-res, ya que se adquieren menos bloqueos.

Los modos de bloqueos disponibles son compartido(S, shared), de actualización (U. update) y exclusivo (X,exclusive). Los bloqueos de actualización se utilizanpara evitar que ocurra una forma común de interblo-queo cuando varias sesiones están leyendo, bloquean-do y potencialmente actualizando recursos más tarde.Otros modos de bloqueo adicionales (denominados blo-queos de rango de clave) se adoptan solamente en-elnivel de aislamiento secuenciable 'para bloquear el ran-go entre dos filas y un índice., Los bloqueos de varias granularidades requieren quese adquieran los. bloqueos en una jerarquía estricta demayor a menor granularidad. La jerarquía es la base dedatos, tabla, página y fila. Cuando se intenta bloquearen un nivel superior al compartido, de actualización yexclusivo se usan bloqueos intencionales.

27.5.2.1. Bloqueo dinámicoEl bloqueo de granularidad fina puede mejorar la con-currencia con el coste de ciclos de CPU y memoria extrapara-adquiriry mantener muchos bloqueos. P~ muchasconsultas una granularidad de bloqueo más burda pro-porciona mejor rendimiento sin pérdida de concurren-cia.(o mínima). Los sistemas de base de datos han reque-rido tradicionalmente sugerencias de consulta y opcionesde tabla a las aplicaciones para especificar la granula-ridad del bloqueo. Además, hay parámetros de confi-

guracién (frecuentemenle estáticos) para gestionar cuán-ta memoria dedicar a la administración del bloqueo.

En SQL Server la granularidad del bloqueo se opti-m-izaautomáticamente para un rendimiento y concu-rrencia óptimos para cada índice de una consulta. Ade-más, la memoria dedicada al administrador de bloqueosse ajusta dinámicamente segun la realimentación des-de otras partes del sistema, incluyendo otras aplicacio-nes de la máquina.

La granularidad del bloqueo se optimiza antes de laejecución de la consulta para cada tabla e fndice utiliza-do en la consulta. El proceso de optimización del blo-queo tiene en cuenta el nivel de aislamiento (esto es.cuánto tiempo se mantienen los bloqueos), el tipo deexploración (rango, prueba o toda la tabla), el númeroestimado de filas a explorar, la selectividad (porcentajede filas visitadas que son resultado de la consulta), den-sidad de filas (número de filas por página); tipo de ope-ración '(exploración, actualización). limites del usuariosobre la granularidad y memoria del sistema'disponible.

La Figura 27.6'muestra una consulta ejemplo dondelas filas resultado se identifican mediante una explora-ción de rango de un índice y después se recuperan lasfilas desde la tabla base. Aquí se utilizan los bloqueosde página sobre el índice, puesto que con un rango den-so de filas del índice se requieren solamente unos pocosbloqueos de página. Sin embargo, las filas de la tablabase están dispersas por toda la tabla y por ello el blo-queo en un nivel de fila proporciona una concurrenciamucho mayor. En general, la optimización del bloqueofavorece la concurrencia en sus decisiones. Una vez seejecuta una consulta, la granularidad de bloqueo sedimensionaautomáticamenté hasta el nivel de tabla siel sistema adquiere significativamente más bloqueosque los esperados por el optimizador o si la cantidad dememoria disponible cae y no se pueden soportar elnúmero de bloqueos requeridos.

27.5.2.2. Detección de interbloqueos,SQL Server detecta de forma automática los interblo-queos que involucran bloqueos y otros recursos. Porejemplo si la transacción A está manteniendo un blo-queo en Tabla} y está esperando memoria disponible yla transacción Btiene algo de memoria que no puedecompartir hasta que adquiera un bloqueo sobre Tablal,la transacción presentará un interbloqqeo.l:as hebras ylas memorias intermedias de comunicación también pue-den estar involucradas en los interbloqueos. Cuando,SQL Server detecta un interbloqueo, elige como la víc-tima del interbloqueo la transacción que es menos cos-tosa de retroceder. considerando la cantidad de trabajoque la transacción ya ha realizado.

Frecuentemente la detección puede perjudicar al ren-dimiento del sistema. SQL Server automáticamente ajus-ta la frecuencia de la detección de interbloqueos a la fre-cueneia a la que están ocurriendo los interbloqueos. Silos interbloqueos no son frecuentes, el algoritmo dedetección se ejecuta cada 5 segundos. Si son frecuen-

.ss

Page 15: Microsoft  SQL

)

e,-as)S

n-o,ilalo-dareo; se"eas>eosá derr el

rolo-. porl blo-ible y~uede,abla l ,brasynpue-uandola vÍC'-os cos-trabajo

r al ren-ne ajus-a la fre-ueos. Sii!mo defre(;uen-

Indica sobre Iecolumna e de la tabla T

CAPitULO 21 SQL SERVE,RDE ~J¡CR9S0fT

P.áginas de la tabla T.

FIGURA 27.6. Granularidad de los bloqueos.

tes se comenzará a verificar cada vez que una transac-ción espera un bloqueo.

27;5.3.Registros históricos y recuperación

SQL Server está diseñado para recuperarse de fallos delsistema y de los medios, y el sistema de recuperaciónsepuede dimensionar a máquinas con memorias inter-medias muy grandes (100 Gbytes) y miles de unidadesde disco.

27.5.3.1. Registros históricosEl registro histórico de la transacción registra todos loscambios realizados sobre la base de datos y almacenasuficiente información para permitir deshacer cualquiercambio (retroceso) o rehacer en el caso de un fallo delsistema o solicitud de retroceso.

El registro histórico es, desde un punto de vista logi-co, un flujo potencialmente infinito-de registros históri-cos identificado por números de secuencia del registrohistónco.d.og Sequence Number, LSN). Desde un pun-tode vista físico; una porción del flujo se almacena enarchivosde registros históricos. Los registros históricosse guardari en los archivos de registros históricos hastaquese realiza una copia de seguridad y no hay necesidadporparte del sistema de retroceso o réplica. Los archivosderegístro histórico crecen y disminuyen en tamaño paraacomodarse a los registros que se tienen que almacenar.Adicionahnente los archivos de registro histórico se pue-denagregar a una base de datos (en nuevos discos, porejemplo)mientras que el sistema se está ejecutando y sin

bloquear ninguna operación y todos los registros histó-ricos se tratan como si fueran un archivo continuo.

27.5.3.2. Recuperación de caídasEl sistema de recuperación de SQL Server tiene muchosaspectos en comi.ín con el algoritmo de recuperaciónARIE:S (véase el Apartado 17.9.6), y en este apartadose muestran algunas de las diferencias clave.

SQL Server posee una opción de configuración deno-minada intervalo de recuperación, que permite a unadministrador limitar eJ tiempo que SQL Server debe-ría tardar en recuperarse después de una caída. El ser-vidor ajusta dinámicamente la frecuencia en los puntosde comprobación para reducir el tiempo de recupera-ción. Los puntos de comprobación eliminan todas laspáginas desfasadas de Ia memoria intermedia, y se ajus-tan a las capacidades del sistema E/S y a su carga detrabajo para eliminar de forma efectiva cualquier impac-to en las transacciones que se ejecutan.

En el inicio. después de una caída. el sistema iniciavarias hebras (dimensionadas aurométícamente al núme-ro de UCP) para iniciar la recuperación de varias basesde datos en paralelo. La primera fase de la recuperaciónes un paso de análisis en el registro histórico. que cons-truye una tabla de páginas desfasadas y una lista dc tran-sacciones activas. La siguiente fase es un inicio de lafase rehacer desde el último punto de comprobación yrealizar todas las operaciones. Durante la fase rehacerse utiliza la tabla de páginas desfasadas para leer anti-cipadamentc las páginas de datos. La fase final es unafase deshacer donde se retroceden todas las transaccio-

659

Page 16: Microsoft  SQL

I

FUNDAMENTOS DE BASES DE DATOS

nes incompletas. La fase deshacer se divide realmenteen dos partes puesto que SQL Server utiliza un esque-ma de recuperación en dos niveles. Las transaccionesen el primer nivel (aquellas que involucran operacionesinternas. tales como asignación de espacio y divisionesde página) se deshacen primero, seguidas por las tran-sacciones del usuario.

21.5.3.3. Recuperación de los mediosLas capacidades de copia de seguridad y restauración deSQL Server permiten la recuperación de muchos fallos,incluyendo la pérdida o corrupción de los medios de dis-co, errores dei usuario y pérdida permanente de un ser-vidor. Además. la copia de seguridad y restauración delas bases de datos es útil para otros propósitos, tales comocopiar una base de datos desde un servidor a otro y elmantenimiento de sistemas en espera. Los sistemas enespera se crean con una característica denominada envíodel registro histérico que realizan la copia de seguridadcontinua de los registros histéricos de la transacción des-de una base. de datos origen y entonces copia y restauradichos registros históricos a una o més bases de datos enespera, manteniendo las bases de datos en-espera sin-

cronizadas con la base de datos origen. LOs sistemas enespera pueden funcionar en cueslión de minutos. Ade-más, un sistema en espera puede estar disponible paraprocesamiento de consultas de solo lectura.

SQL Server posee tres modelos de recuperación dis-tintos que los usuarios pueden elegir para cada base dedatos. Mediante Iaespeciñcación de un modelo de recu-peración, el administrador declara el lipa de las capaci-dades de recuperación requeridas (tales como restaura-ción en un punto y envío del registro histórico) y la'>copiasde seguridad requeridas para lograrlos. Se pueden reali-zar copias de seguridad de bases de. datos, archivos, gru-pos de archivos y del registro histórico de transacciones.Todas las copias de seguridad son difusas y completa-mente en línea; esto es, no bloquean ninguna operaciónDML o DDL cuando se ejecutan. Las operaciones decopia de seguridad y restauración están muy optimiza-das y limitadas solamente por la velocidad de los mediosen los que se realiza la copia de seguridad. SQL Serverpuede realizar copias de seguridad en disco y en dispo-sitivos de cinta (hasta 64 en paralelo) y tiene interfacesde programación de aplicaciones de eopia de seguridadde alto rendimiento para que las usen productos terceros.

Un ejemplar de SQL Scrver es un único proceso del sis-terna operativo que es también un punto de referenciapara las solicitudes de ejecución de SQL. Las aplica-ciones interactúan con SQL Server mediante variasbibliotecas en el cliente (como ODBC y OLE-DBJ conel fin de ejecutar SQL.

27.6.1. Grupos de hebras en el servidor

Con el fin de minimizar el' cambio de contexto en el ser-vidor y para controlar el grado de rrrultíprogramación,el proceso SQL Server mantiene un gru,po de hebras queejecutan solicitudes del cliente. Cuando las solicitudesllegan al cliente se les asigna una hebra sobre la cual seejecutan. La hebra- ejecuta las instrucciones SQL envia-das por el cliente y envlael resultado de vuelta. Una vezque la solicitud del usuario se completa. la hebra sedevuelve al grupo de hebras.

Además de las solicitudes del usuario, el grupo dehebras también se utiliza para asignar hebras para ta-reas internas secundarias.

• Escritor diferido (Lazywriter): esta hebra-se dedi-ca a asegurar que una 'cierta cantidad del grupo dememorias Intermedias está libre-y disponible siem-pre para la asignación del siste-ma. La hebra tam-bién interactúa con el sistema operativo para deter-minar la cantidad óptima de memoria que sedeberla consumir en el proceso SQL Server.

Punto dc comprobación: esta hebra verifica de for-ma periódica todas las bases de datos con el fin démantener un rápido intervalo de recuperación parael inicio de las bases de datos del servidor.

• Monitor de interbloqueo: esta hebra supervisa altashebras, buscando interbloqueos en el sistema. Esresponsable de la detección de interbloqueos y tam-bién busca una víctima con elfin de permitir pro-gresar al sistema.

Cuando el procesador de consulta'> elige un plan para-lelo para ejecutar una consulta determinada puede asig-nar varias hebras qm: trabajen en nombre de la hebraprincipal para ejecutar la consulta.

Puesto que la familia-de sistemas operativos Win-dows NT proporciona un soporte nativo para las hebras,SQL Server utiliza hebras NT parp su ejecución. Sinembargo, SQL Server se puede configurar para ejecu-tar hebras en modo usuario además de las hebras delnúcleo en sistemas de: altas prestaciones para evitar elcoste de un cambio de contexto del núcleo en el inter-cambio de una hebra .

27.6.2. Gestión de la memoria

Hay muchos usos distintos de memoria en el procesode SQL Server:

• Grupo de memorias Intermedias: el mayor con-sumidor de memoria en el sistema es el grupo de

860

Page 17: Microsoft  SQL

memorias intermedias. El grupo de memorias inter-medias mantiene una caché de las páginas de labase de datos más recientemente utilizadas. Empleaun algoritmo de reemplazamiento de reloj con unapolítica de robo sin fuerza, esto es, las páginas dela memoria intermedia con actualizaciones no com-prometidas se pueden reemplazar (erobar»). y nose fuerza su envío a disco debido a la transacción.Las memorias intermedias también obedecen elprotocolo del registro histórico de escritura anti-cipada pgra asegurar que. la recuperación de lascaídas y los medios es correcta.

Asfgnación de memoria dinámica: €;S la memo-ria que se asigna de forma dinámica para ejecutarsolicitudes enviadas por el usuario.

• Caché de planes y ejecución: esta caché alma-cena los planes compilados para varias consultasque los usuarios han ejecutado previamente en elsistema. Esto permite que varios. usuarios com-partan el mismo plan (ahorrando memoria) y tam-bién ahorra tiempo de compilación de la consul-ta para consultas similares.

Este apartado describe las Interfaz de programación deaplicaciones (Application Programming Interface, API)de acceso a datos soportadas por SQL Server y cómose utilizan estas API para las comunicaciones entre loscomponentes internos del servidor.

27.7.1. API de acceso a datos

SQL Server soporta una -serie de interfaces de progra-mación de aplicaciones (API) de acceso a datos, inclu-yendo:

Objetos de datos ActiveX (ActiveX Data Objects,ADO)

OlE-DB• Conectividad abierta de bases de datos (ODBC,

Open Database-Connecrívity) y las API construi-das sobre ODBC: objetos de datos remotos (Rema-te Data Objects, RDO) y objetos de acceso a datos(Data Access Objects, DAO)

SQL incorporado paraC (Bmbedded SQL, ESQL)

• La biblioteca de bases de datos heredadas para C,que fue desarrollada específicamente para ser usa-da con versiones anteriores de SQL Servcr que pre-ceden a la norma SQL-92

• HITPy URLs

Las aplicaciones Internet pueden utilizar URL queespecifican las rutas virtuales del servidor de informa-

CAPiTULO 27 SOL SERVE;; DE MiCROSOFT

• Concesiones de mucha memoria: para los ope-radores de consulta que consumen grandes canti-dades de memoria tales como reuniones por aso-ciación y ordenaciones.

SQL Server utiliza un elaborado esquema de asig-nación de memoria para dividir su memoria entre losvarios usos descritos arriba. Un único administrador dela memoria gestiona de forma centralizada toda lamemoria utilizada por SQL Server. El administrador dememoria es responsable de la división y distribución dela memoria de forma dinámica entre los diversos Con-sumidores de memoria del sistema. Distribuye estamemoria de acuerdo con un análisis del coste relativode memoria para cualquier uso particular.

El administrador de memoria interactúa con el sis-tema operativo para decidir de forma dinámica cuántamemoria se debería consumir de la cantidad total dememoria en el sistema. Esto permite que SQL Serversea bastante agresivo en el uso de la memoria en el sis-tema pero también devuelve la memoria al sistema cuan-do otros programas la necesita sin causar excesivos fallosde página.

ción de Internet (lIS, Internet Information Sérver) quehacen referencia a una ejemplar de SQL Server. Un URLpuede, contener una consulta XPath. una instrucciónTransact -SQL o una plantilla XML. Además de utilizarURL, las aplicaciones Internet también pueden utili-zar ADO o üLE-DB para trabajar con datos en la for-ma de documentos XML.

Los desarrolladores de aplicaciones utilizan API talescomo ADO:y ODBC para acceder a las capacidades deSQL Server desde la capa intermedia. Algunas API talescomo üLE-DB se utilizan internamente para integrar com-ponentes del núcleo del servidor y permitir la réplica y elacceso distribuido para SQL y otros orígenes externos.

27.7.2. Comunicación dentro de SQL Server

El servidor de 1<;1. base de datos de SQL Server tiene dospartes principales: el motor relacional (MR) yel motorde almacenamiento (MA), como se muestra en la Figu-ra 27.7. La arquitectura de SQL Server claramente sepa-ra los componentes-del motor relacional y de almace-namiento con el servidor y estos componentes utilizaninterfaces OLE-DB para comunicarse entre sí.

~I procesamiento de una instrucción select'que hacereferencia solamente a tablas en bases de datos localesse puede describir como sigue. El motor relacional com-pila la, instrucción select en un plan de ejecución opti-mizado. El plan de ejecución define.una serie de opera-ciones sobre conjuntos de fila sencillos desde las tablasindividuales. o índices refcrcnciados en la instrucción

66'

Page 18: Microsoft  SQL

FUNDAMENTOS DE BASES DE DATOS

FIGURA 27.7. OlE-DB como una interfaz del sistema interno de gestión de bases de datos.

select. El conjunto de filas solicitado por el motor rela-cional devuelve la cantidad de datos que una tabla o índi-ce necesita para ejecutar las operaciones necesarias paraconstruir-el conjunto de resultados select. Por ejemplo,la siguiente consulta calcula el resultado de dos índices:

select NombreEmpresa, IDPedido, FechaEnvíoIrom Clientes as Cli join Pedidos as Pedon (Cli.Ilxcliente = Ped.IDCliente)

El motor relacional solicita dos conjuntos de filas,uno para el índice agrupado en clientes y el otro en uníndice no agrupado en pedidos. El motor relacional enton-ces utiliza las interfacesOl.BDls para solicitar que.elmotor de almacenamiento abra los conjuntos de filas conestos índices. Puesto que el mofar relacional funciona

según los pasos del plan de ejecución y necesita datos,utiliza OLE-DB para extraer las filas individuales de losconjuntos de filas. El motor de almacenamiento trans-fiere los datos desde las memorias intermedias de losdatos hasta los operadores de ejecución de la consulta,la cual se ejecuta en el motor relacional. El motor rela-cionalcombina los datos de los conjuntos de filas delmotor de almacenamiento en el conjunto de resultadosfinal transmitido al usuario. Esta comunicación entre elmotor relacional y el motor de almacenamiento median-te la interfaz OLE-DB permite al motor relacional pro-cesar las consultas con cualquier origen de datos queexponga tales interfaces. Dichos orígenes de datos pue-den ser otros sistemas SQL Server (consultas distribui-das) y otros proveedoresde datos OLE-DB relacionalesy ha relacionales (consultas heterogéneas).

Este apartado describe las capacidades de SQL Serverpara procesamiento de consultas distribuidoy hetero-géneo. así como las réplicas.

27.8.1. Procesamiento de consultasdistribuidas heterogéneas

La capacidad de consultas distribuidas heterogéneas deSQL Server permite las consultas transaccionales yactualizaciones en una serie de.orígenes relacionales yno relacionales mediante proveedores de datos OLE-DB que se ejecutan en una o más computadoras. SQLServer soporta dos métodos para hacer referencia a orí-genes de datos OLE-OH heterogéneos en instruccionesTransact-SQL.

El método nombres del servidor vinculados utiliza pro-cedimienros almacenados del sistema para asociar el nom-bre de un servidor con un origen de datos OLE-DB. Losobjetos en estos servidores vinculados se pueden refe-rencíar en instrucciones Transact-SQL utilizando el con-venio de nombres de cuatro parte descrito más adelante.Por ejemplo, si el-nombre de un servidor vinculado deSérvSQW'ept se define en otra copia de SQL Server, lasiguiente instrucción referencia una tabla en ese servidor:

select *from ServSQLDept.Nonhwind.dbo.Employees

En SQL Server se registra un origen de datos OLE-DB como un servidor vinculado. Una vez que se defi-

6••

Page 19: Microsoft  SQL

s

"e,-r-

I-o-m-.osfe-m-rte.de, lalar:

LE-lefi-

ne un servidor vincularlo se puede acceder a sus datosutilizando el nombre de cuatro partes <servidor vincu-lado>. <catálogo>. <esquema>. <objeto>. El siguienteejemplo establece un servidor vinculado a un servidorOracle mediante un proveedor OLE~DB para Oracle:

exec sp....,addlinkedserver ServOra, 'Oracle 7.3','MSDAORA', 'OracleServer'

Una consulta en este servidor vinculado se expresacomo:

select '"from ServOra.CQRP.ADMIN. VENTAS

Además, SQL Server soporta funciones incorpora-das parametrizadas de tipo tabla denominadas open-rowset y openquery, que permiten enviar consultas nointerpretadas a un proveedor o servidor vinculado', res-pectivamente, en el dialecto soportado por el provee-dor. La siguiente consulta combina la información alma-cenada en un servidor Oracle y un Microsoft IndexServer. Lista todos los documentos y sus autores queContiene las palabras Data y Access ordenadas por eldepartamento y nombre del autor.

select e.dept, f.AutorDoc, f.NombreArchivofrom ServOra.Corp.Admin.Empleados e,openquery(ArchivosEmp,

"select Aurorfroc, Nombre.Archivofrom scopetec: \ Bmpfjocs»)where contains(' «Datoss nearü«Access» '}>O') as f

where e.nombre =-f. AutorDócorder by e.dept, f.AutorDoc

También se puede especificar el nombre del servidorvinculado en una instrucción openquery para abrir unconjunto de 'filas desde el origen de datos OLE-Da.El conjunto de filas se puede entonces referenciar comouna tabla en instrucciones Transact-SQL. El método adhoc de nombres de conectores se utiliza para referenciasinfrecuentes a un origen de datos. Este método utilizauna función de tipo tabla denominada openrowset, don-de la información necesaria para conectarse a los oríge-nes de datos se proporciona como argumentos a la fun-ción. El conjunto de filas se puede entonces referenciarcomo se referencia a una tabla en instrucciones SQL.Por ejemplo, la siguiente consulta accede a las explora-ciones employees almacenadas en tablas en la base dedatos Notthwind en un proveedor de datos de MicrosoftAccess. Nótese que aunque el enfoque de nombre de ser-vidor vinculado descrito anteriormente encapsula todala información necesaria para conectarse a un origen dedatos, el enfoque ad-hoc de conectores requiere que elusuario especifique el nombre del proveedor de datos(Microsoft.Jet.OLE-DB.4.0), el nombre completo de laruta de acceso del archivo de datos, el identificador del

CAPÍIULO 27 SQL SF:RVER DE MICHOSOf'T

usuario, la contraseña (vacío en el ejemplo de' abajo) yel nombre de la tabla a la,que se accede.

selcct *from openrowsetr'Microsoft.Jer.Ol.E DRA.Ol,

'c:\Ejemplos\Northwind.mdb';' Admin ';':';Employees)

El motor relacional utiliza las interfaces OLE-DBpara abrir los conjuntos de filas sobre los servidores vin-culados, para extraer las 'filas y para gestionar las tran-sacciones. Para cada origen de datos OLE-DB al que seaccede como un servidor vinculado, debe estar presen-te un proveedor OLE-DB sobre el servidor en el que seejecuta SQLServer. El conjunto de operaciones Tran-sact-SQL que se pueden utilizar en un origen de datosoLE-DB especíñco-depende de las-capacidades del pro-veedor Ol"E-DB. Siempre que es efectivo en el coste,SQL Server envía las operaciones relacionales talescomo las reuniones, restricciones. proyecciones, orde-naciones y agrupaciones mediante operaciones al ori-gen de datos OLE-pB.

SQL Server utiliza el coordinador de transaccionesdistribuidas de Microsoft (Microsoft Distributed Tran-saction Coordinator) y las interfaces de transacción deOLE-DB del proveedor para asegurar la atomicidad delas transacciones sobre varios orígenes de datos.

Veamos un escenario típico pata el uso de consultasdistribuidas; Consideremos una gran compañía de segu-ros que tiene empresas subsidiarias en varios países.Cada oficina regional selecciona el producto que alma-cena sus datos de ventas. La subsidiaria del Reino Uni-do almacena sus datos en Grade, la subsidiaria en Aus-tralia almacena sus datos en Microsoft Access y lasubsidiaria de España almacena sus datos en MicrosoftExcel y la subsidiaria de Estados Unidos almacena susdatos en SQL Server. Un ejecutivo de ventas interna-cional desea un informe qué liste, de forma trimestralpor los últimos tres años, las directivas de seguros, lassubsidiarias y los representantes de ventas con las ven-tas más altas' en cada cuatrimestre. Cada una de estastres consultas se puede realizar mediante una única con-sulta distribuida, que, se ejecuta en SQL Server.

27,8,2. Réplica

La réplica de SQL Server proporciona un conjunto detecnologías para copiar y distribuir los datos y objetosde la base de datos de una base de datos a otra y tam-bién mantener la sincronización entre las bases de datos.

La réplica puede recoger datos corporativos desdesitios geográficamente dispersos para propósitos deinformes y diseminar los datos a usuarios remotos enuna red de área local o usuarios móviles sobre cone-xiones telefónicas o Internet. La réplica de MicrosoftSQL Server también mejora el rendimiento de las apli-caciones dimensionando para mejorar el rendimiento

663

Page 20: Microsoft  SQL

fUNDAMENTOS DE BASES DE DATOS

total de' lectura entre réplicas, Como es común al pro-porcionar servicios de caché de datos de' la Capa inter-media para sitios Web al tiempo que se.mantiene la-con-sistencia transaccional en el conjunto de datos duplicado.

27.8.2.1. Modelo de réplicas

SQL Server introdujo la metáfora Pubticar-Suscríbirpara la réplica de la basede datos y extiende esta metá-fora de la industria editorial a todas sus herramientas deadministración de réplicas y supervisión.

El publicador es un servidor que ha:celos datos dís-poníbles para la réplica a OlfOS servidores. El publi-cador puede tener una o más publicaciones, cadauna representando un conjunto de datos y objetosde la base de datos relacionados lógicamente. Losobjetos discretos en una publicación, incluyendotablas, procedimientos almacenados, funcionesdefinidas por el usuario, vistas, vistas materializa-das y más, todos llamados artículos. La agregaciónde un artículo a una publicación permite la perso-nalización extensiva de la forma en la que se dupli-ca el objeto.jncluyendo el nombre y propietariode los objetos destino" restricciones sobre las cua-Ies.los Usuarios se pueden suscribir para recibir susdatos y CÓmO se,debería filtrar el conjunto de resul-tados. Por ejemplo. una tapia puede tener su con-junto de datos completo o WI subconjunto de, susdatos dividido horizontalmente haciéndolos dis-ponibles para la distribución mediante su defini-ción como un artículo. Todos los formularios de laréplica de SQL Server soportan la división hori-zontal y vertical desde una tabla publicada.

• Los suscriptores son servidores que reciben los datosreplicados de un publicador. Los suscriptores pue-den suscribir convenientemente a solamente laspublicaciones que requieren de uno o más publica-dores sin considerar el número o tipo de opciones deréplica que implemente cada uno. Dependiendo deltipo de opciones de réplica seleccionado, el suscrip-tor se puede utilizar como una réplica de sólo lectu-ra o se pueden realizar cambiasen los datos que sepropagan automáticamente al publicador y, por con-siguiente, al resto de réplicas. Lis réplicas de SQLServer soportan suscripciones de inserción y extrac-ción verdaderas; esto es, la programación o inicia-ción de acciones de sincronización se pueden con-trolar por el publicador o mediante sus suscriptoressegún requieran las necesidades del negocio. Lossuscriptores también pueden volver a publicar los'datos a los que se suscriben, dando soporte a unatopología de réplica tan flexible como requiera laempresa.

• El distribuidor es un servidor que alberga la base dedatos de distribución y almacena algunos metadatosde réplica La función del distribuidor varía, depen-diendo de las opciones de réplica seleccionadas.

27.8,2.2. OpciQnes de réplicaLa réplica de Microsoft SQL Server ofrece un amplioespectro de elecciones de tecnología. Para decidir sobrelas,opciones de réplica apropiadas a utilizar, un diseña-dor de bases de datos debe determinar las necesidadesde la aplicación con respecto a la operación autónomadel sitio involucrado y el grado de consistencia tran-saccional requerido.

• La réplica instantánea copia y distribuye los datosY'objetos de la base de datos exactamente comoaparecen en un instante, del ti_empo.La réplica ins-tantánea no requiere un seguimiento continuo delos cambios, puesto que los cambios no se propa-gan de forma incremental a los suscriptores. Lossuscriptores se actualizan con una actualizacióncompleta del conjunto de datos definido por lapublicación de una forma periódica. Las 'opcionesdisponibles con la réplica instantánea pueden fil-trar los datos publicados y pueden permitir que lossuscriptores modifiquen los datos replicados y pro-paguen dichos cambios al publicador.

• Con la publicación transaccional el publicadorpropaga una Instantánea de datos a los suscripto-res. entonces envía las modificaciones de datosincrementales a los suscriptores como transac-ciones e instrucciones discretas. El seguimientodel cambio incremental ocurre dentro del motordel núcleo de SQL Server, que marca las transac-ciones que afectan a los objetos replicados en elregistro histórico de la base de datos publicadora.Un agente de réplica lee estas transacciones delregistro histórico de la base de datos, aplica cual-quier lógica de división y las almacena en la basede datos de la distribución, que actúa como unacola fiable que soporta el mecanismo de almace-namiento y envío de la réplica transaccional. (Lascolas fiables son lo mismo que las colas durade-ras descritas en el Apartado 24.1.1.) Otro proce-so de réplica, el agente de distribución que se eje-cuta o en el distribuidor (inserción) o el suscriptor(extracción), entonces envía los cambios a cadasuscriptor. Al igual que la réplica instanténea.Iaréplica transaccional ofrece a los suscriptores laopción.de realizar actualizaciones inmediatas queutilicen un compromiso de dos fases que reflejenaquellos Cambios de forma consistente en el publi-cador y suscriptor,

• La réplica por mezcla permite que cada réplica enla empresa funcione con total autonomía en cone-xión o sin conexión. El sistema supervisa los meta-datos según los cambios sobre objetos publicadosen los publicadores y suscriptores de todas las basesde datos duplicadas y el agente de réplica mezclaestas modificaciones de-Ios datos durante la sin-cronización entre los pares replicados y asegura laconvergencia de los-datos mediante una detección

664

Page 21: Microsoft  SQL

t

y resolución automática del conflicto. El agente deréplica utilizado en el proceso de sincronizaciónincorpora numerosas opciones de políticas de reso-lución de conñictos, y la resolución de conflictos

CAPITULO 27 SqL SF:R"LP. DE ).ll~ROSOF1'

personalizada se puede-escribir mediante el uso deprocedimientos almacenados o mediante el uso deuna interfaz del modelo de objetos componente(Component Object Model, COM) extensible.

La capacidad de texto completo en SQL Server deMicrosoft soporta la creación y mantenimiento de Índi-ces de texto completo sobre cadenas de caracteres ycolumnas de imágenes almacenadas dentro de las tablasSQL Server, así como búsquedas de texto completobasadas en estos índices. La capacidad de texto com-pleto se implementa mediante el servicio MicrosoftSearch, desarrollado independienrernente.de SQL Ser-ver, para permitir las búsquedas de texto completo enlos datos del sistema de archivos. El primer paso haciala integración del servicio de búsqueda con SQL Ser-ver fue transformar el servicio de búsqueda en un pro-veedor OLE-DE. Este, paso permitía escribir las apli-caciones en lenguajes tales como Visual Basic y C++con acceso a Iós datos almacenados en el sistema dearchivos mediante el uso de ADa, y también propor-cionaba la capacidad de conectar el proveedor de textocompleto en SQL Server como un origen de datos hete-rogéneo. El segundo paso involucraba una integracióndébilmente, acoplada entre SQL Server y el servicio debúsqueda para permitir el indexado del texto completodel contenido de la tabla. Esta integración está débil-

/. .....Ód6t>., ,1l~i!ií;¡;;llIE;"' , IÚ;}::'¡;o;:,Itó4.;&~,;,::: ·1I"i"'j""";":CC0'?'""'" '.:''. '1b:J.:Ei~t.bA!':'",~~~,-,_,__~.:.'¡_u _

E'l~k~"Y¿<,LNa" ~~.,3<" '. I

Base de datosde Sal server

mente acoplada en el sentido en que lbs índices de tex-to completo se-almacenan en el sistema de archivos fue-ra de la base de-datos. La Figura 27.8 ilus-tra la arqui-tectura general de esta integración.

Hay dos aspectos para el soporte de texto completo:(1) creación de índices y mantenimiento y (2) soportede la consulta. El soporte de indexado involucra la cre-ación, actualización y adminisrracíon de catálogos detexto completo e índices definidos para una tabla o tablasen la base de datos. El soporte de la consulta involucrael procesamiento de las consultas de búsqueda de textocompleto. Dado un predicado de texto completo, el ser-vicio de búsqueda determina las entradas en el índiceque cumplen el criterio dc selección de texto completo.Para cada entrada que cumple el criterio de selección, elcomponente de consulta del servicio de búsqueda devuel-ve una fila, en un conjunto de filas OLE-DB, conteniendola identidad de la fila cuyas columnas coinciden con elcriterio de, búsqueda y un valor de clasificación. Esteconjunto de filas se utiliza como entrada a la consultaque está siendo procesada por el motor relacionaJ SQL,al igual que cualquier Otro conjunto de filas originado

Servicio Microsoft Search

Catálogode texto completo

FIGURA27.8. Integración de un componente de texto completo con un SGBD relacional.

665

Page 22: Microsoft  SQL

FUNDAMENTOS DE BASES DE DATOS

de tablas o índices dentro del servidor. El motor rela-cional combina este conjunto de 'filas con la tabla basesobre la identidad de la fila y evalúa el plan de ejecuciónque genera el conjunto de resultados final. Los tipos deconsultas de texto completo ,que soporta este esquemaincluye la búsqueda de palabras' o frases, palabras pareecidas entre sí y formas derivadas de verbos y nombres.

Los catálogos de texto completo e índices no se.alma-cenan en una base de datos SQL Server. Se almacenan

en archivos separados gestionados por el servicio Micro-soft Search. Los archivos del catálogo de texto com-pleto no se recuperan durante la acti~iéIad de recupera-ción de SQL Server, y no se puede realizar una copiade seguridad y restauración mediante el uso de las ins-trucciones backup y restcre. Se deben volver a sin-cronizar los catálogos de texto completo separadamentedespués de una operación de recuperación o restaura-ción.

Las aplicaciones de las bases de datos requieren latranseformación de datos de muchos orígenes en un conjun-to cohesivo y consistente de datos configurados apro-piadamente para su uso en las operaciones de, losalmacenes de datos. SQL Server 2000 proporciona unaherramienta para tales tareas, los servicios de transfor-mación de datos (Data Transfonnation Services, DTS)".DTS puede acceder a los datos desde una amplia varie-dad de orígenes y transformarlos mediante el uso deespecificaciones de transformación incorporadas y per-sonalizadas.

Los Servicios de análisis de SQL Server proporcio-nan un rápido acceso al almacén de datos. Los datos delalmacén de datos se extraen, resumen, organizan y alma-cenan en estructuras multídímensionales para una rápi-da respuesta a consultas de usuarios finales. Los servi-cios de análisis también proporcionan una arquitecturapara el acceso a la recopilación de datos. Estos datostambién se pueden enviar al cliente en una forma mul-tídimensional orelacional.

Este apartado describe brevemente DTS y el proce-samiento en conexión-analítico (Online Analytical Pro-cessing. OLAP) de los servicios de-análisis.

.27.10.1. Servicios de transformación de datos

El almacén de datos es un enfoque para gestionar losdatos en los cuales los orígenes de datos heterogéneos(normalmente varias bases de datos OLTP) migran auna base de datos homogénea separada. Los almacenesde datos proporcionan muchos beneficios a los usuarioslogísticos. Los datos se organizan para facilitar consul-tas analíticas en lugar de procesamiento de transaccio-nes. Se pueden resolver las diferencias entre las estruc-turas de datos en varias bases de datos heterogéneas.Las reglas de transformación de datos se pueden apli-car para validar y consolidar los datos cuando éstos semueven desde la base de datos OLTP operacional alalmacén de datos. Los aspectos de seguridad y rendi-miento se pueden resolver sin requerir cambios en lossistemas de producción.

Los servicios de transformación de datos (DataTransformation Services, DTS) de SQL Server pro-

porcionan la funcionalidad para importar, exportar ytransformar los datos entre varios orígenes de datosheterogéneos de forma interactiva o automáticamentesegún una planificación regular. Se accede de formauniforme a 'todos los orígenes de datos mediante losproveedores OLE-DB. Las secuencias de órdenes (guio-nes) ejecutan tareas de transformación -enrre orígenesde datos fuente y destino. La extracción, transforma-ción y proceso de carga involucra en Iossistemas-ope-racionales la validación de los datos, migración de losdatos, normalización de los datos a un dominio comúny transformaciones de datos para asignar o resumir losvalores. Una actividad DTS se organiza en un paque-te que incluye tres componentes: (1) los objetos deconexión definen cada origen de datos OLE-DB fuen-te o destino, (2) los objetos tarea definen las accionesespecíficas a ejecutar y (3) los objetos paso deñnenla'secuencia en la cual se ejecutan las tareas. Los pasostambién definen si la ejecución de una tarea es depen-diente de los resultados de una tarea anterior. DataPump de DTS es un componente de servicio OLE-DBmultienhebrado que proporciona la infraestructura paraimportar, exportar y transformar los datos entre oríge-nes de datos OLE-DB heterogéneos. Las tareas DataPump de DTS permiten la Invocación de programas del'usuario que resuelven correspondencias complejas entrelas columnas de origen y destino mientras se transfie-ren los datos.

El procesamiento mediante una' tarea Data Pump deDTS (Figura27 .9) incluye la conexión a los objetos deconexión origen y destino, determinando las propieda-des del conjunto de filas origen (que se, construyemediante los formatos de columna de la tabla origen oel resultado de ejecutar una consulta} y pasando estainformación y una definición de todas las transforma-ciones especificadas a Data Pump de DTS. Durante laejecución, Data Pump de DTS extrae las filas del ori-gen de datos y copia las columnas origen a la columnadestino según se define en las correspondencias de trans-formación encapsuladas en las secuencias de órdenesdel modelo de objetos componentes (COM). Cada filaorigen transformada se inserta en el origen de datos des-tino OLE-DB.

666

Page 23: Microsoft  SQL

sn

"

Fuente

Paquete DTS" - - -- - - - - - - - - - - - -- --

" - - <-- _.- - -- - .'. - - - - - - --,- ".' - - - - - - - -- - - - - - - - - - - --

Fuente

• Hoja de cálculo• Campo variable• Carácter• Personalizado

Data Pump de DTS

Tarea 3

Tarea 2

Tarea 1

CAPlrULO 27 SOL SERVER DE MICROSQFT

Destino

Destino

AGURA 27.9. Dr5 accede evertos orígenes de datos mediante DLE-DB.

I J I

27.10.'2. Servicios de procesamiento cncírüccen línea

len-,e'la

aosen-lataDHparaige~DataeS delentrensfie-

Los servicios OLAP de SQL Server organizan los datosdeun almacén de datos en cubos multidimensíonalesconinformación resumida precalculada para propor-cionarrespuestas eficientes a consultas analíticas com-plejas. El objeto principal de OLAP es c,l cubo, unarepresentación multidimensional de los datos detalla-dosy resumidos. Un cubo consiste en un origen de datos,dimensiones,medidas y divisiones. Un almacén de datospuedesoportar muchos cubos distintos. Las consultasmultidimensionales en los cubos devuelven objetos detipoconjunto de datos.

los servicios OLAP proporcionan capacidades clien-tey servidor para crear y gestionar datos OLAP multi-

·ODSC• Campo fijo• carácter• Personalizado

___ J

dimensionales (Figura 27.10). Las operaciones del ser-vidor incluyen la creación de cubos de datos multidi-mensionales a partir de bases de datos de almacén dedatos relacionales y cubos almacenados en estructurasde cubo multidimensionales, en bases de datos relacio-nales, y en combinaciones de ambos. Los metadatos deestructuras cubo rnultidimensionales se almacenan enun depósito en Unabase de datos relacional. Las opera-ciones del diente son.proporcionadas por el servicio detablas dinámicas, que es un proveedor OLE-DB quesoporta OLE-DB para extensiones de la inrerfaz.Ol.AkEl servicio de tablas dinámicas es un servidor OLAP enel proceso diseñado pata proporcionar análisis de datosen conexión y sin conexión y acceso en conexión a datosOLAP. El servicio de tablas dinámicas funciona comoun cliente de los servicios OLAP.

mp deros.depieda-.struyerigen odo esta,fonna-renté Iadel ori-;olumnade trans-

o órdenesCada fila:!atQsdes~

Muchasaplicaciones se construyen actualmente comosistemasdistribuidos débilmente acoplados donde loscomponentesindividuales (frecuentemente' llamadosservicios)se combinan entre sí. Puesto que muchos deestoscomponentes se reutilizarán para otras aplicacio-res, la arquitectura necesita ser lo suficientemente fle-xiblecomo para permitir que los componentes indivi-duales se unan o abandonen el conglomeradoheterogéneo.de servicios y componentes y que cambienadiseño interno y modelos de datos sin arriesgar todala arquitectura.

XML y el soporte Web de SQL Server simplifica laconstrucciónde componentes basados en la base de

datos y los servicios que utilizan XML para la capa deintegración. Esta capa oculta la heterogeneidad entrelos componentes y proporciona el pegamento que per-mite a los componentes individuales tomar parte en elsistema débilmente integrado.

SQLServer proporciona mecanismos para producirXML a partir de datos relacionales y para consumirXML y hacerlo corresponder con datos relacionales,Junto con el componente de aCCeSOHTTPen las herra-mientas de acceso al cliente, esta posibilidad permiteque SQL Server se utilice como el proveedor de datosy los componentes consumidores de sitios y serviciosWeb.

667

Page 24: Microsoft  SQL

FUNDAMENT0l!l DE BASES DE DATOS

ROLAP

+---1HOLAP:

,"

MOLAP

Almacenamiento en disco

<-_0.'

FIGURA 27.10. Integración de un servidor OLAP y un SGSD relacional.

27.11.1. Arquit~ctura del acceso XML a SQLServer

La Figura '27.11 muestra un diagrama arquitectónico debloques de alto nivel del soporte XML de SQL Server.Puesto que las distintas aplicaciones aplican su lógicade negocios en posiblemente distintas ubicaciones, laarquitectura proporciona acceso HTTPdirecto cuandosolamente se necesita ejecutar la visualización usandoXSLT en la capa intermedia y el resto del procesamientode la lógica del negocio se puede insertar completa-mente en el cliente o en el servidor de la hase de datos.Para arquitecturas de dos capas o donde la lógica delnegocio se tiene que ejecutar en la capa intermedia seutiliza frecuentemente un acoplamiento más estrechode la lógica del negocio al acceso de la base de datospor razones de rendimiento y prográmabilidad. Por ello,todos los accesos a las características XML es a través.del proveedor SQL ÜLE-DB; esto se aplica al accesoADO y también al acceso HITP mediante la extensiónISAPI al Internet lnfonnation Server (lIS).

Existen varias formas de acceder a SQL Scrvermediante HITP. ISAPI de 'SQL 'Server está registradocon ns para gestionar los mensajes a una raíz virtualdeterminada (vroot). ISAPI recibe las solicitudes paraesa vroot particular y después de-ejecutar la autoriza-ción pasa las órdenes apropiadas a través del proveedorSQL üLE-DB a la base de datos. La raíz virtual, como

parte del URL, proporciona un mecanismo de abstrac-ción que encapsula el servidor de bases de datos al quese accede y a los ejemplares de la base de daros, losderechos de acceso y los métodos de acceso habilita-dos. Los métodos de acceso principales proporcionadospor SQL Server son el acceso con plantillas y el.acce-so a vistas XML.

Las plantillas son documentos XML que proporcio-nan una consulta parametrizada sr un mecanismo deactualización a la base de datos. Puesto que oculta laconsulta real (o actualización) del usuario proporcionael nivel de desacoplamiento que hace posible la cons-trucción de sistemas débilmente acoplados. Los ele-mentes que contienen consultas son procesados por elprocesador de plantillas y utilizados para devolver datosde, la base de datos como parte del documento XMLresultante. Los elementos no reconocidos por el proce-sador de la plantilla se devuelven sin modificar. Lasplantillas pueden contener instrucciones Transact-S'Ql.,updategrams (véase el Apartado 27.11.3), consultasXPath o una combinación de éstas.

Las vistas XML se definen anotando un documemoesquema SML con la correspondencia con las tablas ycolumnas relacionales. Las jerarquías se correspondendesde y a la base de datos utilizando una anotación derelación que expresa la reunión externa entre el padrey los hijos. Esta vista se puede entonces utilizar paraconsultar en el lenguaje de navegación de la base de

668

Page 25: Microsoft  SQL

CAPITULO 27 i.NL SERVER DE MICROSOfT

Cliente Capa intermedia SQLServerFIGURA 27.11. Visión general de la arquitectura del acceso XMl a SOl Server.

datos XPath 1.0 y para actualizarlo mediante el uso deupdategrams. Estas características XML '(así como lasconsultas XML del-servidor) también son accesiblesmediante.Stjt, OLE-DE. Puesto que los datos XML, alcontrario que los datos relacionales. no se representancomo un conjunto de tijas sino como un flujo marcadode datos, el proveedorOLE-DB de SQL Server se haextendido con una interfaz de t1ujo para exponer lQSresultados XML.

En el lado del servidor, SQL Server proporcionaextensiones a la instrucción select que' simplifica la trans-formación de datos relacionales en XML y un meca-nismo para cortar conjuntos de filas de documentosXML y por ello proporciona una vista relacional sobrelos datos XML.

27.11.2. Secuencias de resultados SQL en XML

Las personas familiarizadas con la escritura de consul-tas de selección SQL pueden necesitar poder generarXML fácilmente a partir de sus resultados de la con-sulta. Por desgracia, hay muchas formas diferentes enlas cuales se puede realizar dicha generación de XML.SQL Server por consiguiente proporciona tres modosdistintos para esto con niveles distintos de complejidady capacidad de aurcrfa Xlvll., Los tres modos se pro-porcionan mediante una nueva cláusula select denomi-nada,POR XML.

Lostres medos son: raw (sin formato), auto (auto-mático) y expticu (explícito). La siguiente instrucciónmuestra un ejemplo de una consulta en modo auto:

select Clientes.lDCliente, JDClientefrom Clientes left outer join Pedidos

on Cliéntes.IDCliente = Pedidos.IDClienteordered by Cliemes.IDClientefor XMLauto

Los tres modos asignan filas a elementos y valores'de columna a atributos. La directiva opcional elemenisen el modo aiao cambia la correspondencia de todos losvalores de columna a subelementos. Los modos raw yauto permiten la generación sencilla de XML a partirde consultas relacionales existentes. El modo explicitproporciona control completo de columnas sobre elXML generado tomando un formulario especial de unconjunto de resultados relacional (denominado forma.to de tabla universal) y transformándolo a XML. Lostres modos canalizan los datos y así se evitan construc-ciones costosas de documentos en el servidor.

27.11.3. Vistas XML de datos relacionales

El apartado anterior presentaba el enfoque centrado enSQL para generar XML. SQL Server también propor-cíorra un mecanismo. que permite la definición de vistasXML virtuales de la base de datos relacional, la cual sepuede consultar y actualizar con herramientas basadasen XML. El mecanismo central para proporcionar vis-tas XML sobre datos relacionales es el concepto deesquema anotado. Los esquemas anotados consisten enuna descripción de esquema basada en XML de la vistaXML expuesta (en el esquema del lenguaje X:ML- DataReduced o W3C XML) y en -anotaciones que describenlas correspondertcías dc las construcciones del esquemaXl\1Len las construcciones del esquema relacional. Parasirnpfiñcar la definición de las anotaciones cada esque-ma proporciona la correspondencia predeterminada si

669

Page 26: Microsoft  SQL

FUNDAMENTOS DE BASES DE DATOS

no hay presentes anotaciones. Las correspondencias pre-determinadas asignan un atributo o un subelemento nocomplejo (uno cuyo tipo de contenido es solamente tex-to) a una columna relacional con 'el mismo nombre. Elresto de elementos se corresponde con filas de una tablao vista con el mismo nombre. Las jerarquías se expre-san con anotaciones. Una herramienta visual descarga-ble denominada SQL XML View Mapper proporcionauna forma para especificar gráficamente las correspon-dencias y, por tanto. las anotaciones. El esquema anota-do no recupera en sí mismo ningún dato sino que sola-mente define una vista virtual proyectando una vistaXML en tabla.s relacionales. Se puede requerir ahora lavista en un lenguaje de, consulta XML y actualizado enun lenguaje de actualización basado en XML.

Las actualizaciones Son soportadas por los denomi-nados updategrams de XML. Los updategrams pro-porcionan una forma intuitiva de ejecutar una transfor-mación basada en el ejemplar desde un estado anteriora un estado posterior mediante el-uso de un control dela concurrencia optimista.

27.11.4. Vistas relacionales de XML

En muchos casos los datos se enviarán al servidor de labase de datos en la forma de un mensaje XML que setiene que integrar con los datos relacionales después deque .se ejecute algo de lógica.del negocio opcional sobrelos datos dentro de un procedimiento almacenado en elservidor. Esto requiere el acceso mediante programa-

ción a los datos XML desde un procedimiento almace-nado. Por desgracia, ni DOM ni SAX (véase el Capítu-lo 10) proporcionan una API adecuada para tratar unavista relacional con los datos XML; esto es, necesitapermitir al programador SQL descomponer un mensa-je XML en distintas vistas relacionales.

SQL Server proporciona mecanismo de conjuntos defilas en XML mediante el proveedor dé conjuntos defilas OpenXML. La vista del conjunto.de filas utilizauna expresión XPath (el patrón de filas), para identificarlos nodos en el árbol del documentoXlvlt.que se corres-ponderá con las filas y utiliza una expresión Xl'ath rela-tiva (el patrón de columnas) para identificar los nodosque proporcionan los valores para cada columna. El pro-veedor de conjuntos de.ñlas QpenXML puede apareceren 'cualquier lugar en una expresión SQL donde un con-junto de filas puede aparecer como un origen de datos.En panicular. puede aparecer en la clausula from decualquier selección.

Una de las ventajas de esta Al'Lorientada a conjun-tos de filas para los datos XMLes que incluye sobre elmodelo relacional existente para su uso con XML y pro-porciona un mecanismo para actualizar la base de datoscon datos en forrñato XML. El uso de.XML en conjun-ción con OpenXML permite actualizaciones multifilacon una única llamada a procedimiento .almacenado yactualizaciones sobre varias tablas mediante la explo-tación de la jerarquía XML. Además permite la fonnu-lacion de consultas que combinan las tablas existentescon los datos XML proporcionados.

SQL Server de Microsoft es un paquete completo degestión de datos que incluye servidor de base de datosrelacional, búsqueda e indexación de texto completo,importación y exportación de datos ·XML. integraciónde datos distribuidos y heterogéneos.eervidor de aná-lisis y cliente para OLAP y recopilación de datos, répli-cas entre almacenes de datos heterogéneos, un motorde transformación de datos programable y más. Por ello,SQL Server sirve como fundamento de la familia deMicrosoft de productos servidores empresariales.

Durante el tiempo en el que Microsoft ha tenido un

Las diferencias entre las varias ediciones de SQL Ser-ver se describen en Delaney [2000] y también están dis-ponibles en Web en www.microsoft.com/sq1.

En www.microsoft.com/Dowilloads/Release.asp?ReleaselD=25503 está disponible información detalla-

control total sobre el código base (después de adquirir-lo a Sybase). ha actualizado el código base e integradolas últimas investigaciones prácticas en el producto.SQL Server 2(X)()(lanzado en agosto de 2000) ha redon-deado.algunos de los grupos de características inicia-dos en versiones anteriores y agregado funcionalidadescompletamente nuevas, incluyendo soporte XML.

La versión que actualmente se está implementandoestá diseñada para aumentar la facilidad de uso del pró-dueto, facilidad de desarrollo de aplicaciones, robustez,rendimiento y dimensionabilidad.

da sobre el uso del sistema certificado e2 con SQL Ser-ver.

Elentomo de optimización de SQL Server está basa-do en el prototipo de optimizador Cascades.que Grae-fe [1995] propuso. Simmen eral. [1996] discute el esque-

610

Page 27: Microsoft  SQL

ma para reducir las' columnas de agrupación. Galindo-Legariay Joshi [2001] presentan una serie de estrategiasde ejecución que SQL Server considera durante la opti-mizacién basada en el coste. Información adicional sobreaspectos de autoajusre del servidor SQL se discuten enChaudhurí et al. [1999J. Chaudhuri y Shim !1994J y Yany Larson [1995] discuten la agregación parcial. Chat-ziantoniou y Ross [1997J y Galindo-Legaria y Joshi[2001] propusieron una. a:Itemativautilizada por SQLServerpara consultas SQL que requieren una autorreu-nión.Bajo este esquema el optimizador detecta el patróny considera la ejecución por segmentos. Pellenkoñ et al.11997]discuten el esquema de optimización para gene-rar el espacio completo. donde el optimizador utilizatransformaciones completas, locales 'j no redundantes.

cAPlrULO 21 SQL SERVER DE MICROSQfT

Gradé et al. [19981 ofrece discusiones relaciona-das con las operaciones de asociación que soportanagregación y reunión básica, con una serie de optimi-zaciones, extensiones y ajuste dinámico del sesgo dedatos. Graefe et al. [1998] presentan la idea de reuniríndices con el único propósito de ensamblar una filacon el conjunto de columnas necesarias en una con-sulta. Argumenta que esto algunas veces-es más rápi-do que explorar una tabla base. Blakeley [1996J yBlakcley y Pino [2001] discuten respecto a la comu-nicación con el motor de almacenamiento a través deOLE-DB.

La Figura 27.11" que muestra un diagrama de blo-ques de arquitectura de alto nivel del soporte XML paraSQL Server es de Rys [2001 J.

671