• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Mysql
 

Mysql

on

  • 756 views

 

Statistics

Views

Total Views
756
Views on SlideShare
756
Embed Views
0

Actions

Likes
0
Downloads
8
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Mysql Mysql Document Transcript

    • 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 IQSañ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 una herramienta de.consulta visual que permite al admi-para gestionar todos los aspectos del desarrollo de SQL nistrador de la base. de datos el uso de capacidades deServer, consulta, ajaste, verificación y administración. arrastrar y soltar para construir consultas visualmente.La mayoría de estas herramientas se centran alrededor El diseñador de bases de datos es una herramientadel Administrador corporativo de SQL Server, El admi- visual que permite al administrador de la hase de datosnistradof corporativo es un complemento accesorio de crear tablas. columnas, claves. índices, relaciones y res-Microsoft Management Console (MMC), una herra- tricciones. Con el diseñador de bases de datos, un usua-mienta que proporciona una interfaz común para traba- rio puede interactuar con los objetos de la: base-de datosjar con varias aplicaciones del servidor en una red Win- mediante diagramas de base de datos, los cuales mues-dows. tran de fonna gráfica la estructura de la base de datos. El usuario puede crear y modificar objetos que son visi-27.1.1.Desarrollo de bases de datos bles sobre diagramas (tablas, columnas, relaciones y claves) y algunos objetos que no son visibles en los dia- y herramientas visuales gramas (índices y restricciones). La Figura 27.1 mues-Mientras -se diseña una base de datos, el administrador tra el diagrama de una base de datos abierto con el Admi-de la base de datos crea objetos de bases de datos tales nistrador corporativo.como tablas, coulmnas, claves. índices; relaciones, res-rricciones y vistas. Para ayudar a crear estos objetos -el 27.1.2. Herramientas de consulta y ajusteAdministrador corporativo de SQL Server proporciona de las bases de datosacceso a herramientas visuales de bases de datos. Estasherramientas proporcionan tres mecanismos para.ayu- SQL Server proporciona herramientas para ayudar aldar al diseño de la base de datos: el diseñador de bases proceso de desarrollo de aplicaciones. Se pueden desa-de datos, el diseñador de tablas yel diseñador de vis- rrollar y verificar inicialmente las consultas y procedi-tas. Las herramientas visuales también proporcionan mientos almacenados utilizando el Analizador de CQn- 645
    • FUNDAMENTOS DE BASES DE DATOS S, E:I Raíz El-. de la consola Servidores Microsoft SQL Server 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 predeterr l·fb Tipos de datos d ¡.s¡¡ _. _. ",: Fu~ciones definí(, :.tiI Catálogos de tex , - -- fij tfj pubs 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 herramientas y soltar objetes o nombros de tablas en la tabla. Tam-básicas de consulta yajuste de las bases de datos. Se bien incluye.la herramienta de depuración de Transacr-pueden realizar otros análisis utilizando el Analizador SQL. El depurador permite a un usuario depurar pasode ~QL Server. Las recomendaciones del ajuste de índi- a paso cualquier procedimiento almacenado, .exami-ces vienen proporcionadas por una tercera herramien- nando el comportamiento de los parámetros, las varia-ta, -el Asistente de optimización de índices. bles locales y las funciones del sistema mientras se eje-o cutan estos pasos.27.1.2.1. Analizador de consultas de SQL Un administrador o desarrollador de la base de datos puede utilizar el Analizador de consultas de SQLEL Analizador de consultas. de SQL proporciona una para:interfaz 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 de Analizarconsultas: el Analizador de consultas dedatos simultánea" (una o más instalaciones de SQL Ser- SQL Server puede mostrar un plan de ejecuciónver), Un desarrollador de consultas puede elegir tener gráfico o contextual para cualquier plan de con-resultados de consulta mostrados en una ventana de tex- sultas, así como mostrar estadísticas relacionadas to o en una rejilla. El Analizador de consultas de SQL con el tiempo y recursos requeridos para ejecutar proporciona una representación gráfica de showplan, cualquier plan. los pasos elegidos por el optimizador para la ejecución Dar formato a las consultas SQL: el Analizador de de la consulta. También proporciona informes opcio- consultas permite la sangría y su eliminación en nales de los comandos reales procesados por SQL Ser- las líneas de código, cambio de la caja de las pala- ver (una traza en el cliente) y el trabajo realizado por el bras o secciones de código, comentar una única o cliente. El Analizador de consultas de SQL viene con varias líneas y mostrar las consultas ctih un códi- un explorador de objetos y permite. al usuario arrastrar go de color controlado por .el usuarió. 646
    • cAPlrULO21 S~QLSLlVER DE MJCROSCTr >»SELECT e. Le.ltName, p. ProductName, 3um (d. Quantity " d. UnitPrice) ~FROMjor cer Detailsj d JOIN OrClers o ON o.OrderID ~ d.OrderID JOIN Products p ON d.P~oduct~D p.ProductID clOIN Employee~ e PN 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 .• •-,~ ~I__ ~~ Texto de la consulca:SELECT e.LastName, p.PrQductName, 3Um(d.Quantity ~ d.UnitPricel F , S~LEC.T ; St>::eam1l.ggregat ... Sort -, ..-, Hash Match! Inne .. .pr cduct s . Pr,oduc. Costo: o.• Costo: 0% cceec . 0< Costo: 0< 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. • Utilizar plantilla> para procedimientos almacena- La Figura 27.2 muestra el Analizador de consultas mos- dos.funciones e instrucciones SQL básicas-el Ana- trando el plan de ejecución gráfico para una consulta que lizador de consultes viene con docenas de plantillas involucra una reunión de cuatrc tablas y una agregación. predefinidas para construir instrucciones LDD, y los usuarios pueden definir las suya.~ propias. Cuan- 27.1.2.2. Analizador de SQL do se ejecuta una plantilla los usuarios pueden pro- El Analizador de SQL es una utilidad gráfica que, per- porcionar valores específicos para los nombres de mite a los administradores de la base de datos supervi- objetos y columnas, tipos de datos y otra informa- sar y registrar la actividad de-la misma. El Analizador ción específica. de SQL puede mostrar toda la actividad del servidor en Arrastrar nombres de objetos desde el Explorador tiempo real o puede crear filtros que se centren en las de objetos a la ventana Consulta: el Analizador de acciones de usuarios particulares. aplicaciones o tipos consultas permite al desarrollador elegir la defini- de órdenes. El Analizador de SQL puede mostrar cual- ción de un objeto o. para tablas y vistas. ver plan- quier instrucción SQL o procedimiento almacenado tillas para crear instrucciones insert, update, dele- enviado a cualquier ejemplar de SQL Server (si los pri- te o select. -vilegios de seguridad 10 permiten] así como los datos Definir teclas de acceso directo y opciones de la de rendimiento que indican cuánto tiempo la consulta barra de herramientas personales: el Analizador de tardó en ejecutarse y cuánta: CPU y E/S rue necesaria y consultas permite definir teclas de acceso directo el plan de ejecución que utilizó 1<J onsulta. c para una ejecución rápida de consultas comunes y EJ Analizador de SQL permite ahondar aun más en proporciona un control completo sobre los coman- SQL Server para supervisarautomáticamente teda ins- dos que están disponibles corno botones en la tabla trucción ejecutada como parte de un procedimiento de herramientas y en qué posición aparecen los almacenado, toda operación de modificación de datos. botones. todo bloqueo adquirido o liberado. o cada vez que; ere- 647
    • FUNDAMENTOS DE BASES DE DATOSce un archivo de, base de datos. Hay docenas de even- requiere un conocimiento completo de cómo SQL.Ser-lOS distintos que se pueden capturar y docenas de ele- ver utiliza los índices y cómo el optimizador de con-mentos de datos que se pueden capturar para cada even- -sultas realiza sus decisiones sino cómo se utilizan real.to. SQL Server realmente divide la funcionalidad de mente los datos por las aplicaciones -Y consultastraza en dos componentes, separados aunque conecta- interactivas. El Asistente para optimización de índicesdos. El Analizador deSQL está en la traza del cliente. de SQL Server es una herramienta poderosa parad dise-Mediante el uso del Analizador de SQL un usuario pue- ño de los mejores índices basados en la consulta obser-de elegir guardar los datos capturados a un archivo o vada y cargas de actualización.una tabla, además de mostrarlos en la interfaz de usua- El asistente ajusta una única base de datos cada vezrio del Analizador (IU). El Analizador muestra todo y fundamenta sus recomendaciones sobre una carga deevento ,que cumple el criterio del filtro mientras ocurre. trabajo que puede ser un archivo de eventos de trazaUna vez que se han guardado los datos de la traza, el capturados o un archivo con instrucciones SQL. El Ana-Analizador de SQL puede leer los datos guardados para lizador de SQL está diseñado para capturar todas lasmostrarlos o analizarlos. instrucciones SQL enviadas portados los usuarios en En el lado del servidor está la traza de SQL, que un cierto periodo de tiempo. Bl asistenre puede enton-gestiona las colas de eventos generados por producto- ces examinar los patrones de acceso a los datos parares de eventos. Una hebra consumidora lee los even- todos los usuarios.aplicaciones y tablas, y realizar rece-tos desde las colasy los filtra antes de enviarlos al pro- mcndaciones razonables.ceso que las solicitó. Los eventos son la unidadprincipal dé actividad en lo que se refiere a la traza, y 27.1.3. Administrador ccrporotívc un evento puede ser cualquier cosa que suceda dentro de SQL Server de SQL Servcr o entre SQL Server y un cliente. Por ejemplo, la creación o eliminación de un objeto, la eje- Además de proporcionar acceso a las herramientas de cución de un procedimiento almacenado, la adquisi- diseño y visuales de bases de datos, el Administrador ción o liberación de un bloqueo, y el envío. de un archi- corporativo de SQL, de-fácil uso, soporta administración vo de proceso por lotes Transact-SQL desde el cliente centralizada de todos los aspectos de vanas instalacio- a SQL Server son eventos. Hay un conjunte de proce- nes de SQL Server, incluyendo la seguridad, eventos, dimientos almacenados del-sistema para definir qué alertas, programación, copias de seguridad, configura- eventos se deberían seguir, qué datos-son interesantes ción delservidor, ajuste, búsqueda de texto completo y para cada evento o dónde .guardar la información reco- réplicas. EL Administrador corporativo de SQL Server gida por los eventos. Los filtros aplicados a los even- permite aun administrador de la base de datos crear, tos pueden reducir la cantidad de información recogi- modificar y copiar esquemas y objetos de la base de datos da: -Yalmacenada. La Figura 27.3 muestra la ficha de SQL Server tales.corno tablas, vistas y desencadenado- eventos desde el cuadro de diálogo de definición de res. Debido a que se pueden organizaren grupos varias traza del Analizador dc SQL. - instilaciones de SQLServer y ser tratadas como una uni- SQL Server proporciona más de 100 eventos pre- dad, el Administrador corporativo de SQLServer pue- definidos y ua usuario puede configurar 10 eventos adi- de gestionar cientos de servidores simultáneamente. cionales, Las trazas en el lado del servidor se ejecutan Aunque se puede ejecutar .en la misma computadora deuna fonna invisible y se puede iniciar una traza de que el motor de SQL Server, el Administrador corporati- una forma automática cada vez que se inicia SQL Ser- vo de SQL Server ofrece las misma s capacidades de ges- ver. Esto garantiza que siempre se recogerá cierta infor- tión cuando se ejecuta en cualquier máquina basada. en mación crítica y se puede utilizarcorno un mecanismo Wmdows NTnooo. El Administrador corporativo de SQL útil de auditoria. SQL Server esta certificado para un Server también se ejecuta sobre Windows 98 aunque no nivel C2 de seguridad y muchos de los eventos que pue- están disponibles algunas capacidades en este entorno (es den ser objeto dé traza están disponibles exclusiva- de mención la capacidad de utilizar el Administrador de mente para soportar requisitos C2 de certificación. control de servicios, una característica de windows NT !2()(X),para iniciar y parar SQL Server de forma remo- ta). Además, la arquitectura eficiente cliente/servidor de 27.1.2.3. Asistente paro la optimización SQL Server hace práctico el uso de capacidades de acce- de índices so remoto (acceso telefónico a redes) de-Wmdows NT J2(XXl Con todas las posibles técnicas de procesamiento de la así como Windows 98 para la administración y gestión. consulta disponibles el optimizador de consultas puede El Administrador corporativo de SQL Server evita que determinar un plan de consulta razonablemente efecti- el Administrador- de la base de datos tenga que conocer vo incluso en ausencia de índices bien planeados. Sin los pasos específicos y la sintaxis para completar un tra- embargo. esto no significa que una base de datos bien bajo. Proporciona más de 20 asistentes para guiar-al admi- ajustada no se beneficie de buenos índices. El diseño de nistrador de la base de datos en el proceso de configurar los mejores índices posibles para las tablas en una base y mantener una instalación de SQL Server. La interfaz de datos grande es una tarea compleja, no solamente del Administrador corporativo.aparece.en la Figura 27.4. 648
    • cAPlrULO 27 SOl. SCRVEn m: MICROSOPT El t7-uditoría de seguridad -Audit Login Audit Logout _ Procedimientos nlmllcenadc]:; RPC:Completed, _. Sesiones A~ ~f Exisf ngConnection -o,> E TSQL .~¡¡tu).lerrin,-rs.a-Yterar,tos FIGURA 27.3. Ficha Eventos del Cuadro de diálogo Propiedades de traza.10-iasIUl-ue-lorarati-ges-a en,QL BRaíz<iolocomol. S.rvido M.iqosoll $QL.S.,v", El·e Grupo,,;" SQl Server, !"!lb PC-FERNAN [Window, NTIe no ~D Ba •• , de dOloso (es :E lJ maslo, ::E IJ modelor de Jll1mdb -_~ Base de datoslows ;fiJj Nor~ Propietario:emo- " tJ lIlI ~ ¡j 1erJ«b Fechd de <;reac:rón:or de m CJ , ••vicio. de tran.IÓlrna<:iacce- ·í CI A--;Iroción Tamaño: !±iU Duplicación ~,50ML,(2JX1J ±) CJ S"9-<idad Espacio disponible: if¡.:::J Se,.>:"" de co~,iOO. BJEJ ~eta D.laS""icei Opciones de la base de datos:laquecocer10 tra- adnll-ogurar Mantenimiento ,,:J.~--. ---- ,-__ o • _nerfaza 27.4. FIGURA27.4. Interfaz de! Administrador corporativo de SOL Server. 64.
    • FUNDAMENTOS DE BASESDE DATOSTransact-SQl, es el lenguaje de bases de datos soporta- nas sql_variant. La función del sistema sqlvariam.pro-do por SQL Server. Transact-SQL es un lenguaje com- perty puede devolver detalles sobre los datos realespleto de programación de bases de datos que incluye almacenados en una columna de tipo sql_variant, inclu-instrucciones de definición y manipulación de datos. yendo el tipo base e información del tamaño.instrucciones iterativas y condicionales, variables, pro-cedimientos y funciones. Transact-SQL cumple el nivel 27.2.1.2. Tipo Tab1ede entrada de la norma SQL-92 pero también soporta Table es un tipo que permite a una variableguardar unvarias características desde los niveles intermedios y conjunto de filas; Este tipo se utiliza principalmente parasuperiores. Transact-SQL también soporta extensiones especificar el tipo devuelto por las funciones que devuel-a la norma SQL-92. ven tabla. Una variable table se comporta como una variable local. Tiene un ámbito bien definido, que es la27.2.1. Tipos de datos función, procedimiento almacenado. o proceso por lotes en el cual se declara ..Dentro de este ámbito se puedeSQL Server proporciona un conjunto de tipos de datos utilizar una variable lable como una tabla nonna!. Seprimitivos que definen todos los tipos de datos que se puede aplicar en cualquier lugar donde se utiliza unapueden utilizar con SQL Server. El conjunto de tipos de, tabla o expresión de tabla en instrucciones select.Insert,datos primitivos incluyen: update y,delete. Las variables table se limpian automáticamente al • Un conjunto completo de tipos de enteros con sig- final de la función, procedimiento almacenado o pro- no con 1,2,4 Y8 bytes de precisión (tinyint. sma- ceso por lotes en el cual se definen. Además, las varia- llint. int y bigint) . bles table utilizadas en procedimientos almacenados • Un tipo de datos bit con valoresO 0,_ I (bit) resultan en menos recompilaciones de estos procedi- • Tipo decimal con 38 dígitos de precisión (decimal, mientos que cuando se utilizan las tablas temporales. nunieric) Las transacciones que involucran las variables table Tipos de moneda con precisión de 1/l 000 de la duran solamente en la actualización de la variable table unidad monetaria (money.smallmoney) por lo que las variables rable requieren menos: recursos de bloqueos y de registro histórico. • Tiposde fecha-y hora con una precisión de hasta 3.33 milisegundos (datetime, small-datetime) 27.2.2. Funciones definidas por el usuario • Tipos en coma flotante de precisión sencilla y doble (real, ñoat) Las funciones definidas por el usuario permite a los mis- Tipos, de cadenas de caracteres de tamaño fijo y mos definir sus propias funciones Transact-SQL median- variable de hasta 2°_1 caracteres, Unicode y no te el uso de la instrucción create function. SQL Servcr Unicode (char/nchar, varchar/nvarchar, text/ntext) soporta las funciones que devuelven un tipo escalar o • Cadenas de bytes de tamaño fijo y variable de has- una tabla. Las funciones escalares se pueden utilizar en ta 21_1 bytes (binary, varbinaiy, image) cualquier expresión escalar dentro de una instrucción LMD o LDD de SQL. Las funciones que devuelven Un tipo cursor que pennite referencias a un obje- tablas se pueden utilizar en cualquier lugar donde se to cursor (cursor) permita una tabla el] una instrucción select. Las fun- • Tipos de datos de identificadores únicos globales cienes que devuelven una tabla cuyo cuerpo contiene y para la base de datos una única instrucción SQL select se tratan como una vista (entre líneas expandida) en la consulta que hace Además. SQL Server soporta los tipos sql_variant y referencia a la función. Puesto, que las funciones que table descritos en los apartados 27.2.1.1 y 27.2.1.2. devuelven una tabla permiten la introducción de argu- mentos, las funciones entre líneas que devuelven tablas 27.2.1.1. TIpo Variant se pueden considerar vistas paramctrizadas. Sql_variant es un tipo de datos escalar que permite a una columna de una fila, variable o argumento de fun- 27.2.3. Vistas ción contener valores de cualquier tipo escalar SQL (excepto text, ntext, image, rowversion y sql_variant). Una vista es una tabla virtual cuyos contenidos están Es utilizado por aplicaciones que necesitan almacenar definidos por una instrucción select. Las vistas son un datos-cuyo tipo no se puede conocer cuando se definen poderoso mecanismo de modelado de datos y seguri- los datos. Internamente el sistema guarda el tipo origi- dad. Las vistas indexadas (Apartado 27.2.3.1) también nal de datos. Es posible filtrar, reunir y. ordenar colum- pueden proporcionar un beneficio sustancial en el ren- .so
    • CAPITULO 21 SOL SUihR D~ MICROSOfT ctimiento. Las tablas referenciadas por la definición de vista. Las instrucciones de actualización de las tablas base la vista se conocen como tablas base. En el ejemplo que se propagan autométicamente a los índices de la vista . sigue, vtstauuúos es una vista que selecciona los datos desde tres tablas base: título, auiortiudo y títulos. Es41s 27.2.3.2. Vistas divididas tablas son parte de la base de datos ejemplo pubs inclui- da con SQL Server. Las vistas divididas se, utilizan para dividir los datos entre varias tablas, bases de datos o ejemplares de SQL create view vistatítulos as Server con el fin de distribuir la carga de trabajo. Si los select título, auord, au_nombre, precio, ventas, datos se dividen entre varios servidores, se pueden pro- ideditorial porcionar los mismos beneficios en el rendimiento que from autores as a joln autonítulo as al 00 (a.au_id un agrupamiento de servidores y se puede utilizar para = at.au_id) soportar las necesidades de procesamiento de los mayo- join títulos as t 00 (t.títulojd e at.títulojd) res sitios Web o centros de datos corporativos. Una tabla base se puede dividir-en varias tablas miembro, cada Se puede hacer referencia a la vista vistatiudas en una de las cuales tiene un subconjunto de filas de la tabla. instrucciones de la misma forma a corno se haría con original. Cada servidor debe tener definición de la tabla. una tabla base: dividida. Una vista dividida utiliza el operador unión para combinar todas las divisiones en las tablas base en select " un único conjunto de resultados que se comporta exac- Irom visrantulos tamente como una copia de la tabla original completa. where precio >= 30 Por ejemplo, una tabla de clientes se puede dividir entre tres servidores. Cada servidor debe tener una división Una vista puede hacer referencia a otras vistas. Por de la tabla base disjunta como sigue: ejemplo vístautulos presenta información que es útil para administradores, pero las empresas normalmente • En Servidor 1: revelan sus datos de venta sólo en los informes trimes- create rabie Cliente_33 e trales o anuales. Se puede construir una vista que selec- IDCliente integer primary key cione todas las columnas de vistatítulos excepto au_ord check (IDCliente between 1 ande y ventas. Esta nueva vista puede ser utilizada por los 32999),e clientes para obtener listas de los libros disponibles sin Otras definiciones de columna) ver la información financiera: En Servidor2: create table Cliente_66.( create vlew Cust vistatítulos as IDCliente integer primary key select título. aunombre.precio, id_editorial check (IDCliente between 33000 and from vistatítulos .65999),s- ... Otras definiciones de columna)o- Las consultas que emplean las vistas se optimizan • En Servidor3:"o expandiendo la definición de la vista en la consulta (en otras palabras. el optimizador basado en el coste opti- create reble Cliente_99 ( IDCliente integer primary key0 miza toda la consulta como si se hubiera realizado sin check (IDClientebetween 66000 and5n el uso de vistas).en 99999),se ... Otras definiciones de columna) 27.2.,3.1. Vistas indexadas .m- Además de las vistas tradicionales como se definieron en Después de crear las tablas miembro, el administra-:ne la norma ANSI de SQL. SQL Server soporta las vistas dor de la base de datos define una vista dividida distri-m indexadas (materializadas). Las vistas indexadas pueden buida en cada servidor, cada vista teniendo el mismosce mejorar sustancialmente el rendimiento de las consultas nombre. La vista dividida distribuida para Servidorl sejue complejas de ayuda a la toma de decisiones que recupe- definiría como sigue:gu- Tan un gran número de filas y agregan grandes cantida-ilas des de información en sumas recuentos y medias. SQL create view Clientes as Server soporta la creación de índices agrupados en una select :1< Irom Baseüeüatos.PropictarioIabla. vista y subsecuentemente cualquier número de índices Clientes_33 no agrupados. Una vez que se indexa una vista, el opti- union all mizador puede utilizar sus índices en consultas que hacen select :1< from Server2.BaseDeDatos.Propietariostan referencia a la vista o sus tablas base. Las consultas exis- Tabla.Clientes_66o un tentes se pueden beneficiar de la eficiencia mejorada de union allmri- la recuperación de los datos directamente de la viS14inde- select :1< Irom Serverá.BasefteDatos.Propjetariobién xada sin tener que ser reescrita para hacer- referencia a la Tabla.Clientes_99ren- 651
    • FUNDAMENTOS DE BASES DE DATOS Sobre-Serverz y Server3 se definirían vistas similares. un desencadenador instead (Apartado 27.2.4) definido El hecho de tener la vista definida sobre cada servi- para la operación. Los desencadenadores insert para las dor permite a las consultas que hacen referencia al nom- operaciones ínsert, update o delete se pueden definir bre de la vista dividida y distribuida ejecutarse en cada en una vista para especifiear las actualizaciones que se uno delos servidores miembro. El sistema opera como deben ejecutar en las tablas base para implementar las si en cada servidor miembro hubiera una copia com- modificaciones correspondientes en la vista. pleta de la tabla original, aunque cada servidor tenga solamente una tabla miembro local y. una vista dividi- 27.2.4. Desencadenadores (disparadores) da y distribuida que referencia a la tabla local y las dos tablas remotas. La ubicación de los datos es transpa- Los desencadenadores son procedimientos Transact- rente a la aplicación. Con estas tres vistas, cualquier ins- SQL que se ejecutan automáticamente cuando se envía trucción Transact-Sfjl. sobre cualquiera de los tres ser- una instrucción update, insert o delete a una tabla base -vidores que haga referencia a Clientes verá los mismos o vista. Los desencadenadores son un mecanismo que resultados que desde la tabla original. Se puede acce- posibilita la aplicación de la lógica del negocio de for- der a las vistas divididas no solamente mediante, ins- ma automátiea cuando. se modifican los datos. Los trucciones select sino también mediante instrucciones desencadenadores pueden extender la lógica de verifi- insert. update y delete, incluyendo instrucciones que cación de la integridad de restricciones declarativas, afectan a varias divisiones e incluso aquellas que requie- predeterminadas y reglas" aunque las restricciones decla- ren trasladar filas de una división a otra. rativas se deberían utilizar preferentemente siempre que se satisfagan las necesidades. 27.2.3.3. Vistas actualizables Hay dos clases generales de desencadenadores que difieren en el tiempo con respecto a la instrucción de Generalmente las vistas puede ser el objetivo de las ins- desencadenamiento, bajo la que se realiza la acción. Los trucciones update, delete o insert si la modificación de desencadenadores after se ejecutan después de la ins- los datos se aplica a solamente una de las tablas base de la vista. Las actualizaciones de las vistas divididas trucción de desencadenamiento y se aplican posterio- res restricciones declarativas. Los desencadenadores se pueden propagar a varias tablas base. Por ejemplo, instead se ejecutan en lugar de la acción de desenca- la siguiente instrucción update incrementará los-pre- denamiento. Los desencadenadores instead son simi- cios pata el editor «0736>:· en un 10 por ciento. lares a los desencadenadores befure, pero realmente update vistatítulos reemplazan la acción de desencadenamiento. En SQL set precio = precio * 1.10 Server los deseñcadenadores añer se pueden definir where ideditorial = 0736 solamente sobre, tablas base mientras que los desenca- denadores instead se pueden definir sobre tablas base•1, Para las modificaciones de los datos que afectan a o vistas. Los desencadenadores lnstead permiten que más de una tabla base, la vista se puede actualizar si hay se pueda actualizar prácticamente cualquier vista. En SQL Server una base de datos se refiere a una coleo- vos conocido corno el grupo de archivos primario. Este ción de archivos que contienen datos y que son soporta- grupo de archivos contiene todos Los metadatosde la dos por un único registro histórico de transacciones. La base de datos en tablas del sistema. El grupo de archi- base de datos es la unidad principal de administración en vos primario también puede contener datos de usuario. SQL Server y también proporeiona un contenedor para Si se crean grupos de archivos definidos por el usua- estructuras físicas tales Como tablas e índices y para rio adicionales, un usuario puede controlar de forma estructuras lógicas tales como restricciones, vistas, etc. explícita la ubicación de las tablas individuales, índices o las columnas de objetos grandes de una tabla ubicán- dolas en un grupo de archivos. Por ejemplo, el usuario 27.3.1. Grupos de archivos puede elegir almacenar una tabla en el grupodearchi- Con el fin de gestionar el espacio en una base de datos vosA, su índice no agrupado en grupodearchivosb y las de forma efectiva" el coqjuruo de archivos, en una base eolumnas de objetos grandes de la tabla en grupodear- de datos se divide en grupos denominados grupos de chivase. La ubicación de estás tablas e índices en dis- archivos (filegroups). Cada grupo de archivos contiene tintos grupos de archivos permite al usuario controlar uno o más archivos del sistema operativo. el uso de los recursos de hardware (esto es, discos y el Toda base de datos tiene-al menos un grupo de archi- subsistema E/S). Uh grupo de archivos en concreto se 652,
    • CAPiTULO 27 SOL SERVER DE MICROS9FT considera siempre el grupo de archivos predetermina- mite a los archivos disminuir. Con el fin de disminuir un.do; inicialmente, el grupo de archivos predeterminado archivo de datos, SQL Server traslada 1:0005los datos des- es el grupo de archivos primario, pero se puede dar a: de el fin físico del archivo a un punto más cercano al ini- cualquier grupo de archivos definido por el usuario la cio del archivo y entonces realmente reduce el archivo, propiedad de.determínado. Si una tabla o índice no está devolviendo el espacio al sistema operativo; ubicada específicamente en un grupo de archivos, se crea en el grupo de archivos predeterminado. 27.3.3. Tablas27.3.2. Administración del espacio en grupos SQL Server soporta dos organizaciones diferentes para las tablas: montículos e índices agrupados. En una tabla de archivos organizada en montículos la ubicación de cada fila deUno de los muchos propósitos principales es permitir la tabla se determina completamente mediante el siste-una gestión de espacio efectiva. Todos los archivos de ma y. no es especificada de ninguna forma por el usua-datos se dividen en unidades de 8 Kbytes de espacio fijo rio. Las filas de un. montículo tienen un identificadordenominadas páginas. El sistema de asignación es res- fijo como identificador de fila (RlD, Row ldentifier) yponsable de asignar estas páginas a tablas e Jndices. El su valor nunca cambia a no ser que se reduzca el archi-objetivo del sisterna de asignación es minimizar la can- vo y la fila se traslade. Si la fila se torna lo suficiente-tidad de espacio malgastado mientras que, al mismo mente grande para no caber en la página en la que setiempo, mantener el nivel de fragmentación de la base insertó originalmente, el registro se mueve a un lugarde datos en el mínimo pata as<:;gurar un buen rendi- distinto, pero se deja un resguardo en la ubicación ori-miento de exploración. Con el fin de lograr este objeti- ginal de forma que el registro todavía se puede encon-vo el administrador de asignación normalmente asigna trar utilizando su RID original.y desasigna todas las páginas en unidades de ocho pági- En una organización agrupada por índices para una Inas contiguas denominadas extensiones. El sistema de asignación gestiona estas extensiones tabla, las filas de la tabla se almacenan en un árbol B+ ordenado mediante la clave de agrupamiento del índice. imediante 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 de La clave de índice agrupado también sirve coma el iden- tificador único para cada fila. La clave para un índice agrupado se puede definir como no único, en cuyo caso SQL Server agrega una columna oculta adicional para hacer la clave única. El índice agrupado también sirve Iusar mapas de bits basados en la asignación para la como una estructura de búsqueda para identificar unaexploración es que permiten recorridos en e1 orden del fila de la tabla en una clave particular o explorar un con-disco de todas las extensiones que pertenecen a una tabla junto de filas de la tabla con claves con un cierto rango.o 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 se 27.3.4. índices 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ás ¡ 1rellena con la proporción de la cantidad de espacio libre columnas de la tabla base. Permiten acceso eficiente deen ese archivo comparado con otros archivos. Esto lle- una fila de una tabla base basada en un criterio de bús- na todos los archivos de un grupo de archivos aproxi- queda sobre las columnas indexadas. Además, las con- madamente con el mismo factor y permite al sistema sultas que se refieren solamente a la>columnas que, están utilizar todos los archivos en un grupo de archivos de disponibles mediante índices secundarios se procesan forma equitativa. Durante una exploración que utiliza mediante la recuperación de las páginas desde el nivel los mapas de bits de asignación, el algoritmo de explo- hoja de los índices sin tener que.recuperar los datos del ración aprovecha los distintos archivos enviando E/S índice agrupado o montículo. separadas a cada uno de los archivos. SQL Server soporta la adición de columnas calcula- Una de las mayores decisiones al configurar una base das a una tabla. Una columna calculada es una colum- de datos es determinar su tamaño. SQL Server permité.a na cuyo valor es una expresión, normalmerue basada en los archivos de datos cambiar su tamaño después de crear el valor de otras columnas en esa fila. SQL Server per- la base de datos. El usuario puede incluso elegir hacer mite al usuario construiríndices secundarios sobre co- que el archivo de datos crezca automáticamente si la base lumnas calculadas. de datos se queda sin espacio. Parella, el usuario puede configurar la base, de datos a una aproximación razona- 27.3.5. Explonrcíones y lectura anticipada ble del tamaño esperado, pero hace que los archivos de la base de datos crezcan y se ajust.en al patrón de uso, si La ejecución de las consultas en SQL Server pueden la aproximación inicial no es correcta. SQL Server per- .¡ involucrar una serie de distintos modos de exploración 653
    • FUNDAMENTOS DE BASES DE DATOSde las tablas e índices subyacentes. Éstos incluyen explo- co. El algoritmo de lectura anticipada de SQL Server uti-raciones ordenadas y desordenadas, exploraciones en liza el conocimiento del plan de ejecución de la consul-serie y paralelas, unidireccionales y bidireccionales, ta con el fin de. conducir la lectura anticipada y asegu-hacia delante-y hacia arras, y exploración de toda la tabla rarse de que solamente se leen los datos que son realmenteo índice y-exploraciones de rango o filtradas. necesarios. Además, la cantidad de lectura anticipada se Cada uno de los modos de exploración tiene un meca- dimensiona de forma automática según el tamaño de lanismo de lectura anticipada que intenta anticiparse a las memoria intermedia. la cantidad de E/S que el subsiste-necesidades del plan de ejecución con el fin de-reducir la ma del disco puede sostener y la velocidad a la que ellatencia y gastos y utilizar el tiempo sin trabajo del dis- plan de ejecución puede consumir los datos.El procesador de consultas de SQL Server está basado en Optimización basada en el coste. El optimizadorun entorno extensible que permite una rápida incorpora- aplica la exploración e implementación de reglasción de nuevas técnicas de ejecución y optimización. La para generar alternativas, estimar el coste de la eje-ejecución encapsula los algoritmos de procesamiento de cución y elegir el plan con el coste anticipado másdatos en iteradores que se comunican entre sí utilizando bajo. Las reglas de exploración implementan lala interfaz Getlcextkowü. La optimización genera alter- reordenación de operadores, incluyendo reorde-nativas utilizando transformaciones en árbol y estima el nación de la reunión y de la agregación. Las reglascoste de ejecución utilizando modelos detallados del com- de implementación introducen alternativas en laportamiento de las selectividades e iteradores. ejecución tales como reuniones por mezcla y reu- mones por asociación.27.4.1. Visión general de los procesos • Preparación del plan. El optimizador crea estruc- de optimizaCión turas del plan de ejecución para el plan seleccio- nado.-Las consultas complejas presentan oportunidades signi- ficativas de optimización que requieren la ordenación de La optimización basada en el coste no se divide en los bloques de consulta, con selección del pla-n basado fases que optimizandistintos aspectos de la consulta de en el coste estimado. SQL Server utiliza unenromo pura- forma independiente y no está restringida a una única mente algebraico. El entorno de optimización de SQL dimensión tal como la enumeración de reuniones. EnServer se basa en el prototipo de optimizador Cascades. su lugar una colección de reglas de transformación defi- Una instrucción SQL se compila como sigue: ne el espacio de: interés y la estimación del coste se uti- liza uniformemente para seleccionar un plan eficiente. Análisis/vinculación. El optimizador analiza la instrucción y resuelve los nombres de tablas y 27.4.2. Simplificación de la consulta columnas mediante el uso de catálogos. Resuelve e incorpora vistas para generar un árbol de opera- Durante la simplificación, el optimizador envía las selec- dores. Verifica la caché del procedimiento para ver ciones del árbol de operadores tan abajo como sea posi- si ya hay un plan para la consulta, en cuyo caso se ble. Verifica los predicados en busca de contradiccio- evita la optimización. El árbol de operadores uti- nes teniendo en cuenta las restricciones declaradas. liza un álgebra relacional extendida donde no hay Utiliza las contradicciones para identificar subexpre- noción de bloque de consulta o tabla derivada sino -siones vacías, que se eliminan del árbol. Un escenario simplemente una combinación arbitraria de ope- común es la eliminación de ramas union que recuperan radores relacionales. les datos de las tablas con distintas restricciones . • SimplifiCación/normalización. El optimizador apli- Una serie de reglas de simplificación son depen- ca reglas de simplificación sobre.el árbol de opera- dientes del contexto, es decir, la sustitución solamente dores para obtener un formulario normal y simpli- es válida en el contexto de la utilización de la subex- ficado. Estas reglas implementan transformaciones presión. Por ejemplo.una reunión externa se puede sim- tales como enviar las selecciones hacia abajo y la plificar en una reunión interna si una operación de fil- simplificación de reuniones extemasen reuniones. trado posterior elimina reglas no coincidentes que se Durante la simplificación. el optimizador detenni- rellenaron con null. Otro ejemplo es la eliminación de na y carga las estadísticas requeridas para la reuniones sobre claves externas que no se necesitan eje- estimación de la cardinalidad. Si-se pierden las esta- cutar si no hay uso posterior de las columnas desde la dísticas requeridas, el optimizador las crea auto- tabla referenciada. Un tercer ejemplo es el contexto de máticamente antes de continuar la optimización. independencia de duplicados, que especifica que la dis- 654
    • CAPITULO 27 SOL SERVER DE MICROSOFT tribución de una o más copias de una fila no afecta al Algunas aplicaciones seleccionan filas según el resul- resultado de la consulta. Las subexpresiones bajo semi- tado de algún agregado para su grupo. Por ejemplo rreuniones y bajo distinct son independientes de dupli- «Hallar los clientes cuyo saldo es mayor que el doble de cados, lo que permite cambiar union a union all. la media para su segmento de mercado». La formulación Para agrupar una agregación se utiliza el operador SQL requiere una autorreunién. Durante la exploración GbAgg, que crea grupos y opcionalmente aplica una fun- se detecta este patrón y se considera la ejecución por seg- ción de agregado sobre cada grupo. La eliminación de mentos como una alternativa a la autorreunión. La utili- duplicados, expresado en SQL mediante la palabra cla- zación de la vista materializada también se considera ve distinct es sencillamente unDhAgg sin funciones de durante la optimización basada en el coste. El encaje de agregado a calcular. Durante la simplificación. la infor- vistas interactúa con la ordenación de operadores, en la mación sobre las claves y dependencias. funcionales se que el uso puede que no sea aparente hasta que se reali- utiliza para reducir el agrupamiento de columnas. ce otra reordenación, Cuando se encuentra que una vista Las subconsultas se normalizan eliminando especi- se ajusta a alguna subexpresión, la tabla que contiene el ficaciones de consulta correlacionadas y utilizando algu- resultado; de la vista se agrega como alternativa a la expre- nas variantes dé la reunión en su lugar. La eliminación sión correspondiente. Dependiendo de la distribución de de correlaciones no es una «estrategia de ejecución de datos e índices disponibles puede ser mejor o no que la subconsultas» sino simplemente un paso de normaliza- expresión original (la selección se realizará basándose ción. Se consideran entonces una serie de estrategias de en la estimación del coste). ejecución consideradas durante la optimización basada Para estimar el coste d~ ejecución del plan, el mode- en el coste. lo tiene en cuenta el número de filas que se esperan pro- cesar, denominado el objetivo filas, así como el núme- 27.4.3. Reordenación y optimización basada ro de veces que se ejecuta-una subexpresión. El objetivo en el coste filas puede ser menor que la estimación de la cardina- lidad en casos tales como Apptytsemijoin. Appíytsemi- En SQL Server las transformaciones se integran com- join devuelve la fila t de Ttan pronto como E(t) produ- pletamente en la generación basada en el coste y selec- ce una única fila (es decir. comprueba E(t)). Por tanto, ción de planes de ejecución. Además dé la reordenación el objetivo filas de la salida de ECO es 1, y los objetivos de la reunión interna; el optimizador de consultas emplea filas de los subárboles de E(t) se calculan para E(t) para transformaciones de reordenación para los operadores esre objetivo y se usan para la estimación del coste. reunión externa, semirreunión y antisemirreuníon del, álgebra relacional estándar (con duplicados, para SQL). GbAgg se reordena también. trasladándolo debajo de 27.4.4. Planes de actualizaciónt las reuniones siempre que sea posible. La agregación Los planes de actualizaoíón optimizan el mantenimien- parcial. esto es. la introducción de un nuevo "GhAgg con to de índices, verifican las restricciones. aplican accio- agrupación sobre un superconjunto de las columnas de nes en cascada y mantienen las vistas materializadas. un GhAgg que se encuentre más arriba. se considera Para el mantenimiento de los índices, en lugar de tomar debajo de las reuniones y union all y también en pia- cada fila y mantener todos sus índices los planes de actua- nes paralelos. Véanse las referencias dadas en las notas lización aplicanmOdlficaciones por índice, ordenamiento bibliográficas para más detalles. de filas y aplican la operación de actualización según el;- La ejecución correlacionada se considera durante la orden de la clave. Esto minimiza las operaciones EISi~ exploración del plan¡ el caso más simple es una reuniónj- aleatorias. especialmente cuando el número de filas a de búsqueda en el índice. SQL Server modela.esto utili- optimizar es grande. Las restricciones se manejan cons. zando Apply, que opera sobre una tabla T y una expre- un operador assert, que ejecutan un predicado y envían sión relacional parametrizada E(t). APp/y ejecuta E pata un error si el resultado es false. Las restricciones de inte-io cada fila de T, que proporciona los valores de los pará-m gridad referencial se definen mediante predicados exlst. metros. La ejecución correlacionada se considera como los cuales se convierten en semirreuniones y se optimi- una alternativa a la ejecución. sin considerar el uso de las zan considerando todos los algoritmos de ejecución.n- subconsultas en la,formulacíónSrjt, original. Es una estra-ue El problema Halloween se soluciona utilizando elec- tegia muy eficiente cuando latabla T es muy pequeña y ciones basadas en el coste. El problema Halloween sex- los índices soportan la ejecución parametrizada eficien-n- refiere a la siguiente anormalídad: supongamos que se te de,E(t). Además se considera la reducción del núme- lee en orden ascendente un índice sueldo y los salarios11- ro de ejecuciones de E(tJ donde hay valores de paráme-se se suben un 10 por ciento. Como resultado de la actuali- tros duplicados mediante dos técnicas: ordenar T según zación, las filas se moverán hacia arriba en el índice y se de los valores de los parámetros de forma que se reutiliceje- volverán a encontrar y actualizar de nuevo, llevándonos unúnico resultado de E(t) mientras que el valor del pará- a un bucle infinito. Una forma de solventar este proble-da metro no Cambia, o también utilizar .una tabla de asocia- de ma es separar el procesamiento de dos fases: en primer ción que siga la pista del resultado de E(t) para (algún lugar se leen todas las tilas que Se actualizarán y se hacelis- subconjunto) de valores anteriores del parámetro. una copia de ellas en algún lugar temporal, después Se 655
    • ¡FUNDAMENTOS DE BASES DE DATOS ¡ leen de este lugar y se.aplican todas las actualizaciones. mitido agregar nuevas heurísticas fácilmente a lo largo Otra alternativa es leer desde un índice distinto donde las del tiempo, sin comprometer la selección basada en el filas no se trasladarán. como resultado de la actualización. coste de los planes o la exploración exhaustiva del espa- Algunos planes de ejecución proporcionan la separación cio de búsqueda, cuando es apropiado. de las fases de forma automática, si se ordena o constru- ye una tabla de asociación en las filas a actualizar. En el 27.4.6. Ejecución de la consulta optimizador de SQL Server la protección Halloween se modela como una propiedad de los planes. Se generan Los algoritmos de ejecución soportan el procesamientovarios planes que proporcionan la propiedad requerida y basado en la ordenación y basado en la asociación, y sus se selecciona uno según el coste de ejecución estimado. estructuras de datos se diseñan para optimizar el uso de la caché del procesador. Las operaciones de asociación soportan agregación y reunión básica, con una serie de27.4.5. Búsqueda parcial y heurísticas optimizaciones, extensiones y ajuste dinámico del ses-Los optimizadores basados en el coste se enfrentan al go de datos. La operaciónjiuw-distinctes una varianteproblema de la explosión del espacio de búsqueda pues- de asociación con valores distintos (hash distinct). don-to que.las aplicaciones emiten consultas que involucran de las filas se devuelven tan pronto como se encuentradocenas de tablas. Para solucionar esto, SQL Server uti- un nuevo valor distinto, en lugar de esperar a procesarliza varios estados de optimización, cada uno de los cua- toda la entrada. Este.operador es efectivo para consul-les utiliza transformaciones de la consulta para explo- tas que utilizan distinct Y solicita solamente unas pocasrar regiones sucesivamente mayores del espacio de, filas. como con la constructora top n. Los planes corre-búsqueda. lacionados la ejecución de E(t)"a menudo incluyendo Hay transformaciones simples y completas diseñadas varias búsquedas en el índice. basadas en el parámetropara la optimización exhaustiva, así como transforma- para cada fila I de la tabla: T. La preextracción asíncro-ciones inteligentes que implementan varias heurísticas. na permite la:emisión de varias solicitudes de búsquedaLas transformaciones inteligentes generan planes que en el índice al motor de almacenamiento. Se implemen-están muy lejos en el espacio de búsqueda, mientras que ta de la siguiente forma: se hace una solicitud de bús-las transformaciones sencillas exploran las cercanías. Los queda en el índice sin bloqueo para una filas de T, enton-estados de, optimización aplican una mezcla de ambas ces 1 se sitúa en una cola de preextracción. Se sacan lasclases de optimización, en primer lugar enfatizando en filas de la cola y son utilizadas por Apply para ejecutarlas transformaciones inteligentes y posteriormente cam- E(i). La ejecución de E(t) no requiere que los datos yabiando a transformaciones sencillas, Se, preservan los estén listos en la memoria intermedia, pero tener buenasresultados óptimos en los subárboles. de forma que los operaciones de preextracción maximiza la utilizaciónestados posteriores se pueden beneficiar de los resulta- del hardware e incrementa el rendimiento. El tamaño dedos generados con anterioridad. Cada estado necesita la cola se determina dinámicamente como una funciónequilibrar técnicas de generación de planes opuestas: de aciertos en caché. Si no se requiere ninguna ordena- ción.dc las filas de salida de Apply; las, filas de esta cola • Generación exhaustiva de alternativas: para se pueden descartar para minimizar la espera en la E/S. generar el espacio completo el optimizador debe- La ejecución en paralelo se implementa mediante el ría utilizar transformaciones completas; locales, operador Iixchange, que gestiona varias hebras, parti- no redundantes (una regla de transformación equi- ciones o datos de difusión y alimenta los datos a varios valente a una secuencia de más transformaciones proceses. El optimizador de consultas decide la ubica- primitivas solamente introduce costes adiciona- ción dé Exchange según el coste estimado. El grado de les). paralelismo se determina dinámicamente en tiempo de • Generación heurfstica de candidatos: una serie ejecución, según la utilización actual del sistema . de candidatos interesantes (seleccionados según el Los planes de índices están formados de los trozos coste estimado) probablemente están lejos en tér- descritos anteriormente. Por ejemplo, se considera el minos de reglas de transformación primitivas. Aquí uso de una reunión de índices para resolver las conjun- las transformaciones deseadas son incompletas, ciones de predicados (o unión de índices para las dis- globales y redundantes. yunciones), basándose en el coste. Dicha reunión se pue- de realizar en paralelo, utilizando cualquiera de los La optimización se puede terminar en cualquier pun- algoritmos de reunión del servidor. También se consi- to después de que el primer plan se haya generado. Tal deran reuniones de índices para el único propósito de terminación se basa en el coste estimado del mejor plan ensamblar una fila con el conjunto de columnas nece- encontrado y el tiempo gastado ya-en la optimización. sario en una consulta, que es algunas veces más rápido Por ejemplo, si una consulta requiere solamente mirar que explorar una tabla base. Tomar identificadores de unas pocas filas en algunos índices, se producirá rápi- registros de un índice secundario y localizar la fila damente un plan muy barato en los primeros estados, correspondiente de la tabla base es efectivamente equi- terminando la optimización. Este enfoque nos ha per- valente a ejecutar una reunión de búsqueda en índice. 656
    • cAPlrULO 21 SQL SC)1VCPDE MIC;;EOSOFT Para ello se usan las técnicas genéricas de-ejecución tas distribuidas y remotas, que, las maneja directamen- correlacionada como la preextracción asfncrcna. te el procesador de consultas. Los proveedores de datos La comunicación con el motor de almacenamiento se clasifican según el rango de funcionalidad que pro- se realiza mediante OLE-DR, lo que permite acceder a porcionan, desde simples proveedores de conjuntos de otros proveedores de datos que implementan esta inter- filas sin capacidades de indexación a proveedores con faz. OLE-OB es un mecanismo utilizado para consul- soporte completo de SQL. Los subsistemas de transacciones, registro histórico, instrucción falla.se puede retroceder sin tener que retro- bloqueos y recuperación aseguran las propiedades AClD ceder loda la transacción. Un punto de almacenamien- esperadas de un sistema de bases de datos. to con nombre es· una instrucción save transaction enviada por una aplicación que etiqueta un punto en la 27.5.1.Transacciones transacción. Se puede enviar una instrucción rollback posterior para retroceder hasta el punto con nombre. En SQL Server todas las instrucciones son atómicas y Un retroceso a un punto de almacenamiento no libera las-aplicaciones pueden especificar varios niveles de bloqueos y no se puede utilizar en transacciones dis- aislamiento ,para cada instrucción. Las.transacciones se tribuidas. utilizan para encuadrar una secuencia de instrucciones" haciendo el conjunto completo atómico y controlando 27.5.1.2. Opciones de concurrencia su aislamiento desde otras transacciones. Una única tran- para cctuctrscctcnes sacción puede incluir instrucciones que no solamente SQLServer ofrece control de concurrencia optimista y seleccionan, insertan, borrar o actualizan registros, sino pesimista para las operaciones de actualización. que también crean o eliminan tablas, construyen índi- El COntrol de concurrencia optimista funciona bajo ces y realizan importaciones masivas de datos. Las tran- la suposición de que los conflictos de recursos entre sacciones pueden abarcar bases de datos en servidores varios usuarios son poco probables (aunque no imposi- remotos. Cuando las transacciones se extienden por bles) y permite a las transacciones ejecutarse sin blo- varios servidores, SQL Server utiliza un servicio del sis- quear ningún recurso. Solamente cuando se intentan tema operativo windows, denominado coordinador de cambiar los datos se verifican los recursos para deter- transacciones distribuidas (Microsoft Distributed Tran- minar si han ocurrido conflictos. Si sucede un conflic- saction Ccordinator, MS DTC) para ejecutar un proce- to, la aplicación debe leer los datos e intentar el cambio samiento de compromiso de dos fases. MS PTC sopor- de nuevo. Las aplicaciones pueden elegir si se detectan ta el protocolo de transacción XA y, junto con OLE-OB, los cambios comparando los valores o verificando la proporciona el fundamento para transacciones ACID columna especial rowversion de una fila. El control de entre sistemas heterogéneos. concurrencia optimista requiere el uso de cursores. El control de concurrencia pesimista bloquea los 27.5.1.1.Puntos de almacenamiento recursos cuando se requieren durante la duración de una SQL Server soporta dos tipos de puntos de almacena- transacción. A no ser que ocurran interbloqueos se ase- miento: de instrucciones y con nombre. Los puntos de gura la finalización satisfactoria de una transacción. El almacenamiento de instrucciones son puntos tomados control de concurrencia pesimista es el predeterminado al comienzo de una: instrucción de fO(01a que, si una para SQL Server. I RID Identificador de fila, usado para bloquear una única fila de una tabla Clave Bloqueo de fila en un índice; protege tos rangos de clave en teensecciones secuencíablee Página Página de tabla o indice de 8 Kbyte Extensión Grupo contiguo de ocho páginas de datos o de índice Tabla Tabla completa, incluyendo todos los datos a índices1 BD Base de datos FIGURA 27.5. Recursos bloqueables. 657
    • FUNDAMENTOS DE BASES DE DATOS guracién (frecuentemenle estáticos) para gestionar cuán-27.5.1-.3. Niveles de aislamiento ta memoria dedicar a la administración del bloqueo.SQL~92 define los siguientes niveles de aislamiento, En SQL Server la granularidad del bloqueo se opti-todos ellos soportados por SQL Server: m-iza automáticamente para un rendimiento y concu- rrencia óptimos para cada índice de una consulta. Ade- • Lectura no comprometida (nivel inferior donde las más, la memoria dedicada al administrador de bloqueos transacciones se aislan solamente para asegurar se ajusta dinámicamente segun la realimentación des- que no se leen físicamente datos corruptos). de otras partes del sistema, incluyendo otras aplicacio- • Lectura comprometida (Nivel pre9-et~rminado de nes de la máquina. SQL Server) La granularidad del bloqueo se optimiza antes de la • Lectura repetible ejecución de la consulta para cada tabla e fndice utiliza- Secuenciable (nivel superior, .donde las transac- do en la consulta. El proceso de optimización del blo- ciones están completamente aisladas entre sí) queo tiene en cuenta el nivel de aislamiento (esto es. cuánto tiempo se mantienen los bloqueos), el tipo de exploración (rango, prueba o toda la tabla), el número27.5.2. Bloqueos estimado de filas a explorar, la selectividad (porcentaje SQL Server proporciona bloqueos de varias granulari- de filas visitadas que son resultado de la consulta), den- dades que permiten que una transacción bloquee distin- sidad de filas (número de filas por página); tipo de ope- tos recursos (véase la Figura 27.5, donde los recursos se, ración (exploración, actualización). limites del usuario listan en orden creciente de granularidad). Para mini- sobre la granularidad y memoria del sistemadisponible. mizar el coste del bloqueo, SQL Server bloquea los recur- La Figura 27.6muestra una consulta ejemplo donde sos automáticamente a una granularidad apropiada para las filas resultado se identifican mediante una explora- la tarea. El bloqueo a una granularidad menor, tal como ción de rango de un índice y después se recuperan las ñlas, aumenta la concurrencia, pero tiene un coste mayor, filas desde la tabla base. Aquí se utilizan los bloqueos puesto que se deben realizar más bloqueos si se bloquean de página sobre el índice, puesto que con un rango den- muchas filas. El bloqueo a una granularidad mayor, tal so de filas del índice se requieren solamente unos pocos como tablas, es costoso en términos de concurrencia bloqueos de página. Sin embargo, las filas de la tabla puesto que el bloqueo de,una tabla completa restringe a base están dispersas por toda la tabla y por ello el blo- otras transacciones el bloqueo a cualquier parte de la queo en un nivel de fila proporciona una concurrencia tabla, pero tiene unos costes de CPU y memoria meno- mucho mayor. En general, la optimización del bloqueo res, ya que se adquieren menos bloqueos. favorece la concurrencia en sus decisiones. Una vez se Los modos de bloqueos disponibles son compartido ejecuta una consulta, la granularidad de bloqueo se (S, shared), de actualización (U. update) y exclusivo (X, dimensionaautomáticamenté hasta el nivel de tabla si exclusive). Los bloqueos de actualización se utilizan el sistema adquiere significativamente más bloqueos para evitar que ocurra una forma común de interblo- que los esperados por el optimizador o si la cantidad de queo cuando varias sesiones están leyendo, bloquean- memoria disponible cae y no se pueden soportar el do y potencialmente actualizando recursos más tarde. número de bloqueos requeridos. Otros modos de bloqueo adicionales (denominados blo- queos de rango de clave) se adoptan solamente en-el 27.5.2.2. Detección de interbloqueos, nivel de aislamiento secuenciable para bloquear el ran- SQL Server detecta de forma automática los interblo- go entre dos filas y un índice. queos que involucran bloqueos y otros recursos. Por , Los bloqueos de varias granularidades requieren que ejemplo si la transacción A está manteniendo un blo- se adquieran los. bloqueos en una jerarquía estricta de queo en Tabla} y está esperando memoria disponible y mayor a menor granularidad. La jerarquía es la base de la transacción Btiene algo de memoria que no puede datos, tabla, página y fila. Cuando se intenta bloquear compartir hasta que adquiera un bloqueo sobre Tablal, en un nivel superior al compartido, de actualización y la transacción presentará un interbloqqeo.l:as hebras y exclusivo se usan bloqueos intencionales. las memorias intermedias de comunicación también pue- den estar involucradas en los interbloqueos. Cuando, 27.5.2.1. Bloqueo dinámico SQL Server detecta un interbloqueo, elige como la víc- El bloqueo de granularidad fina puede mejorar la con- tima del interbloqueo la transacción que es menos cos- currencia con el coste de ciclos de CPU y memoria extra tosa de retroceder. considerando la cantidad de trabajo para-adquirir y mantener muchos bloqueos. P~ muchas que la transacción ya ha realizado. consultas una granularidad de bloqueo más burda pro- Frecuentemente la detección puede perjudicar al ren- porciona mejor rendimiento sin pérdida de concurren- dimiento del sistema. SQL Server automáticamente ajus- cia.(o mínima). Los sistemas de base de datos han reque- ta la frecuencia de la detección de interbloqueos a la fre- rido tradicionalmente sugerencias de consulta y opciones cueneia a la que están ocurriendo los interbloqueos. Si de tabla a las aplicaciones para especificar la granula- los interbloqueos no son frecuentes, el algoritmo de ridad del bloqueo. Además, hay parámetros de confi- detección se ejecuta cada 5 segundos. Si son frecuen- .ss
    • CAPitULO 21 SQL SERVE,RDE ~J¡CR9S0fT Indica sobre Ie columna e de la tabla T)e,- P.áginas de la tabla T.as FIGURA 27.6. Granularidad de los bloqueos.)Sn-o,ilalo- tes se comenzará a verificar cada vez que una transac- bloquear ninguna operación y todos los registros histó-da ción espera un bloqueo. ricos se tratan como si fueran un archivo continuo.reo; se 27;5.3.Registros históricos y recuperación 27.5.3.2. Recuperación de caídas"e SQL Server está diseñado para recuperarse de fallos del El sistema de recuperación de SQL Server tiene muchosas> aspectos en comi.ín con el algoritmo de recuperacióneos sistema y de los medios, y el sistema de recuperación ARIE:S (véase el Apartado 17.9.6), y en este apartadoá de sepuede dimensionar a máquinas con memorias inter- se muestran algunas de las diferencias clave.rr el medias muy grandes (100 Gbytes) y miles de unidades SQL Server posee una opción de configuración deno- de disco. minada intervalo de recuperación, que permite a un administrador limitar eJ tiempo que SQL Server debe- 27.5.3.1. Registros históricos ría tardar en recuperarse después de una caída. El ser-rolo- El registro histórico de la transacción registra todos los vidor ajusta dinámicamente la frecuencia en los puntos . por cambios realizados sobre la base de datos y almacena de comprobación para reducir el tiempo de recupera-l blo- suficiente información para permitir deshacer cualquier ción. Los puntos de comprobación eliminan todas lasible y cambio (retroceso) o rehacer en el caso de un fallo del páginas desfasadas de Ia memoria intermedia, y se ajus-~uede, sistema o solicitud de retroceso. tan a las capacidades del sistema E/S y a su carga deabla l , El registro histórico es, desde un punto de vista logi- trabajo para eliminar de forma efectiva cualquier impac-brasy co, un flujo potencialmente infinito-de registros históri- to en las transacciones que se ejecutan.npue- cos identificado por números de secuencia del registro En el inicio. después de una caída. el sistema iniciauando histónco.d.og Sequence Number, LSN). Desde un pun- varias hebras (dimensionadas aurométícamente al núme-la vÍC- to de vista físico; una porción del flujo se almacena en ro de UCP) para iniciar la recuperación de varias basesos cos- archivosde registros históricos. Los registros históricos de datos en paralelo. La primera fase de la recuperacióntrabajo se guardari en los archivos de registros históricos hasta es un paso de análisis en el registro histórico. que cons- quese realiza una copia de seguridad y no hay necesidad truye una tabla de páginas desfasadas y una lista dc tran-r al ren- porparte del sistema de retroceso o réplica. Los archivos sacciones activas. La siguiente fase es un inicio de lane ajus- deregístro histórico crecen y disminuyen en tamaño para fase rehacer desde el último punto de comprobación y a la fre- acomodarse a los registros que se tienen que almacenar. realizar todas las operaciones. Durante la fase rehacerueos. Si Adicionahnente los archivos de registro histórico se pue- se utiliza la tabla de páginas desfasadas para leer anti-i!mo de denagregar a una base de datos (en nuevos discos, por cipadamentc las páginas de datos. La fase final es unafre(;uen- ejemplo)mientras que el sistema se está ejecutando y sin fase deshacer donde se retroceden todas las transaccio- 659
    • FUNDAMENTOS DE BASES DE DATOS nes incompletas. La fase deshacer se divide realmente cronizadas con la base de datos origen. LOs sistemas en en dos partes puesto que SQL Server utiliza un esque- espera pueden funcionar en cueslión de minutos. Ade- ma de recuperación en dos niveles. Las transacciones más, un sistema en espera puede estar disponible para en el primer nivel (aquellas que involucran operaciones procesamiento de consultas de solo lectura. internas. tales como asignación de espacio y divisiones SQL Server posee tres modelos de recuperación dis- de página) se deshacen primero, seguidas por las tran- tintos que los usuarios pueden elegir para cada base de sacciones del usuario. datos. Mediante Iaespeciñcación de un modelo de recu- peración, el administrador declara el lipa de las capaci- 21.5.3.3. Recuperación de los medios dades de recuperación requeridas (tales como restaura- Las capacidades de copia de seguridad y restauración de ción en un punto y envío del registro histórico) y la>copias SQL Server permiten la recuperación de muchos fallos, de seguridad requeridas para lograrlos. Se pueden reali- incluyendo la pérdida o corrupción de los medios de dis- zar copias de seguridad de bases de. datos, archivos, gru- co, errores dei usuario y pérdida permanente de un ser- pos de archivos y del registro histórico de transacciones. vidor. Además. la copia de seguridad y restauración de Todas las copias de seguridad son difusas y completa- las bases de datos es útil para otros propósitos, tales como mente en línea; esto es, no bloquean ninguna operación copiar una base de datos desde un servidor a otro y el DML o DDL cuando se ejecutan. Las operaciones de mantenimiento de sistemas en espera. Los sistemas en copia de seguridad y restauración están muy optimiza- espera se crean con una característica denominada envío das y limitadas solamente por la velocidad de los medios del registro histérico que realizan la copia de seguridad en los que se realiza la copia de seguridad. SQL Server continua de los registros histéricos de la transacción des- puede realizar copias de seguridad en disco y en dispo- de una base. de datos origen y entonces copia y restaura sitivos de cinta (hasta 64 en paralelo) y tiene interfaces dichos registros históricos a una o més bases de datos en de programación de aplicaciones de eopia de seguridad espera, manteniendo las bases de datos en-espera sin- de alto rendimiento para que las usen productos terceros. Un ejemplar de SQL Scrver es un único proceso del sis- Punto dc comprobación: esta hebra verifica de for- terna operativo que es también un punto de referencia ma periódica todas las bases de datos con el fin dé para las solicitudes de ejecución de SQL. Las aplica- mantener un rápido intervalo de recuperación paraI ciones interactúan con SQL Server mediante varias el inicio de las bases de datos del servidor. bibliotecas en el cliente (como ODBC y OLE-DBJ con • Monitor de interbloqueo: esta hebra supervisa altas el fin de ejecutar SQL. hebras, buscando interbloqueos en el sistema. Es responsable de la detección de interbloqueos y tam- bién busca una víctima con elfin de permitir pro- 27.6.1. Grupos de hebras en el servidor gresar al sistema. Con el fin de minimizar el cambio de contexto en el ser- Cuando el procesador de consulta> elige un plan para- vidor y para controlar el grado de rrrultíprogramación, lelo para ejecutar una consulta determinada puede asig- el proceso SQL Server mantiene un gru,po de hebras que nar varias hebras qm: trabajen en nombre de la hebra ejecutan solicitudes del cliente. Cuando las solicitudes principal para ejecutar la consulta. llegan al cliente se les asigna una hebra sobre la cual se Puesto que la familia-de sistemas operativos Win- ejecutan. La hebra- ejecuta las instrucciones SQL envia- dows NT proporciona un soporte nativo para las hebras, das por el cliente y envlael resultado de vuelta. Una vez SQL Server utiliza hebras NT parp su ejecución. Sin que la solicitud del usuario se completa. la hebra se embargo, SQL Server se puede configurar para ejecu- devuelve al grupo de hebras. tar hebras en modo usuario además de las hebras del Además de las solicitudes del usuario, el grupo de núcleo en sistemas de: altas prestaciones para evitar el hebras también se utiliza para asignar hebras para ta- coste de un cambio de contexto del núcleo en el inter- reas internas secundarias. cambio de una hebra . • Escritor diferido (Lazywriter): esta hebra-se dedi- ca a asegurar que una cierta cantidad del grupo de 27.6.2. Gestión de la memoria memorias Intermedias está libre-y disponible siem- Hay muchos usos distintos de memoria en el proceso pre para la asignación del siste-ma. La hebra tam- de SQL Server: bién interactúa con el sistema operativo para deter- minar la cantidad óptima de memoria que se • Grupo de memorias Intermedias: el mayor con- deberla consumir en el proceso SQL Server. sumidor de memoria en el sistema es el grupo de 860
    • CAPiTULO 27 SOL SERVE;; DE MiCROSOFT memorias intermedias. El grupo de memorias inter- • Concesiones de mucha memoria: para los ope- medias mantiene una caché de las páginas de la radores de consulta que consumen grandes canti- base de datos más recientemente utilizadas. Emplea dades de memoria tales como reuniones por aso- un algoritmo de reemplazamiento de reloj con una ciación y ordenaciones. política de robo sin fuerza, esto es, las páginas de la memoria intermedia con actualizaciones no com- SQL Server utiliza un elaborado esquema de asig- prometidas se pueden reemplazar (erobar»). y no nación de memoria para dividir su memoria entre los se fuerza su envío a disco debido a la transacción. varios usos descritos arriba. Un único administrador de Las memorias intermedias también obedecen el la memoria gestiona de forma centralizada toda la protocolo del registro histórico de escritura anti- memoria utilizada por SQL Server. El administrador de cipada pgra asegurar que. la recuperación de las memoria es responsable de la división y distribución de caídas y los medios es correcta. la memoria de forma dinámica entre los diversos Con- sumidores de memoria del sistema. Distribuye esta Asfgnación de memoria dinámica: €;S la memo- memoria de acuerdo con un análisis del coste relativo ria que se asigna de forma dinámica para ejecutar de memoria para cualquier uso particular. solicitudes enviadas por el usuario. El administrador de memoria interactúa con el sis- • Caché de planes y ejecución: esta caché alma- tema operativo para decidir de forma dinámica cuánta cena los planes compilados para varias consultas memoria se debería consumir de la cantidad total de que los usuarios han ejecutado previamente en el memoria en el sistema. Esto permite que SQL Server sistema. Esto permite que varios. usuarios com- sea bastante agresivo en el uso de la memoria en el sis- partan el mismo plan (ahorrando memoria) y tam- tema pero también devuelve la memoria al sistema cuan- bién ahorra tiempo de compilación de la consul- do otros programas la necesita sin causar excesivos fallos ta para consultas similares. de página.Este apartado describe las Interfaz de programación de ción de Internet (lIS, Internet Information Sérver) queaplicaciones (Application Programming Interface, API) hacen referencia a una ejemplar de SQL Server. Un URLde acceso a datos soportadas por SQL Server y cómo puede, contener una consulta XPath. una instrucciónse utilizan estas API para las comunicaciones entre los Transact -SQL o una plantilla XML. Además de utilizarcomponentes internos del servidor. URL, las aplicaciones Internet también pueden utili- zar ADO o üLE-DB para trabajar con datos en la for- ma de documentos XML.27.7.1. API de acceso a datos Los desarrolladores de aplicaciones utilizan API talesSQL Server soporta una -serie de interfaces de progra- como ADO:y ODBC para acceder a las capacidades demación de aplicaciones (API) de acceso a datos, inclu- SQL Server desde la capa intermedia. Algunas API talesyendo: como üLE-DB se utilizan internamente para integrar com- ponentes del núcleo del servidor y permitir la réplica y el Objetos de datos ActiveX (ActiveX Data Objects, acceso distribuido para SQL y otros orígenes externos. ADO) OlE-DB 27.7.2. Comunicación dentro de SQL Server • Conectividad abierta de bases de datos (ODBC, Open Database-Connecrívity) y las API construi- El servidor de 1<;1. base de datos de SQL Server tiene dos partes principales: el motor relacional (MR) yel motor das sobre ODBC: objetos de datos remotos (Rema- te Data Objects, RDO) y objetos de acceso a datos de almacenamiento (MA), como se muestra en la Figu- ra 27.7. La arquitectura de SQL Server claramente sepa- (Data Access Objects, DAO) ra los componentes-del motor relacional y de almace- SQL incorporado paraC (Bmbedded SQL, ESQL) namiento con el servidor y estos componentes utilizan • La biblioteca de bases de datos heredadas para C, interfaces OLE-DB para comunicarse entre sí. que fue desarrollada específicamente para ser usa- ~I procesamiento de una instrucción selectque hace da con versiones anteriores de SQL Servcr que pre- referencia solamente a tablas en bases de datos locales ceden a la norma SQL-92 se puede describir como sigue. El motor relacional com- pila la, instrucción select en un plan de ejecución opti- • HITPy URLs mizado. El plan de ejecución define.una serie de opera- Las aplicaciones Internet pueden utilizar URL que ciones sobre conjuntos de fila sencillos desde las tablasespecifican las rutas virtuales del servidor de informa- individuales. o índices refcrcnciados en la instrucción 66
    • FUNDAMENTOS DE BASES DE DATOSFIGURA 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- según los pasos del plan de ejecución y necesita datos,cional devuelve la cantidad de datos que una tabla o índi- utiliza OLE-DB para extraer las filas individuales de losce necesita para ejecutar las operaciones necesarias para conjuntos de filas. El motor de almacenamiento trans-construir-el conjunto de resultados select. Por ejemplo, fiere los datos desde las memorias intermedias de losla siguiente consulta calcula el resultado de dos índices: datos hasta los operadores de ejecución de la consulta, la cual se ejecuta en el motor relacional. El motor rela- select NombreEmpresa, IDPedido, FechaEnvío cionalcombina los datos de los conjuntos de filas del Irom Clientes as Cli join Pedidos as Ped motor de almacenamiento en el conjunto de resultados on (Cli.Ilxcliente = Ped.IDCliente) final transmitido al usuario. Esta comunicación entre el motor relacional y el motor de almacenamiento median- El motor relacional solicita dos conjuntos de filas, te la interfaz OLE-DB permite al motor relacional pro-uno para el índice agrupado en clientes y el otro en un cesar las consultas con cualquier origen de datos queíndice no agrupado en pedidos. El motor relacional enton- exponga tales interfaces. Dichos orígenes de datos pue-ces utiliza las interfacesOl.BDls para solicitar que.el den ser otros sistemas SQL Server (consultas distribui-motor de almacenamiento abra los conjuntos de filas con das) y otros proveedoresde datos OLE-DB relacionalesestos índices. Puesto que el mofar relacional funciona y ha relacionales (consultas heterogéneas).Este apartado describe las capacidades de SQL Server El método nombres del servidor vinculados utiliza pro-para procesamiento de consultas distribuidoy hetero- cedimienros almacenados del sistema para asociar el nom-géneo. así como las réplicas. bre de un servidor con un origen de datos OLE-DB. Los objetos en estos servidores vinculados se pueden refe- rencíar en instrucciones Transact-SQL utilizando el con-27.8.1. Procesamiento de consultas venio de nombres de cuatro parte descrito más adelante. distribuidas heterogéneas Por ejemplo, si el-nombre de un servidor vinculado de La capacidad de consultas distribuidas heterogéneas de SérvSQWept se define en otra copia de SQL Server, la SQL Server permite las consultas transaccionales y siguiente instrucción referencia una tabla en ese servidor: actualizaciones en una serie de.orígenes relacionales y no relacionales mediante proveedores de datos OLE- select * DB que se ejecutan en una o más computadoras. SQL from ServSQLDept.Nonhwind.dbo.Employees Server soporta dos métodos para hacer referencia a orí- genes de datos OLE-OH heterogéneos en instrucciones En SQL Server se registra un origen de datos OLE- Transact-SQL. DB como un servidor vinculado. Una vez que se defi- 6••
    • CAPÍIULO 27 SQL SF:RVER DE MICHOSOfT ne un servidor vincularlo se puede acceder a sus datos usuario, la contraseña (vacío en el ejemplo de abajo) y utilizando el nombre de cuatro partes <servidor vincu- el nombre de la tabla a la,que se accede. lado>. <catálogo>. <esquema>. <objeto>. El siguiente ejemplo establece un servidor vinculado a un servidor selcct * Oracle mediante un proveedor OLE~DB para Oracle: from openrowsetrMicrosoft.Jer.Ol.E DRA.Ol, c:Ejemplos exec sp....,addlinkedserver ServOra, Oracle 7.3, Northwind.mdb; Admin ;:; MSDAORA, OracleServer Employees) Una consulta en este servidor vinculado se expresa El motor relacional utiliza las interfaces OLE-DB como: para abrir los conjuntos de filas sobre los servidores vin- culados, para extraer las filas y para gestionar las tran- select " sacciones. Para cada origen de datos OLE-DB al que se from ServOra.CQRP.ADMIN. VENTAS accede como un servidor vinculado, debe estar presen- te un proveedor OLE-DB sobre el servidor en el que se Además, SQL Server soporta funciones incorpora- ejecuta SQLServer. El conjunto de operaciones Tran- das parametrizadas de tipo tabla denominadas open- sact-SQL que se pueden utilizar en un origen de datos rowset y openquery, que permiten enviar consultas no oLE-DB especíñco-depende de las-capacidades del pro- interpretadas a un proveedor o servidor vinculado, res- veedor Ol"E-DB. Siempre que es efectivo en el coste, pectivamente, en el dialecto soportado por el provee- SQL Server envía las operaciones relacionales tales dor. La siguiente consulta combina la información alma- como las reuniones, restricciones. proyecciones, orde- cenada en un servidor Oracle y un Microsoft Index naciones y agrupaciones mediante operaciones al ori- Server. Lista todos los documentos y sus autores que gen de datos OLE-pB. Contiene las palabras Data y Access ordenadas por el SQL Server utiliza el coordinador de transacciones departamento y nombre del autor. distribuidas de Microsoft (Microsoft Distributed Tran- saction Coordinator) y las interfaces de transacción de select e.dept, f.AutorDoc, f.NombreArchivo OLE-DB del proveedor para asegurar la atomicidad de from ServOra.Corp.Admin.Empleados e, las transacciones sobre varios orígenes de datos.s openquery(ArchivosEmp, Veamos un escenario típico pata el uso de consultas "select Aurorfroc, Nombre.Archivo" from scopetec: Bmpfjocs») where contains( «Datoss nearü distribuidas; Consideremos una gran compañía de segu- ros que tiene empresas subsidiarias en varios países. Cada oficina regional selecciona el producto que alma-e «Access» }>O) as f cena sus datos de ventas. La subsidiaria del Reino Uni-,- where e.nombre =-f. AutorDóc do almacena sus datos en Grade, la subsidiaria en Aus-r- order by e.dept, f.AutorDoc tralia almacena sus datos en Microsoft Access y la subsidiaria de España almacena sus datos en Microsoft También se puede especificar el nombre del servidor Excel y la subsidiaria de Estados Unidos almacena sus vinculado en una instrucción openquery para abrir un datos en SQL Server. Un ejecutivo de ventas interna- conjunto de filas desde el origen de datos OLE-Da. cional desea un informe qué liste, de forma trimestral El conjunto de filas se puede entonces referenciar como por los últimos tres años, las directivas de seguros, las una tabla en instrucciones Transact-SQL. El método ad subsidiarias y los representantes de ventas con las ven-I hoc de nombres de conectores se utiliza para referencias infrecuentes a un origen de datos. Este método utiliza una función de tipo tabla denominada openrowset, don- tas más altas en cada cuatrimestre. Cada una de estas tres consultas se puede realizar mediante una única con- sulta distribuida, que, se ejecuta en SQL Server.-o- de la información necesaria para conectarse a los oríge-m-.os nes de datos se proporciona como argumentos a la fun- 27,8,2. Réplicafe- ción. El conjunto de filas se puede entonces referenciar como se referencia a una tabla en instrucciones SQL. La réplica de SQL Server proporciona un conjunto dem- Por ejemplo, la siguiente consulta accede a las explora- tecnologías para copiar y distribuir los datos y objetosrte. de ciones employees almacenadas en tablas en la base de de la base de datos de una base de datos a otra y tam-, la datos Notthwind en un proveedor de datos de Microsoft bién mantener la sincronización entre las bases de datos.lar: Access. Nótese que aunque el enfoque de nombre de ser- La réplica puede recoger datos corporativos desde vidor vinculado descrito anteriormente encapsula toda sitios geográficamente dispersos para propósitos de la información necesaria para conectarse a un origen de informes y diseminar los datos a usuarios remotos en datos, el enfoque ad-hoc de conectores requiere que el una red de área local o usuarios móviles sobre cone- usuario especifique el nombre del proveedor de datos xiones telefónicas o Internet. La réplica de Microsoft (Microsoft.Jet.OLE-DB.4.0), el nombre completo de la SQL Server también mejora el rendimiento de las apli-LE- ruta de acceso del archivo de datos, el identificador del caciones dimensionando para mejorar el rendimientolefi- 663
    • fUNDAMENTOS DE BASES DE DATOStotal de lectura entre réplicas, Como es común al pro- 27.8,2.2. OpciQnes de réplicaporcionar servicios de caché de datos de la Capa inter- La réplica de Microsoft SQL Server ofrece un ampliomedia para sitios Web al tiempo que se.mantiene la-con- espectro de elecciones de tecnología. Para decidir sobresistencia transaccional en el conjunto de datos duplicado. las,opciones de réplica apropiadas a utilizar, un diseña- dor de bases de datos debe determinar las necesidades27.8.2.1. Modelo de réplicas de la aplicación con respecto a la operación autónomaSQL Server introdujo la metáfora Pubticar-Suscríbir del sitio involucrado y el grado de consistencia tran-para la réplica de la basede datos y extiende esta metá- saccional requerido.fora de la industria editorial a todas sus herramientas deadministración de réplicas y supervisión. • La réplica instantánea copia y distribuye los datos Yobjetos de la base de datos exactamente como El publicador es un servidor que ha:celos datos dís- aparecen en un instante, del ti_empo.La réplica ins- poníbles para la réplica a OlfOS servidores. El publi- tantánea no requiere un seguimiento continuo de cador puede tener una o más publicaciones, cada los cambios, puesto que los cambios no se propa- una representando un conjunto de datos y objetos gan de forma incremental a los suscriptores. Los de la base de datos relacionados lógicamente. Los suscriptores se actualizan con una actualización objetos discretos en una publicación, incluyendo completa del conjunto de datos definido por la tablas, procedimientos almacenados, funciones publicación de una forma periódica. Las opciones definidas por el usuario, vistas, vistas materializa- disponibles con la réplica instantánea pueden fil- das y más, todos llamados artículos. La agregación trar los datos publicados y pueden permitir que los de un artículo a una publicación permite la perso- suscriptores modifiquen los datos replicados y pro- nalización extensiva de la forma en la que se dupli- paguen dichos cambios al publicador. ca el objeto.jncluyendo el nombre y propietario • Con la publicación transaccional el publicador de los objetos destino" restricciones sobre las cua- propaga una Instantánea de datos a los suscripto- Ies.los Usuarios se pueden suscribir para recibir sus res. entonces envía las modificaciones de datos datos y CÓmO se,debería filtrar el conjunto de resul- incrementales a los suscriptores como transac- tados. Por ejemplo. una tapia puede tener su con- ciones e instrucciones discretas. El seguimiento junto de datos completo o WI subconjunto de, sus del cambio incremental ocurre dentro del motor datos dividido horizontalmente haciéndolos dis- del núcleo de SQL Server, que marca las transac- ponibles para la distribución mediante su defini- ciones que afectan a los objetos replicados en el ción como un artículo. Todos los formularios de la registro histórico de la base de datos publicadora. réplica de SQL Server soportan la división hori- Un agente de réplica lee estas transacciones del zontal y vertical desde una tabla publicada. registro histórico de la base de datos, aplica cual- • Los suscriptores son servidores que reciben los datos quier lógica de división y las almacena en la base replicados de un publicador. Los suscriptores pue- de datos de la distribución, que actúa como una den suscribir convenientemente a solamente las cola fiable que soporta el mecanismo de almace- publicaciones que requieren de uno o más publica- namiento y envío de la réplica transaccional. (Las dores sin considerar el número o tipo de opciones de colas fiables son lo mismo que las colas durade- réplica que implemente cada uno. Dependiendo del ras descritas en el Apartado 24.1.1.) Otro proce- tipo de opciones de réplica seleccionado, el suscrip- so de réplica, el agente de distribución que se eje- tor se puede utilizar como una réplica de sólo lectu- cuta o en el distribuidor (inserción) o el suscriptor ra o se pueden realizar cambiasen los datos que se (extracción), entonces envía los cambios a cada propagan automáticamente al publicador y, por con- suscriptor. Al igual que la réplica instanténea.Ia siguiente, al resto de réplicas. Lis réplicas de SQL réplica transaccional ofrece a los suscriptores la Server soportan suscripciones de inserción y extrac- opción.de realizar actualizaciones inmediatas que ción verdaderas; esto es, la programación o inicia- utilicen un compromiso de dos fases que reflejen ción de acciones de sincronización se pueden con- aquellos Cambios de forma consistente en el publi- trolar por el publicador o mediante sus suscriptores cador y suscriptor, según requieran las necesidades del negocio. Los • La réplica por mezcla permite que cada réplica en suscriptores también pueden volver a publicar los la empresa funcione con total autonomía en cone- datos a los que se suscriben, dando soporte a una xión o sin conexión. El sistema supervisa los meta- topología de réplica tan flexible como requiera la datos según los cambios sobre objetos publicados empresa. en los publicadores y suscriptores de todas las bases • El distribuidor es un servidor que alberga la base de de datos duplicadas y el agente de réplica mezcla datos de distribución y almacena algunos metadatos estas modificaciones de-Ios datos durante la sin- de réplica La función del distribuidor varía, depen- cronización entre los pares replicados y asegura la diendo de las opciones de réplica seleccionadas. convergencia de los-datos mediante una detección 664
    • CAPITULO 27 SqL SF:R"LP. DE ).ll~ROSOF1 y resolución automática del conflicto. El agente de personalizada se puede-escribir mediante el uso de réplica utilizado en el proceso de sincronización procedimientos almacenados o mediante el uso de incorpora numerosas opciones de políticas de reso- una interfaz del modelo de objetos componente lución de conñictos, y la resolución de conflictos (Component Object Model, COM) extensible. La capacidad de texto completo en SQL Server de mente acoplada en el sentido en que lbs índices de tex- Microsoft soporta la creación y mantenimiento de Índi- to completo se-almacenan en el sistema de archivos fue- ces de texto completo sobre cadenas de caracteres y ra de la base de-datos. La Figura 27.8 ilus-tra la arqui- columnas de imágenes almacenadas dentro de las tablas tectura general de esta integración. SQL Server, así como búsquedas de texto completo Hay dos aspectos para el soporte de texto completo: basadas en estos índices. La capacidad de texto com- (1) creación de índices y mantenimiento y (2) soporte pleto se implementa mediante el servicio Microsoft de la consulta. El soporte de indexado involucra la cre- Search, desarrollado independienrernente.de SQL Ser- ación, actualización y adminisrracíon de catálogos de ver, para permitir las búsquedas de texto completo en texto completo e índices definidos para una tabla o tablas los datos del sistema de archivos. El primer paso hacia en la base de datos. El soporte de la consulta involucra la integración del servicio de búsqueda con SQL Ser- el procesamiento de las consultas de búsqueda de texto ver fue transformar el servicio de búsqueda en un pro- completo. Dado un predicado de texto completo, el ser- veedor OLE-DE. Este, paso permitía escribir las apli- vicio de búsqueda determina las entradas en el índice caciones en lenguajes tales como Visual Basic y C++ que cumplen el criterio dc selección de texto completo. con acceso a Iós datos almacenados en el sistema de Para cada entrada que cumple el criterio de selección, el archivos mediante el uso de ADa, y también propor- componente de consulta del servicio de búsqueda devuel- cionaba la capacidad de conectar el proveedor de texto ve una fila, en un conjunto de filas OLE-DB, conteniendo completo en SQL Server como un origen de datos hete- la identidad de la fila cuyas columnas coinciden con el rogéneo. El segundo paso involucraba una integración criterio de, búsqueda y un valor de clasificación. Este débilmente, acoplada entre SQL Server y el servicio de conjunto de filas se utiliza como entrada a la consulta búsqueda para permitir el indexado del texto completo que está siendo procesada por el motor relacionaJ SQL, del contenido de la tabla. Esta integración está débil- al igual que cualquier Otro conjunto de filas originado /. .....Ód6t>., ,1 l~i!ií;¡;;llIE;" , I Ú;}::¡;o;:,Itó4.;&~,;,::: ·1 b:J.:Ei~t.bA!:",~~~,-, ~.:.1 I"i"j""";":CC0?""" _, . __.: ¡_u _ El~k~"Y¿<,L Na" ~~ . .,3<" I Servicio Microsoft Search Base de datos Catálogo de Sal server de texto completot FIGURA27.8. Integración de un componente de texto completo con un SGBD relacional. 665
    • FUNDAMENTOS DE BASES DE DATOSde tablas o índices dentro del servidor. El motor rela- en archivos separados gestionados por el servicio Micro-cional combina este conjunto de filas con la tabla base soft Search. Los archivos del catálogo de texto com-sobre la identidad de la fila y evalúa el plan de ejecución pleto no se recuperan durante la acti~iéIad de recupera-que genera el conjunto de resultados final. Los tipos de ción de SQL Server, y no se puede realizar una copiaconsultas de texto completo ,que soporta este esquema de seguridad y restauración mediante el uso de las ins-incluye la búsqueda de palabras o frases, palabras paree trucciones backup y restcre. Se deben volver a sin-cidas entre sí y formas derivadas de verbos y nombres. cronizar los catálogos de texto completo separadamente Los catálogos de texto completo e índices no se.alma- después de una operación de recuperación o restaura-cenan en una base de datos SQL Server. Se almacenan ción.Las aplicaciones de las bases de datos requieren latranse porcionan la funcionalidad para importar, exportar yformación de datos de muchos orígenes en un conjun- transformar los datos entre varios orígenes de datosto cohesivo y consistente de datos configurados apro- heterogéneos de forma interactiva o automáticamentepiadamente para su uso en las operaciones de, los según una planificación regular. Se accede de formaalmacenes de datos. SQL Server 2000 proporciona una uniforme a todos los orígenes de datos mediante losherramienta para tales tareas, los servicios de transfor- proveedores OLE-DB. Las secuencias de órdenes (guio-mación de datos (Data Transfonnation Services, DTS)". nes) ejecutan tareas de transformación -enrre orígenesDTS puede acceder a los datos desde una amplia varie- de datos fuente y destino. La extracción, transforma-dad de orígenes y transformarlos mediante el uso de ción y proceso de carga involucra en Iossistemas-ope-especificaciones de transformación incorporadas y per- racionales la validación de los datos, migración de lossonalizadas. datos, normalización de los datos a un dominio común Los Servicios de análisis de SQL Server proporcio- y transformaciones de datos para asignar o resumir losnan un rápido acceso al almacén de datos. Los datos del valores. Una actividad DTS se organiza en un paque-almacén de datos se extraen, resumen, organizan y alma- te que incluye tres componentes: (1) los objetos decenan en estructuras multídímensionales para una rápi- conexión definen cada origen de datos OLE-DB fuen-da respuesta a consultas de usuarios finales. Los servi- te o destino, (2) los objetos tarea definen las accionescios de análisis también proporcionan una arquitectura específicas a ejecutar y (3) los objetos paso deñnenlapara el acceso a la recopilación de datos. Estos datos secuencia en la cual se ejecutan las tareas. Los pasos también se pueden enviar al cliente en una forma mul- también definen si la ejecución de una tarea es depen- tídimensional orelacional. diente de los resultados de una tarea anterior. Data Este apartado describe brevemente DTS y el proce- Pump de DTS es un componente de servicio OLE-DB samiento en conexión-analítico (Online Analytical Pro- multienhebrado que proporciona la infraestructura para cessing. OLAP) de los servicios de-análisis. importar, exportar y transformar los datos entre oríge- nes de datos OLE-DB heterogéneos. Las tareas Data . Pump de DTS permiten la Invocación de programas del27.10.1. Servicios de transformación de datos usuario que resuelven correspondencias complejas entreEl almacén de datos es un enfoque para gestionar los las columnas de origen y destino mientras se transfie-datos en los cuales los orígenes de datos heterogéneos ren los datos.(normalmente varias bases de datos OLTP) migran a El procesamiento mediante una tarea Data Pump deuna base de datos homogénea separada. Los almacenes DTS (Figura27 .9) incluye la conexión a los objetos dede datos proporcionan muchos beneficios a los usuarios conexión origen y destino, determinando las propieda-logísticos. Los datos se organizan para facilitar consul- des del conjunto de filas origen (que se, construyetas analíticas en lugar de procesamiento de transaccio- mediante los formatos de columna de la tabla origen ones. Se pueden resolver las diferencias entre las estruc- el resultado de ejecutar una consulta} y pasando estaturas de datos en varias bases de datos heterogéneas. información y una definición de todas las transforma- Las reglas de transformación de datos se pueden apli- ciones especificadas a Data Pump de DTS. Durante la car para validar y consolidar los datos cuando éstos se ejecución, Data Pump de DTS extrae las filas del ori- mueven desde la base de datos OLTP operacional al gen de datos y copia las columnas origen a la columna almacén de datos. Los aspectos de seguridad y rendi- destino según se define en las correspondencias de trans- miento se pueden resolver sin requerir cambios en los formación encapsuladas en las secuencias de órdenes sistemas de producción. del modelo de objetos componentes (COM). Cada fila Los servicios de transformación de datos (Data origen transformada se inserta en el origen de datos des- Transformation Services, DTS) de SQL Server pro- tino OLE-DB. 666
    • CAPlrULO 27 SOL SERVER DE MICROSQFT Paquete DTS " - - -- - - - - - - - - - - - -- -- Tarea 3 , " - - <-- _.- - -- - .. - - - - - - -- Tarea 2 - ". - - - - - - - -- - - - - - - - - - - -- Tarea 1 Fuente Destino • Hoja de cálculo ·ODSC • Campo variable • Campo fijo • Carácter • carácter • Personalizado • Personalizado Data Pump de DTS Fuente Destino I J I ___ J AGURA 27.9. Dr5 accede evertos orígenes de datos mediante DLE-DB. 27.10.2. Servicios de procesamiento cncírücc dimensionales (Figura 27 .10). Las operaciones del ser-s en línea vidor incluyen la creación de cubos de datos multidi-n mensionales a partir de bases de datos de almacén de Los servicios OLAP de SQL Server organizan los datos datos relacionales y cubos almacenados en estructuras" de un almacén de datos en cubos multidimensíonales de cubo multidimensionales, en bases de datos relacio-le coninformación resumida precalculada para propor- nales, y en combinaciones de ambos. Los metadatos den- cionarrespuestas eficientes a consultas analíticas com- estructuras cubo rnultidimensionales se almacenan en,e plejas. El objeto principal de OLAP es c,l cubo, una un depósito en Una base de datos relacional. Las opera- la representación multidimensional de los datos detalla- ciones del diente son.proporcionadas por el servicio deaos dosy resumidos. Un cubo consiste en un origen de datos, tablas dinámicas, que es un proveedor OLE-DB queen- dimensiones, edidas y divisiones. Un almacén de datos m soporta OLE-DB para extensiones de la inrerfaz.Ol.Aklata puedesoportar muchos cubos distintos. Las consultas El servicio de tablas dinámicas es un servidor OLAP enDH multidimensionales en los cubos devuelven objetos de el proceso diseñado pata proporcionar análisis de datospara tipoconjunto de datos. en conexión y sin conexión y acceso en conexión a datosige~ los servicios OLAP proporcionan capacidades clien- OLAP. El servicio de tablas dinámicas funciona comoData te y servidor para crear y gestionar datos OLAP multi- un cliente de los servicios OLAP.eS delentrensfie-mp deros.depieda- Muchas aplicaciones se construyen actualmente como datos y los servicios que utilizan XML para la capa de.struye sistemas distribuidos débilmente acoplados donde los integración. Esta capa oculta la heterogeneidad entrerigen o componentesindividuales (frecuentemente llamados los componentes y proporciona el pegamento que per-do esta servicios) e combinan entre sí. Puesto que muchos de s mite a los componentes individuales tomar parte en el,fonna- estos componentes se reutilizarán para otras aplicacio- sistema débilmente integrado.renté Ia res, la arquitectura necesita ser lo suficientemente fle- SQLServer proporciona mecanismos para producir del ori- xible como para permitir que los componentes indivi- XML a partir de datos relacionales y para consumir;olumna duales se unan o abandonen el conglomerado XML y hacerlo corresponder con datos relacionales,de trans- heterogéneo. servicios y componentes y que cambien de Junto con el componente de aCCeSO HTTPen las herra-o órdenes adiseño interno y modelos de datos sin arriesgar toda mientas de acceso al cliente, esta posibilidad permiteCada fila la arquitectura. que SQL Server se utilice como el proveedor de datos:!atQsdes~ XML y el soporte Web de SQL Server simplifica la y los componentes consumidores de sitios y servicios construcción componentes basados en la base de de Web. 667
    • 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 SQL parte del URL, proporciona un mecanismo de abstrac- Server ción que encapsula el servidor de bases de datos al que se accede y a los ejemplares de la base de daros, losLa Figura 27.11 muestra un diagrama arquitectónico de derechos de acceso y los métodos de acceso habilita-bloques de alto nivel del soporte XML de SQL Server. dos. Los métodos de acceso principales proporcionadosPuesto que las distintas aplicaciones aplican su lógica por SQL Server son el acceso con plantillas y el.acce-de negocios en posiblemente distintas ubicaciones, la so a vistas XML.arquitectura proporciona acceso HTTPdirecto cuando Las plantillas son documentos XML que proporcio-solamente se necesita ejecutar la visualización usando nan una consulta parametrizada sr un mecanismo deXSLT en la capa intermedia y el resto del procesamiento actualización a la base de datos. Puesto que oculta lade la lógica del negocio se puede insertar completa- consulta real (o actualización) del usuario proporcionamente en el cliente o en el servidor de la hase de datos. el nivel de desacoplamiento que hace posible la cons-Para arquitecturas de dos capas o donde la lógica del trucción de sistemas débilmente acoplados. Los ele-negocio se tiene que ejecutar en la capa intermedia se mentes que contienen consultas son procesados por elutiliza frecuentemente un acoplamiento más estrecho procesador de plantillas y utilizados para devolver datosde la lógica del negocio al acceso de la base de datos de, la base de datos como parte del documento XMLpor razones de rendimiento y prográmabilidad. Por ello, resultante. Los elementos no reconocidos por el proce-todos los accesos a las características XML es a través. sador de la plantilla se devuelven sin modificar. Lasdel proveedor SQL ÜLE-DB; esto se aplica al acceso plantillas pueden contener instrucciones Transact-SQl., ADO y también al acceso HITP mediante la extensión updategrams (véase el Apartado 27.11.3), consultas ISAPI al Internet lnfonnation Server (lIS). XPath o una combinación de éstas. Existen varias formas de acceder a SQL Scrver Las vistas XML se definen anotando un documemo mediante HITP. ISAPI de SQL Server está registrado esquema SML con la correspondencia con las tablas y con ns para gestionar los mensajes a una raíz virtual columnas relacionales. Las jerarquías se corresponden determinada (vroot). ISAPI recibe las solicitudes para desde y a la base de datos utilizando una anotación de esa vroot particular y después de-ejecutar la autoriza- relación que expresa la reunión externa entre el padre ción pasa las órdenes apropiadas a través del proveedor y los hijos. Esta vista se puede entonces utilizar para SQL üLE-DB a la base de datos. La raíz virtual, como consultar en el lenguaje de navegación de la base de 668
    • CAPITULO 27 i.NL SERVER DE MICROSOfT Cliente Capa intermedia SQLServer FIGURA 27.11. Visión general de la arquitectura del acceso XMl a SOl Server.datos XPath 1.0 y para actualizarlo mediante el uso de on Cliéntes.IDCliente = Pedidos.IDClienteupdategrams. Estas características XML (así como las ordered by Cliemes.IDClienteconsultas XML del-servidor) también son accesibles for XMLautomediante.Stjt, OLE-DE. Puesto que los datos XML, alcontrario que los datos relacionales. no se representan Los tres modos asignan filas a elementos y valorescomo un conjunto de tijas sino como un flujo marcado de columna a atributos. La directiva opcional elemenisde datos, el proveedorOLE-DB de SQL Server se ha en el modo aiao cambia la correspondencia de todos losextendido con una interfaz de t1ujo para exponer lQS valores de columna a subelementos. Los modos raw yresultados XML. auto permiten la generación sencilla de XML a partir En el lado del servidor, SQL Server proporciona de consultas relacionales existentes. El modo explicitextensiones a la instrucción select que simplifica la trans- proporciona control completo de columnas sobre elformación de datos relacionales en XML y un meca- XML generado tomando un formulario especial de unnismo para cortar conjuntos de filas de documentos conjunto de resultados relacional (denominado forma.XML y por ello proporciona una vista relacional sobre to de tabla universal) y transformándolo a XML. Loslos datos XML. tres modos canalizan los datos y así se evitan construc- ciones costosas de documentos en el servidor.27.11.2. Secuencias de resultados SQL en XMLLas personas familiarizadas con la escritura de consul- 27.11.3. Vistas XML de datos relacionalestas de selección SQL pueden necesitar poder generar El apartado anterior presentaba el enfoque centrado enXML fácilmente a partir de sus resultados de la con- SQL para generar XML. SQL Server también propor-sulta. Por desgracia, hay muchas formas diferentes en cíorra un mecanismo. que permite la definición de vistaslas cuales se puede realizar dicha generación de XML. XML virtuales de la base de datos relacional, la cual seSQL Server por consiguiente proporciona tres modos puede consultar y actualizar con herramientas basadasdistintos para esto con niveles distintos de complejidad en XML. El mecanismo central para proporcionar vis-y capacidad de aurcrfa Xlvll., Los tres modos se pro- tas XML sobre datos relacionales es el concepto deporcionan mediante una nueva cláusula select denomi- esquema anotado. Los esquemas anotados consisten ennada,POR XML. una descripción de esquema basada en XML de la vista Lostres medos son: raw (sin formato), auto (auto- XML expuesta (en el esquema del lenguaje X:ML- Datamático) y expticu (explícito). La siguiente instrucción Reduced o W3C XML) y en -anotaciones que describenmuestra un ejemplo de una consulta en modo auto: las correspondertcías dc las construcciones del esquema Xl1Len las construcciones del esquema relacional. Para select Clientes.lDCliente, JDCliente sirnpfiñcar la definición de las anotaciones cada esque- from Clientes left outer join Pedidos ma proporciona la correspondencia predeterminada si 669
    • FUNDAMENTOS DE BASES DE DATOSno hay presentes anotaciones. Las correspondencias pre- ción a los datos XML desde un procedimiento almace-determinadas asignan un atributo o un subelemento no nado. Por desgracia, ni DOM ni SAX (véase el Capítu-complejo (uno cuyo tipo de contenido es solamente tex- lo 10) proporcionan una API adecuada para tratar unato) a una columna relacional con el mismo nombre. El vista relacional con los datos XML; esto es, necesitaresto de elementos se corresponde con filas de una tabla permitir al programador SQL descomponer un mensa-o vista con el mismo nombre. Las jerarquías se expre- je XML en distintas vistas relacionales.san con anotaciones. Una herramienta visual descarga- SQL Server proporciona mecanismo de conjuntos deble denominada SQL XML View Mapper proporciona filas en XML mediante el proveedor dé conjuntos deuna forma para especificar gráficamente las correspon- filas OpenXML. La vista del conjunto.de filas utilizadencias y, por tanto. las anotaciones. El esquema anota- una expresión XPath (el patrón de filas), para identificardo no recupera en sí mismo ningún dato sino que sola- los nodos en el árbol del documentoXlvlt.que se corres-mente define una vista virtual proyectando una vista ponderá con las filas y utiliza una expresión Xlath rela- XML en tabla.s relacionales. Se puede requerir ahora la tiva (el patrón de columnas) para identificar los nodosvista en un lenguaje de, consulta XML y actualizado en que proporcionan los valores para cada columna. El pro-un lenguaje de actualización basado en XML. veedor de conjuntos de.ñlas QpenXML puede aparecer Las actualizaciones Son soportadas por los denomi- en cualquier lugar en una expresión SQL donde un con-nados updategrams de XML. Los updategrams pro- junto de filas puede aparecer como un origen de datos.porcionan una forma intuitiva de ejecutar una transfor- En panicular. puede aparecer en la clausula from demación basada en el ejemplar desde un estado anterior cualquier selección.a un estado posterior mediante el-uso de un control de Una de las ventajas de esta AlLorientada a conjun-la concurrencia optimista. tos de filas para los datos XMLes que incluye sobre el modelo relacional existente para su uso con XML y pro- porciona un mecanismo para actualizar la base de datos27.11.4. Vistas relacionales de XML con datos en forrñato XML. El uso de.XML en conjun-En muchos casos los datos se enviarán al servidor de la ción con OpenXML permite actualizaciones multifilabase de datos en la forma de un mensaje XML que se con una única llamada a procedimiento .almacenado ytiene que integrar con los datos relacionales después de actualizaciones sobre varias tablas mediante la explo-que .se ejecute algo de lógica.del negocio opcional sobre tación de la jerarquía XML. Además permite la fonnu-los datos dentro de un procedimiento almacenado en el lacion de consultas que combinan las tablas existentesservidor. Esto requiere el acceso mediante programa- con los datos XML proporcionados.SQL Server de Microsoft es un paquete completo de control total sobre el código base (después de adquirir-gestión de datos que incluye servidor de base de datos lo a Sybase). ha actualizado el código base e integradorelacional, búsqueda e indexación de texto completo, las últimas investigaciones prácticas en el producto.importación y exportación de datos ·XML. integración SQL Server 2(X)()(lanzado en agosto de 2000) ha redon-de datos distribuidos y heterogéneos.eervidor de aná- deado.algunos de los grupos de características inicia-lisis y cliente para OLAP y recopilación de datos, répli- dos en versiones anteriores y agregado funcionalidadescas entre almacenes de datos heterogéneos, un motor completamente nuevas, incluyendo soporte XML.de transformación de datos programable y más. Por ello, La versión que actualmente se está implementandoSQL Server sirve como fundamento de la familia de está diseñada para aumentar la facilidad de uso del pró-Microsoft de productos servidores empresariales. dueto, facilidad de desarrollo de aplicaciones, robustez, Durante el tiempo en el que Microsoft ha tenido un rendimiento y dimensionabilidad. Las diferencias entre las varias ediciones de SQL Ser- da sobre el uso del sistema certificado e2 con SQL Ser- ver se describen en Delaney [2000] y también están dis- ver. ponibles en Web en www.microsoft.com/sq1. Elentomo de optimización de SQL Server está basa- En www.microsoft.com/Dowilloads/Release.asp? do en el prototipo de optimizador Cascades.que Grae- ReleaselD=25503 está disponible información detalla- fe [1995] propuso. Simmen eral. [1996] discute el esque- 610
    • cAPlrULO 21 SQL SERVER DE MICROSQfT ma para reducir las columnas de agrupación. Galindo- Gradé et al. [19981 ofrece discusiones relaciona- Legaria y Joshi [2001] presentan una serie de estrategias das con las operaciones de asociación que soportan de ejecución que SQL Server considera durante la opti- agregación y reunión básica, con una serie de optimi- mizacién basada en el coste. Información adicional sobre zaciones, extensiones y ajuste dinámico del sesgo de aspectos de autoajusre del servidor SQL se discuten en datos. Graefe et al. [1998] presentan la idea de reunir Chaudhurí et al. [1999J. Chaudhuri y Shim !1994J y Yan índices con el único propósito de ensamblar una fila y Larson [1995] discuten la agregación parcial. Chat- con el conjunto de columnas necesarias en una con- ziantoniou y Ross [1997J y Galindo-Legaria y Joshi sulta. Argumenta que esto algunas veces-es más rápi- [2001] propusieron una. a:Itemativautilizada por SQL do que explorar una tabla base. Blakeley [1996J yServer para consultas SQL que requieren una autorreu- Blakcley y Pino [2001] discuten respecto a la comu-nión.Bajo este esquema el optimizador detecta el patrón nicación con el motor de almacenamiento a través dey considera la ejecución por segmentos. Pellenkoñ et al. OLE-DB.11997]discuten el esquema de optimización para gene- La Figura 27.11" que muestra un diagrama de blo-rar el espacio completo. donde el optimizador utiliza ques de arquitectura de alto nivel del soporte XML paratransformaciones completas, locales j no redundantes. SQL Server es de Rys [2001 J. 671