SlideShare a Scribd company logo
1 of 19
Download to read offline
E$IUDIODI
                                    ..   -'
                                                                     CASOS
                                        '-,   ..
           -           -                           "       ,
  •   E- .'$ parte describe cómo los distintos sistemas de bases de datos integran
               '



  :.:,,:.':::'105 diferentes conceptos descritos anteriormente eh el libro. Específica-
   ,          mente, en los capítulos 25, 26-y 27 se cubren tres sistemas de bases de
-'. datos ampliamente utilizados: DB2 delBM, oraclé ySQL server de Microsoft.
    , cada uno de estos capítulos muestra características únicas de cada sístema de
      bases de datos, herramientas, variaciones y extensiones de SQL y la arquítcc-
   . turadel sistema, incluyendo organización del almacenamiento; procesamiento
      de consultas, contrcl de concurrencia y recuperación y réplicas.
      LOScapituloseubren solamente los aspectos.clave de los productos de bases
  :de datos que describen. y por consiguiente, no se deberíán utilizar tomo una
 ",~n           ~         del producto. Además, puesto que los productos se mejo-
   ran pertódícemerse, los detaUesdel producto pueden cambiar. cuando se utl-
   liza una versión 'particular del producto hay que asegurarse de consultar lbs
  'manuales de.Usuaiio para los detalles específicos .
           .'. Hay que considerar que tos capítulos en esta parte utilizan terminología
   jndustria] en lugar de académlca. Por ejemplo, se utiliza tabla en lugar de
 'I'!'~i,lila
       '--,
                 en lugarde tupla y columna en lugar de atributo .
                   .   .   .       '.




                                                   .
                                                   .
                                                   ,   .




                               ,




                                                               ;.,    ...
                                                                      -     ,.-.
..:'~
                                                                                                                                   .




                    e         ua~do se fund~- Grade en 1977 COtTI? Software Developmcnt Laborat~iies por Larry
                              Ellison, Bah Miner y Ed Dates no habla productos de bases de datos relacionales comer-
                              ciales. La compañía, cuyo nombre cambió posteriormente a Oracle, se estableció para
                     construir un sistema de.gestión de bases de datos como producto comercial y fue la primera en
                     lanzarlo al mercado. Desde entonces Oraclc ha mantenido una posición líder en el mercado de
                     las bases de datos relacionales. pero con el paso de los años su producto y servicios ofrecidos
                     han crecido más allá del servicio de este 'campo. Aparte-de las herramientas directamente rela-
                     cionadas con el desarrollo y gestión de bases de datos Oracle vende herramientas de inteligen-
                     cia de negocio, incluyendo sistemas de gestión de bases de datos multidimensionales     y un SCT-
                     vidor de aplicaciones con una integración cercana al servidor de la-base de datos.
                         Aparte de los servidores y herramientas relacionados con las bases de datos, la compañía
                    ofrece software para la planificación empresarial de recursos y gestión de relaciones con el
                    cliente, incluyendo áreas corno finanzas, recursos humanos, manufactura, márketing, ventas y
                    gestión de cadenas de 'suministro. La unidad Business OnLine de Oracle ofrece servicios en
                    estas áreas como un proveedor de servicios de aplicación.
                        Este capítulo cubre un subconjunto de características, opciones y funcionalidad de los pro-
                    ductos Oracle. Continuamente se desarrollan nuevas versiones de; los productos, por lo que las
                    descripciones dc los productos están sujetas a cambios. Este conjunto de caracrerísucas des-
                    crito aquí está basado en la primera versión de Oracle9i. Antes de abordar a fondo cada uno de.
                    los temas se resumirá la motivación de cada uno de estos tipos de datos y algunos problemas                        i
                    importantes del trabajo con ellos.

                                                                                                                                       II

Oracle proporciona una serie de herram icntas para el               cacioncs. Soporta varias técnicas de modelado tales
diseño, consulta, generación de informes y análisis de              como diagramas E-R, ingeniería de información y aná-
datos para bases de datos, incluyendo OLAP.                         lisis y diseño de objetos. Oracle Dcsigner almacena el
                                                                    diseño en Oracle Repository, que sirve como un único
25,1.1.Herramientas para el diseño de bases                         punto de meradaros para la aplicación.
       de datos                                                         Los metadaros se pueden entonces utilizar para gene-
                                                                    rar formularios e informes. Oracle Repository propor-
La mayor parte de las herramientas de diseño de Ora-                ciona gestión de la configuración para objetos de bases
ele están incluidas en Oracle Internet Developrnenr Sui-            de datos, formularios, clases Java, archivos XML y otros
te. Se trata de una familia de herramientas para los dis-          tipos de archivos.
tintosaspectos de desarrollo de aplicaciones, incluyendo                La familia también contiene herramientas      de de-
herramientas. para el desarrollo de formularios, mode-             sarrollo de aplicaciones para generar formularios, infor-
lado de datos, informes y consultas. La familia de pro-            mes, y herramientas para distintos aspectos de desa-
ductossoporta el estándar UML (véaseel Apartado 2,10)              rrollo basado en Java y XML. El componente             de
parael modelado. Proporciona modelado de clases para               inteligencia de negocio proporciona JavaBeans pata fun-
generar código para componentes de negocio para un                 cionalidad analítica tal 'como visualización de datos,
entorno Java así como modelado de actividades para el              consultas y cálculos analíticos.
modelado del flujo de control de propósito general. La                  Oracle también posee una herramienta de desarrolló
familia también soporta XML para el intercambio de                 de aplicaciones para el almacén de datos. Oraele Ware-
datos con otras herramientas U ML.                                 house Builder. warehouse Builder es una herramienta
    La principal herramienta de diseño de bases de dalas           para el diseño e implantación de todos los aspectos de
en la familia es Oracle Designer, que traduce la lógica            un almacén de datos, incluyendo el diseño del esque-
 denegocio y el flujo dedatos en definiciones de esque-            ma, asignaciones de datos y transformaciones,     proce-
 masy guiones procedimenrales para' la lógica de las apli-         samiento de carga de datos y gestión de meradatos, Ora-
                                                             611
'1
 ,
         FUNDAMENTOS   DE BASES DE DATOS



         ele warehouse Builder soporta los esquemas 3FN y en             ciones Java OLAP. Hay muchas razones para evitar un
         estrella y puede también importar diseños desde Oracle          motor de almacenamiento multidimerísional separado:
         Designer.
                                                                               • Un motor relacional puede dimensionarse       a con-
                                                                                 juntos de datos mucho mayores.
         25.1.2. Herramientas      de consulta
                                                                                 Se puede utilizar un modelo de seguridad común
         Oracle proporciona herramientas de consulta, genera-                    para las aplicaciones analíticas y el almacén de
         ción de informes y análisis de datos ad hoc, incluyen-                  datos.
         doOLAP.                                                                 El modelado multidimensional  se puede integrar
              Oracle Discoverer es una herramienta basada en Web                 con el modelado del almacén de datos.
         para realizar consultas, informes, análisis y publicación
                                                                               • El sistema de gestión de la base de datos relacio-
         Web ad hoc para usuarios finales y analistas de datos.
                                                                                 nal tiene un conjunto mayor de características y
         Permite a los usuarios.abstraer y concretar conjuntos de
                                                                                 funcionalidad en muchas áreas tales como alta dis-
         resultados de datos pivote y almacenar cálculos como
                                                                                 ponibilidad, copia de seguridad y recuperación y
         informes que se pueden publicar en una serie de forma-
         tos tales corno hojas de datos o HTML. Discoverer-con-                  soporte para herramientas de terceros.
         tiene asistentes que ayudan a los usuarios finales a visua-             No hay necesidad de formar administradores      de
         lizar-los datos. corno gráficos. Orac1e9i soporta un amplio             bases de datos para dos motores de bases de datos.
         conjunto de funciones analíticas tales como la agrega-
         ción de clasificación y traslado en SQL. La interfaz de            El principal reto al evitar un motor de bases de datos
         consulta de Discoverer puede generar SQL del que se'            multidimensional    separado es proporcionar el mismo
         puede aprovechar su funcionalidad y puede proporcio-            rendimiento. Un sistema, de gestión de bases de datos
         nar a los usuarios finales una rica funcionalidad analíti-      mutidimensional que materializa todo o grandes partes
         ca. Puesto que el procesamiento tiene lugar en el' sistema      de un cubo de datos puede ofrecer tiempos de respues-
,.,      de gestión de.la base de daros relacional, Díscoverer no
          requiere un complejo motor de cálculo en el lado del
                                                                         ta muy cortos para muchos cálculos. Oracle ha enfoca-
                                                                         do este problema de dos formas;
111,;.
          cliente, y hay una versión de Discoverer con exploración.
~l            Oracle Express Server es un 'servidor de bases de
                                                                                 Oracle ha agregado soporte SQL para un amplie
'oi.ll                                                                           rango de funciones analíticas, incluyendo cubos,
          datos multidimensionales.      Soporta una amplia variedad
Itil      de consultas analíticas, así como previsiones, modela-
                                                                                 abstracciones.conjuntos    de agrupación, clasifica-
~"""
4.¡¡j;    do y gestión del escenario. Puede utilizar un sistema de
                                                                                 ciones (tanks), agregación de traslado, funciones
                                                                                 íed y lag, cajones de histograma, regresión lineal
          gestión de bases de datos relacionales como un dorsal
                                                                                 y desviación estándar, junto con la capacidad de
          para almacenamiento        o utilizar su propio almacena-
                                                                                 optimizar la ejecución de dichas funciones en el
          miento multidímensional       de los daros.
                                                                                 motor de la base de datos.
              Con la introducción de los servicios OLAPcn Ora-
          cly9i, Oracle está evitando un motor de almacenamien-                  Oracle ha extendido las vistas materializadas para
          to separado y trasladando la mayor parte de los cálculos               permitir funciones analíticas, en particular los con-
          a SQL. El resultado es un modelo donde todos los datos                 juntos de agrupación. La capacidad de materiali-
          residen en el sistema de gestión de la base de datos rela-             zar partes o todo el 'cubo es primordial para el ren-
          cional, y les-cálculos que no se pueden realizar en SQL                dimiento de un sistema de gestión de bases de datos
          se realizan en un motor de, cálculo que se ejecuta en el               multidimensionales y las, vistas materializadas pro-
          servidor de la base de datos. El modelo también pro-                   porcionan al sistema de gesñón de bases de datos
          porciona una interfaz para la programación de aplica-                  relacionales Ia.capaoidad de realizar lo mismo.




          Oracle9i soporta todas las características principales                Algunos ejemplos de las extensiones    SQL de Oracle
          de SQL:1999. con algunas pequeñas excepciones tales                son:
          como, distintos tipos de datos. Además, Oracle sopor-
                                                                                • connect by, que es una forma de recorrido de érbo-
          ta un gran número de otras constructoras   del lengua-
                                                                                  les que permite cálculos al estilo del cierre transi-
          je, algunas de las cuales éasan con SQL:1999, mien-
                                                                                   tivo en una única instrucción SQL. Es una sinta-
          tras que otras son específicas de Oracle en sintaxis o
                                                                                  -xis específtca de Oracle para una característica que
           funcionalidad. Por ejemplo Oracle soporta HlS opera-
                                                                                   Oracle tenía desde' los años 80.
           ciones OLAP descritas en el Apartado 22.2, inclu-
           yendo clasificación, agregación de traslado, cubos y                 • Upsert e insércíones en varias tablas. La opera-
            abstracción.                                         .                ción upsert combina una actualización y una inser-

                                                                       612
caerrecc   25   ORACU:


      ción y es útil para combinar datos nuevos con anti-           de Oraele para los procedimientos almacenados y tiene
      guos en aplicaciones de almacén de datos. Si una              una sintaxis similar al utilizado en ellenguaje Ada. Java
      nueva fila tiene el mismo valor de clave 'que una             se soporta mediante una máquina virtual Java dentro
      fila antigua se actualiza la fila antigua (por ejem-          del motor de, la base de datos. Oracle proporciona un
      plo agregando los valores desde la nueva fila), en            paquete para encapsular procedimientos,        funciones y
      otro caso se inserta la nueva fila en la tabla. Las           variables relacionarlas en unidades únicas. Oracle sopor-
      inserciones 'en varias tablas permiten actualizar             ta SQLJ (SQL incorporado en Java) y IDBe y propor-
      varias tablas basándose en una única exploración              ciona una herramienta para generar las definiciones de
      de los nuevos datos.                                          clases Java correspondientes a tipos de la base de datos
      cláusula with, que se describe en el Ap~d04.8.2.              definidos por el usuario.


 25.2~1.Características      relacionales    orientadas             25,2.2.Disparadores
        a objetos
                                                                      Oracle Proporciona     varios tipos de disparadores     y
Oracle tiene soporte extensivo para constructores        rela-        varias opciones pata el momento y forma en que se
cionales orientados a objetos, incluyendo:                            invocan (véase el Apartado 6.4 para una introducción
                                                                      a los disparadores en SQL). Los disparadores se pue-
   • Tipos de objetos. Se soporta un único modelo de                 den escribir en PL/SQL-o Java o como llamadas a C.
     herencia para las jerarquías- de tipos.                         Para los disparadores    que se ejecutan sobre instruc-
   • Tipos de colecciones . Oracle soporta varrays, que              ciones LMD tales como insert, update y delete, Ora-
     son arrays de longitud variable, y tablas anidadas.             ele soporta disparadores de filas (row) y disparadores
     Tablas de objetos. Se utilizan para almacenar obje-             de instrucciones (statement). Los disparadoreg de filas
     tos mientras se proporciona una vista relacional de             se pueden ejecutar una vez por cada fila que se vea
     los atributos de los objetos.                                  afectada (actualización o borrado, por ejemplo) por la
                                                                     operación LMD. Un disparador de instrucciones          se
      Funciones de tablas. Son funciones que produ-                  ejecuta solamente una vez por instrucción. En cada-
     cen conjuntos de filas como salida y se pueden uti-
                                                                     caso, el disparador se puede definir tanto corno un dis-
     lizaren la cláusula from de una consulta. Las fun-
                                                                     parador befare o after dependiendo de si se va a invo-
     ciones de tablas se pueden anidaren Oracle: Si una
                                                                     car antes o después de que se lleva a cabo la operación
     función de tablas se utiliza para expresar algún for-           LMD.
     mulario de transformación de datos, el anidamiento
                                                                         Oraele permite la creación de disparadores instead
     de varias funciones permite que se expresen varias
                                                                    of para las vistas que no pueden estar sujetas a opera-
     tránsformacíones   en una única instrucción.
                                                                    ciones LMD. Dependiendo de la definición de la 'Vista
   • Vistas de objetos. Proporcionan una vista tíe.tablas           puede no ser Posible para Orac1e traducir una instruc-
     de objetos virtuales de datos almacenados en una               ción LMD en una vista a modificaciones de las labias
     tabla relacional normal. Permite acceder o ver los             base subyacentes sin ambigüedad. Por ello las opera-
     datos en un estilo orientado a objetos.incluso si los          cienes LMD sobre vistas están sujetas a numerosas res-
     datos están realmente almacenados en un formato                tricciones. Se puede crear un disparador lnstead of
     relacional tradicional.                                       'sobre una vista para especificar manualmente las ope-
    Métodos. Se pueden escribir en PLlSQL, Java o C.                raciones sobre las tablas base que van a ocurrir en res-
                                                                   puesta ala operación LMD sobre la vista. Oracle eje-
  • Funciones de agregación definida-s por el usua-
                                                                   cura el disparador en lugar de la operación LMD y por
    rio. Se pueden utilizar en instrucciones SQL de la
                                                                   consiguiente proporciona un mecanismo de rodeo de
    misma forma que las funciones incorporadas tales
    como sum y count.                                              las restricciones sobre las operaciones LMD sobre las
                                                                   vistas'.
    Tipos de datos XML. Se pueden utilizar           para               Oracle también tiene disparadores que ejecutan otros
    almacenar e indexar documentos XML.                            eventos, tales como el inicio o finalización pe la base
                                                                   de datos, mensajes de error del servidor, inicio o finali-
  Oracle tiene dos lenguajes   procedimentalespríncí..             zación de sesión de un usuario e instrucciones LOD tales
pales PL/SQL y Java. PL/SQL fue el lenguaje original               como las instrucciones create, alter o drop.




                                                             613
FUNDAMENTOS'   DE BASES   DE DATOS




                                                                                                  ... .....-., '··"_i'(-'
                                                                                                    ' , ..  ,
        .e~;~:¡;~AC&NAMl~TO&·IND&XACIÓ~
        En la jerga de Oracle, una base de datos consiste en              25.3.2. Segmentos
        información almacenada en archivos y se accede a tra-             El espacio en un espacio de tablas se divide en unida-
        vés de un ejemplar, que es un área de memoria com-                des, denominadas segmentos,      cada una de las cuales
        partida y un conjunto de procesos que interactúa con              contiene datos para una estructura de datos especifica.
        los-datos en los archivos.                                        Hay cuatro tipos de segmentos
                                                                                • Segmentos de datos, Cada tabla en un espacio de
        25.3.1. Espacios de tablas                                                tablas tiene su propio 'segmento de datos donde se
        Una base de dalas consiste en una o más unidades de                       almacenan los datos de la tabla a menos que ésta
        almacenamiento,     lógicas denominadas     espacios de                   se encuentre dividida; si esto ocurre, existe un seg-
        tablas. Cada espacio de tablas, a su vez, consiste en una                 mento de datos por división (l~ división CIl Oraclc
        o más estructuras físicas denominadas       arctiivos de                  se describe en el Apartado. 25.;}.IQ).
        datos. Éstos pueden ser ~chivos gestionados por el sis-                   Segmentos de índices. Cada índice en un espacio
        tema operativo o dispositi vos en bruto.                                  de tablas posee su propio segmento de índices,
            Normalmente una base.de datos Oracle tendrá los                       excepto los índices divididos, los cuales mantie-
         siguientes espacios de tablas:                                           nen un segmento de índices por división.
                                                                                  Segmentos temporales; Son segmentos utilizados
            • El espacio de tablas del sistema, que siempre se
                                                                                  cuando una operación de ordenación necesita-cscri-
              crea. Contiene las tablas diccionario de datos y
                                                                                  bir datos al disto o cuando éstos se insertan en una
              almacenamiento    para los disparadores y los pro-
                                                                                  tabla temporal.
              cedimientos almacenados.
                                                                                   Segmentos de retroceso. Se:trata de segmentos que
ln          • Espacios de tablas creados para almacenar los datos                  contienen información para deshacer los cambios
               de usuario. Aunque los datos de usuario se pueden
O              almacenar en el espacio de tablas del sistema es
                                                                                   de las transacciones de forma que se pucdadesha-
II;;~                                                                              cer una copia no terminada. También juegan un
               frecuentemente deseable separar los datos de usua-
lid.                                                                               papel importante en el modelo de control de con-
               rio de los datos del sistema. Normalmentela       deci-
b'             sión sobre los otros espacios de tablas que se deben
                                                                                   currencia en Oraclc y para la recuperación de la base
",,"           crear está basada en el rendimiento, dísponibili-
                                                                                   de datos, descrito en los Apartados 25.5.1 y 25.5.2.
11.;"
               dad" capacidad de mantenimiento        y facilidad de           Debajo del nivel de segmentos se asigna espacio a
~il~
               administración. Por ejemplo, puede ser útil tener           un nivel de granularidad, denominado extensión. Cada
"',h"
               varios espacios de tablas para las operaciones tic          extensión consiste en un conjunto de bloques contiguos
               copia de seguridad parcial y recuperación.                  de la base de daros. Un bloque de la base de datos es el
               Los espacios de tablas temporales. Muchas ope-              nivel más bajo de granularidad en el cual Oracle ejecu-
               raciones de base de datos requieren la ordenación           ta E/S a: disco. Un bloque de hase de la base de datos
               de los datos y la rutina de ordenación puede tener          no tiene que tener el mismo tamaño que un bloque de
               que almacenar éstos temporalmente     en el disco si        un sistema: operati.vo. pero debería ser un múltiplo.
               la ordenación no se puede realizar en memoria. Se               Oraele proporciona parámetros de almacenamiento
               asignan espacios de tablas temporales a la orde-            que permiten un control detallado de cómo sé asigna y
               nación, para realizar las operaciones de gestión de         gestiona el espacio, tales como:
               espacio involucradas en un volcado a disco más
                                                                                   El tamaño de una extensión nueva que se va aasig-
               eficiente.                                                          nar para proporcionar   espacio a las filas que se
               Los espacios de tablas también se pueden utilizar                   insertan en una tabla.
          tomo un medio para trasladar dalas entre las bases de                  • El porcentaje dé utilización de espacio COl) el cual
          datos. Por ejemplo; es común trasladar los datos desde                   un bloque de la base de datos se considera lleno y
           un sistema .transaccional a un almacén de datos a inter-                con el cual no se introducirán más filas en ese blo-
           valos regulares. Grade permite trasladar todos los datos                que (dejando algo de espado libre en un bloque se
           en un espacio de tablas de un sistema a otro sencilla-                  puede permitir que las filas existentes aumenten su
           mente copiando los -archivos y exportando e importan-                   tamaño cuando se realizan actualizaciones sin que-
           do una pequeña cantidad de metadatos del diccionario                    damos sin espacio en el bloque).
            de datos. Estas operaciones pueden ser mucho más rápi-
            das que descargar los datos de una base de datos y des-            25.3.3.Tablas
            pués usar un descargador para insertarlas en la otra. Un
            requisito para esta característica es que ambos sistemas           Una tabla estándar en Orac1e está organizada en mon-
             utilicen el mismo sistema operativo.                              tículo; esto es, la ubicación de almacenamiento de una

                                                                         614
CAPiTULO   25   ORACLE



 fila en una tabla no esté basada cn los valores conteni-             un valor de clave principal con una unica B'S a disco siem-
 dos en la fila y 'se lija cuando fa lila se inserta. Sin embar-      pre que no haya desbordamiento para ese bloque de datos.
 go, si la tabla se divide. el contexto de la fila afecta a la
 partición en la cual ésta almacenada. Hay varias carac-
 terísticas y variaciones. Oracle soporta las tablas 'ani-            25.3.4. Tablas organizadas          con índices
 dadas: esto es, una tabla puede tener una columna cuyo                 En una tabla organizada con índices los registros se alma-
 tipo de datos sea otra tabla. La tabla anidada no se alma-             cenan en un índice de árbol B en lugar de en un mon-
 cena en línea en la tabla padre sino que se almacena en                tículo. Una .tabla organizada con 'índices requiere que se
 una tabla separada.                                                    identifique una clave única para su uso como la clave del
     Oracle soporta tablas temporales donde la duración                 índice. Aunque una entrada en un índice normal contie-
 de los datos es la dc la transacción en la cual se inser-              ne el valor de la clave y el identificador de fila de la fila
tan los datos o la sesión de usuario. Los datos son pri-                indexada, una-tabla organizada con índices reemplaza el
vados a la sesión y se eliminan automáticamente al fina!                identificador de tila con los valores .de la columna para
de su duración.                                                        el resto de columnas en la tabla, Comparado con el alma-
     Una agrupación es otra forma de organización de los               cenamiento de los datos en una tabla en montículo nor-
datos de la tabla (véase el Apartado l l :7). El concepto.             mal y la creación de, un índice según las columnas clave,
en este contexto, no se debería confundir con otros sig-               una tabla 'Organizada con Indices puede mejorar el ren-
nificados de la palabra agrupación, tales como los rela-               dimiento y el espacio. Consideremos la lectura de todos
cionados con la arquitectura del ordenador. En una agru-               los valores de columna de una fila, dado su valor de cla-
pacién las filas de tablas diferentes se almacenan juntas             ve principal. Para una tabla en montículo se.requerirla un
en el mismo bloque según algunas columnas comunes.                    examen del Índice seguido por un acceso a tabla median-
Por ejemplo, una tabla de departamento y una tabla de                 te identificador de fila. Para una tabla organizada con
empleados se podrían agrupar de fonna que cada fila en                índices solamente es necesario el examen del Índice.
la tabla departamento se almacene junto con todas las                      Los índices secundarios sobre columnas que no sean
filas de los empleados que trabajan en ese depanamen-                 clave de una tabla organizada con índices son distintos
10.Los valores de la clave principal o clave externa se.              de los índices en una tabla en montículo normal. En una
utilizan para determinar la ubicación de almacenamíen-                tabla en montfculo cada fila posee un identificador de
io. Esta organización mejora el rendimiento cuando las                fila fijó que no cambia. Sin embargo, un árbol B se reor-
dos tablas están combinadas pero sin un aumento de                    ganiza al crecer o disminuir cuando se insertan o borran
espacio de un esquema desnormalizado puesto que los                   las entradas, y no hay garantía de que una fila penna-
valores en la tabla de departarnento no están repetidos               nczca en una ubicación dentro de una tabla organizada
para cada empleado. Como compromiso, una consulta                    con índices. Por ello, un Índice secundario en una tabla
que involucra solamente' la tabla departamento puede                 organizada con índices no contiene identificadores de
tener que involucrar un número sustancialmente             mas       fila normales, sino identificadores       téglcos de fila. Un
grande de.bloques qUe si la' tabla se almacenara sola.               identificador lógico de lila se compone de dos partes; un
    La organización en agrupación implica que una fila               identificador de tila física correspondiente a donde la fila
pertenece a un lugar especíñco: por 'ejemplo, una nue-               estaba cuando se creó el índice o la última reconsuuc-
va fila de empleado 'se debe insertar con las otras filas            ción y' un valor para la clave única. El identificador de
para el mismo departamento, Por consiguiente. es óbli-               fila física se conoce como una «suposición», puesto que
gatorio un índice en la columna de agrupación. Una                   sería incorrecto si la fila se ha trasladado. En este caso,
organización alternativa es una agrupación asociativa.               la otra parte' del identificador lógico de fila. el valor de
Aquí; Oracle calcula la localización de una fila apli-               la clave para la fila, se utiliza para .accedér a la misma;
cando una función asociativa al valor para la columna               sin embargo. este acceso es más lento que si la suposi-
de agrupación. La función asociativa asigna la fila a un            ción hubiera sido correcta, puesto que involucra un reco-
bloque específico en la agrupación asociativa. Puesto               rrido del árbol B para la tabla-organizada con índices
que no es necesario el recorrido del índice para acceder            desde la raíz hasta los nodos hoja. incurriendo poten-
auna fila según su valor de columna de agrupación, esta             cialrnentc en varias operaciones E/S de disco. Sin embar-
organización puede ahorrar cantidades significativas de             go, si una tabla es altamente volátil y es probable que un
E/S a disco. Sin embargo, el número de cajones aso-                 buen porcentaje de suposiciones sean incorrectas, pue-
ciativos y otros parámetros de almacenamiento se deben              de ser mejor crear un índice secundario con solamente
establecer cuidadosamente para evitar problemas de ren-             valores clave. puesto LJueel uso de una suposición inco-
dimiento debido a demasiadas colisiones o malgasto de               rrecta puede producir una E/S a disco malgastada.
espacio debido a cajones asociativos vacíos.
    La organización según agrupación asociativa y según
agrupación normal se puede aplicar a una única tabla. El
                                                                    25.3.5'. índices
almacenamiento de una tabla como una agrupación ase-                Oracle soporta varios tipos distintos de índices. El tipo
ciativacon la columna de.la clave principal corno la cla-           más comúnmente      utilizado es un índice de árbol B,
ve de la agrupación puede permitir un acceso basado en              creado en una    °
                                                                                     varias columnas. (Nota: En la tcrmi-
                                                              615
FUNDAMENTOS     DE BASES   DE DATOS




nología de Oracle, como también en varios' otros siste-           mapas de bits alineados (Byre-Aligned      Bitmap Com-
mas de bases de datos, un índice de árbol B es lo que se          pression, BBC). Esencialmente, una sección .del mapa
denomina un índice dé árbol 8+ en el Capítulo 12.) Las            de bits donde la distancia entre dos unos consecutivos es
entradas de los índices tienen el siguiente formato: para          suficientemente pequeña se almacena como mapas de
un índice en las columnas cot., coí, y coi); cada fila en          bits. Si la distancia entre dos unos es suficientemente
la tabla en donde al menos una columna tenga un valor              grande (esto es, hay un número suficiente de ceros entre
no nulo resultaría en la entrada de índice                         ellos) se almacena el número de ceros.
                                                                       Los índices de mapas de bits permiten varios índi-
            <col] > < col, > < col, > < id-fila >                  ces en la misma tabla para combinarse en la misma ruta
                                                                   de acceso si hay varias condiciones sobre las columnas
donde <  cot, > denota el valor para la columna i e < id-         'indexadas en la cláusula where de una consulta. Por
fua > es la identificador de fila para la fila. Oracle pue-        ejemplo, para la condición
de opcionalmente comprimir el prefijo de la entrada para
ahorrar espacio. Por ejemplo, si hay muchas combina-                    (caí, == 1 or col] == 2J and coí; > 5 and col,   < > 10
ciones repetidas de valores < col, > < col, >, la repre-
                                                                  Oracle podría calcular las filas que coinciden con la con-
sentación de cada prefijo < col, > < col! > distinto se
                                                                  dición ejecutando operaciones        booleanas sobre los
puede compartir entre las entradas que tienen esa com-
                                                                  mapa's de bits a partir los mapas de bits de índices sobre
binación de valores, en lugar de almacenarlo explícita-
                                                                  las tres columnas. En este case, estas operaciones se
mente para cada entrada. La compresión de prefijos pue-
de llevar a ahorros de espacio sustanciales.                      realizarían para cada índice:

                                                                         • Para el índice en col., se realizaría   la disyunción
25.3.6. Índices de mapas de bits                                           de los valores de clave 1 y 2.

Los índices de nUipas de bits (descritos en el Apartado                    Para el índice en col2, todos los rnapas de bits para
12.9.4) utilizan una representación de mapa de bits para                   los valores de la clave> 5 se mezclarían en una
entradas de índice que pueden llevar a un ahorro sus-                      operación que corresponde a una disyunción.
tancial de espacio (y, por consiguiente, ahorro de E/S a                 • Para el 'índice en cot ; se obtendrían los mapas de
disco), cuando la columna indexada tiene un número                         bits para los valores 10 y nuU. Entonces, se apli-
moderado de valores distintos. Los índices de mapas de                     caría, una conjunción sobre los resultados de los
bits en Oracle utilizan la misma clase de estructura de                    dos primeros índices, seguido por dos operaciones
árbol B para almacenar las entradas que un índice nor-                     menos booleanas de los mapas de bits para los
mal. Sin embargo, donde un índice normal en una colum-                     valores 10 y null para col'»
na tuviera entradasde la fonna < col] > < id~fi{(l>, una
entrada de índice de mapa de bits tendría la forma                    Todas las operaciones se realizan directamente sobre la
                                                                      representación comprimida de los mapas de bits (no es
           < coi, > < id-füainiciat > < id-filafi1l{l1 »              necesaria la descompresión} y el mapa de bits resultan-
                  -c mapabirscomprímido >.                            te (comprimido) representa las filas que cumplen todas
                                                                      las condiciones lógicas.
El mapa de bits conceptualmente        representa el espacio               La capacidad de utilizar las operaciones booleanas
de todas las filas posibles en la tabla entre los, identifi-          para combinar varios índices no está limitada a los índi-
cadores de la fila inicial y final. El número de tales filas          ces de mapas de bits. Oracle puede convertir identifi-
posibles en un bloque depende de' cuántas de ellas se                 cadores de filas a la representación de mapa de bits com-
pueden alojar en un bloque, lo cual va en [unción del                 primidos, por lo.que se puede utilizar un índice de árbol
número de columnas en la tabla y sus tipos de datos.                  B normal en cualquier lugar de un 'árbol binario u ope-
Cada bit en el mapa de bits representa una fila posible               ración de mapa de bits simplemente poniendo un ope-
en un bloque. Si el valor de la columna de esa fila es el             rador id-fila-a-mapa-de-bits en la parte superior del 'acce-
de la entrada de índice, el bit se establece a 1. Sí la fila          so a índices del plan de ejecución.
tiene algún otro valor o la fila no existe realmente en la                 Como regla nemotécnica, los índices de mapas de
tabla. el bit se establece a O (es posible que la fila no             bits tienden a ser más eficientes en el espacio que los
 exista realmente porque up bloque de la tabla pueda                  índices de árbol B si el número de valores distintos de
tener un número más pequeño de filas que el número                     la clave es menor que la mitad del número de filas en
 que se calcule como el máximo posible). Si la diferen-                una tabla. Por ejemplo, en una tabla con un millón de
 cia es grande.el resultado pueden ser .grandes cadenas                filas, un índice en una columna con menos de 500.000
 de ceros consecutivos en el mapa de bits, pero el algo-               valores distintos probablemente sería menor si se crea-
  ritmo de compresión.trata dichas cadenas de ceros, por               ra como un índice de mapa de bits. Para las columnas
  lo que el efecto negativo se limita.                                 con un número muy pequeño de valores distintos (por
      El algoritmo de compresión es una-variación de una               ejemplo, las columnas que sé refieren a propiedades
  técnica de compresión denominada            compresión   de          tales como país, estado; género, estado marital y varios

                                                                616
CAPITULO 2~   ORACLF.


  estados indi<:;adore,s) un índice mapa de bits podría
                                                                     se construye el índice y las tablas dimensionales        se
  requerir solamente una pequeña fracción del espacio
                                                                     deben referir a claves únicas en las tablas dimensiona-
  normal de Un índice de árbol B nonnal. Cualquier ven-
                                                                     les; esto es, una fila.indexada en la tabla de hechos debe
  laja en el espacio también puede dar lugar a mejoras en
                                                                     corresponder a una única fila en cada una de las tablas
  el rendimiento en la forma de menos operaciones E/S a              de dimensión.
  disco cuando se explora el índice.
                                                                         Oracle puede combinar un índice dé reunión de mapa
                                                                    de bits en una tabla de hechos con otros 'índices en la
  25.3.7. Índices basados       en funciones                        misma tabl'a (tanto si hay índices de reunión o no)
                                                                    mediante el uso de operadores para las operaciones boo-
  Además de crear índices sobre una o varias columnas               leanas del mapa-de bits. Por ejemplo, consideremos un
  de una tabla, Oracle permite crear Indicés sobre expre-
                                                                   esquema con una tabla de hechos para las ventas y tablas
  siones que involucran unao más columnas, tales como
                                                                   dimensionales      para los clientes, productos y fechas.
  col, + cot, * 5. Por ejemplo, la creación de un 'índice          Supongamos que una consulta: solicita infonnaciónsobre
 sobre la expresión upperínombres, donde upper es una
                                                                   las ventas a los clientes en un cierto código postal que
 función que devuelve la Versión eh mayúsculas de una
                                                                  compraron productos de una cierta categoría de pro-
 cadena y nombre es una columna. es posible realizar
                                                                  ducto durante un cierto periodo de tiempo. Si existe un
 búsquedas independientes       de la caja (mayúsculas  o
                                                                  índice de reunión de mapa de bits sobre varias colum-
 minúsculas) sobre la columna nombre, Con el fin de
                                                                  nas donde las, columnas clave son las columnas de la
 buscar todas las filas con el nombre «van Gogh» de una
                                                                  tabla de dimensión restringidas (código postal, catego-
 forma eficiente se puede utilizar la condición
                                                                  ría de producto y fecha), Oracle, puede utilizar el iñdi-
                                                                  ce de reunión para buscar las filas en la tabla de hechos
             upper(nomhre)= 'VAN GOGH'
                                                                  que coinciden con las condiciones de restricción. Sin
                                                                 embargo, si existen índices individuales sobre una úni-
  en la cláusula where de la Consulta. Oracle entonces
                                                                 ca columna para las columnas clave (o un subconjunto
  casa la condición con la definición de índice y conclu-
                                                                 de ellas), Oracle puede recuperar los mapas de bits de
 ye que se puede utilizar el índice para recuperar todas
                                                                 las filas de la tabla de hechos que coinciden con cada
 las filas que coincidan con «van Gogh» sin considerar
                                                                 condición individual y utiliza la operación and boo-
 las mayúsculas y minúsculas del nombre cuando se
                                                                 leana para generar un mapa de bits de la tabla de hechos
 almacenó en la base de datos. Se puede crear un índice
                                                                para aquellas filas que satisfacen todas las condiciones.
 basado en función como un mapa de bits o como un
 índice de árbol B.                                              Si la consulta contiene condióones sobre algunas colum-
                                                                nas de la tabla de, hechos, los Indices.de aquellas colum-
                                                                nas-se podrian incluir en la misma ruta de acceso, inclu-
 25.3.8. índices de reuníón                                     so si fueran índices normales de árbol B o índices de
                                                                dominio (Jos índices de dominio se describen poste-
  Un índice de reunión es un índice donde las columnas'         riormente en el Apartado 25.3.9).
  clave no están en la,tabla que se referencia mediante los,
  identificadores de filas en el índice. Oraele soporta los
 índices de reunión mapa de bits principalmente para su         25.3.9. Índices de dominio
 uso con esquemas en estrella (véase el Apartado 22.4.2).
                                                                 Oracle permite que las tablas sean indexadas por estruc-
 Por ejemplo, si hay una columna para 'los nombres de
                                                                 turas de índices que no sean propias de Oracle. Esta
 los productos en una tabla dé la dimensión productos
                                                                 característica de extensibilidad del servidor Oraclc per-
 se podría utilizar un índice de reunión de mapas de bits
                                                                mite a los fabricantes de software desarrollar los lla-
 sobre la tabla de hechos con esta columna clave para
                                                                 mados cartuchos-con funcionalidad para domíniós de
 recuperar las filas de la tabla de hechos que correspon-
                                                                 aplicación específicos, tales como texto, datos espacia-
 den a un producto con un nombre específico, aunque el
                                                                 les, e imágenes, con la funcionalidad de indexado mas
 nombre no esté almacenado en la tabla. de hechos. La
                                                                allá de la proporcionada por los tipos de índice Oracle
 forma en la que las filas en las tablas de hechos y de la
                                                                estándar. Para implementar la' lógica para crear, mante-
dimensión correspondientes       está basada en una condi-
                                                                ner y buscar en el índice, el diseñador de índices debe
ción de reunión se especifica cuando se crea el índice y
                                                                asegurar que se adhiere a un protocolo específico en Su
se convierte en parte de los [os rncradatos de índices.         interacción con el servidor Oracle.
Cuando se procesa una consulta el optimizador busca-
                                                                    Un índice de dominio se debe registrar en el diccio-
rá la misma condición de reunión en la cláusula where
                                                                nario de datos junto con los operadores que soporta. El
de la consulta con el fin de determinar si es aplicable el
                                                                optimizador de Oracle considera los índices de domi-
índice de reunión.
                                                               nio como una de las posibles rutas de acceso para una
    Oraele permite índices de reunión de mapa de bits
                                                               tabla. Oracle permite a las funciones de coste registrar-
para tener más de una columna clave y estas columnas
                                                               se con [os operadores de forma que el optimizador pue-
pueden estar en tablas diferentes. En todos los casos las
                                                               da comparar el coste del usa del índice de dominio con
condiciones de reunión entre la tabla de hechos donde          los de otras rutas de acceso.
FUNDAMENTOS   DE BAS:ES DE DATOS



               Por ejemplo, un índice de dominio para búsquedas           25.3.10.1. División por rangos
           de texto avanzadas puede soportar un operador coniains         En la división por rangos los, criterios de división son
           (contiene). Una vez que se ha registrado este operador,        rangos de valores. Este tipo de división está especial-
           el índice de dominio se considerará como una ruta de           mente indicado para columnas de fechas, en cuyo caso
           acceso para una consulta como                                  todas las filas en el mismo rango de fechas, digamos un
                                                                          día o un mes; pertenecen a la misma partición. En un
                     select   *                                           almacén de daros donde los datos se cargan desdesis-
                     from empleados                                       temas transaccionales a intervalos regulares, la división
                     where containstresumen. 'LINUX')
                                                                          por rangos se puede utilizar para implementar eficien-
           donde resumen es una columna de texto en la tabla              temente una ventana de datos históricos.
           empleados. El índice de dominio se puede almacenaren                Cada carga de datos obtiene su nueva propia parti-
           un archivo de datos externo o dentro de una tabla Ora-         ción, haciendo que el proceso' de carga sea más rápido
           ele organizada con índices. Un índice de dominio se pue-       y eficiente. El sistema realmente carga los datos en una
           de combinar con otros índices (mapa de bits o de árbol         tabla separada con la misma definición de columna que
           B) en la misma ruta de acceso con la conversión entre          en una tabla dividida. Se puede entonces verificar la
           la representación de mapa de bits y el identificador de         consistencia de los datos, arreglarlos e Indexarlos. Des-
           fila y usando operaciones booleanas del mapa de bits.           pués de eso el sistema puede hace de la tabla separada
                                                                           una nueva partición de la tabla partida mediante un sen-
                                                                           cillo, cambio de los metadatos en el diccionario de datos
           25.3,.10. División en particiones                               (una operación casi instantánea).
           Oracle soporta varias clases de división horizontal de               Mientras no cambien los metadatos, el proceso de
           tablas e índices y esta característica tiene Una función        carga no afecta a los datos existentes en la tabla dividi-
           principal en la capacidad de Oracle de soportar bases           da en ningún caso. No hay necesidad dc realizar ningún
           de datos muy grandes; La capacidad de dividir una tabla         mantenimiento de los índices existentes C9tI1() parte de
           o índice tiene ventajas en muchas 'áreas.                       la carga. Los datos antiguos se pueden eliminar de una
                                                                           tabla sencillamente eliminando su partición; esta ope-
                 La copia de seguridad y recuperación es más sen-          ración no afecta al resto de particiones. Además, las con-
                 cilla y rápida, puesto que se puede realizar sobre        sultas en un entorno de almacén de datos frecuentemente;
"lIlI            particiones individuales en lugar de sobre toda la        contienen condiciones que los restringen a un cierto
~!'~
••'1,
                 tabla.
                 Las operaciones de carga en un entorno de alma-
                                                                           periodo de tiempo, tal como una quincena o mes. Si Se.
                                                                            uti liza la división de datos por rangos el optimizador de
'. "jo;          cén de datos son menos intrusivas: se pueden agre-        consulta puede restringir el acceso a los datos de aque-
                 gar datos a una partición y entonces agregar la            llas particiones que son relevantes a la consulta y evi-
                 partición a una tabla, lo que es una operación ins-        tar una exploración de toda Ta tabla.
                 tantánea. De igual forrna, eliminar una partición
                 con datos obsoletos desde una tabla es muy. senci-        25.3.10.2. División asociativa
                 llo en un almacén de dalas que mantenga una ven-          En la división asociativa, una función asociativa hace
                 tana de datos históricos.                                 corresponder filas con divisiones según los valores en
    ,:i       • El.rendirniento   de la consulta se mejora sustan-        las columnas de, la división. Este tipo dé división resul-
                 cialmente, puesto que el optimizador puede reco-          ta útil principalmente cuando es importante distribuir
                 nocer que solamente se tiene qu~ acceder a un sub-        las tilas equitativamente entre las particiones o cuando
                 conjunto de las particiones de una tabla con el fin       las reuniones por particiones son importantes para el
                 de resolver I¡;¡.
                                 consulta (poda de particiones). Tam-      rendimiento de la-consulta.
                 bién el optimizador puede reconocer que en una
                 reunión no es necesario intentar hacer correspon-         25.3.10.3. División compuesta
                 der todas las tilas en una tabla con todas las filas      Enla división compuesta la tabla se divide por rangos,
                 en la otra, pero que las reuniones se necesitan rea-      pero cada panición tiene subpaniciones      mediante el
                 lizar solamente entre pares coincidentes de divi-         uso. de división asociativa. Este tipo de división com-
                 siones (reunión por particiones).                         bina las ventajas de la división por rangos y la división
                                                                           asociativa.
                 Cada fila en una tabla dividida está asociada con una
             partición específica. ESta asociación está basada en la
                                                                           25.3.10.4. "División por listas
             columna o columnas de la división que son parle de la
             definición de una, tabla dividida. Hay varias formas para     En la división por listas los valores asociados con una,
             hacer corresponder valores de columna a divisiones,           partición panicular están en una lista; Este tipo de divi-
              dando lugar a varios tipos de divisiones, cada una con       sión es útil si los datos en la columna de división tienen
              distintas características: divisiones por rangos, asocia-    un conjunto relativamente pequeño de valores discre-
              tivas, compuestas y por listas.                              tos. Por ejemplo, una tabla con una columna provincia

                                                                          6"
CAPiTULO   25   Ol'AC-:IE


 se puede partir implícitamente por región geográfica si             metadatos.qhi¡ension    para especificar cómo se abstraen
 c-ada lista de particiones tiene las provincias 'que perte-
                                                                     los días a meses, los meses a Cuatrimestres, los cuatri-
 necen-a Ia misma región.
                                                                     mestres a 'años y así sucesivamente. De igual forma se
                                                                     pueden especificar las propiedades jerárquicas relacio-
 25.3.11. Vistas materializadas                                      nadas con la geografía, por ejemplo, cómo los distritos
                                                                     de ventas. se abstraen a regiones. La lógica de la rees-
   La caractenstíca de la vista materializada (véase el Apar-        critura de la consulta examina estas relaciones puesto
   tado' 3.5.1) permite almacenar el resultado de una Con-          que permite utilizar una vista materializada para clases
   sulta SQL y utilizarlo en un procesamiento      posterior.        más amplias de consultas.
  Además, Oracle mantiene el resultado materializado,                    El objeto contenedor para una vista materializada es
  actualizándolo cuando se actualizan las tablas a las que          una tabla, lo que significa que una vista materializada
  se hicieron referencia en la consulta. Las vistas mate-           se puede indexar, dividir o estar sujeta.a otros contro-
  rializadas se utilizan en el almacén de datos para acc-           les para mejorar el rendimiento de la consulta.
  lerar el procesamiento    de la consulta, pero esta tecno-             Cuando hay cambios en los datos de las tablas refe-
  logía también se utiliza pata la réplica en entornos              renciadas en la consulta que define una vista materiali-
  distribuidos y móviles.
                                                                   zada se debe actualizar la vista materializada para reffc-
      En el almacén de datos, un uso común de vistas mate-         jar dichos cambios. Oracle soporta tanto la actualización
 rializadas es, resumir los datos. Por ejemplo, un tipo            completa de una vista materializada como una actuali-
 común de consulta solicita «la suma dc las ventas de cada         zación rápida incremental. En una actualización com-
 cuatrimestre durante lbs últimos dos años». El precalcu-          pleta Oracle vuelve a calcular la vista materializada des-
 lo de los resultados, o algún resultado parcial. de dicha         de Cero, lo cual puede ser la mejor opción si las tablas
 consulta puede acelerar drásticamente el procesamiento            subyacentes han tenido cambios significativos, pcr ejem-
 de la consulta comparado a calcularlo desde cero con la          plo, debidos a una carga masiva. En una-actualización
 agregación de todos los registros de ventas por detalle.         incremental Oracle actualiza la vista utilizando regis-
      Oracle soporta' reescrituras automáticas de las con-        tros que fueron cambiados en las tablas subyacentes: la
 sultas que' aprovechan cualquier vista materializada útil        actualización de la vista es inmediata, esto es, se eje-
cuandose.resuelve      una consulta. La reescritura consis-       cuta como parte de la transacción que cambió las tablas
te en cambiar la consulta para utilizar la vista materia-         subyacentes. La actualización incremental puede ser
lizada en lugar de las tablas originales en la consulta.          mejor si el número de filas que se han cambiado es
Además, la reescritura puede agregar reuniones adicio-            pequeño. Hay algunas restricciones sobre las clases de
nales o procesamiento de 'agregación si SOn necesarias            consultas según las que una vista materializada se pue-
para obtener el resultado correcto. Por ejemplo, si una          de actualizar de forma incremental (y otras que indican
consulta necesita las ventas por cuatrimestre, la rees-          si una vista materializada siquiera se puede crear).
critura puede aprovechar una vista que materializa las                 Una vista materializada es similar a un índice en el
ventas por mes, añadiendo agregación adicional para              sentido que, aunque puede mejorar el rendimiento de la
abstraer los meses a cuatrimestres. Oracle tiene un tipo         consulta, usa espacio, y su creación y inantenimiento con-
de objeto de metadaros denominado dimension que per-             sume recursos. Para ayudar a resolver este compromiso
mite las relaciones jerárquicas en las tablas a definir.         Oracle proporciona un paquete que puede aconsejar al
Por ejemplo, una tabla de la dimensión temporal en un            usuario de las vistas materializadas más efectivas en el
esquema en estrella Oraele puededefinir       un objeto de       coste, dada una carga de trabajo particular como-entrada.




Oracle soporta una gran variedad de técnicas de proce-
                                                                      mación sobre los bloques que forman la tabla del
samiento en su motor de procesamiento de consultas.                   mapa de extensión y explorando esos bloques.
Algunas de las más importantes se describen aquí bre-
vemente.                                                           • Exploración      de índices. El procesador crea una
                                                                      clave de comienzo y/o finalización a partir de las
                                                                     condiciones en la consulta y la utiliza para explo-
25.4.1. Métodos de ejecución                                         rar una parte relevante del índice. Si hay colum-
Los datos se pueden    acceder   mediante   una serie de             nas que se tienen que recuperar, que no son parte
métodos' de acceso:                                                  del índice, la exploración del índice sería seguida
                                                                     por un acceso a la tabla mediante el índice del iden-
                                                                     tificador de fila. Si no hay disponible ninguna cla-
    Exploración de tabla completa. El procesador de
                                                                     ve de inicio o parada la exploración       sería una
    la consulta explora toda la tabla y obtiene infor-               exploración de índice completa.
                                                           619
FUNDAMENTOS   DE BASES DE OATOS



     Exploración rápida completa de Índices. El pro-              25.4.2. Optimización
     cesador explora las extensiones.de la misma for-             En el Capítulo 14 se ha discutido el tema general de la
     ma que la extensión de tabla en una exploración              optimización de la consulta. Aquí discutimos la opti-
     de tabla completa. Si el Índice contiene todas las           mización en el contexto de Orácle.
     columnas que se necesitan en el Índice y no hay
     buenas claves de inicio y parada que puedan redu-            25.4~2.1.Transformaciones de consultas
     cir significativamente esa porción del índice que
     se exploraría en una exploración de índices nor-             Oracle realiza la optimización de consultas en varios
     mal. este método puede ser la forma más rápida de            pasos. La mayoría de las técnicas relacionadas con las
     acceder a los datos. Esto es porque la exploración           rransformaciones.de consultasy reescritura tienen lugar
     rápida completa aprovecha de forma completa la               antes de la selección de la ruta de acceso, pero Oracle
     EIS de disco de varios bloques. Sin embargo. a               también soporta varios tipos de transformaciones de
     diferencia de' una exploración completa normal,              consultas basadas en el costo que generan un plan com-
     que recorre los bloques hoja del índice en orden,            pleto y devuelven una estimación del costo para-la ver-
      una exploración rápida completa no garantiza que            sión estándar de la consulta y otra que,ha sufrido trans-
      la salida preserve el orden del indice.                     formaciones avanzadas. No todas las técnicas de
                                                                  transformación de consultas tienen garantizado su bene-
   • Reunión de Índices. Si una consulta necesita                 ficio para cada consulta, pero mediante la generación
     solamente un pequeño subconjunto de columnas                 de una estimación del coste para el mejor plan sin y con
     de una tabla ancha. pero ningún 'índice contiene              la transformación aplicada. Oracle puede adoptar una
     todas estas columnas. el procesador puede utilizar            decisión inteligente.
     una reunión de índices para generar la información                Algunos de los tipos principales de transformaciones
     relevante sin acceder a la tabla, reuniendo varios            y reescrituras soportados por Oracle son los siguientes:
     índices que contienen en conjunto las columnas
     necesarias. Ejecuta las reuniones como reunión por                • Mezcla de vistas. La referencia deja vista en una
     asociación sobre los identificadores de filas desde                 consulta es reemplazada por la definición de la vis-
     los distintos índices.                                              ta. Esta transformación no es aplicable a todas las
      Acceso a agrupaciones y agrupaciones asocia-                       vistas.
      das. El procesador accede a los datos utilizando la                Mezcla compleja de vistas. Oracle ofrece esta
      clave de 'a&rupaciói1.                                             característica para ciertas clases de' vistas que no
                                                                         estén sujetas a la mezcla normal de vistas puesto
      Oracle.tiene diversas formas de combinar informa-                  que tienen un group by osejeet distinct en ladefi-
 ción desde varios índices en una única ruta de acceso.                   nición de la vista. Si dicha vista se combina con
 Esta posibilidad permite varias condiciones en la cláu-                 otras tablas, Oracle puede conmutar las reuniones
 sula where que se pueden utilizar conjuntamente para                     y la operación de ordenación utilizada por group
 calcular el conjunto de resultados de la forma más efi-                  by o distinct.
 cientemente posible. La funcionalidad incluye la capa-                • Subconsultas planas. Oracle tiene una serie de
 cidad de ejecutar las operaciones booleanas conjunción.                 transformaciones que convierten varias. clases de
 disyunción y diferencia sobre mapas de bits que repre-                  subconsultas en reuniones, semirreunioúes o anti-
 sentan los identificadores de filas. Hay también opera-                 rreuniones.
 dores que hacen corresponder una lista de identificado-
 res de filas con mapas de bits y viceversa, lo que permite              Reescritura' de vistas materializadas; Oracle tie-
 que los índices de árbol B normales y los índices de                    ne la capacidad de reescribir una consulta auto-
  mapas de bits utilicen la misma ruta de acceso. Además,                máticamente para aprovechar las vistas materia-
  para muchas consultas que involucran count (*) en                      lizadas. 'Si alguna parte de la consulta se puede
  selecciones sobre una tabla el resultado se puede cal-                 casar con una vista materializada existente. Ora-
  cular simplemente contando los bits activados en el                    ele puede remplazar esta parte de la consulta con
  mapa de bits generado mediante la aplicación de las                     una referencia a la tabla en la cual la vista está
  condiciones de la cláusula where sin acceder a la tabla.                materializada. Si es necesario, Grade agrega con-
       Oracle soporta varios tipos de-reuniones en el motor               diciones de reunión u operaciones group by para
   de ejecución: reuniones internas, externas, semireunio-                preservar la semántica de la consulta. Si son apli-
   nes y antirreuníones (una antirreunión en Oracle devuel-               cables varias vistas materializadas. Oracle reco-
   ve las filas de la parte izquierda de la entrada que no                ge la que reduce la mayor cantidad de datos que
   coinciden con ninguna fila en la parte derecha de la entra-            se tienen que procesar. Además. Oracle somete la
   da; esta operación-sedenominaentisemirreunión en otros                 consulta reescrita y la versión original al proceso
    libros). Evalúa cada tipo de reunión mediante uno de los              completo de optimización produciendo un plan de
    tres métodos: reunión por asociación, reunión por mez-                ejecución y un coste asociado estimado para cada
    cla-ordenación o reunión en bucle. anidado.                           una. Oracle entonces decide si ejecutar la versión
                                                                 620
CAPITlJLO   25   ORACLE,



      original o la reescrita de la consulta según la esti-           litar la recogida de las estadísticas del optimizador, Ora-
      mación del coste.                                               de puede supervisar la actividad de la modificación
       Transformación en estrella. OracIe soporta una                 sobre tablas y sigue la pista de aquellas tablas que han
       técnica para evaluar las consultas en esquemas en              sido objeto de suficientes cambios como para que pue-
      estrella, conocidas como transformación en estre-               da ser apropiado un nuevo cálculo de las estadísticas.
      lla. Cuando una consulta contiene una reunión de                Oracle también sigue las columnas que se utilizan en
      una' tabla de hechos con tablas dimensionales y                 las cláusulas where de las consultas, 10 que hace que
      selecciones sobre los atributos de las tablas dimen-            sean candidatas potenciales para la creación del histo-
      sionales.Ia consulta se transfonnaborrando la con-             grama. Con una única orden un usuario puede decir a
      dición de la reunión entre la tabla de hechos y las            Oracle ,que actualice las estadísticas para aquellas tablas
      tablas dimensionales y remplazando la condición                que han sido suficientemente cambiadas. Oracle utiliza
      de selección en cada tabla dimensional por una                 un muestreo para acelerar el proceso de recoger la nue-
      subconsulta del formulario:                                    va estadística y elige de forma automática el menor por-
                                                                    centaje de la muestra. que sea adecuado. También deter-
      tabla_de _ hechos.th, in                                       mina si la distribución de las columnas marcadas merece
                    (select cp Irom tabla _dimensional¡              la creación de histogramas: si la distribución está cerca
                    where <condiciones sobre                         de ser uniforme Oracle utiliza una representación más
                    tabla _dimensional, »                            sencilla de la estadística de columnas.
                                                                         Oracle utiliza el coste de CPU y E/S en disco en el
      Se genera dicha subconsulta para cada 'tabla dimen-
                                                                    modelo de coste en el optimizador. Pata equilibrar los
      sional que tiene algún predicado restrictivo. Si la
                                                                    dos componentes almacena las,medidas sobre la velo-
      dimensión tiene un esquema en copo de nieve (véa-
                                                                    cidad de CPU y rendimiento de E/S de disco como par-
      se el Apartado 22.4), la subconsulta contendrá una
                                                                    te de la estadística del optimizador; El paquete de Ora-
      reunión de las rablas aplicables que forman la
                                                                    ele para recoger la estadística del optimizador calcula
      dimensión.
                                                                    estas medidas.
         Oracle utiliza los valares que son devueltos des-
                                                                         Para consultas que involucran un número no trivial
      de ceda.subconsulta para probar un índice sobre la
                                                                    de reuniones. el espacio de búsqueda es un tema para
      columna de la tabla de hechos correspondiente,
                                                                    el optimizador de consultas. Orac1e soluciona este tema
      obteniendo un mapa de bits como resultado. Los
                                                                    de, varias fonnas. El optimizador genera un orden ini-
      mapas de bits generados desde distintas subcon-
                                                                    cial de la reunión y entonces decide sobre los mejores
      sultasse combinan con una operación and de
                                                                    métodos de la reunión y rutas de acceso.para ese orden
     mapas de bits. El mapa de bits resultante se pue-
                                                                    de la reunión. Entonces cambia el orden de las tablas y
     de utilizar pata acceder a las 'tilas de las tablas de
                                                                    determina los mejores métodos de reunión y rutasde
     hechos coincidentes. Por ello, solamente se acce-
                                                                    acceso para el nuevo orden y así sucesivamente, guar-
     derá a las filas en la tabla de hechos que coinciden
                                                                    dando el mejor plan que 'se ha encontrado hasta enton-
     simultáneamente en las condiciones de las dimen-
                                                                   ces. Oracle mantiene pequeña la optimizacióIí si el
     siones restringidas.
                                                                   número de (os distintos órdenes de la reunión que se
         Tanto la decisión de si el uso de una subcon-
                                                                   han considerado es tan grande que el tiempo gastado en
     sulta para una dimensión particular es ventajoso y
                                                                   el optimizador puede ser grande comparado con el que
     la decisión de-si la consulta reeserita es mejor que
                                                                   se gastaría para ejecutar el mejor plan encontrado has-
     la original están basadas en la estimación de cos-
                                                                   ta entonces. Puesto que este corte depende del coste esti-
     te del optimizador.
                                                                   mado para el mejor plan encontrado hasta entonces, es
                                                                   importante encontrar un buen plan pronto. de forma que
25.4.2.2.Selección de la ruta de acceso
                                                                   el optimizador se pueda parar después de un pequeño
 Oracle tiene un optimizador basado en el casto que                número de órdenes de la reunión. resultando un mejor
 determina el orden de la reunión, métodos de reunión y            tiempo de respuesta. Oracle utiliza varias heurísticas
 rutasde acceso. Cada operación que el optimizador con-           para el orden inicial para. aumentar la probabilidad de
sidera tiene una función de coste asociada y el optimi-           que el primer orden de reunión se considere bueno.
 zador intenta generar la combinación de operaciones                    Por cada orden de reunión que se considera, el opti-
 que tiene' el coste global menor.                                mizador puede hacer pasadas adicionales por las tablas
    Para estimar-el coste de una operación, el optimiza-          para decidir los métodos de reunión y las rutas.de acce-
 dor considera las estadísticas que.se han calculado para         so. Tales pasadas adicionales capturarían efectos glo-
 losobjetos del esquema tales como tablas e índices. La           bales colaterales específicos sobre la selección de la ruta
 estadística contiene información sobre el tamaño del             de acceso. Por ejemplo. una combinación específica de
'objeto, la cardinalidad. la distribución de datos de las         métodos de reunión y rutas de' acceso pueden eliminar
 columnas de la tabla y cosas similares. Para la estadís-         la necesidad de ejecutar una ordenaciÓn orden by. Pues-
 tica de columnas, OracIe soporta histogramas equili-             to que tal efecto lateral global puede.no ser obvio cuan-
 bradosen altura e histogramas de frecuencia. Para faci-          do se consideran Localmente los costes de los distintos
                                                            621
FUNDA.MENTOS   DE BASES   DE DATOS




      métodos de reunión y de rutas de acceso, se utiliza una            sos y envía: una copia de la: tabla pequeña a cada pro-
      pasada separada que capture un erecto colateral espe-             -ccso, la cual entonces reúne su trozo.con la-tabla menor.
      cffico para encontrar un posibleplan de ejecución con              Si ambas tablas son grandes, sería próhibitivamente cos-
      un mejor coste conjunto.                                           toso enviar una de ellas a rodoslos procesos. En ese
                                                                         caso Oracle logra el paralelismo mediante la: división
      25.4.2.3. Poda de particiones                                      de los datos entre los procesos mediante la asociación
                                                                         de los valores de-las columnas dc la reunión (el méto-
      Para tablas divididas el optimizador intenta ajustar las
                                                                         do de reunión por asociación dividida del Apartado
      condiciones en la cláusula where de una consulta con
                                                                         20.5.2.1). Cada tabla se explora en paralelo mediante-
      el criterio de división de la tabla con el fin de evitar acce-
                                                                         un conjunto de procesos y cada fila en la salida se pasa
      der a:particiones que no son necesarias para el resulta-
                                                                         a un proceso de, un conjunto de procesos 'que van a eje-
      do. Por ejemplo, si una tabla se divide por el rango de
                                                                         cutar la reunión. El proceso que obtiene la fila sedeter-
      fechas y la consulta se restringe a datos entre dos fechas
                                                                         mina mediante una función de asociación sobre los valo-
      específicas, el optimizador determina las particiones-que
                                                                         res de .la columna de reunión. Por ello, cada proceso de
      contienen los daros entre las fechas específicas y ase-
                                                                         reunión obtiene solamente las filas que podrían poten-
      gura que solamente se accede a dichas particiones. Este
                                                                         cialmente coincidir y filas correspondientes     no podrían
      escenario es muy común y la aceleración puede ser dra-
                                                                         ir a parar .a diferentes procesos.
      mática si solamente es necesario un pequeño subcon-
                                                                              Orade organiza eh paralelo las operaciones de orde-
      junto de particiones.
                                                                         nacióri mediante Jos rangos de valores de la columna en
                                                                          la cual se ejecuta la ordenación (esto es, usando la orde-
      25.4.3. Ejecución en paralelo                                      nación de división por rangos del Apartado 20.5.).
      Oraele permite ejecutar en paralelo una única instruc-              A cada proceso que participa en la ordenación se le en-
      ción SQL mediante la división del trabajo entre varios              vían filas con los valores en este rango y ordena las filas
      procesos en una computadora multiprocesadora.           Esta        en su rango. Para maximizar las ventajas del paralelis-
      característica   es especialmente    útil para operaciones          mo las filas se tienen que dividir lo más equitativamente
      intensivas en cómputo que de.otra forma se ejecutarían              posible entre los procesos en paralelo y entonces surge
      en un tiempo inaceptablemente       largo. Ejemplos repre-          el problema de determinar las fronteras de rango que
      senrativos son las consultas de apoyo para la toma de               generan una buena distribución. Oracfe soluciona el pro-
      decisiones que necesitan procesar grandes cantidades                blema mediante un muestreo dinámico de un subcon-
                                                                         junto de las titas en la entrada a la ordenación antes de
.,.   de datos. cargas de datos en un almacén de datos y
      creación o reconstrucción de Índices.                               decidir las fronteras del rango.
           Con el fin de lograr una buena aceleración median-
      te el paralelismo es importante que el trabajo involu-
                                                                         25.4.3.1. Estructura del proceso
      crado en la ejecución de la instrucción se divida en grá-          Lbs procesos involucrados en la ejecución en paralelo
      nulos que se pueden procesar de forma independiente                de 11Ii'a instrucción SQLconsistén  en un proceso. coor-
      mediante tos distintos procesadores en paralelo. Depen-            dinador y una serie de procesos servidores en paralelo.
      diendo del tipo de'operación Oracle tiene diversas for-            El coordinador es responsable de asignar trabajos a los
      mas de dividir el trabajo.                                         servidores en paralelo y de recoger y devolver los datos
           Para operaciones que acceden a objetos base Xtablas           a los procesos del usuario que enviaron la instrucción.
      e índices) Oracle puede dividir el trabajo mediante tro-           El grado de paralelismo es el número de procesos ser-
      zos Horizontalesde datos. Para alguna s operaciones tales          vidores en paralelo que se asignan para ejecutar una
      como una exploración completa de una tabla, cada uno               operación primitiva como parte de la instrucción. El gra-
       de dichos trozos puede ser un rango de bloques (cada              do de paralelismo se determina mediante el optimiza-
       proceso de consulta en paralelo explora la tabla desde            dor. pero se puede reducir dinámicamente si la:carga en
       el bloque a:1comienzo del rango hasrael bloque al final).         el sistema aumenta.
       Para otras operaciones en una tabla dividida. come la                 Los-servidores en paralelo operan sobre un modelo
       actualización y borrado, el trozo podría ser una parti-           productor/consumidor.    Cuando es necesario una secuen-
       ción. Para inserciones eh una tabla no dividida los datos         cia de operaciones para procesar una instrucción. el
       a insertar se dividen de forma aleatoria entre los proce-         conjunto productor de servidores ejecuta la primera ope-
        sos en paralelo.                                                 ración y pasa los datos resultantes al conjunto de con-
            Las reuniones se pueden realizar en paralelo de dis-         sumidores. Por ejemplo, si una exploración de tabla
        tintas formas. Una forma es dividir una de las entradas          completa es seguida por una ordenación y el grado de
        a la reunión entre procesos paralelos y permitir que cada        paralelismo es 12, habría 12 servidores productores que
        proceso reúna su trozo con la otra entrada de la reunión;        ejecutan la exploración de la tabla y pasan el resultado
        éste es el método de reunión con fragmentos, y réplicas          a 12 servidores consumidores que ejecutan la ordena-
         del Apartado 20.5.2. Por ejemplo, si una tabla grande           ción. Si es necesaria una operación posterior, como otra
         se reúne con una pequeña mediante una reunión por aso-          ordenación, las funciones de los dos conjuntos de ser-
        elación, Oracle divide' la tabla grande entre los proce-          vidores se cambian. Los servidores, que originalmente

                                                                       622
CAPITULO   25   0RACLE



 ejecutaban la exploración de la tabla adoptan la función              Para sistemas sin compartimiento el coste para acce-
 de consumidores de la salida producida por la primera            der a los datos en el disco no es uniforme entre los pro-
 ordenación y lo utilizan para ejecutar la segunda orde-          cesos. Un proceso que se ejecuta en un nodo qlle tiene
 nación. Por ello se realizan una secuencia de operacio-          acceso directo a un dispositivo puede procesar los datos
 nes pasando los datos entre dos conjuntos de servido-            sobre ese dispositivo más rápidamente que un proceso
 res que alternan sus funciones como productores S                que tiene que recuperar los datos a través de la red.
 consumidores.    Los servidores se comunican entre sí            Oraele utiliza el conocimiento sobre la añnidad dispo-
 mediante las memorias' intermedias sobre hardware de             sitivo a nodo y dispositivo a proceso (esto es, la capa-
 memoria compartida y mediante las conexiones de red              cidad de acceder a los dispositivos directamente) cuan-
 de alta velocidad sobre configuraciones MPP (sin com-            do distribuye el trabajo entre servidores en ejecución
 partimiento) y sistemas agrupados (discos compartidos).          paralela.



                      "c., '."   Jt<;OJlCUllBENCIA                 y RECUPERACiÓN

 Orácle soporta técnicas de control de concurrencia     y           de retroceso es lo suñciénremente grande, Oracte puede
 recuperación que proporcionan una Serie de caracterís-            devolver un resultado consistente de la consulta incluso
 ticas útiles.                                                     si los datos se han modificado varias veces desde que
                                                                   comenzara la ejecución de la consulta. Sie! bloque con
25.5.1.Control de concurrencia                                     el SCN deseado ya no existe en el segmento de retroce-
                                                                   so, la consulta devolverá un error. Habría una indicación
 El control de concurrencia multiversíón de Oracle difie-          de que el segmento de retroceso no se ha dimensionado
 re de los mecanismos de Concurrencia utilizados por la            adecuadamente, dada la actividad del sistema.
 mayoría de los fabricantes de bases de datos. Para las                En el modelo de concurrencia de' Oracle las opera-
 consultas de sólo lectura se proporcionan instantáneas            ciones de lectura no bloquean las operaciones de escri-
 consistentes en lectura, que son vistas de la 'base de datos      tura y las operaciones de escritura no bloquean las ope-
 tal como existía en un cierto momento, conteniendo                raciones de lectura. una propiedad que permite un alto
 todas las actualizaciones que se comprometieron        hasta      grado de concurrencia. -En particular, el esquema per-
 ese momento y no el resto. Por ello no se utilizan lQS           mite consultas largas (por ejemplo consultas de infor-
 bloqueos de lectura y las consultas de sólo lectura no            mes) para ejecutar en un Sistema con una gran cantidad
 interfieren con otra actividad de la base de datos en tér-        de actividad transaccional. Esta clase de escenario es
 minos de bloqueos (esto es básicamente el protocolo de            normalmente problemático para sistemas de bases de
 bloqueo multiversión en dos' fases descrito en el Apar-          datos donde las consultas utilizan bloqueos de lectura,
tado 16.5.2).                                                     puesto que la.consulta puede, fallar al adquirirlos o blo-
    Oraclesoporta la consistencia de lectura en un nivel          quear grandes cantidades de datos por mucho tiempo
de instrucción y de transacción. Al comienzo-de la eje-           evitando, por consiguiente. la actividad transaccional
cución de una instrucción o transacción (dependiendo              de los datos y reduciendo la concurrencia (una alterna-
del nivel de consistencía que se utilice) Oracle deter-           tiva que se utiliza en algunos sistemas es utilizar un gra-
mina el número de cambio del sistema'(System          Chan-       do inferior de consistencia, tal como la consistencia en
ge Number, SCN) actual. El SCN esencialmente actúa                grado dos, pero eso podría producir resultados incon-
como una marca temporal donde el tiempo 'se mide en               sistentes eh la consulta).
términos de compromisos de la base de datos en lugar                  El modelo de concurrencia de Orecle se utiliza como
del tiempo de reloj.                                              base para la característica Flashback Query. Esta carac-
    Si en el curso de una consulta se encuentra que un            terística permite a un usuario establecer un cierto núme-
bloque de datos tiene un SCN mayor que el que está sien-         ro SCN o tiempo de reloj en su sesión y ejecutar con-
do asociado con la consulta, es evidente que se ha modi-          sultas sobre los datos que existían en esa fecha (supuesto
ficado el bloque de datos después del SCN de la con-             que los datos todavía existían en el segmento de retro-
sulta original mediante alguna aira transacción y puede          cese]. Normalmente en un sistema de bases de datos.
ano haberse comprometido. Por ello los datos en el blo-          una vez que se ha realizado el cambio no hay forma de
que no se pueden incluir en una vista consistente de la          retroceder al estado anterior de los datos a menos que
base de datos como existía a la hora del SCN de la con-          se realicen restauraciones desde copias dc seguridad.
sulta. En su lugar, se debe utilizar una versión anterior        Sin embargo, la recuperación de una base de datos muy
de los datos en el bloque; específicamente aquel que ten-        grande puede ser muy costosa, especialmente si el obje-
ga el SCN mayor que no exceda el SCN de la consulta.             tivo es solamente recuperar algunos datos que han sido
Orac1erecupera la versión de los datos desde el segmento         borrados inadvertidamente por Un usuario. La caracte-
de retroceso (los segmentos de retroceso se describen en         rística Flashback Que¡-)' proporciona       un mecanismo
el Apartado 25.5.2). Por ello, supuesto que el segmento          mucho más sencillo para tratar los errores del usuario.
                                                           623
Oracle
Oracle
Oracle
Oracle
Oracle

More Related Content

What's hot (16)

Ansi Sql
Ansi SqlAnsi Sql
Ansi Sql
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracle
 
Sql
SqlSql
Sql
 
Nelson chavez base de datos
Nelson chavez base de datosNelson chavez base de datos
Nelson chavez base de datos
 
Taller2
Taller2Taller2
Taller2
 
Ssis2008 r2 castellano
Ssis2008 r2 castellanoSsis2008 r2 castellano
Ssis2008 r2 castellano
 
Basesdedatos smbd final
Basesdedatos smbd finalBasesdedatos smbd final
Basesdedatos smbd final
 
Ansi Sql
Ansi SqlAnsi Sql
Ansi Sql
 
Programación con sql server
Programación con sql serverProgramación con sql server
Programación con sql server
 
Administración y programación en sql server
Administración y programación en sql serverAdministración y programación en sql server
Administración y programación en sql server
 
Fundamentos de BD - Unidad 1 Sistemas Gestores de BD
Fundamentos de BD - Unidad 1 Sistemas Gestores de BDFundamentos de BD - Unidad 1 Sistemas Gestores de BD
Fundamentos de BD - Unidad 1 Sistemas Gestores de BD
 
Formacion Business Objects XI
Formacion Business Objects XIFormacion Business Objects XI
Formacion Business Objects XI
 
Ansi sql
Ansi sqlAnsi sql
Ansi sql
 
Sistemas de gestión de base de datos
Sistemas de gestión de base de datosSistemas de gestión de base de datos
Sistemas de gestión de base de datos
 
Base de datos en sql
Base de datos en sqlBase de datos en sql
Base de datos en sql
 
JAVA CON BASE DE DATOS
JAVA CON BASE DE DATOSJAVA CON BASE DE DATOS
JAVA CON BASE DE DATOS
 

Similar to Oracle

Similar to Oracle (20)

Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracle
 
ORACLE
ORACLEORACLE
ORACLE
 
Motor De Bases De Datos Oracle
Motor De Bases De Datos OracleMotor De Bases De Datos Oracle
Motor De Bases De Datos Oracle
 
Base de datos
Base de datosBase de datos
Base de datos
 
Actividad4cosdac
Actividad4cosdacActividad4cosdac
Actividad4cosdac
 
Control y Evaluacion de Empresas - Oracle
Control y Evaluacion de Empresas - OracleControl y Evaluacion de Empresas - Oracle
Control y Evaluacion de Empresas - Oracle
 
Tarea 1 bd
Tarea 1 bdTarea 1 bd
Tarea 1 bd
 
Exposicion_Terabyte.pptx
Exposicion_Terabyte.pptxExposicion_Terabyte.pptx
Exposicion_Terabyte.pptx
 
Base de datos ventajas y desventajas
Base de datos ventajas y desventajasBase de datos ventajas y desventajas
Base de datos ventajas y desventajas
 
Cuadro Comparativo Bd
Cuadro Comparativo BdCuadro Comparativo Bd
Cuadro Comparativo Bd
 
Bases de Datos
Bases de DatosBases de Datos
Bases de Datos
 
Consideraciones de diseño
Consideraciones de diseñoConsideraciones de diseño
Consideraciones de diseño
 
Oracle Data Mining.pptx
Oracle Data Mining.pptxOracle Data Mining.pptx
Oracle Data Mining.pptx
 
Presentacion oracle
Presentacion oraclePresentacion oracle
Presentacion oracle
 
Presentacion oracle
Presentacion oraclePresentacion oracle
Presentacion oracle
 
Presentacion oracle power point
Presentacion oracle power pointPresentacion oracle power point
Presentacion oracle power point
 
Mysql
MysqlMysql
Mysql
 
Actividad de aprendizaje 4 screencast y bases de datos.jltc
Actividad de aprendizaje 4 screencast y bases de datos.jltcActividad de aprendizaje 4 screencast y bases de datos.jltc
Actividad de aprendizaje 4 screencast y bases de datos.jltc
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
ORACLE VS IBM DB2.pptx
ORACLE VS IBM DB2.pptxORACLE VS IBM DB2.pptx
ORACLE VS IBM DB2.pptx
 

More from Young Hyun

Analisis comparativo
Analisis comparativoAnalisis comparativo
Analisis comparativoYoung Hyun
 
Usuarios y administradores 2º unidad
Usuarios y administradores 2º unidadUsuarios y administradores 2º unidad
Usuarios y administradores 2º unidadYoung Hyun
 
Creacion de una base de datos
Creacion de una base de datosCreacion de una base de datos
Creacion de una base de datosYoung Hyun
 
Entorno de sql server 2005
Entorno de sql server 2005Entorno de sql server 2005
Entorno de sql server 2005Young Hyun
 
Instalación de sql 2005 %26 sql management studio
Instalación de sql 2005 %26 sql management studioInstalación de sql 2005 %26 sql management studio
Instalación de sql 2005 %26 sql management studioYoung Hyun
 
Historia de las_base_de_datos_2o_unidad
Historia de las_base_de_datos_2o_unidadHistoria de las_base_de_datos_2o_unidad
Historia de las_base_de_datos_2o_unidadYoung Hyun
 
Historia de las_base_de_datos_2o_unidad
Historia de las_base_de_datos_2o_unidadHistoria de las_base_de_datos_2o_unidad
Historia de las_base_de_datos_2o_unidadYoung Hyun
 
Sistemas de gestion de base de datos 2º unidad
Sistemas de gestion de base de datos 2º unidadSistemas de gestion de base de datos 2º unidad
Sistemas de gestion de base de datos 2º unidadYoung Hyun
 

More from Young Hyun (10)

Glosario doc
Glosario docGlosario doc
Glosario doc
 
Analisis comparativo
Analisis comparativoAnalisis comparativo
Analisis comparativo
 
Db2
Db2Db2
Db2
 
Usuarios y administradores 2º unidad
Usuarios y administradores 2º unidadUsuarios y administradores 2º unidad
Usuarios y administradores 2º unidad
 
Creacion de una base de datos
Creacion de una base de datosCreacion de una base de datos
Creacion de una base de datos
 
Entorno de sql server 2005
Entorno de sql server 2005Entorno de sql server 2005
Entorno de sql server 2005
 
Instalación de sql 2005 %26 sql management studio
Instalación de sql 2005 %26 sql management studioInstalación de sql 2005 %26 sql management studio
Instalación de sql 2005 %26 sql management studio
 
Historia de las_base_de_datos_2o_unidad
Historia de las_base_de_datos_2o_unidadHistoria de las_base_de_datos_2o_unidad
Historia de las_base_de_datos_2o_unidad
 
Historia de las_base_de_datos_2o_unidad
Historia de las_base_de_datos_2o_unidadHistoria de las_base_de_datos_2o_unidad
Historia de las_base_de_datos_2o_unidad
 
Sistemas de gestion de base de datos 2º unidad
Sistemas de gestion de base de datos 2º unidadSistemas de gestion de base de datos 2º unidad
Sistemas de gestion de base de datos 2º unidad
 

Oracle

  • 1. E$IUDIODI .. -' CASOS '-, .. - - " , • E- .'$ parte describe cómo los distintos sistemas de bases de datos integran ' :.:,,:.':::'105 diferentes conceptos descritos anteriormente eh el libro. Específica- , mente, en los capítulos 25, 26-y 27 se cubren tres sistemas de bases de -'. datos ampliamente utilizados: DB2 delBM, oraclé ySQL server de Microsoft. , cada uno de estos capítulos muestra características únicas de cada sístema de bases de datos, herramientas, variaciones y extensiones de SQL y la arquítcc- . turadel sistema, incluyendo organización del almacenamiento; procesamiento de consultas, contrcl de concurrencia y recuperación y réplicas. LOScapituloseubren solamente los aspectos.clave de los productos de bases :de datos que describen. y por consiguiente, no se deberíán utilizar tomo una ",~n ~ del producto. Además, puesto que los productos se mejo- ran pertódícemerse, los detaUesdel producto pueden cambiar. cuando se utl- liza una versión 'particular del producto hay que asegurarse de consultar lbs 'manuales de.Usuaiio para los detalles específicos . .'. Hay que considerar que tos capítulos en esta parte utilizan terminología jndustria] en lugar de académlca. Por ejemplo, se utiliza tabla en lugar de 'I'!'~i,lila '--, en lugarde tupla y columna en lugar de atributo . . . . '. . . , . , ;., ... - ,.-.
  • 2. ..:'~ . e ua~do se fund~- Grade en 1977 COtTI? Software Developmcnt Laborat~iies por Larry Ellison, Bah Miner y Ed Dates no habla productos de bases de datos relacionales comer- ciales. La compañía, cuyo nombre cambió posteriormente a Oracle, se estableció para construir un sistema de.gestión de bases de datos como producto comercial y fue la primera en lanzarlo al mercado. Desde entonces Oraclc ha mantenido una posición líder en el mercado de las bases de datos relacionales. pero con el paso de los años su producto y servicios ofrecidos han crecido más allá del servicio de este 'campo. Aparte-de las herramientas directamente rela- cionadas con el desarrollo y gestión de bases de datos Oracle vende herramientas de inteligen- cia de negocio, incluyendo sistemas de gestión de bases de datos multidimensionales y un SCT- vidor de aplicaciones con una integración cercana al servidor de la-base de datos. Aparte de los servidores y herramientas relacionados con las bases de datos, la compañía ofrece software para la planificación empresarial de recursos y gestión de relaciones con el cliente, incluyendo áreas corno finanzas, recursos humanos, manufactura, márketing, ventas y gestión de cadenas de 'suministro. La unidad Business OnLine de Oracle ofrece servicios en estas áreas como un proveedor de servicios de aplicación. Este capítulo cubre un subconjunto de características, opciones y funcionalidad de los pro- ductos Oracle. Continuamente se desarrollan nuevas versiones de; los productos, por lo que las descripciones dc los productos están sujetas a cambios. Este conjunto de caracrerísucas des- crito aquí está basado en la primera versión de Oracle9i. Antes de abordar a fondo cada uno de. los temas se resumirá la motivación de cada uno de estos tipos de datos y algunos problemas i importantes del trabajo con ellos. II Oracle proporciona una serie de herram icntas para el cacioncs. Soporta varias técnicas de modelado tales diseño, consulta, generación de informes y análisis de como diagramas E-R, ingeniería de información y aná- datos para bases de datos, incluyendo OLAP. lisis y diseño de objetos. Oracle Dcsigner almacena el diseño en Oracle Repository, que sirve como un único 25,1.1.Herramientas para el diseño de bases punto de meradaros para la aplicación. de datos Los metadaros se pueden entonces utilizar para gene- rar formularios e informes. Oracle Repository propor- La mayor parte de las herramientas de diseño de Ora- ciona gestión de la configuración para objetos de bases ele están incluidas en Oracle Internet Developrnenr Sui- de datos, formularios, clases Java, archivos XML y otros te. Se trata de una familia de herramientas para los dis- tipos de archivos. tintosaspectos de desarrollo de aplicaciones, incluyendo La familia también contiene herramientas de de- herramientas. para el desarrollo de formularios, mode- sarrollo de aplicaciones para generar formularios, infor- lado de datos, informes y consultas. La familia de pro- mes, y herramientas para distintos aspectos de desa- ductossoporta el estándar UML (véaseel Apartado 2,10) rrollo basado en Java y XML. El componente de parael modelado. Proporciona modelado de clases para inteligencia de negocio proporciona JavaBeans pata fun- generar código para componentes de negocio para un cionalidad analítica tal 'como visualización de datos, entorno Java así como modelado de actividades para el consultas y cálculos analíticos. modelado del flujo de control de propósito general. La Oracle también posee una herramienta de desarrolló familia también soporta XML para el intercambio de de aplicaciones para el almacén de datos. Oraele Ware- datos con otras herramientas U ML. house Builder. warehouse Builder es una herramienta La principal herramienta de diseño de bases de dalas para el diseño e implantación de todos los aspectos de en la familia es Oracle Designer, que traduce la lógica un almacén de datos, incluyendo el diseño del esque- denegocio y el flujo dedatos en definiciones de esque- ma, asignaciones de datos y transformaciones, proce- masy guiones procedimenrales para' la lógica de las apli- samiento de carga de datos y gestión de meradatos, Ora- 611
  • 3. '1 , FUNDAMENTOS DE BASES DE DATOS ele warehouse Builder soporta los esquemas 3FN y en ciones Java OLAP. Hay muchas razones para evitar un estrella y puede también importar diseños desde Oracle motor de almacenamiento multidimerísional separado: Designer. • Un motor relacional puede dimensionarse a con- juntos de datos mucho mayores. 25.1.2. Herramientas de consulta Se puede utilizar un modelo de seguridad común Oracle proporciona herramientas de consulta, genera- para las aplicaciones analíticas y el almacén de ción de informes y análisis de datos ad hoc, incluyen- datos. doOLAP. El modelado multidimensional se puede integrar Oracle Discoverer es una herramienta basada en Web con el modelado del almacén de datos. para realizar consultas, informes, análisis y publicación • El sistema de gestión de la base de datos relacio- Web ad hoc para usuarios finales y analistas de datos. nal tiene un conjunto mayor de características y Permite a los usuarios.abstraer y concretar conjuntos de funcionalidad en muchas áreas tales como alta dis- resultados de datos pivote y almacenar cálculos como ponibilidad, copia de seguridad y recuperación y informes que se pueden publicar en una serie de forma- tos tales corno hojas de datos o HTML. Discoverer-con- soporte para herramientas de terceros. tiene asistentes que ayudan a los usuarios finales a visua- No hay necesidad de formar administradores de lizar-los datos. corno gráficos. Orac1e9i soporta un amplio bases de datos para dos motores de bases de datos. conjunto de funciones analíticas tales como la agrega- ción de clasificación y traslado en SQL. La interfaz de El principal reto al evitar un motor de bases de datos consulta de Discoverer puede generar SQL del que se' multidimensional separado es proporcionar el mismo puede aprovechar su funcionalidad y puede proporcio- rendimiento. Un sistema, de gestión de bases de datos nar a los usuarios finales una rica funcionalidad analíti- mutidimensional que materializa todo o grandes partes ca. Puesto que el procesamiento tiene lugar en el' sistema de un cubo de datos puede ofrecer tiempos de respues- ,., de gestión de.la base de daros relacional, Díscoverer no requiere un complejo motor de cálculo en el lado del ta muy cortos para muchos cálculos. Oracle ha enfoca- do este problema de dos formas; 111,;. cliente, y hay una versión de Discoverer con exploración. ~l Oracle Express Server es un 'servidor de bases de Oracle ha agregado soporte SQL para un amplie 'oi.ll rango de funciones analíticas, incluyendo cubos, datos multidimensionales. Soporta una amplia variedad Itil de consultas analíticas, así como previsiones, modela- abstracciones.conjuntos de agrupación, clasifica- ~""" 4.¡¡j; do y gestión del escenario. Puede utilizar un sistema de ciones (tanks), agregación de traslado, funciones íed y lag, cajones de histograma, regresión lineal gestión de bases de datos relacionales como un dorsal y desviación estándar, junto con la capacidad de para almacenamiento o utilizar su propio almacena- optimizar la ejecución de dichas funciones en el miento multidímensional de los daros. motor de la base de datos. Con la introducción de los servicios OLAPcn Ora- cly9i, Oracle está evitando un motor de almacenamien- Oracle ha extendido las vistas materializadas para to separado y trasladando la mayor parte de los cálculos permitir funciones analíticas, en particular los con- a SQL. El resultado es un modelo donde todos los datos juntos de agrupación. La capacidad de materiali- residen en el sistema de gestión de la base de datos rela- zar partes o todo el 'cubo es primordial para el ren- cional, y les-cálculos que no se pueden realizar en SQL dimiento de un sistema de gestión de bases de datos se realizan en un motor de, cálculo que se ejecuta en el multidimensionales y las, vistas materializadas pro- servidor de la base de datos. El modelo también pro- porcionan al sistema de gesñón de bases de datos porciona una interfaz para la programación de aplica- relacionales Ia.capaoidad de realizar lo mismo. Oracle9i soporta todas las características principales Algunos ejemplos de las extensiones SQL de Oracle de SQL:1999. con algunas pequeñas excepciones tales son: como, distintos tipos de datos. Además, Oracle sopor- • connect by, que es una forma de recorrido de érbo- ta un gran número de otras constructoras del lengua- les que permite cálculos al estilo del cierre transi- je, algunas de las cuales éasan con SQL:1999, mien- tivo en una única instrucción SQL. Es una sinta- tras que otras son específicas de Oracle en sintaxis o -xis específtca de Oracle para una característica que funcionalidad. Por ejemplo Oracle soporta HlS opera- Oracle tenía desde' los años 80. ciones OLAP descritas en el Apartado 22.2, inclu- yendo clasificación, agregación de traslado, cubos y • Upsert e insércíones en varias tablas. La opera- abstracción. . ción upsert combina una actualización y una inser- 612
  • 4. caerrecc 25 ORACU: ción y es útil para combinar datos nuevos con anti- de Oraele para los procedimientos almacenados y tiene guos en aplicaciones de almacén de datos. Si una una sintaxis similar al utilizado en ellenguaje Ada. Java nueva fila tiene el mismo valor de clave 'que una se soporta mediante una máquina virtual Java dentro fila antigua se actualiza la fila antigua (por ejem- del motor de, la base de datos. Oracle proporciona un plo agregando los valores desde la nueva fila), en paquete para encapsular procedimientos, funciones y otro caso se inserta la nueva fila en la tabla. Las variables relacionarlas en unidades únicas. Oracle sopor- inserciones 'en varias tablas permiten actualizar ta SQLJ (SQL incorporado en Java) y IDBe y propor- varias tablas basándose en una única exploración ciona una herramienta para generar las definiciones de de los nuevos datos. clases Java correspondientes a tipos de la base de datos cláusula with, que se describe en el Ap~d04.8.2. definidos por el usuario. 25.2~1.Características relacionales orientadas 25,2.2.Disparadores a objetos Oracle Proporciona varios tipos de disparadores y Oracle tiene soporte extensivo para constructores rela- varias opciones pata el momento y forma en que se cionales orientados a objetos, incluyendo: invocan (véase el Apartado 6.4 para una introducción a los disparadores en SQL). Los disparadores se pue- • Tipos de objetos. Se soporta un único modelo de den escribir en PL/SQL-o Java o como llamadas a C. herencia para las jerarquías- de tipos. Para los disparadores que se ejecutan sobre instruc- • Tipos de colecciones . Oracle soporta varrays, que ciones LMD tales como insert, update y delete, Ora- son arrays de longitud variable, y tablas anidadas. ele soporta disparadores de filas (row) y disparadores Tablas de objetos. Se utilizan para almacenar obje- de instrucciones (statement). Los disparadoreg de filas tos mientras se proporciona una vista relacional de se pueden ejecutar una vez por cada fila que se vea los atributos de los objetos. afectada (actualización o borrado, por ejemplo) por la operación LMD. Un disparador de instrucciones se Funciones de tablas. Son funciones que produ- ejecuta solamente una vez por instrucción. En cada- cen conjuntos de filas como salida y se pueden uti- caso, el disparador se puede definir tanto corno un dis- lizaren la cláusula from de una consulta. Las fun- parador befare o after dependiendo de si se va a invo- ciones de tablas se pueden anidaren Oracle: Si una car antes o después de que se lleva a cabo la operación función de tablas se utiliza para expresar algún for- LMD. mulario de transformación de datos, el anidamiento Oraele permite la creación de disparadores instead de varias funciones permite que se expresen varias of para las vistas que no pueden estar sujetas a opera- tránsformacíones en una única instrucción. ciones LMD. Dependiendo de la definición de la 'Vista • Vistas de objetos. Proporcionan una vista tíe.tablas puede no ser Posible para Orac1e traducir una instruc- de objetos virtuales de datos almacenados en una ción LMD en una vista a modificaciones de las labias tabla relacional normal. Permite acceder o ver los base subyacentes sin ambigüedad. Por ello las opera- datos en un estilo orientado a objetos.incluso si los cienes LMD sobre vistas están sujetas a numerosas res- datos están realmente almacenados en un formato tricciones. Se puede crear un disparador lnstead of relacional tradicional. 'sobre una vista para especificar manualmente las ope- Métodos. Se pueden escribir en PLlSQL, Java o C. raciones sobre las tablas base que van a ocurrir en res- puesta ala operación LMD sobre la vista. Oracle eje- • Funciones de agregación definida-s por el usua- cura el disparador en lugar de la operación LMD y por rio. Se pueden utilizar en instrucciones SQL de la consiguiente proporciona un mecanismo de rodeo de misma forma que las funciones incorporadas tales como sum y count. las restricciones sobre las operaciones LMD sobre las vistas'. Tipos de datos XML. Se pueden utilizar para Oracle también tiene disparadores que ejecutan otros almacenar e indexar documentos XML. eventos, tales como el inicio o finalización pe la base de datos, mensajes de error del servidor, inicio o finali- Oracle tiene dos lenguajes procedimentalespríncí.. zación de sesión de un usuario e instrucciones LOD tales pales PL/SQL y Java. PL/SQL fue el lenguaje original como las instrucciones create, alter o drop. 613
  • 5. FUNDAMENTOS' DE BASES DE DATOS ... .....-., '··"_i'(-' ' , .. , .e~;~:¡;~AC&NAMl~TO&·IND&XACIÓ~ En la jerga de Oracle, una base de datos consiste en 25.3.2. Segmentos información almacenada en archivos y se accede a tra- El espacio en un espacio de tablas se divide en unida- vés de un ejemplar, que es un área de memoria com- des, denominadas segmentos, cada una de las cuales partida y un conjunto de procesos que interactúa con contiene datos para una estructura de datos especifica. los-datos en los archivos. Hay cuatro tipos de segmentos • Segmentos de datos, Cada tabla en un espacio de 25.3.1. Espacios de tablas tablas tiene su propio 'segmento de datos donde se Una base de dalas consiste en una o más unidades de almacenan los datos de la tabla a menos que ésta almacenamiento, lógicas denominadas espacios de se encuentre dividida; si esto ocurre, existe un seg- tablas. Cada espacio de tablas, a su vez, consiste en una mento de datos por división (l~ división CIl Oraclc o más estructuras físicas denominadas arctiivos de se describe en el Apartado. 25.;}.IQ). datos. Éstos pueden ser ~chivos gestionados por el sis- Segmentos de índices. Cada índice en un espacio tema operativo o dispositi vos en bruto. de tablas posee su propio segmento de índices, Normalmente una base.de datos Oracle tendrá los excepto los índices divididos, los cuales mantie- siguientes espacios de tablas: nen un segmento de índices por división. Segmentos temporales; Son segmentos utilizados • El espacio de tablas del sistema, que siempre se cuando una operación de ordenación necesita-cscri- crea. Contiene las tablas diccionario de datos y bir datos al disto o cuando éstos se insertan en una almacenamiento para los disparadores y los pro- tabla temporal. cedimientos almacenados. Segmentos de retroceso. Se:trata de segmentos que ln • Espacios de tablas creados para almacenar los datos contienen información para deshacer los cambios de usuario. Aunque los datos de usuario se pueden O almacenar en el espacio de tablas del sistema es de las transacciones de forma que se pucdadesha- II;;~ cer una copia no terminada. También juegan un frecuentemente deseable separar los datos de usua- lid. papel importante en el modelo de control de con- rio de los datos del sistema. Normalmentela deci- b' sión sobre los otros espacios de tablas que se deben currencia en Oraclc y para la recuperación de la base ",," crear está basada en el rendimiento, dísponibili- de datos, descrito en los Apartados 25.5.1 y 25.5.2. 11.;" dad" capacidad de mantenimiento y facilidad de Debajo del nivel de segmentos se asigna espacio a ~il~ administración. Por ejemplo, puede ser útil tener un nivel de granularidad, denominado extensión. Cada "',h" varios espacios de tablas para las operaciones tic extensión consiste en un conjunto de bloques contiguos copia de seguridad parcial y recuperación. de la base de daros. Un bloque de la base de datos es el Los espacios de tablas temporales. Muchas ope- nivel más bajo de granularidad en el cual Oracle ejecu- raciones de base de datos requieren la ordenación ta E/S a: disco. Un bloque de hase de la base de datos de los datos y la rutina de ordenación puede tener no tiene que tener el mismo tamaño que un bloque de que almacenar éstos temporalmente en el disco si un sistema: operati.vo. pero debería ser un múltiplo. la ordenación no se puede realizar en memoria. Se Oraele proporciona parámetros de almacenamiento asignan espacios de tablas temporales a la orde- que permiten un control detallado de cómo sé asigna y nación, para realizar las operaciones de gestión de gestiona el espacio, tales como: espacio involucradas en un volcado a disco más El tamaño de una extensión nueva que se va aasig- eficiente. nar para proporcionar espacio a las filas que se Los espacios de tablas también se pueden utilizar insertan en una tabla. tomo un medio para trasladar dalas entre las bases de • El porcentaje dé utilización de espacio COl) el cual datos. Por ejemplo; es común trasladar los datos desde un bloque de la base de datos se considera lleno y un sistema .transaccional a un almacén de datos a inter- con el cual no se introducirán más filas en ese blo- valos regulares. Grade permite trasladar todos los datos que (dejando algo de espado libre en un bloque se en un espacio de tablas de un sistema a otro sencilla- puede permitir que las filas existentes aumenten su mente copiando los -archivos y exportando e importan- tamaño cuando se realizan actualizaciones sin que- do una pequeña cantidad de metadatos del diccionario damos sin espacio en el bloque). de datos. Estas operaciones pueden ser mucho más rápi- das que descargar los datos de una base de datos y des- 25.3.3.Tablas pués usar un descargador para insertarlas en la otra. Un requisito para esta característica es que ambos sistemas Una tabla estándar en Orac1e está organizada en mon- utilicen el mismo sistema operativo. tículo; esto es, la ubicación de almacenamiento de una 614
  • 6. CAPiTULO 25 ORACLE fila en una tabla no esté basada cn los valores conteni- un valor de clave principal con una unica B'S a disco siem- dos en la fila y 'se lija cuando fa lila se inserta. Sin embar- pre que no haya desbordamiento para ese bloque de datos. go, si la tabla se divide. el contexto de la fila afecta a la partición en la cual ésta almacenada. Hay varias carac- terísticas y variaciones. Oracle soporta las tablas 'ani- 25.3.4. Tablas organizadas con índices dadas: esto es, una tabla puede tener una columna cuyo En una tabla organizada con índices los registros se alma- tipo de datos sea otra tabla. La tabla anidada no se alma- cenan en un índice de árbol B en lugar de en un mon- cena en línea en la tabla padre sino que se almacena en tículo. Una .tabla organizada con 'índices requiere que se una tabla separada. identifique una clave única para su uso como la clave del Oracle soporta tablas temporales donde la duración índice. Aunque una entrada en un índice normal contie- de los datos es la dc la transacción en la cual se inser- ne el valor de la clave y el identificador de fila de la fila tan los datos o la sesión de usuario. Los datos son pri- indexada, una-tabla organizada con índices reemplaza el vados a la sesión y se eliminan automáticamente al fina! identificador de tila con los valores .de la columna para de su duración. el resto de columnas en la tabla, Comparado con el alma- Una agrupación es otra forma de organización de los cenamiento de los datos en una tabla en montículo nor- datos de la tabla (véase el Apartado l l :7). El concepto. mal y la creación de, un índice según las columnas clave, en este contexto, no se debería confundir con otros sig- una tabla 'Organizada con Indices puede mejorar el ren- nificados de la palabra agrupación, tales como los rela- dimiento y el espacio. Consideremos la lectura de todos cionados con la arquitectura del ordenador. En una agru- los valores de columna de una fila, dado su valor de cla- pacién las filas de tablas diferentes se almacenan juntas ve principal. Para una tabla en montículo se.requerirla un en el mismo bloque según algunas columnas comunes. examen del Índice seguido por un acceso a tabla median- Por ejemplo, una tabla de departamento y una tabla de te identificador de fila. Para una tabla organizada con empleados se podrían agrupar de fonna que cada fila en índices solamente es necesario el examen del Índice. la tabla departamento se almacene junto con todas las Los índices secundarios sobre columnas que no sean filas de los empleados que trabajan en ese depanamen- clave de una tabla organizada con índices son distintos 10.Los valores de la clave principal o clave externa se. de los índices en una tabla en montículo normal. En una utilizan para determinar la ubicación de almacenamíen- tabla en montfculo cada fila posee un identificador de io. Esta organización mejora el rendimiento cuando las fila fijó que no cambia. Sin embargo, un árbol B se reor- dos tablas están combinadas pero sin un aumento de ganiza al crecer o disminuir cuando se insertan o borran espacio de un esquema desnormalizado puesto que los las entradas, y no hay garantía de que una fila penna- valores en la tabla de departarnento no están repetidos nczca en una ubicación dentro de una tabla organizada para cada empleado. Como compromiso, una consulta con índices. Por ello, un Índice secundario en una tabla que involucra solamente' la tabla departamento puede organizada con índices no contiene identificadores de tener que involucrar un número sustancialmente mas fila normales, sino identificadores téglcos de fila. Un grande de.bloques qUe si la' tabla se almacenara sola. identificador lógico de lila se compone de dos partes; un La organización en agrupación implica que una fila identificador de tila física correspondiente a donde la fila pertenece a un lugar especíñco: por 'ejemplo, una nue- estaba cuando se creó el índice o la última reconsuuc- va fila de empleado 'se debe insertar con las otras filas ción y' un valor para la clave única. El identificador de para el mismo departamento, Por consiguiente. es óbli- fila física se conoce como una «suposición», puesto que gatorio un índice en la columna de agrupación. Una sería incorrecto si la fila se ha trasladado. En este caso, organización alternativa es una agrupación asociativa. la otra parte' del identificador lógico de fila. el valor de Aquí; Oracle calcula la localización de una fila apli- la clave para la fila, se utiliza para .accedér a la misma; cando una función asociativa al valor para la columna sin embargo. este acceso es más lento que si la suposi- de agrupación. La función asociativa asigna la fila a un ción hubiera sido correcta, puesto que involucra un reco- bloque específico en la agrupación asociativa. Puesto rrido del árbol B para la tabla-organizada con índices que no es necesario el recorrido del índice para acceder desde la raíz hasta los nodos hoja. incurriendo poten- auna fila según su valor de columna de agrupación, esta cialrnentc en varias operaciones E/S de disco. Sin embar- organización puede ahorrar cantidades significativas de go, si una tabla es altamente volátil y es probable que un E/S a disco. Sin embargo, el número de cajones aso- buen porcentaje de suposiciones sean incorrectas, pue- ciativos y otros parámetros de almacenamiento se deben de ser mejor crear un índice secundario con solamente establecer cuidadosamente para evitar problemas de ren- valores clave. puesto LJueel uso de una suposición inco- dimiento debido a demasiadas colisiones o malgasto de rrecta puede producir una E/S a disco malgastada. espacio debido a cajones asociativos vacíos. La organización según agrupación asociativa y según agrupación normal se puede aplicar a una única tabla. El 25.3.5'. índices almacenamiento de una tabla como una agrupación ase- Oracle soporta varios tipos distintos de índices. El tipo ciativacon la columna de.la clave principal corno la cla- más comúnmente utilizado es un índice de árbol B, ve de la agrupación puede permitir un acceso basado en creado en una ° varias columnas. (Nota: En la tcrmi- 615
  • 7. FUNDAMENTOS DE BASES DE DATOS nología de Oracle, como también en varios' otros siste- mapas de bits alineados (Byre-Aligned Bitmap Com- mas de bases de datos, un índice de árbol B es lo que se pression, BBC). Esencialmente, una sección .del mapa denomina un índice dé árbol 8+ en el Capítulo 12.) Las de bits donde la distancia entre dos unos consecutivos es entradas de los índices tienen el siguiente formato: para suficientemente pequeña se almacena como mapas de un índice en las columnas cot., coí, y coi); cada fila en bits. Si la distancia entre dos unos es suficientemente la tabla en donde al menos una columna tenga un valor grande (esto es, hay un número suficiente de ceros entre no nulo resultaría en la entrada de índice ellos) se almacena el número de ceros. Los índices de mapas de bits permiten varios índi- <col] > < col, > < col, > < id-fila > ces en la misma tabla para combinarse en la misma ruta de acceso si hay varias condiciones sobre las columnas donde < cot, > denota el valor para la columna i e < id- 'indexadas en la cláusula where de una consulta. Por fua > es la identificador de fila para la fila. Oracle pue- ejemplo, para la condición de opcionalmente comprimir el prefijo de la entrada para ahorrar espacio. Por ejemplo, si hay muchas combina- (caí, == 1 or col] == 2J and coí; > 5 and col, < > 10 ciones repetidas de valores < col, > < col, >, la repre- Oracle podría calcular las filas que coinciden con la con- sentación de cada prefijo < col, > < col! > distinto se dición ejecutando operaciones booleanas sobre los puede compartir entre las entradas que tienen esa com- mapa's de bits a partir los mapas de bits de índices sobre binación de valores, en lugar de almacenarlo explícita- las tres columnas. En este case, estas operaciones se mente para cada entrada. La compresión de prefijos pue- de llevar a ahorros de espacio sustanciales. realizarían para cada índice: • Para el índice en col., se realizaría la disyunción 25.3.6. Índices de mapas de bits de los valores de clave 1 y 2. Los índices de nUipas de bits (descritos en el Apartado Para el índice en col2, todos los rnapas de bits para 12.9.4) utilizan una representación de mapa de bits para los valores de la clave> 5 se mezclarían en una entradas de índice que pueden llevar a un ahorro sus- operación que corresponde a una disyunción. tancial de espacio (y, por consiguiente, ahorro de E/S a • Para el 'índice en cot ; se obtendrían los mapas de disco), cuando la columna indexada tiene un número bits para los valores 10 y nuU. Entonces, se apli- moderado de valores distintos. Los índices de mapas de caría, una conjunción sobre los resultados de los bits en Oracle utilizan la misma clase de estructura de dos primeros índices, seguido por dos operaciones árbol B para almacenar las entradas que un índice nor- menos booleanas de los mapas de bits para los mal. Sin embargo, donde un índice normal en una colum- valores 10 y null para col'» na tuviera entradasde la fonna < col] > < id~fi{(l>, una entrada de índice de mapa de bits tendría la forma Todas las operaciones se realizan directamente sobre la representación comprimida de los mapas de bits (no es < coi, > < id-füainiciat > < id-filafi1l{l1 » necesaria la descompresión} y el mapa de bits resultan- -c mapabirscomprímido >. te (comprimido) representa las filas que cumplen todas las condiciones lógicas. El mapa de bits conceptualmente representa el espacio La capacidad de utilizar las operaciones booleanas de todas las filas posibles en la tabla entre los, identifi- para combinar varios índices no está limitada a los índi- cadores de la fila inicial y final. El número de tales filas ces de mapas de bits. Oracle puede convertir identifi- posibles en un bloque depende de' cuántas de ellas se cadores de filas a la representación de mapa de bits com- pueden alojar en un bloque, lo cual va en [unción del primidos, por lo.que se puede utilizar un índice de árbol número de columnas en la tabla y sus tipos de datos. B normal en cualquier lugar de un 'árbol binario u ope- Cada bit en el mapa de bits representa una fila posible ración de mapa de bits simplemente poniendo un ope- en un bloque. Si el valor de la columna de esa fila es el rador id-fila-a-mapa-de-bits en la parte superior del 'acce- de la entrada de índice, el bit se establece a 1. Sí la fila so a índices del plan de ejecución. tiene algún otro valor o la fila no existe realmente en la Como regla nemotécnica, los índices de mapas de tabla. el bit se establece a O (es posible que la fila no bits tienden a ser más eficientes en el espacio que los exista realmente porque up bloque de la tabla pueda índices de árbol B si el número de valores distintos de tener un número más pequeño de filas que el número la clave es menor que la mitad del número de filas en que se calcule como el máximo posible). Si la diferen- una tabla. Por ejemplo, en una tabla con un millón de cia es grande.el resultado pueden ser .grandes cadenas filas, un índice en una columna con menos de 500.000 de ceros consecutivos en el mapa de bits, pero el algo- valores distintos probablemente sería menor si se crea- ritmo de compresión.trata dichas cadenas de ceros, por ra como un índice de mapa de bits. Para las columnas lo que el efecto negativo se limita. con un número muy pequeño de valores distintos (por El algoritmo de compresión es una-variación de una ejemplo, las columnas que sé refieren a propiedades técnica de compresión denominada compresión de tales como país, estado; género, estado marital y varios 616
  • 8. CAPITULO 2~ ORACLF. estados indi<:;adore,s) un índice mapa de bits podría se construye el índice y las tablas dimensionales se requerir solamente una pequeña fracción del espacio deben referir a claves únicas en las tablas dimensiona- normal de Un índice de árbol B nonnal. Cualquier ven- les; esto es, una fila.indexada en la tabla de hechos debe laja en el espacio también puede dar lugar a mejoras en corresponder a una única fila en cada una de las tablas el rendimiento en la forma de menos operaciones E/S a de dimensión. disco cuando se explora el índice. Oracle puede combinar un índice dé reunión de mapa de bits en una tabla de hechos con otros 'índices en la 25.3.7. Índices basados en funciones misma tabl'a (tanto si hay índices de reunión o no) mediante el uso de operadores para las operaciones boo- Además de crear índices sobre una o varias columnas leanas del mapa-de bits. Por ejemplo, consideremos un de una tabla, Oracle permite crear Indicés sobre expre- esquema con una tabla de hechos para las ventas y tablas siones que involucran unao más columnas, tales como dimensionales para los clientes, productos y fechas. col, + cot, * 5. Por ejemplo, la creación de un 'índice Supongamos que una consulta: solicita infonnaciónsobre sobre la expresión upperínombres, donde upper es una las ventas a los clientes en un cierto código postal que función que devuelve la Versión eh mayúsculas de una compraron productos de una cierta categoría de pro- cadena y nombre es una columna. es posible realizar ducto durante un cierto periodo de tiempo. Si existe un búsquedas independientes de la caja (mayúsculas o índice de reunión de mapa de bits sobre varias colum- minúsculas) sobre la columna nombre, Con el fin de nas donde las, columnas clave son las columnas de la buscar todas las filas con el nombre «van Gogh» de una tabla de dimensión restringidas (código postal, catego- forma eficiente se puede utilizar la condición ría de producto y fecha), Oracle, puede utilizar el iñdi- ce de reunión para buscar las filas en la tabla de hechos upper(nomhre)= 'VAN GOGH' que coinciden con las condiciones de restricción. Sin embargo, si existen índices individuales sobre una úni- en la cláusula where de la Consulta. Oracle entonces ca columna para las columnas clave (o un subconjunto casa la condición con la definición de índice y conclu- de ellas), Oracle puede recuperar los mapas de bits de ye que se puede utilizar el índice para recuperar todas las filas de la tabla de hechos que coinciden con cada las filas que coincidan con «van Gogh» sin considerar condición individual y utiliza la operación and boo- las mayúsculas y minúsculas del nombre cuando se leana para generar un mapa de bits de la tabla de hechos almacenó en la base de datos. Se puede crear un índice para aquellas filas que satisfacen todas las condiciones. basado en función como un mapa de bits o como un índice de árbol B. Si la consulta contiene condióones sobre algunas colum- nas de la tabla de, hechos, los Indices.de aquellas colum- nas-se podrian incluir en la misma ruta de acceso, inclu- 25.3.8. índices de reuníón so si fueran índices normales de árbol B o índices de dominio (Jos índices de dominio se describen poste- Un índice de reunión es un índice donde las columnas' riormente en el Apartado 25.3.9). clave no están en la,tabla que se referencia mediante los, identificadores de filas en el índice. Oraele soporta los índices de reunión mapa de bits principalmente para su 25.3.9. Índices de dominio uso con esquemas en estrella (véase el Apartado 22.4.2). Oracle permite que las tablas sean indexadas por estruc- Por ejemplo, si hay una columna para 'los nombres de turas de índices que no sean propias de Oracle. Esta los productos en una tabla dé la dimensión productos característica de extensibilidad del servidor Oraclc per- se podría utilizar un índice de reunión de mapas de bits mite a los fabricantes de software desarrollar los lla- sobre la tabla de hechos con esta columna clave para mados cartuchos-con funcionalidad para domíniós de recuperar las filas de la tabla de hechos que correspon- aplicación específicos, tales como texto, datos espacia- den a un producto con un nombre específico, aunque el les, e imágenes, con la funcionalidad de indexado mas nombre no esté almacenado en la tabla. de hechos. La allá de la proporcionada por los tipos de índice Oracle forma en la que las filas en las tablas de hechos y de la estándar. Para implementar la' lógica para crear, mante- dimensión correspondientes está basada en una condi- ner y buscar en el índice, el diseñador de índices debe ción de reunión se especifica cuando se crea el índice y asegurar que se adhiere a un protocolo específico en Su se convierte en parte de los [os rncradatos de índices. interacción con el servidor Oracle. Cuando se procesa una consulta el optimizador busca- Un índice de dominio se debe registrar en el diccio- rá la misma condición de reunión en la cláusula where nario de datos junto con los operadores que soporta. El de la consulta con el fin de determinar si es aplicable el optimizador de Oracle considera los índices de domi- índice de reunión. nio como una de las posibles rutas de acceso para una Oraele permite índices de reunión de mapa de bits tabla. Oracle permite a las funciones de coste registrar- para tener más de una columna clave y estas columnas se con [os operadores de forma que el optimizador pue- pueden estar en tablas diferentes. En todos los casos las da comparar el coste del usa del índice de dominio con condiciones de reunión entre la tabla de hechos donde los de otras rutas de acceso.
  • 9. FUNDAMENTOS DE BAS:ES DE DATOS Por ejemplo, un índice de dominio para búsquedas 25.3.10.1. División por rangos de texto avanzadas puede soportar un operador coniains En la división por rangos los, criterios de división son (contiene). Una vez que se ha registrado este operador, rangos de valores. Este tipo de división está especial- el índice de dominio se considerará como una ruta de mente indicado para columnas de fechas, en cuyo caso acceso para una consulta como todas las filas en el mismo rango de fechas, digamos un día o un mes; pertenecen a la misma partición. En un select * almacén de daros donde los datos se cargan desdesis- from empleados temas transaccionales a intervalos regulares, la división where containstresumen. 'LINUX') por rangos se puede utilizar para implementar eficien- donde resumen es una columna de texto en la tabla temente una ventana de datos históricos. empleados. El índice de dominio se puede almacenaren Cada carga de datos obtiene su nueva propia parti- un archivo de datos externo o dentro de una tabla Ora- ción, haciendo que el proceso' de carga sea más rápido ele organizada con índices. Un índice de dominio se pue- y eficiente. El sistema realmente carga los datos en una de combinar con otros índices (mapa de bits o de árbol tabla separada con la misma definición de columna que B) en la misma ruta de acceso con la conversión entre en una tabla dividida. Se puede entonces verificar la la representación de mapa de bits y el identificador de consistencia de los datos, arreglarlos e Indexarlos. Des- fila y usando operaciones booleanas del mapa de bits. pués de eso el sistema puede hace de la tabla separada una nueva partición de la tabla partida mediante un sen- cillo, cambio de los metadatos en el diccionario de datos 25.3,.10. División en particiones (una operación casi instantánea). Oracle soporta varias clases de división horizontal de Mientras no cambien los metadatos, el proceso de tablas e índices y esta característica tiene Una función carga no afecta a los datos existentes en la tabla dividi- principal en la capacidad de Oracle de soportar bases da en ningún caso. No hay necesidad dc realizar ningún de datos muy grandes; La capacidad de dividir una tabla mantenimiento de los índices existentes C9tI1() parte de o índice tiene ventajas en muchas 'áreas. la carga. Los datos antiguos se pueden eliminar de una tabla sencillamente eliminando su partición; esta ope- La copia de seguridad y recuperación es más sen- ración no afecta al resto de particiones. Además, las con- cilla y rápida, puesto que se puede realizar sobre sultas en un entorno de almacén de datos frecuentemente; "lIlI particiones individuales en lugar de sobre toda la contienen condiciones que los restringen a un cierto ~!'~ ••'1, tabla. Las operaciones de carga en un entorno de alma- periodo de tiempo, tal como una quincena o mes. Si Se. uti liza la división de datos por rangos el optimizador de '. "jo; cén de datos son menos intrusivas: se pueden agre- consulta puede restringir el acceso a los datos de aque- gar datos a una partición y entonces agregar la llas particiones que son relevantes a la consulta y evi- partición a una tabla, lo que es una operación ins- tar una exploración de toda Ta tabla. tantánea. De igual forrna, eliminar una partición con datos obsoletos desde una tabla es muy. senci- 25.3.10.2. División asociativa llo en un almacén de dalas que mantenga una ven- En la división asociativa, una función asociativa hace tana de datos históricos. corresponder filas con divisiones según los valores en ,:i • El.rendirniento de la consulta se mejora sustan- las columnas de, la división. Este tipo dé división resul- cialmente, puesto que el optimizador puede reco- ta útil principalmente cuando es importante distribuir nocer que solamente se tiene qu~ acceder a un sub- las tilas equitativamente entre las particiones o cuando conjunto de las particiones de una tabla con el fin las reuniones por particiones son importantes para el de resolver I¡;¡. consulta (poda de particiones). Tam- rendimiento de la-consulta. bién el optimizador puede reconocer que en una reunión no es necesario intentar hacer correspon- 25.3.10.3. División compuesta der todas las tilas en una tabla con todas las filas Enla división compuesta la tabla se divide por rangos, en la otra, pero que las reuniones se necesitan rea- pero cada panición tiene subpaniciones mediante el lizar solamente entre pares coincidentes de divi- uso. de división asociativa. Este tipo de división com- siones (reunión por particiones). bina las ventajas de la división por rangos y la división asociativa. Cada fila en una tabla dividida está asociada con una partición específica. ESta asociación está basada en la 25.3.10.4. "División por listas columna o columnas de la división que son parle de la definición de una, tabla dividida. Hay varias formas para En la división por listas los valores asociados con una, hacer corresponder valores de columna a divisiones, partición panicular están en una lista; Este tipo de divi- dando lugar a varios tipos de divisiones, cada una con sión es útil si los datos en la columna de división tienen distintas características: divisiones por rangos, asocia- un conjunto relativamente pequeño de valores discre- tivas, compuestas y por listas. tos. Por ejemplo, una tabla con una columna provincia 6"
  • 10. CAPiTULO 25 Ol'AC-:IE se puede partir implícitamente por región geográfica si metadatos.qhi¡ension para especificar cómo se abstraen c-ada lista de particiones tiene las provincias 'que perte- los días a meses, los meses a Cuatrimestres, los cuatri- necen-a Ia misma región. mestres a 'años y así sucesivamente. De igual forma se pueden especificar las propiedades jerárquicas relacio- 25.3.11. Vistas materializadas nadas con la geografía, por ejemplo, cómo los distritos de ventas. se abstraen a regiones. La lógica de la rees- La caractenstíca de la vista materializada (véase el Apar- critura de la consulta examina estas relaciones puesto tado' 3.5.1) permite almacenar el resultado de una Con- que permite utilizar una vista materializada para clases sulta SQL y utilizarlo en un procesamiento posterior. más amplias de consultas. Además, Oracle mantiene el resultado materializado, El objeto contenedor para una vista materializada es actualizándolo cuando se actualizan las tablas a las que una tabla, lo que significa que una vista materializada se hicieron referencia en la consulta. Las vistas mate- se puede indexar, dividir o estar sujeta.a otros contro- rializadas se utilizan en el almacén de datos para acc- les para mejorar el rendimiento de la consulta. lerar el procesamiento de la consulta, pero esta tecno- Cuando hay cambios en los datos de las tablas refe- logía también se utiliza pata la réplica en entornos renciadas en la consulta que define una vista materiali- distribuidos y móviles. zada se debe actualizar la vista materializada para reffc- En el almacén de datos, un uso común de vistas mate- jar dichos cambios. Oracle soporta tanto la actualización rializadas es, resumir los datos. Por ejemplo, un tipo completa de una vista materializada como una actuali- común de consulta solicita «la suma dc las ventas de cada zación rápida incremental. En una actualización com- cuatrimestre durante lbs últimos dos años». El precalcu- pleta Oracle vuelve a calcular la vista materializada des- lo de los resultados, o algún resultado parcial. de dicha de Cero, lo cual puede ser la mejor opción si las tablas consulta puede acelerar drásticamente el procesamiento subyacentes han tenido cambios significativos, pcr ejem- de la consulta comparado a calcularlo desde cero con la plo, debidos a una carga masiva. En una-actualización agregación de todos los registros de ventas por detalle. incremental Oracle actualiza la vista utilizando regis- Oracle soporta' reescrituras automáticas de las con- tros que fueron cambiados en las tablas subyacentes: la sultas que' aprovechan cualquier vista materializada útil actualización de la vista es inmediata, esto es, se eje- cuandose.resuelve una consulta. La reescritura consis- cuta como parte de la transacción que cambió las tablas te en cambiar la consulta para utilizar la vista materia- subyacentes. La actualización incremental puede ser lizada en lugar de las tablas originales en la consulta. mejor si el número de filas que se han cambiado es Además, la reescritura puede agregar reuniones adicio- pequeño. Hay algunas restricciones sobre las clases de nales o procesamiento de 'agregación si SOn necesarias consultas según las que una vista materializada se pue- para obtener el resultado correcto. Por ejemplo, si una de actualizar de forma incremental (y otras que indican consulta necesita las ventas por cuatrimestre, la rees- si una vista materializada siquiera se puede crear). critura puede aprovechar una vista que materializa las Una vista materializada es similar a un índice en el ventas por mes, añadiendo agregación adicional para sentido que, aunque puede mejorar el rendimiento de la abstraer los meses a cuatrimestres. Oracle tiene un tipo consulta, usa espacio, y su creación y inantenimiento con- de objeto de metadaros denominado dimension que per- sume recursos. Para ayudar a resolver este compromiso mite las relaciones jerárquicas en las tablas a definir. Oracle proporciona un paquete que puede aconsejar al Por ejemplo, una tabla de la dimensión temporal en un usuario de las vistas materializadas más efectivas en el esquema en estrella Oraele puededefinir un objeto de coste, dada una carga de trabajo particular como-entrada. Oracle soporta una gran variedad de técnicas de proce- mación sobre los bloques que forman la tabla del samiento en su motor de procesamiento de consultas. mapa de extensión y explorando esos bloques. Algunas de las más importantes se describen aquí bre- vemente. • Exploración de índices. El procesador crea una clave de comienzo y/o finalización a partir de las condiciones en la consulta y la utiliza para explo- 25.4.1. Métodos de ejecución rar una parte relevante del índice. Si hay colum- Los datos se pueden acceder mediante una serie de nas que se tienen que recuperar, que no son parte métodos' de acceso: del índice, la exploración del índice sería seguida por un acceso a la tabla mediante el índice del iden- tificador de fila. Si no hay disponible ninguna cla- Exploración de tabla completa. El procesador de ve de inicio o parada la exploración sería una la consulta explora toda la tabla y obtiene infor- exploración de índice completa. 619
  • 11. FUNDAMENTOS DE BASES DE OATOS Exploración rápida completa de Índices. El pro- 25.4.2. Optimización cesador explora las extensiones.de la misma for- En el Capítulo 14 se ha discutido el tema general de la ma que la extensión de tabla en una exploración optimización de la consulta. Aquí discutimos la opti- de tabla completa. Si el Índice contiene todas las mización en el contexto de Orácle. columnas que se necesitan en el Índice y no hay buenas claves de inicio y parada que puedan redu- 25.4~2.1.Transformaciones de consultas cir significativamente esa porción del índice que se exploraría en una exploración de índices nor- Oracle realiza la optimización de consultas en varios mal. este método puede ser la forma más rápida de pasos. La mayoría de las técnicas relacionadas con las acceder a los datos. Esto es porque la exploración rransformaciones.de consultasy reescritura tienen lugar rápida completa aprovecha de forma completa la antes de la selección de la ruta de acceso, pero Oracle EIS de disco de varios bloques. Sin embargo. a también soporta varios tipos de transformaciones de diferencia de' una exploración completa normal, consultas basadas en el costo que generan un plan com- que recorre los bloques hoja del índice en orden, pleto y devuelven una estimación del costo para-la ver- una exploración rápida completa no garantiza que sión estándar de la consulta y otra que,ha sufrido trans- la salida preserve el orden del indice. formaciones avanzadas. No todas las técnicas de transformación de consultas tienen garantizado su bene- • Reunión de Índices. Si una consulta necesita ficio para cada consulta, pero mediante la generación solamente un pequeño subconjunto de columnas de una estimación del coste para el mejor plan sin y con de una tabla ancha. pero ningún 'índice contiene la transformación aplicada. Oracle puede adoptar una todas estas columnas. el procesador puede utilizar decisión inteligente. una reunión de índices para generar la información Algunos de los tipos principales de transformaciones relevante sin acceder a la tabla, reuniendo varios y reescrituras soportados por Oracle son los siguientes: índices que contienen en conjunto las columnas necesarias. Ejecuta las reuniones como reunión por • Mezcla de vistas. La referencia deja vista en una asociación sobre los identificadores de filas desde consulta es reemplazada por la definición de la vis- los distintos índices. ta. Esta transformación no es aplicable a todas las Acceso a agrupaciones y agrupaciones asocia- vistas. das. El procesador accede a los datos utilizando la Mezcla compleja de vistas. Oracle ofrece esta clave de 'a&rupaciói1. característica para ciertas clases de' vistas que no estén sujetas a la mezcla normal de vistas puesto Oracle.tiene diversas formas de combinar informa- que tienen un group by osejeet distinct en ladefi- ción desde varios índices en una única ruta de acceso. nición de la vista. Si dicha vista se combina con Esta posibilidad permite varias condiciones en la cláu- otras tablas, Oracle puede conmutar las reuniones sula where que se pueden utilizar conjuntamente para y la operación de ordenación utilizada por group calcular el conjunto de resultados de la forma más efi- by o distinct. cientemente posible. La funcionalidad incluye la capa- • Subconsultas planas. Oracle tiene una serie de cidad de ejecutar las operaciones booleanas conjunción. transformaciones que convierten varias. clases de disyunción y diferencia sobre mapas de bits que repre- subconsultas en reuniones, semirreunioúes o anti- sentan los identificadores de filas. Hay también opera- rreuniones. dores que hacen corresponder una lista de identificado- res de filas con mapas de bits y viceversa, lo que permite Reescritura' de vistas materializadas; Oracle tie- que los índices de árbol B normales y los índices de ne la capacidad de reescribir una consulta auto- mapas de bits utilicen la misma ruta de acceso. Además, máticamente para aprovechar las vistas materia- para muchas consultas que involucran count (*) en lizadas. 'Si alguna parte de la consulta se puede selecciones sobre una tabla el resultado se puede cal- casar con una vista materializada existente. Ora- cular simplemente contando los bits activados en el ele puede remplazar esta parte de la consulta con mapa de bits generado mediante la aplicación de las una referencia a la tabla en la cual la vista está condiciones de la cláusula where sin acceder a la tabla. materializada. Si es necesario, Grade agrega con- Oracle soporta varios tipos de-reuniones en el motor diciones de reunión u operaciones group by para de ejecución: reuniones internas, externas, semireunio- preservar la semántica de la consulta. Si son apli- nes y antirreuníones (una antirreunión en Oracle devuel- cables varias vistas materializadas. Oracle reco- ve las filas de la parte izquierda de la entrada que no ge la que reduce la mayor cantidad de datos que coinciden con ninguna fila en la parte derecha de la entra- se tienen que procesar. Además. Oracle somete la da; esta operación-sedenominaentisemirreunión en otros consulta reescrita y la versión original al proceso libros). Evalúa cada tipo de reunión mediante uno de los completo de optimización produciendo un plan de tres métodos: reunión por asociación, reunión por mez- ejecución y un coste asociado estimado para cada cla-ordenación o reunión en bucle. anidado. una. Oracle entonces decide si ejecutar la versión 620
  • 12. CAPITlJLO 25 ORACLE, original o la reescrita de la consulta según la esti- litar la recogida de las estadísticas del optimizador, Ora- mación del coste. de puede supervisar la actividad de la modificación Transformación en estrella. OracIe soporta una sobre tablas y sigue la pista de aquellas tablas que han técnica para evaluar las consultas en esquemas en sido objeto de suficientes cambios como para que pue- estrella, conocidas como transformación en estre- da ser apropiado un nuevo cálculo de las estadísticas. lla. Cuando una consulta contiene una reunión de Oracle también sigue las columnas que se utilizan en una' tabla de hechos con tablas dimensionales y las cláusulas where de las consultas, 10 que hace que selecciones sobre los atributos de las tablas dimen- sean candidatas potenciales para la creación del histo- sionales.Ia consulta se transfonnaborrando la con- grama. Con una única orden un usuario puede decir a dición de la reunión entre la tabla de hechos y las Oracle ,que actualice las estadísticas para aquellas tablas tablas dimensionales y remplazando la condición que han sido suficientemente cambiadas. Oracle utiliza de selección en cada tabla dimensional por una un muestreo para acelerar el proceso de recoger la nue- subconsulta del formulario: va estadística y elige de forma automática el menor por- centaje de la muestra. que sea adecuado. También deter- tabla_de _ hechos.th, in mina si la distribución de las columnas marcadas merece (select cp Irom tabla _dimensional¡ la creación de histogramas: si la distribución está cerca where <condiciones sobre de ser uniforme Oracle utiliza una representación más tabla _dimensional, » sencilla de la estadística de columnas. Oracle utiliza el coste de CPU y E/S en disco en el Se genera dicha subconsulta para cada 'tabla dimen- modelo de coste en el optimizador. Pata equilibrar los sional que tiene algún predicado restrictivo. Si la dos componentes almacena las,medidas sobre la velo- dimensión tiene un esquema en copo de nieve (véa- cidad de CPU y rendimiento de E/S de disco como par- se el Apartado 22.4), la subconsulta contendrá una te de la estadística del optimizador; El paquete de Ora- reunión de las rablas aplicables que forman la ele para recoger la estadística del optimizador calcula dimensión. estas medidas. Oracle utiliza los valares que son devueltos des- Para consultas que involucran un número no trivial de ceda.subconsulta para probar un índice sobre la de reuniones. el espacio de búsqueda es un tema para columna de la tabla de hechos correspondiente, el optimizador de consultas. Orac1e soluciona este tema obteniendo un mapa de bits como resultado. Los de, varias fonnas. El optimizador genera un orden ini- mapas de bits generados desde distintas subcon- cial de la reunión y entonces decide sobre los mejores sultasse combinan con una operación and de métodos de la reunión y rutas de acceso.para ese orden mapas de bits. El mapa de bits resultante se pue- de la reunión. Entonces cambia el orden de las tablas y de utilizar pata acceder a las 'tilas de las tablas de determina los mejores métodos de reunión y rutasde hechos coincidentes. Por ello, solamente se acce- acceso para el nuevo orden y así sucesivamente, guar- derá a las filas en la tabla de hechos que coinciden dando el mejor plan que 'se ha encontrado hasta enton- simultáneamente en las condiciones de las dimen- ces. Oracle mantiene pequeña la optimizacióIí si el siones restringidas. número de (os distintos órdenes de la reunión que se Tanto la decisión de si el uso de una subcon- han considerado es tan grande que el tiempo gastado en sulta para una dimensión particular es ventajoso y el optimizador puede ser grande comparado con el que la decisión de-si la consulta reeserita es mejor que se gastaría para ejecutar el mejor plan encontrado has- la original están basadas en la estimación de cos- ta entonces. Puesto que este corte depende del coste esti- te del optimizador. mado para el mejor plan encontrado hasta entonces, es importante encontrar un buen plan pronto. de forma que 25.4.2.2.Selección de la ruta de acceso el optimizador se pueda parar después de un pequeño Oracle tiene un optimizador basado en el casto que número de órdenes de la reunión. resultando un mejor determina el orden de la reunión, métodos de reunión y tiempo de respuesta. Oracle utiliza varias heurísticas rutasde acceso. Cada operación que el optimizador con- para el orden inicial para. aumentar la probabilidad de sidera tiene una función de coste asociada y el optimi- que el primer orden de reunión se considere bueno. zador intenta generar la combinación de operaciones Por cada orden de reunión que se considera, el opti- que tiene' el coste global menor. mizador puede hacer pasadas adicionales por las tablas Para estimar-el coste de una operación, el optimiza- para decidir los métodos de reunión y las rutas.de acce- dor considera las estadísticas que.se han calculado para so. Tales pasadas adicionales capturarían efectos glo- losobjetos del esquema tales como tablas e índices. La bales colaterales específicos sobre la selección de la ruta estadística contiene información sobre el tamaño del de acceso. Por ejemplo. una combinación específica de 'objeto, la cardinalidad. la distribución de datos de las métodos de reunión y rutas de' acceso pueden eliminar columnas de la tabla y cosas similares. Para la estadís- la necesidad de ejecutar una ordenaciÓn orden by. Pues- tica de columnas, OracIe soporta histogramas equili- to que tal efecto lateral global puede.no ser obvio cuan- bradosen altura e histogramas de frecuencia. Para faci- do se consideran Localmente los costes de los distintos 621
  • 13. FUNDA.MENTOS DE BASES DE DATOS métodos de reunión y de rutas de acceso, se utiliza una sos y envía: una copia de la: tabla pequeña a cada pro- pasada separada que capture un erecto colateral espe- -ccso, la cual entonces reúne su trozo.con la-tabla menor. cffico para encontrar un posibleplan de ejecución con Si ambas tablas son grandes, sería próhibitivamente cos- un mejor coste conjunto. toso enviar una de ellas a rodoslos procesos. En ese caso Oracle logra el paralelismo mediante la: división 25.4.2.3. Poda de particiones de los datos entre los procesos mediante la asociación de los valores de-las columnas dc la reunión (el méto- Para tablas divididas el optimizador intenta ajustar las do de reunión por asociación dividida del Apartado condiciones en la cláusula where de una consulta con 20.5.2.1). Cada tabla se explora en paralelo mediante- el criterio de división de la tabla con el fin de evitar acce- un conjunto de procesos y cada fila en la salida se pasa der a:particiones que no son necesarias para el resulta- a un proceso de, un conjunto de procesos 'que van a eje- do. Por ejemplo, si una tabla se divide por el rango de cutar la reunión. El proceso que obtiene la fila sedeter- fechas y la consulta se restringe a datos entre dos fechas mina mediante una función de asociación sobre los valo- específicas, el optimizador determina las particiones-que res de .la columna de reunión. Por ello, cada proceso de contienen los daros entre las fechas específicas y ase- reunión obtiene solamente las filas que podrían poten- gura que solamente se accede a dichas particiones. Este cialmente coincidir y filas correspondientes no podrían escenario es muy común y la aceleración puede ser dra- ir a parar .a diferentes procesos. mática si solamente es necesario un pequeño subcon- Orade organiza eh paralelo las operaciones de orde- junto de particiones. nacióri mediante Jos rangos de valores de la columna en la cual se ejecuta la ordenación (esto es, usando la orde- 25.4.3. Ejecución en paralelo nación de división por rangos del Apartado 20.5.). Oraele permite ejecutar en paralelo una única instruc- A cada proceso que participa en la ordenación se le en- ción SQL mediante la división del trabajo entre varios vían filas con los valores en este rango y ordena las filas procesos en una computadora multiprocesadora. Esta en su rango. Para maximizar las ventajas del paralelis- característica es especialmente útil para operaciones mo las filas se tienen que dividir lo más equitativamente intensivas en cómputo que de.otra forma se ejecutarían posible entre los procesos en paralelo y entonces surge en un tiempo inaceptablemente largo. Ejemplos repre- el problema de determinar las fronteras de rango que senrativos son las consultas de apoyo para la toma de generan una buena distribución. Oracfe soluciona el pro- decisiones que necesitan procesar grandes cantidades blema mediante un muestreo dinámico de un subcon- junto de las titas en la entrada a la ordenación antes de .,. de datos. cargas de datos en un almacén de datos y creación o reconstrucción de Índices. decidir las fronteras del rango. Con el fin de lograr una buena aceleración median- te el paralelismo es importante que el trabajo involu- 25.4.3.1. Estructura del proceso crado en la ejecución de la instrucción se divida en grá- Lbs procesos involucrados en la ejecución en paralelo nulos que se pueden procesar de forma independiente de 11Ii'a instrucción SQLconsistén en un proceso. coor- mediante tos distintos procesadores en paralelo. Depen- dinador y una serie de procesos servidores en paralelo. diendo del tipo de'operación Oracle tiene diversas for- El coordinador es responsable de asignar trabajos a los mas de dividir el trabajo. servidores en paralelo y de recoger y devolver los datos Para operaciones que acceden a objetos base Xtablas a los procesos del usuario que enviaron la instrucción. e índices) Oracle puede dividir el trabajo mediante tro- El grado de paralelismo es el número de procesos ser- zos Horizontalesde datos. Para alguna s operaciones tales vidores en paralelo que se asignan para ejecutar una como una exploración completa de una tabla, cada uno operación primitiva como parte de la instrucción. El gra- de dichos trozos puede ser un rango de bloques (cada do de paralelismo se determina mediante el optimiza- proceso de consulta en paralelo explora la tabla desde dor. pero se puede reducir dinámicamente si la:carga en el bloque a:1comienzo del rango hasrael bloque al final). el sistema aumenta. Para otras operaciones en una tabla dividida. come la Los-servidores en paralelo operan sobre un modelo actualización y borrado, el trozo podría ser una parti- productor/consumidor. Cuando es necesario una secuen- ción. Para inserciones eh una tabla no dividida los datos cia de operaciones para procesar una instrucción. el a insertar se dividen de forma aleatoria entre los proce- conjunto productor de servidores ejecuta la primera ope- sos en paralelo. ración y pasa los datos resultantes al conjunto de con- Las reuniones se pueden realizar en paralelo de dis- sumidores. Por ejemplo, si una exploración de tabla tintas formas. Una forma es dividir una de las entradas completa es seguida por una ordenación y el grado de a la reunión entre procesos paralelos y permitir que cada paralelismo es 12, habría 12 servidores productores que proceso reúna su trozo con la otra entrada de la reunión; ejecutan la exploración de la tabla y pasan el resultado éste es el método de reunión con fragmentos, y réplicas a 12 servidores consumidores que ejecutan la ordena- del Apartado 20.5.2. Por ejemplo, si una tabla grande ción. Si es necesaria una operación posterior, como otra se reúne con una pequeña mediante una reunión por aso- ordenación, las funciones de los dos conjuntos de ser- elación, Oracle divide' la tabla grande entre los proce- vidores se cambian. Los servidores, que originalmente 622
  • 14. CAPITULO 25 0RACLE ejecutaban la exploración de la tabla adoptan la función Para sistemas sin compartimiento el coste para acce- de consumidores de la salida producida por la primera der a los datos en el disco no es uniforme entre los pro- ordenación y lo utilizan para ejecutar la segunda orde- cesos. Un proceso que se ejecuta en un nodo qlle tiene nación. Por ello se realizan una secuencia de operacio- acceso directo a un dispositivo puede procesar los datos nes pasando los datos entre dos conjuntos de servido- sobre ese dispositivo más rápidamente que un proceso res que alternan sus funciones como productores S que tiene que recuperar los datos a través de la red. consumidores. Los servidores se comunican entre sí Oraele utiliza el conocimiento sobre la añnidad dispo- mediante las memorias' intermedias sobre hardware de sitivo a nodo y dispositivo a proceso (esto es, la capa- memoria compartida y mediante las conexiones de red cidad de acceder a los dispositivos directamente) cuan- de alta velocidad sobre configuraciones MPP (sin com- do distribuye el trabajo entre servidores en ejecución partimiento) y sistemas agrupados (discos compartidos). paralela. "c., '." Jt<;OJlCUllBENCIA y RECUPERACiÓN Orácle soporta técnicas de control de concurrencia y de retroceso es lo suñciénremente grande, Oracte puede recuperación que proporcionan una Serie de caracterís- devolver un resultado consistente de la consulta incluso ticas útiles. si los datos se han modificado varias veces desde que comenzara la ejecución de la consulta. Sie! bloque con 25.5.1.Control de concurrencia el SCN deseado ya no existe en el segmento de retroce- so, la consulta devolverá un error. Habría una indicación El control de concurrencia multiversíón de Oracle difie- de que el segmento de retroceso no se ha dimensionado re de los mecanismos de Concurrencia utilizados por la adecuadamente, dada la actividad del sistema. mayoría de los fabricantes de bases de datos. Para las En el modelo de concurrencia de' Oracle las opera- consultas de sólo lectura se proporcionan instantáneas ciones de lectura no bloquean las operaciones de escri- consistentes en lectura, que son vistas de la 'base de datos tura y las operaciones de escritura no bloquean las ope- tal como existía en un cierto momento, conteniendo raciones de lectura. una propiedad que permite un alto todas las actualizaciones que se comprometieron hasta grado de concurrencia. -En particular, el esquema per- ese momento y no el resto. Por ello no se utilizan lQS mite consultas largas (por ejemplo consultas de infor- bloqueos de lectura y las consultas de sólo lectura no mes) para ejecutar en un Sistema con una gran cantidad interfieren con otra actividad de la base de datos en tér- de actividad transaccional. Esta clase de escenario es minos de bloqueos (esto es básicamente el protocolo de normalmente problemático para sistemas de bases de bloqueo multiversión en dos' fases descrito en el Apar- datos donde las consultas utilizan bloqueos de lectura, tado 16.5.2). puesto que la.consulta puede, fallar al adquirirlos o blo- Oraclesoporta la consistencia de lectura en un nivel quear grandes cantidades de datos por mucho tiempo de instrucción y de transacción. Al comienzo-de la eje- evitando, por consiguiente. la actividad transaccional cución de una instrucción o transacción (dependiendo de los datos y reduciendo la concurrencia (una alterna- del nivel de consistencía que se utilice) Oracle deter- tiva que se utiliza en algunos sistemas es utilizar un gra- mina el número de cambio del sistema'(System Chan- do inferior de consistencia, tal como la consistencia en ge Number, SCN) actual. El SCN esencialmente actúa grado dos, pero eso podría producir resultados incon- como una marca temporal donde el tiempo 'se mide en sistentes eh la consulta). términos de compromisos de la base de datos en lugar El modelo de concurrencia de Orecle se utiliza como del tiempo de reloj. base para la característica Flashback Query. Esta carac- Si en el curso de una consulta se encuentra que un terística permite a un usuario establecer un cierto núme- bloque de datos tiene un SCN mayor que el que está sien- ro SCN o tiempo de reloj en su sesión y ejecutar con- do asociado con la consulta, es evidente que se ha modi- sultas sobre los datos que existían en esa fecha (supuesto ficado el bloque de datos después del SCN de la con- que los datos todavía existían en el segmento de retro- sulta original mediante alguna aira transacción y puede cese]. Normalmente en un sistema de bases de datos. ano haberse comprometido. Por ello los datos en el blo- una vez que se ha realizado el cambio no hay forma de que no se pueden incluir en una vista consistente de la retroceder al estado anterior de los datos a menos que base de datos como existía a la hora del SCN de la con- se realicen restauraciones desde copias dc seguridad. sulta. En su lugar, se debe utilizar una versión anterior Sin embargo, la recuperación de una base de datos muy de los datos en el bloque; específicamente aquel que ten- grande puede ser muy costosa, especialmente si el obje- ga el SCN mayor que no exceda el SCN de la consulta. tivo es solamente recuperar algunos datos que han sido Orac1erecupera la versión de los datos desde el segmento borrados inadvertidamente por Un usuario. La caracte- de retroceso (los segmentos de retroceso se describen en rística Flashback Que¡-)' proporciona un mecanismo el Apartado 25.5.2). Por ello, supuesto que el segmento mucho más sencillo para tratar los errores del usuario. 623