Metodos de Optimizar en SQL

185
UNIVERSIDAD DE SANTIAGO DE CHILE FACULTAD DE CIENCIAS DEPARTAMENTO DE MATEMATICA Y CIENCIA DE LA COMPUTACION METODOS DE OPTIMIZACION DE CONSULTAS PARA EL LENGUAJE SQL. MARIO CISTERNA NEIRA SANTIAGO - CHILE 2002

Transcript of Metodos de Optimizar en SQL

  • UNIVERSIDAD DE SANTIAGO DE CHILE

    FACULTAD DE CIENCIAS

    DEPARTAMENTO DE MATEMATICA Y CIENCIA DE LA COMPUTACION

    METODOS DE OPTIMIZACION DE CONSULTAS PARA EL LENGUAJE SQL.

    MARIO CISTERNA NEIRA SANTIAGO - CHILE

    2002

  • 1

    TABLA DE CONTENIDOS

    DEFINICIN DEL PROBLEMA...........................................................................4

    ESTRUCTURA DEL LIBRO. .................................................................................6

    CAPTULO 1. MODELO DE DATOS RELACIONAL.....................................8 1.1. INTRODUCCIN. ................................................................................................8 1.2. IMPLEMENTACIONES RELACIONALES................................................................9 1.3. CONCEPTOS GENERALES. ................................................................................10

    CAPTULO 2. LENGUAJES DE CONSULTA PARA EL MODELO RELACIONAL. ..........................................................................16

    2.1. INTRODUCCIN. ..............................................................................................16 2.2. ALGEBRA RELACIONAL. ..................................................................................17 2.3. CLCULO RELACIONAL DE TUPLAS. ................................................................23 2.4. SQL COMO LENGUAJE DE CONSULTAS RELACIONALES. ..................................27

    CAPTULO 3. SISTEMAS DE GESTIN DE BASES DE DATOS RELACIONALES. .....................................................................31

    3.1. INTRODUCCIN. ..............................................................................................31 3.2. TRANSACCIONES, CONCURRENCIA Y RECUPERACIN......................................33 3.3. TIPOS DE SGBD..............................................................................................40

    CAPTULO 4. INTRODUCCIN AL PROCESAMIENTO DE CONSULTAS, EL ENFOQUE DE SYSTEM R....................48

    4.1. INTRODUCCIN. ..............................................................................................48 4.2. EL OPTIMIZADOR DE SYSTEM R. .....................................................................51

    CAPTULO 5. OPTIMIZACIN DE CONSULTAS, FUNDAMENTO TERICO. ..................................................................................69

    5.1. INTRODUCCIN. ..............................................................................................69 5.2. INFORMACIN DEL CATLOGO........................................................................70 5.3. MEDIDAS DE COSTO. .......................................................................................72 5.4. EVALUACIN DE EXPRESIONES. ......................................................................95 5.5. ORDENES DE JOIN. ........................................................................................107 5.6. ELECCIN DE LOS PLANES DE EVALUACIN. .................................................123

    CAPTULO 6. EL OPTIMIZADOR DE CONSULTAS DE SYBASE ADAPTIVE SERVER ENTERPRISE, UN EJEMPLO PRCTICO...............................................................................128

    6.1. INTRODUCCIN. ............................................................................................128 6.2. ANLISIS DE LA CONSULTA. .........................................................................129

  • 2

    6.3. SELECCIN DE NDICES. ................................................................................135 6.4. SELECCIN DE LOS ORDENES DE JOIN............................................................137 6.5. USO DE TABLAS TEMPORALES. ......................................................................147 6.6. SELECCIN DEL PLAN....................................................................................148 6.7. RESUMEN. .....................................................................................................152

    RESUMEN Y CONCLUSIONES........................................................................154 RESUMEN.............................................................................................................154 CONCLUSIONES. ...................................................................................................157

    BIBLIOGRAFA...................................................................................................160

    APNDICES. 162

    A. SINTAXIS DE SQL..................................................................162 A.1. DEFINICIONES DE DATOS EN SQL.................................................................162 A.2. MANIPULACIN DE DATOS EN SQL..............................................................167

    B. INDICES B+..............................................................................178

    C. MTODOS DE ALMACENAMIENTO DE DATOS...........181 C.1. DISCOS MAGNTICOS...................................................................................182

  • 3

    TABLA DE TABLAS TABLA 2-1 - OPERADORES DEL ALGEBRA RELACIONAL ........................................................17 TABLA 4-1 - FACTORES DE SELECCIN PARA CAMINOS DE ACCESO A RELACIONES SIMPLES.58 TABLA 4-2 - FRMULAS DE COSTO PARA CAMINOS DE ACCESO A RELACIONES SIMPLES........61 TABLA 5-1 - INFORMACIN DEL CATLOGO PARA RELACIONES SIMPLES. .............................71 TABLA 5-2 - INFORMACIN DEL CATLOGO PARA NDICES DE RELACIONES..........................72 TABLA 5-3 - REGLAS DE EQUIVALENCIA PARA EXPRESIONES RELACIONALES......................104 TABLA A-1 - TIPOS DE DATOS DE SQL................................................................................164

    TABLA DE ALGORITMOS

    ALGORITMO 5-1 - JOIN EN BUCLES ANIDADOS. ......................................................................83 ALGORITMO 5-2 - JOIN EN BUCLES ANIDADOS POR BLOQUES.................................................84 ALGORITMO 5-3 - JOIN POR MEZCLA. ....................................................................................86 ALGORITMO 5-4 - JOIN POR ASOCIACIN. ..............................................................................89 ALGORITMO 5-5 - JOIN ENCAUZADO......................................................................................99

    TABLA DE FIGURAS FIGURA 2-1 - ESQUEMA DE RELACIONES DE EJEMPLO...........................................................18 FIGURA 4-1 - PASOS EN EL PROCESAMIENTO DE UNA CONSULTA SQL...................................50 FIGURA 5-1 - COMPORTAMIENTO DEL ALGORITMO DE SIMULACIN DE COCCIN ..............116 FIGURA 5-2 - EJEMPLO DEL PRINCIPIO DE SELECCIN PARA EL ALGORITMO GENTICO PARA LA

    OPTIMIZACIN DE ORDENES DE JOIN ............................................................................120 FIGURA 5-3 - EJEMPLO DEL PRINCIPIO DE COMBINACIN PARA EL ALGORITMO GENTICO

    PARA LA OPTIMIZACIN DE ORDENES DE JOIN..............................................................121 FIGURA 5-4 - UN PLAN DE EVALUACIN DE EJEMPLO ..........................................................123

  • 4

    Definicin del problema.

    En Bases de datos relacionales el lenguaje de consultas SQL es lo ms

    utilizado por el comn de los programadores y desarrolladores para obtener

    informacin desde la Base de datos. La complejidad que pueden alcanzar algunas

    consultas puede ser tal, que el diseo de una consulta puede tomar un tiempo

    considerable, obteniendo no siempre una respuesta optima.

    Dada una consulta, generalmente existen varias maneras de calcular la

    respuesta. En SQL una consulta puede expresarse de distintas maneras, todas

    ellas diferentes, como lo expresa C. Date en [Date98], cada una de las formas

    sugiere una estrategia para encontrar la respuesta y por lo tanto algunas pueden

    ser ms optimas que otras.

    El problema que se plantea entonces es, el encontrar la manera ms

    apropiada de resolver la consulta, sin que, el proceso de determinar este resultado

    exceda un tiempo razonable y un gasto de recursos adicional.

    Como respuesta a este problema, nace el concepto de optimizacin de

    consultas. El objetivo principal de este proceso es, encontrar o bien la mejor

    alternativa para solucionar la consulta, o de lo contrario, la alternativa que mejor

    cumpla las caractersticas de eficiencia, entre las estudiadas, cuando no sea

    posible estudiarlas todas.

    Este proceso tiene que ser lo bastante rpido como para que sea

    conveniente para el motor efectuar este clculo sin afectar el rendimiento en la

    construccin del resultado de la consulta.

  • 5

    Uno de los primeros estudios relativo a optimizacin de consultas para SQL

    se hizo sobre el prototipo de un motor de base de datos relacional desarrollado por

    IBM llamado system R, en los laboratorios de San Jos (California) a mediados

    de la dcada de 1970. Este estudio proporcionara las bases para la construccin

    de la mayora de los optimizadores para motores de base de datos relacionales de

    orden comercial en la actualidad.

    Entre otras cosas, este estudio propone la descomposicin del

    procesamiento de una consulta SQL en 4 fases: el anlisis sintctico (parsing), la

    optimizacin, la generacin de cdigo y la ejecucin de la consulta.

    Se entiende entonces como proceso de optimizacin de consultas al

    conjunto de tcnicas, algoritmos y reglas que le permiten, al motor de base de

    datos, elegir una alternativa entre varias con la cual pueda rescatar los datos de la

    manera ms optima.

    El objetivo principal de este trabajo es Investigar este proceso y develarlo,

    con la finalidad de que deje de ser algo desconocido para quienes interactan con

    Sistemas de Gestin de bases de datos relacionales.

    La idea de este trabajo es que le sirva de apoyo tanto al diseador de base

    de datos relacionales, como a los desarrolladores que ejecutan consultas,

    quienes, al entender mas de cerca el proceso de optimizacin de consultas

    puedan evitar los errores ms comunes, que a la larga llevan muchas veces al

    fracaso en la construccin e implementacin de sistemas de Informacin sobre

    bases de datos relacionales.

  • 6

    Estructura del libro.

    El Captulo 1 introduce el modelo relacional de datos, el cual es la base

    para el desarrollo de este trabajo, se presentar un marco de trabajo terico sobre

    el cual desarrollar el problema.

    El Captulo 2 trata sobre los distintos lenguajes para recuperacin de datos

    que existen para el modelo relacional, otorgando un nfasis especial sobre el

    lgebra relacional y el clculo relacional de tuplas, fundamentales para la

    presentacin de SQL como lenguaje de consultas.

    El procesamiento de una consulta SQL depender en gran medida de la

    implemetacin relacional en la cual se ejecute, por lo tanto, el Captulo 3 presenta

    la conceptualizacin sobre Sistemas de Gestin de base de datos relacionales

    (SGBD), a modo de explicacin de cmo se logran implementaciones relacionales

    del modelo, en este captulo se explicarn brevemente conceptos tales como

    transacciones, concurrencia y repcuperacin de datos.

    El Captulo 4 Introduce al tema del procesamiento de consultas, para tales

    efectos se presenta el estudio del optimizador de consultas de System R. Este

    SGBD se considera una de las primeras implementaciones relacionales y motivo

    de investigacin tanto como fundamento y guia para la construccin de la mayora

    de los optimizadores relacionales comerciales actuales. El estudio de este caso

    introduce conceptos como medidas de costo, caminos de acceso y utilizacin de

    heursticas dentro de un optimizador.

    El Captulo 5 desarrolla el fundamento terico del libro, estudia en profundidad el

    proceso de optimizacin de consultas SQL. Este captulo explica como los

    optimizadores determinan sus medidas de costo y en que informacin se basan

  • 7

    para estos clculos; como se produce la evaluacin de expresiones y como

    determinar los ordenes de Join.

    Dado que este trabajo no tiene asociado un desarrollo prctico del tema, el

    Captulo 6 presenta un ejemplo de cmo trabaja en la prctica un optimizador de

    consultas para un SGBD comercial, para tales efectos se presenta el caso de

    Sybase Adaptive Server Enterprise (ASE). Este captulo llevar al lector a

    entender que existe una correspondencia entre lo presentado en el Captulo 4, lo

    explicado en el Captulo 5, y como se logra esto en la prctica.

  • 8

    Captulo 1. Modelo de Datos Relacional

    1.1. Introduccin.

    El objetivo de todo modelo de datos es proveer conceptos y estructuras de

    datos capaces de interpretar los aspectos relevantes que existen en una

    determinada parcela del mundo real. Esto se logra mediante un conjunto bien

    definido de estructuras, operadores y restricciones que actan sobre dichas

    estructuras.

    El Modelo Relacional corresponde a un enfoque cientfico y tecnolgico que

    surgi entre la dcada de 1960 y la dcada de 1970. Su estrategia de abstraccin

    se basa en hacer una representacin tabular de los objetos y sus asociaciones

    entre ellos. Sin embargo, este enfoque tabular que se sustenta en la teora de las

    relaciones matemticas no permite diferenciar entre los tipos de entidad y los tipos

    de relacin, lo que constituye una prdida semntica significativa con respecto a

    su antecesor, el modelo de Entidad-Relacin.

    Por otra parte, la representacin tabular de la informacin y los mecanismos

    utilizados para establecer vnculos entre las tablas que se representan de objetos

    relacionados han contribuido enormemente a su masificacin, a tal punto que en la

    actualidad, el Modelo Relacional es un estndar de hecho en los que se

    construyen los SGBD1 comerciales.

    Es importante notar que el modelo relacional es un modelo basado en el

    papel y que no todas sus caractersticas son implementadas en los SGBD, como a

    1 SGBD : Sistemas de Gestin de Bases de datos.

  • 9

    su vez muchas implementaciones tienen ms caractersticas que las que

    contempla el modelo.

    1.2. Implementaciones Relacionales.

    Una implementacin del modelo relacional debe soportar todas las

    facilidades prescritas por el modelo, sin embargo existen algunas caractersticas a

    las cuales no hace referencia el modelo de datos relacional, dentro de estas se

    incluyen operaciones aritmticas, funciones agregadas, actualizaciones explcitas,

    modificaciones, eliminaciones, etc. Para esto el Modelo relacional incluye un

    ncleo de funciones que deben ser incorporadas en un SGBD.

    Sin embargo existe una distincin entre las implementaciones consideradas

    relacionales y los que no lo son en su totalidad (Pseudo-Relacionales). Estas

    ltimas se pueden clasificar como sigue:

    Tabular : Un SGBD Tabular es una implementacin de una Base de datos relacional que soporta las estructuras de datos tabulares (tablas), pero no

    los operadores de nivel de conjuntos.

    Relacional Mnimo: Un SGBD Mnimamente relacional es una implementacin de bases de datos relacionales que soporta slo tablas, los

    operadores de seleccin, proyeccin y el operador JOIN (pero no los otros

    operadores relacionales).

    Relacional Completo: Un SGBD Completamente relacional es una implementacin de bases de datos relacionales que soporta slo tablas y

    todos los operadores del lgebra relacional.

  • 10

    Relacional : Un SGBD Relacional es una implementacin de Bases de datos relacionales que soporta todos los aspectos del modelo relacional

    incluidos los dominios y las dos reglas generales de Integridad (que se

    explicarn ms adelante, en el punto 1.3.12).

    1.3. Conceptos generales.

    1.3.1. Datos Atmicos

    Todos los valores de datos en el modelo relacional son atmicos. Esto

    implica que cada posicin de fila-columna en cada tabla siempre tiene slo un

    dato, y nunca un conjunto de valores.

    1.3.2. Tuplas

    Una tupla de una relacin o de una tabla corresponde a una fila de aquella

    tabla. Las tuplas estn comnmente desordenadas puesto que matemticamente

    una relacin se define como un conjunto y no como una lista. No Existen tuplas

    duplicadas en una relacin o tabla dado el hecho de que una relacin es un

    conjunto y los conjuntos por definicin no permiten elementos duplicados. Un

    corolario importante en este punto es que la llave primaria siempre existe dada la

    condicin de unicidad de las tuplas, por lo tanto, como mnimo la combinacin de

    todos los atributos de una tabla puede servir para la conformacin de la llave

    primaria, sin embargo usualmente no es necesario incluir todos los atributos,

    comnmente algunas combinaciones mnimas son suficientes.

    1.3.3. Dominios.

    Un dominio se define como un conjunto de valores del mismo tipo. Por

    ejemplo el dominio que corresponde a la edad de una persona (en aos) se puede

  • 11

    definir como el conjunto de todos los valores de nmeros posibles de edades, por

    ejemplo desde 0 hasta 120. Siempre y cuando dos atributos tomen sus valores del

    mismo dominio estos pueden ser comparados aunque pertenezcan a distintas

    tablas. Los dominios son especificados como parte de la definicin de los datos,

    estos pueden ser simples o compuestos. Un dominio compuesto se define como el producto de alguna coleccin de dominios simples. Por ejemplo la fecha es producto de el da, el mes y el ao, donde el mes es el dominio simple de 1 a 12 y

    as sucesivamente).

    1.3.4. Atributos.

    Un atributo de una relacin o de una tabla corresponde a una columna de la

    tabla. Los atributos estn desordenados y se referencian por nombres y no por la

    posicin que ocupan. Esto significa que no se puede, por ejemplo, hacer

    referencia al tercer atributo de una relacin. Todos los valores de los atributos son

    atmicos y una relacin que satisfaga esta condicin se llama relacin

    normalizada. Un atributo extrae sus valores desde un dominio simple.

    Formalmente, un atributo es una funcin que se define entre un Dominio y

    un determinado tipo de Entidad de la base de datos. Dicha funcin asocia una

    ocurrencia de Tipo de Entidad con un determinado elemento del dominio.

    1.3.5. Esquema de Relacin.

    Un esquema de relacin es el conjunto que identifica todas las propiedades

    (Atributos) de un objeto. Se representa por el conjunto :

    { }nAAAAE ,......,, 321= donde niAi ,...1, = corresponde a un atributo y n el nmero de atributos de

    inters del objeto.

  • 12

    1.3.6. Relacin

    Formalmente, una relacin R es un conjunto de n-tuplas tal que una n-tupla

    cualquiera x es:

    ( ){ }niiADomaEAaA iii ,.....1,),(,/, =

    donde E es el esquema de la relacin.

    Las propiedades fundamentales de una relacin son :

    No hay tuplas repetidas.

    Las tuplas no estn ordenadas.

    Los atributos no estn ordenados.

    Todos los valores que toman las propiedades son atmicos.

    1.3.7. Grado de una relacin

    El grado de una relacin es el numero de atributos en la relacin. Una

    relacin de grado 1 (uno) es llamada unaria, una relacin de grado 2 es llamada

    binaria, una relacin de grado n es llamada de grado n. Los Grados de una

    relacin no cambian todo el tiempo, pero es posible que se agreguen nuevas

    columnas y se creen nuevas relaciones.

  • 13

    1.3.8. Cardinalidades de una relacin.

    La cardinalidad de una relacin en un determinado momento est definida

    como el nmero de tuplas en la relacin. Esta puede cambiar en cualquier

    momento.

    1.3.9. Compatibilidad de dos relaciones.

    Sean A y B dos relaciones con esquemas { }nAAAE 112111 ,.....,= y { }nAAAE 222212 ,.....,= respectivamente. Se dice que A y B son compatibles si y slo

    si :

    1. 21 ','!, EPPEPP tal que )'()( PDomPDom =

    2. 12 ','!, EPPEPP tal que )'()( PDomPDom =

    En la prctica, esto significa que ambas relaciones deben ser del mismo

    grado n y que el i-esimo atributo de cada relacin se debe basar en el mismo

    dominio.

    1.3.10. Llave Primaria / Llave Candidata

    La llave primaria de una relacin o tabla es de hecho un caso especial de

    una construccin ms general llamada la llave candidata. Una llave candidata es un atributo que sirve como identificador nico para una determinada tabla. Una de

    las llaves candidatas es elegida para ser la llave primaria, las restantes pasarn a

    llamarse claves alternativas. De todos modos, comnmente slo hay una sola llave candidata. Las llaves primarias proporcionan un mecanismo de

    direccionamiento nico a nivel de tuplas para el modelo relacional. Garantizan un

    nico camino para llegar a una tupla individual y por lo tanto son fundamentales

    para las operaciones sobre el modelo relacional.

  • 14

    Formalmente, una llave se define como:

    Sea una relacin con esquema { }nAAAAE ,......,, 321= . Una Llave de la relacin es un atributo o un conjunto de atributos { }lji CCCK ,.....,= que cumple :

    Unicidad: No existen dos tuplas de tales que para ellas, el conjunto de atributos que componen K tienen los mismos valores.

    Minimalidad: Ninguno de los atributos que componen K puede ser eliminado sin afectar la unicidad.

    1.3.11. Llaves externas

    Una Llave externa se define como un atributo (o combinacin de atributos)

    en una relacin cuyos valores se requieren para emparejar a los valores de la llave

    primaria de otra relacin. La llave externa y su correspondiente llave primaria

    deben ser definidas en el mismo dominio.

    Una llave externa no tiene que ser componente de la llave primaria de la

    relacin que la contiene. El emparejamiento entre una llave externa y una llave

    primaria representa una referencia entre dos relaciones, ellas son el pegamento

    que mantiene la base de datos unida.

    1.3.12. Reglas de Integridad.

    Existen bsicamente 2 reglas de integridad asociadas con el modelo

    relacional, la Integridad de Entidad y la Integridad Referencial. Estas dos reglas

    son generales, se aplican a toda base de datos relacional y tienen que ver con las

    llaves primarias y externas respectivamente. Estas reglas se refieren a los estados

  • 15

    de la base de datos. Dado que no existe un acuerdo de como se deben evitar los

    cambios de estado en la base de datos es que muchos SGBD detienen la

    ejecucin de la tarea en curso cada vez que se incurre en una violacin a una de

    estas reglas.

    La regla de Integridad de Entidad norma sobre la imposibilidad de que un

    atributo que componga la llave primaria de una relacin base acepte valores nulos

    (NULL)2.

    La regla de integridad referencial para el modelo relacional formula que si

    una relacin R2 incluye una llave externa FK que empareja a una llave primaria

    PK de alguna relacin R1, entonces cada valor de FK en R2 debe:

    a) Ser igual al valor de PK en alguna tupla de R1

    o

    b) Ser totalmente Nula, esto es, cada atributo en FK debe ser nulo.

    2 Un Valor nulo en el modelo relacional es un valor especial distinto de cero o blanco

    (dependiendo del tipo de dato) que significa No aplicable o Desconocido. Para mayor detalle, ver la discusin sobre valores nulos en [McJones97].

  • 16

    Captulo 2. Lenguajes de consulta para el Modelo

    Relacional.

    2.1. Introduccin.

    Un lenguaje de consulta es un lenguaje en el que el usuario solicita

    informacin de la base de datos, Los lenguajes de consulta se pueden clasificar en

    procedurales y no procedurales. Los lenguajes procedurales son aquellos en los

    cuales el usuario instruye al sistema para que lleve a cabo una serie de

    operaciones en la base de datos con el fin de calcular el resultado deseado. En

    los lenguajes no procedurales, en cambio, el usuario describe la informacin

    deseada sin dar un procedimiento concreto para obtener esta informacin.

    Los lenguajes puros para la consulta de datos son 3. El lgebra relacional,

    el cual es procedural y los clculos relacionales tanto de tuplas como de dominios,

    los cuales son lenguajes no procedurales. Estos 3 lenguajes son rgidos y

    formales, por lo tanto la mayor parte de los sistemas comerciales de bases de

    datos relacionales ofrecen lenguajes de consulta mixtos, que adems de ser ricos

    en sintaxis ofrecen adicionalmente sublenguajes de definicin de datos,

    administracin de seguridad y otras caractersticas.

    Se estudiarn brevemente dos de los tres lenguajes puros de consultas de base

    de datos, con el fin de presentar una base terica para introducir SQL. Se excluir

    el clculo relacional de dominios dado que es una generalizacin del clculo

    relacional de tuplas y queda fuera del alcance de este trabajo. Para un estudio

    ms acabado del clculo relacional de dominios se recomienda leer

    [Silbercshatz93].

  • 17

    2.2. Algebra relacional.

    El Algebra relacional es un lenguaje de consulta procedural. Consta de un

    conjunto de operaciones que toman como entrada una o dos relaciones y

    producen como resultado una nueva relacin, por lo tanto, es posible anidar y

    combinar operadores. Hay ocho operadores en el lgebra relacional que

    construyen relaciones y manipulan datos, estos son:

    1. Seleccin 2. Proyeccin 3. Producto

    4. Unin 5. Interseccin 6. Diferencia

    7. JOIN 8. Divisin Tabla 2-1 - Operadores del Algebra relacional

    Las operaciones de proyeccin, producto, unin, diferencia, y seleccin son

    llamadas primitivas, puesto que las otras tres se pueden definir en trminos de

    estas.

    Se hace necesario en este punto incluir un modelo de datos de ejemplo en

    el cual trabajar para generar ejemplos de comandos y operadores. Para este

    efecto se incluye un modelo bsico de administracin de RadioTaxis. El Grfico

    que se presenta a continuacin representa el Modelo conceptual (Modelo Lgico)

    o Diagrama de Entidad-Relacin:

  • 18

    por genera un

    realiza

    los hace un

    manejalo manejaposee es de un

    MovilPatenteMarcaModeloAo

    ViajeHora DesdeHora HastaOrigenDestinoTarifaMetraje

    DueoRutNombreTelfonoDireccinVigencia

    ChoferRutNombreTelfonoDireccinFecha_licencia_desdeFecha_licencia_hastaVigencia

    ValeCorrelativoHora desdeHora HastaMetraje totalTarifa Total

    Conceptual Data ModelProject : Control de RadioTaxisModel : RadioTaxAuthor : Mario Cisterna Version 28/12/98

    Figura 2-1 - Esquema de Relaciones de Ejemplo

    Los Esquemas de relaciones que se pueden construir a partir de este

    modelo son los siguientes:

    Dueo = {rut, nombre, telfono, direccin, vigencia}

    Chofer = {rut, nombre, telfono, direccin, fecha_licencia_desde, fecha_licencia_hasta, vigencia}

    Vale = {correlativo, hora_desde, hora_hasta, metraje_total, tarifa_total}

    Mvil = {patente, rut_dueo, rut_chofer, marca, modelo, ao}

    Viaje = {correlativo_vale, patente_movil, Hora_Desde, hora_hasta, origen, destino, tarifa, metraje}

    2.2.1. Seleccin.

    El operador de seleccin opta por tuplas que satisfagan cierto predicado, se

    utiliza la letra griega sigma minscula () para sealar la seleccin. El predicado

  • 19

    aparece como subndice de . La Relacin que constituye el argumento se da

    entre parntesis despus de la .

    Ejemplos :

    )('' DueoSvigencia=

    )('8483' MovilHLpatente =

    2.2.2. Proyeccin.

    La operacin de proyeccin permite quitar ciertos atributos de la relacin,

    esta operacin es unaria, copiando su relacin base dada como argumento y

    quitando ciertas columnas, La proyeccin se seala con la letra griega pi

    mayscula (). Como subndice de se coloca una lista de todos los atributos que

    se desea aparezcan en el resultado. La relacin argumento se escribe despus de

    entre parntesis.

    Ejemplos :

    )(, Dueodireccionnombre

    )(, Chofervigenciarut

    2.2.3. Producto.

    En lgebra relacional el producto de dos relaciones A y B es:

    A Veces B o A X B

  • 20

    Produce el conjunto de todas las tuplas t tales que t es el encadenamiento de una tupla a perteneciente a A y de una b que pertenece a B. se utiliza el smbolo X

    para representar el producto.

    Ejemplos:

    ChoferMovil

    MovilDueo

    2.2.4. Unin.

    En lgebra relacional la unin de dos relaciones compatibles 3A y B es:

    A UNION B o A B

    Produce el conjunto de todas las tuplas que pertenecen ya sea a A o a B o a

    Ambas. Al igual que en teora de conjuntos el smbolo representa aqu la unin

    de dos relaciones.

    Ejemplo :

    )()( ,, ChoferDueo vigenciarutvigenciarut Devuelve todos los Dueos y los Choferes.

    2.2.5. Interseccin.

    En lgebra relacional la interseccin de dos relaciones compatibles A y B

    3 Relaciones Compatibles : En el lgebra relacional la compatibilidad se aplica a las operaciones de Unin, Interseccin y Diferencia. Cada operacin requiere dos relaciones que deben ser compatibles, esto significa que deben ser del mismo grado, n, y el i-simo atributo de cada una (i= 1, 2n) se debe basar en el mismo dominio.

  • 21

    A INTERSECCION B o A B

    Produce el conjunto de todas las tuplas pertenecientes a A y B. Al igual que en

    teora de conjuntos el smbolo representa aqu la interseccin entre dos

    relaciones.

    Ejemplo:

    )()( ,, ChoferDueo vigenciarutvigenciarut Devuelve todos los dueos que tambin son choferes

    2.2.6. Diferencia

    En lgebra relacional la diferencia entre dos relaciones compatibles A y B

    A MENOS B o A B

    Produce el conjunto de todas las tuplas t que pertenecen a A y no pertenecen a B.

    Ejemplo:

    )()( ,, ChoferDueo vigenciarutvigenciarut Devuelve todos los dueos que NO son choferes

    2.2.7. Join o Reunin.

    En lgebra relacional el JOIN entre el atributo X de la relacin A con el atributo Y de la relacin B produce el conjunto de todas las tuplas t tal que t es el encadenamiento de una tupla a perteneciente a A y una tupla b perteneciente a B que cumplen con el predicado A.X comp B.Y es verdadero (siendo comp un

  • 22

    operador relacional y los atributos A.X y B.Y pertenecientes al mismo dominio). Si

    el operador relacional comp es = entonces el conjunto resultante es un EQUI-

    JOIN. Si se quita uno de stos (usando una proyeccin) entonces el resultado es

    un JOIN-NATURAL.

    Ejemplo :

    )(_.. MovilDueodueorutMovilrutDueo =

    2.2.8. Divisin

    En lgebra relacional el operador de divisin divide la relacin A con grado m + n por la relacin B entregando como resultado una relacin con grado m. El atributo m + i de A y el atributo i de B deben estar definidos dentro del mismo

    dominio. As el resultado de

    A DIVIDIDO POR B o A / B

    produce la relacin C con un slo atributo X, tal que cada valor de x de C.X aparece como un valor de A.X, y el par de valores (x, y) aparece en A para todos los valores y que aparecen en B.

    Ejemplo:

    )(/ )()( 1999/01/01___, ChoferMovil hastalicenciafecharutchoferrutpatente

  • 23

    2.3. Clculo relacional de tuplas.

    El clculo relacional de tuplas describe la informacin deseada sin dar un

    procedimiento especfico para obtenerla. Las consultas en el clculo relacional de

    tuplas se expresan como

    { t | P(t)},

    es decir, son el conjunto de tuplas t tales que se cumple el predicado P para cada

    t. Siguiendo la misma notacin, se utiliza t[A] para el valor de la tupla t en el

    atributo A.

    }''][|{ SvigenciatDueott =

    }'8483'][|{ = HLpatentetMoviltt

    Si slo se desea obtener un atributo de la tupla, se utiliza el constructor

    Existe de la lgica matemtica. As, si lo que se desea es el Nombre de los

    dueos de taxis que estn vigentes:

    )}''][][][(|{ SvigenciasNombresNombretDueost ==

    "Conjunto de todas las tuplas t tales que existe una tupla s en la relacin

    Dueo para la que los valores de t y de s son iguales en el atributo Nombre y el

    valor de s para el atributo vigencia = S ". La variable de tupla t se define slo en

    el atributo Nombre, puesto que ste es el nico atributo para el que se especifica

    una condicin para t. As, el resultado es una relacin sobre (Nombre).

  • 24

    Si lo que se desea es obtener las tarifas de todos los viajes que ha

    efectuado todos los mviles de marca chevrolet, la consulta requiere de dos

    clusulas Existe conectadas por el operador de conjuncin lgica y.

    ))}""][][][(

    ][][(|{

    chevroletmarcaupatenteupatentesMovilu

    tarifastarifatViajest

    ==

    =

    Que se lee como el conjunto de todas las tuplas(tarifa) correspondientes a los

    viajes que han hecho todos los mviles de marca chevrolet.

    Considrese ahora la consulta obtener todos los RUT de los dueos de

    mviles, cuyos mviles no hayan efectuado nunca un viaje:

    ]))}[][(

    ][][(|{

    patenteupatentesViajeu

    RutsruttMovilst

    =

    =

    que ocupa la clusula Existe para exigir que el dueo posea un mvil y la

    clusula no existe para eliminar a aquellos mviles que tengan viajes realizados.

    La consulta que se presenta a continuacin utiliza la implicacin, la frmula P

    implica Q significa que si P es verdad entonces Q debe ser verdad, se introduce

    el constructor para todo. Se desea Selecciona todos los autos a cuyos choferes

    les caduca la licencia el 01/01/1999.

    }]))[]_[][][(

    "1999/01/01"]__[(|{

    rutuchoferrutspatentespatentetMovils

    hastalicenciafechauChoferut

    ==

  • 25

    2.3.1. Definicin Formal.

    Una expresin del clculo relacional de tuplas es de la forma:

    {t|P(t)} donde P es una frmula. En una frmula pueden aparecer varias variables

    de tuplas. Se dice que una variable de tupla es una variable libre a menos que

    este cuantificada por un o por un que entonces se dice variable ligada.

    Una frmula en el clculo relacional de tuplas se compone de tomos. Un

    tomo tiene una de las siguientes formas:

    1. s r, donde s es una variable de tupla y r es una relacin. No se permite la

    operacin .

    2. s[x] u[y], donde s y u son variables de tuplas, x e y son atributos sobre los

    que estn definidos s y u respectivamente, y es un operador de comparacin

    (=). Se requiere que los atributos x e y tengan dominios cuyos

    miembros puedan compararse por medio de .

    3. s[x] c, donde s es una variable de tupla, x es una atributo sobre el que s esta

    definida, es un operador de comparacin, y c es una constante en el dominio

    del atributo x.

    Ahora bien, Las frmulas se construyen a partir de tomos usando las

    siguientes reglas:

    1. Un tomo es una frmula.

    2. Si P1 es una frmula, entonces tambin lo son P1 y (P1).

  • 26

    3. Si P1 y P2 son frmulas, entonces tambin lo son P1P2, P1P2 y P1P2.

    4. Si P1(s) es una frmula que contiene una variable de tupla libre s y r es una

    relacin, entonces:

    s r (P1(s)) y s r (P1(s)) tambin son frmulas.

    2.3.2. Seguridad de expresiones.

    Una expresin del clculo relacional de tuplas puede generar relaciones

    infinitas. Si por ejemplo se utiliza la construccin {t | (t Dueo)} hay infinitas

    tuplas de personas que no son dueos de algn mvil, de hecho la mayora de

    estas tuplas ni siquiera pertenecen a la base de datos.

    Para ayudar a definir las ligaduras del clculo relacional de tuplas se

    introduce el concepto de dominio de frmulas. De forma intuitiva, el dominio de la

    frmula P (dom(p)) es el conjunto de todos los valores a los que P hace referencia.

    Esto incluye a todos los valores mencionados en P como todos los valores que

    aparezcan en las relaciones referenciadas por P.

    Se dice que una expresin {t | P(t)} es segura si todos los valores que

    aparecen en el resultado son valores del dominio de P.

    2.3.3. Potencia expresiva de los lenguajes.

    El clculo relacional de tuplas restringido a expresiones seguras es

    equivalente en potencia expresiva al lgebra relacional. Por lo tanto, para cada

    expresin del lgebra relacional hay una expresin equivalente en el clculo

    relacional de tuplas y viceversa. La demostracin de este hecho queda fuera de

    los alcances de este trabajo, una prueba formal de la equivalencia entre el clculo

  • 27

    relacional de tuplas y el lgebra relacional propuesta por E.F. Codd se puede

    encontrar en [Codd71].

    2.4. SQL como lenguaje de consultas relacionales.

    2.4.1. Introduccin.

    Los lenguajes formales presentados en las secciones 2.2 y 2.3

    proporcionan una notacin concisa para la representacin de consultas. Sin

    embargo, los sistemas de base de datos necesitan un lenguaje de consultas ms

    cmodo para el usuario. Aunque SQL se considere un lenguaje de consultas,

    contiene muchas otras capacidades que incluyen caractersticas para definir

    estructuras de datos, modificacin de datos y la especificacin de restricciones de

    integridad.

    SQL se ha establecido como el lenguaje estndar de base de datos

    relacionales. Hay numerosas versiones de SQL. La versin original se desarrollo

    en el laboratorio de investigacin de San Jose, California (San Jose Research

    Center) de IBM, este lenguaje originalmente denominado Sequel, se implement

    como parte del proyecto System R, a principios de 1970 [McJones97]. Desde

    entonces ha evolucionado a lo que ahora se conoce como SQL (Structured Query

    Language, o lenguaje estructurado de consultas).

    En 1986, ANSI (American National Standards Institute, Instituto Nacional

    Americano de Normalizacin) e ISO (International Standards Organization,

    Organizacin Internacional de Normalizacin) Publicaron una norma de SQL

    denominada SQL-86. En 1987 IBM public su propia norma de SQL denominada

    SAA-SQL(System Application Architecture Database Interfaz, Interfaz de base de

    datos para arquitecturas de aplicacin de sistemas). En 1989 se public una

  • 28

    norma extendida para SQL (SQL-89) y actualmente los SGBD son compatibles al

    menos con esta norma. La norma actual de SQL de ANSI/ISO es la SQL-92. Se

    debe tener en cuenta que algunas implementaciones de SQL pueden ser

    compatibles slo con SQL-89, no sindolo con SQL-92.

    SQL proporciona dos tipos de lenguajes diferentes: uno para especificar el

    esquema relacional y el otro para expresar las consultas y actualizaciones de la

    base de datos.

    2.4.2. Lenguaje de definicin de datos (DDL Data Definition

    Language)

    Un esquema de bases de datos se representa mediante un sublenguaje

    especial llamado lenguaje de definicin de datos. El resultado de la compilacin de

    estas instrucciones es un conjunto de tablas, relaciones y reglas cuyas

    definiciones quedan almacenadas en un archivo (tabla u otro medio de

    almacenamiento) que contiene metadatos, esto es, datos acerca de datos. Este

    archivo comnmente llamado diccionario de datos (o catalogo del sistema) es el

    que se consulta toda vez que se quiere leer, modificar o eliminar los datos de la

    base de datos.

  • 29

    2.4.3. Lenguaje de manipulacin de datos (DML Data Manipulation

    Language)

    Un D.M.L. es un sublenguaje de consulta y manipulacin de datos.

    Se entender por manipulacin de datos la :

    Recuperacin de Informacin.

    Insercin de nueva Informacin.

    Eliminacin (Borrado) de informacin existente.

    Modificacin de Informacin Almacenada.

    2.4.4. Otras caractersticas de SQL.

    Adems de los dos tipos de sublenguajes mencionados anteriormente, SQL

    puede ser utilizado para otras caractersticas propias que no poseen los lenguajes

    formales de consultas, estas son:

    Definicin de vistas. El DDL de SQL incluye instrucciones para la definicin de vistas.

    Autorizacin. El DDL de SQL incluye instrucciones para la especificacin de los derechos de acceso a los objetos de la base de

    datos.

    Integridad. El DDL de SQL tambin incluye un conjunto de sentencias para la especificacin de restricciones de integridad.

    Control de transacciones. SQL incluye ordenes para la especificacin de los estados de una transaccin, algunas implementaciones permiten

  • 30

    adems el bloqueo explicito de objetos de datos con el fin de manejar

    control de concurrencia.

    Para los efectos de este trabajo se anexa en el apndice A una breve

    descripcin de los sublenguajes de Definicin y manipulacin de datos.

  • 31

    Captulo 3. Sistemas de Gestin de Bases de datos

    Relacionales.

    3.1. Introduccin.

    Un Sistema de Gestin de Bases de datos (SGBD) consiste en una

    coleccin de datos interrelacionados y una coleccin de programas para acceder a

    esos datos. El objetivo principal de un SGBD es proporcionar un entorno que sea

    tanto conveniente como eficiente para las personas que lo ocupan en el

    almacenamiento y recuperacin de la informacin.

    Los sistemas de bases de datos se disean para almacenar grandes

    volmenes de informacin, la gestin de los datos implica entonces la definicin

    de estructuras para el almacenamiento de la informacin y la provisin de

    mecanismos para la manipulacin de estos. Adems deben proporcionar

    mecanismos de seguridad de los datos que protejan al sistema frente a cadas o a

    intentos de acceso de personas no autorizadas. Si los datos estn compartidos

    por varios usuarios, el sistema debe asegurar la consistencia de los datos evitando

    posibles resultados anmalos.

    Un propsito principal de un sistema de bases de datos es proporcionar a

    los usuarios una visin abstracta de los datos. Esto se logra mediante la definicin

    de 3 niveles de abstraccin que pueden ser observados: el nivel fsico, el nivel

    lgico y el nivel de vistas.

    El nivel fsico es el nivel ms bajo de abstraccin, es el que describe como

    se almacenan los datos, a su vez, el nivel lgico describe que datos se

    almacenan realmente en la base de datos y que relaciones existen entre estos

  • 32

    datos. El nivel ms alto de abstraccin de datos es el nivel de vistas, el cual slo

    presenta una determinada porcin de la base de datos, dependiendo del tipo de

    usuario que la consulta, as, el sistema puede proporcionar muchas vistas para la

    base de datos.

    Una base de datos sufre constantes cambios en el contenido de la

    informacin que contiene en el transcurso del tiempo. La coleccin de datos

    almacenada en un momento particular se denomina ejemplar de la base de datos.

    El diseo completo de la base de datos se llama esquema de la base de datos.

    La capacidad de modificar la definicin del esquema en un nivel sin que

    afecte a una definicin de esquema en el nivel inmediatamente superior se

    denomina independencia de datos. Existen 2 niveles de independencia de datos:

    La independencia fsica de datos y la independencia lgica.

    La Independencia fsica de los datos se describe como la capacidad de

    modificar el nivel fsico de la base de datos sin tener que rescribir los programas

    de aplicacin. En tanto la independencia lgica se define como la capacidad de

    modificar el esquema lgico sin causar que los programas de aplicacin tengan

    que rescribirse.

    Un esquema de base de datos se especifica mediante un conjunto de

    definiciones expresadas en un DDL (Lenguaje de definicin de datos). El resultado

    de esta definicin es un conjunto de tablas y relaciones que se almacenan en una

    tabla (o un conjunto de tablas) especial que se identifica como el diccionario de

    datos o el catlogo de la base de datos.

    Una transaccin de base de datos se define como coleccin de operaciones

    que se lleva a cabo como una funcin lgica simple en una aplicacin de base de

    datos. Cada transaccin es una unidad de atomicidad y consistencia. La

  • 33

    atomicidad aqu se entiende como la capacidad de que muchas instrucciones se

    entiendan en ciertos casos como una sola, la consistencia se refiere a la

    capacidad de respetar las restricciones de consistencia de datos que posee la

    base de datos antes y despus de ejecutar una transaccin. El gestor de

    transacciones es el responsable de asegurar que la base de datos permanezca en

    un estado consistente a pesar de los fallos del sistema. El gestor de transacciones

    tambin asegura que la ejecucin de transacciones concurrentes ocurran sin

    conflictos. El gestor de almacenamiento de la base de datos es un programa (o

    modulo) que proporciona la interfaz entre los datos de bajo nivel almacenados en

    la base de datos y los programas de aplicacin y las consultas enviadas al

    sistema. El gestor de almacenamiento es el responsable de la interaccin con los

    datos almacenados en disco.

    3.2. Transacciones, concurrencia y recuperacin.

    3.2.1. Transacciones.

    Una transaccin es una unidad de la ejecucin de un programa que accede

    y posiblemente actualiza varios elementos de datos. Se delimita dependiendo del

    lenguaje por las sentencias inicio transaccin y fin transaccin y se compone de

    todas las instrucciones que se encuentran entre estos dos delimitadores.

    Para asegurar la consistencia de los datos se necesita que el sistema de

    base de datos tengan las propiedades llamadas ACID: (Atomicity, Consistency,

    Isolation, Durability - Atomicidad, Consistencia, Aislamiento, Durabilidad

    [Silberschatz97].

    La atomicidad asegura que o bien todos los efectos de la transaccin se

    reflejan en la base de datos, o bien ninguno de ellos; un fallo no puede dejar a la

    base de datos en un estado en el cual una transaccin se haya ejecutado

  • 34

    parcialmente. La consistencia asegura que si la base de datos es consistente

    inicialmente, la ejecucin de la transaccin deja la base de datos en un estado

    consistente. El aislamiento asegura que en la ejecucin concurrente de

    transacciones, estas estn aisladas unas de otras, de tal manera que cada una

    tiene la impresin de que ninguna otra transaccin se ejecuta concurrentemente

    con ella. La durabilidad asegura que una vez que la transaccin se ha

    comprometido, las actualizaciones hechas por la transaccin no se pierden,

    incluso si hay un fallo en el sistema.

    Una transaccin que termina con xito se dice que est comprometida

    (commited), una transaccin que haya sido comprometida llevar a la base de

    datos a un nuevo estado consistente que debe permanecer incluso si hay un fallo

    en el sistema. En cualquier momento una transaccin slo puede estar en uno de

    los siguientes estados.

    Activa (Active): el estado inicial; la transaccin permanece en este estado durante su ejecucin.

    Parcialmente comprometida (Uncommited): Despus de ejecutarse la ultima transaccin.

    Fallida (Failed): tras descubrir que no se puede continuar la ejecucin normal.

    Abortada (Rolled Back): despus de haber retrocedido la transaccin y restablecido la base de datos a su estado anterior al comienzo de la

    transaccin.

    Comprometida (Commited): tras completarse con xito.

    Cuando varias transacciones se ejecutan concurrentemente, existe la

    posibilidad de que se pierda la consistencia de datos. Se hace necesario por lo

    tanto un sistema que controle la interaccin entre las transacciones concurrentes.

    Puesto que una transaccin por definicin conserva la consistencia, una ejecucin

  • 35

    lineal de transacciones la garantiza tambin. Un sistema que asegure esta

    propiedad se dice que asegura la secuencialidad.

    3.2.2. Concurrencia.

    Existen varios esquemas de control de concurrencia que aseguran la

    secuencialidad, todos estos esquemas o bien retrasan una operacin o bien

    abortan la transaccin que ha realizado la operacin. Los ms conocidos son los

    protocolos de bloqueo, el esquema de ordenacin por marcas temporales, las

    tcnicas de validacin, el esquema de granularidad mltiple y los esquemas

    multiversin.

    Un protocolo de bloqueo es un conjunto de reglas que indican el momento

    en que una transaccin puede bloquear o desbloquear un objeto de la base de

    datos. El protocolo de bloqueo de dos fases permite que una transaccin bloquee

    un objeto slo despus de que haya desbloqueado otro objeto distinto, este

    mtodo asegura la secuencialidad.

    El esquema de ordenacin por marcas temporales asegura la

    secuencialidad seleccionando previamente un orden en todo par de transacciones.

    Existen 2 formas de implementar este esquema, uno es por medio de valores

    timestamp (dependientes del reloj del sistema) y por medio de un contador lgico

    que se incrementa cada vez que asigna una nueva marca temporal. Este

    protocolo asegura la secuencialidad en cuanto a conflictos y la ausencia de

    interbloqueos, si una de las transacciones viola la norma la transaccin se retrasa

    y se le asigna una nueva marca temporal. Por ejemplo, una operacin leer se

    puede retrasar porque todava no se ha escrito el valor apropiado o incluso

    rechazar si ha sobrescrito el valor que supuestamente se iba a leer.

  • 36

    Un esquema de validacin es un mtodo de control de concurrencia

    adecuado para transacciones de slo lectura y en las cuales la tasa de conflictos

    es baja. Se basa en dividir una transaccin en 3 etapas (lectura, validacin y

    escritura) y trabajar con el esquema de marcas temporales sobre la etapa de

    validacin. De esta manera se quita una sobrecarga en la etapa de lectura, en la

    cual no se necesita un esquema de control de concurrencia dado que toda lectura

    lleva a la base de datos al mismo estado de consistencia.

    Una manera distinta manejar la concurrencia es por medio de la

    granularidad, este concepto permite agrupar varios elementos de datos y definirlos

    como un todo para efectos de sincronizacin. Se define como una jerarqua de

    distintos niveles, donde el nivel superior puede representar toda la base de datos,

    se esquematiza como estructura de rbol donde los nodos hijos de un nodo

    interno representan las dependencias de datos asociadas. Se utilizan los tipos de

    bloqueos Compartidos y Exclusivos ms un nuevo tipo de bloqueo llamado el

    bloqueo intencional, el cual indica que existen nodos descendientes que tienen

    bloqueos compartidos o exclusivos.

    El esquema multiversin se basa en la creacin de nuevas versiones de los

    elementos de datos cada vez que una transaccin vaya a escribir dicho elemento.

    Cuando se va a realizar una escritura el sistema elige una de las versiones para

    que se lea. El esquema de control de versiones garantiza que la versin que se va

    a leer se elige de forma que asegure la secuencialidad por medio de marcas

    temporales. En este esquema una operacin de lectura tiene xito siempre, sin

    embargo, una operacin de escritura puede provocar el retroceso de una

    transaccin.

    Un sistema est en estado de interbloqueo si existe un conjunto de

    transacciones tal que toda transaccin del conjunto est esperando a otra

    transaccin del conjunto. En tal situacin, ninguna de las transacciones puede

  • 37

    progresar. Existen 2 mtodos para tratar los interbloqueos y ambos provocan un

    retroceso de las transacciones, la diferencia radica en que uno es preventivo y otro

    curativo. El protocolo de prevencin de interbloqueos asegura que el sistema

    nunca llegar a un estado de interbloqueos mientras que el mtodo de deteccin y

    recuperacin de interbloqueos permite que el sistema llegue a un estado de

    interbloqueos para luego tratar de recuperarse. La prevencin se usa normalmente

    cuando la probabilidad de que el sistema llegue a un estado de interbloqueo es

    relativamente alta, de lo contrario lo ms conveniente es usar la deteccin y

    recuperacin.

    3.2.3. Recuperacin.

    Los fallos que ocurren en un computador pueden darse por diferentes

    motivos (fallos de disco, cortes de energa o fallos en el software). En cada uno de

    estos casos puede perderse informacin concerniente a la base de datos. Existen

    varios tipos de fallas, a considerar:

    Fallo en la transaccin, que a su vez se dividen en errores lgicos y errores del

    sistema. Un error lgico ocurre cuando una transaccin no puede continuar con

    su ejecucin normal a causa de una condicin interna como lo es un

    desbordamiento o un exceso de recursos. Un error del sistema ocurre cuando

    el sistema se encuentra en un estado no deseado como en el caso de los

    interbloqueos.

    Cada del sistema, provocado ya sea por el hardware, el sistema operativo o

    por el software de base de datos. Comnmente causa la prdida del contenido

    de la memoria primaria y aborta el procesamiento de una transaccin.

  • 38

    Fallo de disco, para el cual slo sirve la recuperacin por medio de copias

    existentes en medios de almacenamiento secundario como cintas magnticas.

    La forma ms aceptada de lograr un tipo de almacenamiento lo ms estable

    posible es replicando la informacin en varios medios de almacenamiento no

    voltil, con modos de fallos independientes. Los sistemas RAID (disposicin

    redundante de discos independientes) garantizan que el fallo de un slo disco no

    conduzca a la perdida de datos. Sin embargo los sistemas RAID, no pueden

    proteger al sistema de una prdida de datos en el caso de una catstrofe

    geogrfica, para tales efectos muchos sistemas de almacenamiento guardan

    copias de seguridad en cintas en otros lugares, no obstante, como las cintas no

    pueden ser trasladadas continuamente, los ltimos cambios realizados luego del

    traslado de cintas no se pueden volver a recuperar en el caso de tales desastres.

    Los sistemas ms seguros guardan copias de cada bloque de almacenamiento en

    otra disposicin geogrfica, datos que se transmiten por medios de redes de

    computadores al sistema de respaldo remoto.

    El estado de un sistema de base de datos puede no volver a ser consistente

    en caso de que ocurran fallos, para preservar la consistencia es necesario que

    cada transaccin sea atmica. Garantizar la propiedad de atomicidad es

    responsabilidad del esquema de recuperacin.

    Existen bsicamente 2 esquemas que garantizan la atomicidad.

    Basados en el registro histrico4. Todas las modificaciones se graban en el

    registro histrico, el cual debe estar guardado en almacenamiento estable. En el

    esquema de modificacin diferida, durante la ejecucin de una transaccin, se

    difieren todas las operaciones de escritura hasta que la transaccin se

    4 Comnmente llamado log de transacciones.

  • 39

    compromete parcialmente, momento en el cual se utiliza la informacin del registro

    histrico asociado con la transaccin para ejecutar las escrituras diferidas. Con la

    tcnica de modificacin inmediata todas las modificaciones se aplican

    directamente en la base de datos. Si ocurre una cada se utiliza la informacin del

    registro histrico para llevar a la base de datos a un estado estable previo.

    Paginacin en la sombra. Durante la vida de una transaccin se mantienen

    2 tablas de pginas: la tabla actual de pginas y la tabla de pginas sombra.

    Ambas tablas son idnticas al principio de la transaccin, sin embargo, la tabla

    actual de pginas puede ir cambiando luego de cada operacin escribir. Todas las

    operaciones de lectura y escritura utilizan la tabla de pginas actual, cuando una

    transaccin se compromete parcialmente se desecha la tabla de pginas sombra y

    la tabla actual se convierte en la nueva tabla de pginas. Si la transaccin fracasa,

    simplemente se desecha la tabla actual de pginas.

    El procesamiento de transacciones se basa en un modelo de

    almacenamiento en el cual la memoria principal contiene una memoria intermedia

    para el registro histrico, una memoria intermedia para la base de datos y una

    memoria intermedia para el sistema. Una implementacin eficiente de un

    esquema de recuperacin de datos requiere que sea mnimo el nmero de

    escrituras de la base de datos y que sea realizado en almacenamiento estable.

    Los registros del registro histrico pueden guardarse inicialmente en la memoria

    intermedia del registro histrico pero deben ser llevados a almacenamiento estable

    bajo dos situaciones:

    a) deben escribirse en almacenamiento estable todos los registros del registro

    histrico que referencien a la transaccin Ti antes de grabar el registro que

    indique que la transaccin Ti ha sido comprometida

  • 40

    b) deben escribirse en almacenamiento estable todos los registros del registro

    histrico pertenecientes a los datos de un bloque antes de que ese bloque de

    datos se escriba desde la memoria intermedia a la base de datos.

    3.3. Tipos de SGBD.

    La arquitectura de un sistema de base de datos est influenciada por el

    sistema informtico que soporta la instalacin del SGBD, lo que reflejar muchas

    de las caractersticas propias del sistema subyacente en el SGBD.

    La redes de computadores permiten separar tareas en un esquema de

    clientes y servidores, el procesamiento paralelo dentro del computador permite

    acelerar algunas de las tareas de la base de datos as como la posibilidad de

    ejecutar ms transacciones por segundo. Las consultas se pueden paralelizar

    permitiendo as que una consulta se pueda ejecutar por ms de un procesador al

    mismo tiempo, esta caracterstica ha llevado al estudio de las bases de datos

    paralelas.

    La distribucin de datos a travs de distintos departamentos de una

    organizacin permite que ellos residan donde han sido generados (y donde se

    entiende que son ms requeridos); la idea de mantener una copia de estos datos

    en otros lugares permite que puedan seguir las operaciones sobre los datos an si

    alguno de estos sitios sufre algn desastre. El estudio de este tipo de

    descentralizacin de los datos lleva al desarrollo de los sistemas de base de datos

    distribuidos.

    3.3.1. SGBD centralizados.

  • 41

    Un sistema de base de datos centralizado es aquel que se ejecuta en un

    nico sistema computacional sin tener, para tal efecto, que interactuar con otros

    computadores. El rango de estos sistemas comprende desde los sistemas de

    bases de datos monousuario ejecutndose en computadores personales hasta los

    sistemas de bases de datos ejecutndose en sistemas de alto rendimiento.

    Normalmente los sistemas de base de datos monousuarios no suelen

    proporcionar muchas de las facilidades que ofrecen los sistemas multiusuario, en

    particular no tienen control de concurrencia y tienen precarios o inexistentes

    sistemas de recuperacin.

    Dado que las maquinas en las cuales se utilizan los sistemas monousuarios

    son comnmente computadores de propsito general, la arquitectura de estas

    maquinas es siempre parecida(de 1 a 2 procesadores que comparten la memoria

    principal) por tanto los sistemas de base de datos que se ejecutan sobre estas

    maquinas no intentan dividir una consulta simple entre los distintos procesadores,

    sino que ejecutan cada consulta en un nico procesador posibilitando as la

    concurrencia de varias consultas. Este tipo de sistemas dan la sensacin de una

    mayor productividad (puesto que pueden ejecutar un mayor nmero de

    transacciones por segundo) a pesar de que cada transaccin individualmente no

    se ejecute ms rpido. Por el contrario las mquinas paralelas tienen un gran

    nmero de procesadores y los sistemas de base de datos que ah se ejecutan

    siempre tendern a paralelizar las tareas simples (consultas) que solicitan los

    usuarios.

    3.3.2. SGBD Cliente-Servidor.

    Con el crecimiento de los computadores personales (PC) y de las redes de

    rea local (LAN), se han ido desplazando hacia el lado del cliente la funcionalidad

    de la parte visible al usuario de la base de datos (interfaces de formularios, gestin

  • 42

    de informes, etc.) de modo que los sistemas servidores provean la parte

    subyacente que tiene que ver con el acceso a las estructuras de datos, evaluacin

    y procesamiento de consultas, control de concurrencia y recuperacin. Los

    sistemas servidores pueden dividirse en 2 tipos: los servidores transaccionales

    (que sirven para agrupar la lgica del negocio en un servicio aparte, proveen una

    interfaz a travs de la cual los clientes pueden enviar peticiones como lo son

    ODBC5 o RPC6) y los servidores de datos(los cuales envan datos a ms bajo nivel

    y que descansan en la capacidad de procesamiento de datos de las maquinas

    clientes).

    Existen 2 arquitecturas dominantes en la construccin de motores de base

    de datos cliente-servidor: los motores multiprocesos y los motores multihilos.

    3.3.2.1. Motores de base de datos multiprocesos (Multi-process database engines).

    Algunos motores de base de datos confan en mltiples aplicaciones para

    realizar su trabajo. En este tipo de arquitectura, cada vez que un usuario se

    conecta a la base de datos, sta inicia una nueva instancia de la aplicacin de

    base de datos. Con el fin de coordinar a muchos usuarios que accesan los mismos

    conjuntos de datos estos ejecutables trabajan con un coordinador global de tareas

    que planifica operaciones para todos los usuarios. La comunicacin entre

    aplicaciones de este tipo se realiza por medio de un sistema propietario de

    comunicaciones interprocesos (IPC).

    5 Open database conectivity: API de acceso a datos que soporta el acceso a cualquier

    fuente de datos para la cual exista un driver ODBC. ODBC se encuadra dentro de los estndares ANSI e ISO para la Interfaz de llamadas de datos (CLI).

    6 Remote procedure call: Una forma de comunicacin entre aplicaciones que esconde la complejidad de la red utilizando un mecanismo de llamada de procedimientos ordinario. Es un proceso sincrnico firmemente acoplado.

  • 43

    El ejemplo ms popular de motores de base de datos multiprocesos es el

    Oracle Server (Oracle corporation) el cual carga 16 tipos de ejecutables distintos

    que realizan distintas tareas. El sistema ejecuta sus aplicaciones que sirven para

    administrar el acceso de mltiples usuarios a las tablas, el registro y control de

    versiones de una transaccin y otras caractersticas como la replicacin de datos,

    transacciones distribuidas. Por otro lado, cuando una conexin a la base de datos

    se establece, el sistema carga los ejecutables relacionados a tareas de usuario.

    Cada vez que un usuario se conecta a una base de datos Oracle, esta

    carga un ejecutable con una nueva instancia de la base de datos, las consultas de

    usuario son transmitidas a este ejecutable, el cual trabaja en conjunto con otros

    ejecutables en el servidor que retornan conjuntos de datos, manejan los bloqueos

    y ejecutan todas las funciones necesarias para el acceso de datos.

    La mayora de los motores de base de datos multiprocesos fueron

    desarrollados antes de que los sistemas operativos soportaran caractersticas

    tales como hilos o planificacin de tareas (scheduling). Como resultado de esto, el

    hecho de descomponer una operacin significaba escribir un ejecutable distinto

    para manejar esta operacin. Esta caracterstica proporciona el beneficio de la

    fcil escalabilidad a travs de la adicin de ms CPUs.

    En un ambiente de multitarea el sistema operativo divide el tiempo de

    procesamiento entre mltiples aplicaciones asignndoles una porcin de tiempo

    de CPU (slice) a cada una. De esta manera siempre hay una sola tarea

    ejecutndose a la vez, sin embargo el resultado es que mltiples aplicaciones

    aparenten estar corriendo simultneamente en una sola CPU. La ventaja real, sin

    embargo, viene cuando el sistema operativo cuenta con mltiples CPUs.

  • 44

    3.3.2.2. Motores de base de datos multihilos (Single-Process multi-threaded database engines).

    Los motores de base de datos multihilos abordan el problema del acceso

    multiusuario de una manera distinta, pero con principios similares. En lugar de

    confiar en que el sistema operativo comparta los recursos de procesamiento, el

    motor toma la responsabilidad por s mismo, lo que en la prctica se asocia a una

    mejor portabilidad del sistema. Motores de base de datos comerciales como

    Sybase Adaptive Server o Microsoft Sql Server son ejemplos de este enfoque.

    Las ventajas de este tipo de motores radican en una mayor eficiencia en el

    uso de recursos para determinadas plataformas. Mientas un sistema

    multiprocesos consume entre 500 Kb y 1 Mb por conexin, un motor multihilos

    consume entre 50 y 100 Kb de RAM diferencia que puede ser utilizada en cach

    de datos y procedimientos. Otra ventaja es que no hay necesidad de un

    mecanismo de comunicacin interprocesos.

    De esta manera, la base de datos utiliza un elemento finito de trabajo, (el

    hilo) para una variedad de operaciones (instrucciones de usuarios, bloqueos de

    datos, E/S de disco, administracin del cach, etc.) en vez de utilizar aplicaciones

    especializadas para cada tarea.

    Las desventajas ms reconocidas son dos: escalabilidad y portabilidad. La

    escalabilidad se centra en la habilidad que tengan los distintos motores de base de

    datos multihilos de descomponer una operacin de manera que mltiples tareas

    puedan ejecutar esta operacin.

    Los problemas de portabilidad guardan relacin con el SMP

    (multiprocesamiento simtrico) y se originan en el hecho de que dado que

    diferentes fabricantes de hardware dan soporte a SMP de diferentes maneras,

  • 45

    estos motores de base de datos han tenido que implementar tcnicas neutras que

    buscan funcionar bien en cualquier implementacin fsica, lo que conlleva una

    sobrecarga en el motor y una limitacin en la habilidad de escalar a un gran

    nmero de procesadores.

    3.3.3. SGBD Paralelos.

    Los sistemas paralelos de base de datos constan de varios procesadores y

    varios discos conectados a travs de una red de interconexin de alta velocidad.

    Para medir el rendimiento de los sistemas de base de datos existen 2 medidas

    principales: la primera es la productividad (throughput) que se entiende como el

    nmero de tareas que pueden completarse en un intervalo de tiempo determinado.

    La segunda es el tiempo de respuesta (response time) que es la cantidad de

    tiempo que necesita para completar una nica tarea a partir del momento en que

    se enve. Un sistema que procese un gran nmero de pequeas transacciones

    puede mejorar su productividad realizando muchas transacciones en paralelo. Un

    sistema que procese transacciones ms largas puede mejorar tanto su

    productividad como sus tiempos de respuesta realizando en paralelo cada una de

    las subtareas de cada transaccin.

    Las ganancias en este tipo de SGBD se pueden dar en trminos de velocidad

    (menor tiempo de ejecucin para una tarea dada) y ampliabilidad (capacidad de

    procesar tareas ms largas en el mismo tiempo).

    Existen varios modelos de arquitecturas para maquinas paralelas, los ms

    mencionados son:

    Memoria Compartida : Todos los procesadores comparten una memoria

    comn.

  • 46

    Disco Compartido: Todos los procesadores comparten una disposicin de

    discos comn.

    Sin Compartimiento: Los procesadores no comparten ni memoria ni disco.

    Jerrquico: Compartimiento tanto de memoria como de disco.

    3.3.4. SGBD Distribuidos.

    En un SGBD distribuido, la base de datos se almacena en varios

    computadores que se pueden comunicar a sus vez por distintos medios de

    comunicacin (desde redes de alta velocidad a lneas telefnicas). No comparten

    memoria ni discos y sus tamaos pueden variar tanto como sus funciones

    pudiendo abarcar desde PC hasta grandes sistemas. Se denomina con el trmino

    de emplazamientos o nodos a todos aquellos computadores que pertenecen a un

    sistema distribuido.

    Las principales diferencias entre las bases de datos paralelas y las bases

    de datos distribuidas son las siguientes: las bases de datos distribuidas se

    encuentran normalmente en varios lugares geogrficos distintos, se administran

    de forma separada y poseen una interconexin ms lenta. Otra diferencia es que

    en un sistema distribuido se dan dos tipos de transacciones, las locales y las

    globales. Una transaccin local es aquella que accede a los datos del nico

    emplazamiento en el cual se inici la transaccin. Por otra parte una transaccin

    global es aquella que o bien accede a los datos situados en un emplazamiento

    diferente de aquel en el que se inici la transaccin, o bien accede a datos de

    varios emplazamientos distintos.

    Un sistema de base de datos distribuido se conoce por:

    Los distintos emplazamientos estn informados de los dems.

  • 47

    Aunque algunas relaciones pueden estar almacenadas slo en algunos

    emplazamientos, stos comparten un esquema global comn.

    Cada emplazamiento proporciona un entorno para la ejecucin de

    transacciones tanto locales como globales.

  • 48

    Captulo 4. Introduccin al Procesamiento de Consultas,

    El enfoque de System R.

    4.1. Introduccin.

    El Procesamiento de consultas hace referencia a la serie de actividades a

    seguir para llevar a cabo la recuperacin de datos desde una base de datos. Estas

    actividades incluyen la traduccin de consultas en lenguajes de consultas de alto

    nivel (Ej: SQL) a expresiones que se puedan implementar en un nivel fsico, as

    como tambin los algoritmos de evaluacin y optimizacin de consultas.

    Una de las ventajas principales del modelo relacional presentado por Codd

    en 1970 es la que tiene relacin con la independencia de los datos que se

    entiende aqu como la separacin entre el modelo (lgico) y la implementacin

    (fsica). Esta separacin nos permite desarrollar una poderosa semntica lgica

    independiente de una implementacin fsica particular.

    Uno de los desafos de la independencia de datos es que la codificacin de

    una consulta para la base de datos se componga de 2 fases:

    1. La descripcin lgica de la consulta (que se supone que debe hacer).

    2. La definicin del plan de ejecucin fsico (el que muestra como implementar la

    consulta).

    Antes de empezar el Procesamiento de la consulta el sistema debe traducir

    la consulta a un medio de representacin interno con el cual le sea fcil operar.

  • 49

    As, por ejemplo para SQL la representacin ms til es la del lgebra relacional

    extendida (rbol relacional). Este proceso cumple la misma funcin que el

    analizador lxico y sintctico de un compilador, es decir, revisa la sintaxis de la

    consulta y chequea que todos lo identificadores sean nombres de objetos de la

    base de datos, en el caso de las vistas reemplaza el nombre de la vista por la

    expresin relacional que la representa.

    El plan de ejecucin es un rbol relacional armado a partir de la consulta y

    que slo puede ser entendido por el motor de ejecucin de consultas. La

    transformacin de la consulta a un plan puede ser hecha efectivamente a mano y

    en algunos casos de consultas simples que se ejecutan miles de veces esta

    podra ser la mejor estrategia, sin embargo, una de las ventajas que nos ofrece el

    modelo relacional es la capacidad de usar la informacin del catalogo de la base

    de datos, que como se ver ms adelante, podr responder una gran cantidad de

    preguntas distintas.

    Por otro lado, aunque una consulta simple pueda ser ejecutada miles de

    veces, no existe un camino mecnico que garantice que el plan de ejecucin

    elegido satisfaga la consulta que se quiere implementar, puesto que:

    1. Un Plan calculado a mano (o un plan precalculado) ser invalidado por

    cambios lgicos dentro del esquema o por cambios fsicos en el camino de

    acceso a la informacin o en el almacenamiento fsico.

    2. Si los parmetros de la consulta (o los datos) cambian, la relacin optima que

    asocia a un plan con una consulta por sobre otros puede cambiar.

    La siguiente figura nos muestra los pasos en el procesamiento de una

    consulta.

  • 50

    ConsultaAnalizador y

    traductor(parser)

    Expresin en Algebra Relacional

    (Arbol relacional)

    Optimizador

    Plan de Ejecucin

    Motor de Ejecucin

    Resultadode la Consulta

    Informacin del Catalogo

    Datos

    Figura 4-1 - Pasos en el procesamiento de una consulta SQL

    Despus de enviar la consulta, la base de datos debe producir su

    correspondiente plan de ejecucin. El primer paso en este proceso es traducir la

    consulta desde SQL a un rbol lgico en lgebra relacional, proceso comnmente

    llamado parser.

    El Prximo paso es traducir el rbol de la consulta en el plan de ejecucin.

    Generalmente existe un gran nmero de planes que implementan al rbol de la

    consulta; el proceso de encontrar el mejor de estos planes se le denomina

    optimizacin de consultas, entendindose que esta optimizacin viene dada por una medida de rendimiento para la ejecucin de consultas (como por ejemplo el

    tiempo de ejecucin), queremos encontrar entonces la consulta que tenga el mejor

    rendimiento de ejecucin. El objetivo es que el plan sea el ptimo (o el ms

    cercano a) dado el espacio de bsqueda del optimizador.

  • 51

    Finalmente el optimizador enva el plan ptimo al motor de ejecucin. El

    motor de ejecucin ejecuta el plan usando como entrada las relaciones

    almacenadas en las base de datos y produce una tabla con los datos solicitados

    como salida.

    Los primeros optimizadores de consultas fueron descritos para System R

    [Selinger79] y para Ingress [Wong76] en los aos 1979 y 1976 respectivamente.

    Estos fueron implementados para variantes particulares del modelo Relacional y

    funcionan lo suficientemente bien en la medida de sus implementaciones fsicas

    del modelo. El Optimizador de System R ha sido la base de otros optimizadores de

    bases de datos comerciales.

    4.2. El optimizador de System R.

    [Selinger79] propone una descomposicin de 4 fases en el procesamiento

    de una consulta SQL: parsing, optimizacin, generacin de cdigo y ejecucin. Al

    principio cada sentencia SQL es enviada al parser (analizador sintctico), quien se

    encarga de chequear la sintaxis de la consulta; si no hay errores, el parser llama

    al optimizador, quien toma todos los nombres de tablas y columnas referenciadas

    por la consulta y las busca en el catalogo de la BD para verificar su existencia y

    rescatar estadsticas y caminos de accesos almacenados. Es el optimizador quien

    tambin analiza los tipos de datos y tamaos de cada columna con el fin de revisar

    en la lista SELECT7 como en el Arbol WHERE8 la existencia de errores de semntica e incompatibilidades de tipos de datos.

    7 Lista de todos los elementos que estn en una clusula select.

    8 Estructura de rbol que contiene todos los predicados contenidos en la clausula WHERE.

  • 52

    Finalmente realiza la seleccin de los caminos de acceso. Si una consulta

    tiene ms de un query block9 (en adelante bloque) determina el orden de

    evaluacin de estos a lo largo de la consulta, luego procesa para cada bloque las

    relaciones enunciadas en la lista FROM10. Si en el bloque existe ms de una

    relacin, el optimizador realiza permutaciones de los mtodos de join, por tanto, se

    elige el camino de acceso que minimice el costo para el bloque. Esta solucin

    recibe el nombre de plan de ejecucin [Selinger79] el cual se representa en el

    lenguaje de especificacin de accesos (ASL) cuya definicin queda fuera de los

    alcances de este trabajo. Para mayor Informacin consultar [Lorie78].

    El generador de cdigo es un programa que traslada rboles ASL en

    lenguaje de mquina para ejecutar el plan escogido por el optimizador, para hacer

    esto utiliza un pequeo nmero de plantillas de cdigo para representar todos los

    casos posibles, durante esta fase se reemplaza el rbol generado por el parser en

    cdigo de maquina ejecutable y sus estructuras de datos asociadas.

    4.2.1. RSS (research storage system)

    El RSS es el subsistema de almacenamiento de system R, este es el

    responsable de mantener el almacenamiento fsico de las relaciones, de los

    caminos de acceso a ellas, bloqueos (en un ambiente multiusuario), y de las

    capacidades de registro de transacciones y recuperacin. El RSI (Research

    Storage Interface) es la interfaz orientada a la tupla que system R presenta al

    usuario final.

    9 Un query block es un bloque de clusulas que conforman una consulta sql de la forma

    SELECT, FROM, WHERE, GROUP BY, ORDER BY.

    10 Lista de todas las relaciones enunciadas en la clausula FROM de una consulta sql.

  • 53

    Una Relacin se almacena en el RSS como una coleccin de tuplas que

    cumplen con las siguientes caractersticas:

    sus columnas son contiguas,

    se almacenan en pginas de 4 Kb,

    una tupla no puede rebasar una pgina.

    Las pginas se organizan en segmentos, los segmentos pueden contener

    una o ms relaciones pero una relacin no puede rebasar un segmento.

    La manera de accesar tuplas de una relacin es por medio de un proceso

    llamado RSS scan, este retorna una tupla a la vez a lo largo del camino de acceso

    indicado. Los comandos principales son: OPEN, NEXT y CLOSE.

    Existen 2 tipos de recorridos (scan), el primero es un segment scan, el cual

    encuentra todas las tuplas de una relacin dada, consiste bsicamente de una

    serie de NEXT que recorren todas las pginas del segmento (que pueden

    contener tuplas para cualquier relacin) y de donde rescatan aquellas tuplas que

    pertenecen a la relacin dada.

    El segundo tipo de recorrido es un index scan11, los ndices se almacenan

    en pginas distintas a las pginas de datos y son implementados como B-tree

    cuyas hojas del rbol son pginas que contienen conjuntos de ya sea claves,

    identificadores, o tuplas que contienen la clave; por lo tanto una serie de NEXT

    sobre un index scan, realiza una lectura secuencial a lo largo de las hojas

    obteniendo las tuplas de identificadores que se igualan a la clave de bsqueda o

    usndolas para encontrar y retornar las tuplas de datos en el orden de las claves

    11 un ndice puede ser creado por un usuario de system R en una o ms columnas de una

    relacin, y una relacin puede cero o ms ndices asociados a esta.

  • 54

    dadas. Las paginas de ndices estn encadenas juntas, por lo tanto las sentencias

    NEXT no necesitan referenciar paginas que se encuentren ms arriba del ndice.

    En un segment scan todas las pginas no vacas de un segmento se

    accesan slo una vez sin importar si tienen o no tuplas que pertenezcan a la

    relacin. En un index scan las pginas de ndices se accesan slo una vez, sin

    embargo las pginas de datos se pueden tocar ms de una vez.

    Si las tuplas han sido insertadas en las paginas del segmento en el orden

    del ndice y si este orden se mantiene diremos que el ndice es un ndice en

    cluster, este tipo de ndices tiene la propiedad de que adems de las paginas de

    ndices, tambin las paginas de datos se accesan solamente una vez en un index

    scan. Cabe destacar de que un index scan no necesita recorrer toda la relacin,

    pues puede recibir llaves de inicio y fin.

    Ambos tipos de scan pueden recibir un conjunto de predicados llamados

    predicados sargables o SARGS (search arguments) los cuales tiene la

    particularidad de que son aplicados a las tuplas antes de que sean devueltas al

    RSI. Un predicado sargable es uno de la forma:

    columna operador_de_comparacin valor.

    4.2.2. Costos para los caminos de acceso de relaciones simples.

    El optimizador de System trata de manera distinta a las consultas que

    hacen referencia a una sola tabla (relaciones simples) de las que se deben tratar

    como un Join. Para el primer caso, el optimizador examina tanto los predicados de

    la consulta como tambin los caminos de acceso disponibles para la relacin

    referenciada y evala una frmula de costo para cada plan de acceso usando la

    siguiente frmula:

  • 55

    COSTO = Pginas Rescatadas + W * (RSI calls)

    Este costo es una medida de peso entre las E/S (pginas rescatadas) y la

    utilizacin de CPU (instrucciones ejecutadas). W es un factor de peso ajustable

    entre E/S y la CPU12. RSI calls es la estimacin del nmero de tuplas a retornar.

    Dada esta formula la eleccin del camino de costo mnimo para procesar una

    consulta tiende a minimizar el total de recursos requeridos.

    La ejecucin de la validacin semntica del optimizador examina cada

    bloque WHERE (el respectivo rbol debe estar en la forma normal conjuntiva) con

    el objetivo de identificar los factores booleanos.

    Se llama factor booleano a cada uno de los predicados del Arbol WHERE (o

    conjunciones) que ha sido previamente normalizado.

    Se dice que un ndice calza un factor booleano si el factor booleano es un

    predicado sargable cuya columna referenciada es la clave del ndice.

    Se dice que un predicado o un conjunto de predicados calza a un camino

    de acceso por ndice cuando los predicados son sargables y las columnas

    mencionadas en los predicados son un substring inicial del conjunto de columnas

    de la clave del ndice. Si un ndice calza un factor booleano entonces un camino

    de acceso que ocupe este ndice ser una manera eficiente de satisfacer el factor

    booleano.

    12 Una forma de calcularlo puede ser tomar los MIPS de una determinada CPU y por otro

    lado tomar el nmero de instrucciones que se utilizan en una llamada RSS. W podra ser el producto de estos 2 valores medidos durante el tiempo transcurrido en una bsqueda tpica a disco. Por lo tanto W tendr diferentes valores dependiendo de distintas configuraciones de hardware. (Don Chamberlin, 12/09/2001)

  • 56

    Durante la mirada al catlogo, el optimizador recupera estadsticas para las

    relaciones de la consulta y caminos de acceso disponibles para cada relacin. Las

    estadsticas son las siguientes:

    Para cada relacin T.

    NCARD(T), cardinalidad de la relacin T.

    TCARD(T), nmero de pginas del segmento que contienen tuplas de la relacin T.

    P(T), fraccin de paginas de datos que contienen tuplas de la relacin T. P(T) = TCARD(T)/Nmero_de_pginas_no_vacas_en_el_segmento.

    Para Cada ndice en la relacin T.

    ICARD(I), Nmero de claves distintas en el ndice I

    NINDEX(I), Nmero de pginas en el ndice I.

    Estas estadsticas son mantenidas por el catlogo de System R, y

    provienen de distintas fuentes, son actualizadas peridicamente por el comando

    UPDATE STATISTICS, el cual puede ser ejecutado por cualquier usuario.

    Usando estas estadsticas, el optimizador asigna un factor de seleccin F

    para cada factor booleano en la lista de predicados. Este factor es la estimacin

    de la cantidad de tuplas que satisfacen el predicado. Se asume que una falta de

    estadsticas implica la eleccin de un factor arbitrario.

  • 57

    La siguiente tabla muestra los factores a utilizar para los distintos tipos de

    predicados:

    columna = valor

    F = 1 / ICARD(ndice) si existe un ndice para la columna. Esto asume una distribucin uniforme de los datos a lo largo del dominio de la columna.

    F = 1 / 10 en otro caso.

    columna1 = columna2

    F = 1 / MAX(ICARD(ndice_columna1), ICARD(ndice_columna2)) si existen ndices tanto en columna1 como en columna2. Esto asume que cada valor

    en el dominio del ndice con menor cardinalidad se iguala a un valor

    en el otro ndice.

    F = 1 / ICARD(indice_columna-i) si slo existe un ndice sobre la columna-i

    F = 1 / 10 en otro caso

    Columna > valor (o cualquier otra comparacin abierta) F = (mayor_valor_dominio valor) / (mayor_valor_dominio

    menor_valor_dominio) si la columna es de tipo aritmtico y el valor es conocido en el momento de escoger el camino de acceso.

    mayor_valor y menor_valor son los lmites del dominio.

    F = 1 / 3 en otro caso. Responde a la hiptesis de que son menos las consultas que usan predicados que son satisfechos por ms de la mitad de las tuplas.

    Columna between valor1 and valor2

    F = (valor2 valor1) / (mayor_valor_dominio menor_valor_dominio) que corresponde a una razn entre el rango de valores de la clusula

  • 58

    BETWEEN con respecto al rango de valores del dominio siempre que la

    columna sea aritmtica y ambos valores sean conocidos al momento de escoger el camino de acceso.

    F = 1 / 4 en otro caso.

    Columna in (lista_de_valores) F = (numero_de_elementos_de_la_lista) * (factor_de_seleccin para

    columna = valor) siempre y cuando no sea mayor que .

    Columna in subconsulta

    F = (cardinalidad estimada de la subconsulta) / (producto de las cardinalidades de todas las relaciones de la lista FROM de la

    subconsulta)

    El clculo de la cardinalidad de una subconsulta se explica ms adelante.

    Predicado1 OR predicado2

    F = F(predicado1) + F(predicado2) F(predicado1) * F(predicado2)

    Predicado1 AND predicado2

    F = F(predicado1) * F(predicado2)

    NOT predicado

    F = 1 F(predicado)

    Tabla 4-1 -