Document

Anuncio
Universidad Central de Venezuela
Facultad de Ciencias
Escuela de Computación
ADMINISTRACIÓN DE BASES DE DATOS
María Gertrudis López López
Centro de investigación en Sistemas de Información
CISI.
1
ADMINISTRACIÓN DE BASES DE DATOS
Resumen
La administración de las capacidades de la base de datos de una manera efectiva y eficaz
proporciona un producto de calidad. El resultado final de los esfuerzos será una base de
datos seria, robusta, segura, ampliable y diseñada para cumplir los objetivos de las
aplicaciones a las que dé servicio.
Existen una serie de componentes que forman parte de estos objetivos y que aquí vamos a
analizar con detenimiento. Unas arquitecturas física y lógica de la base de datos bien
diseñadas ayudan a mejorar el rendimiento y facilitan la administración, al distribuir
adecuadamente sus objetos. Si se determina cual es el número y el tamaño correcto de
los objetos de la base de datos, ésta podrá dar servicios a todas sus transacciones.
También se presentan las estrategias de optimización, seguridad y supervisión, así como
procedimientos de recuperación y copia de seguridad óptimos, para asegurar la
restauración de la base de datos ante cualquier falla. De igual forma, es importante los
mecanismos de control de concurrencia, ya que éstos pueden afectar tanto a la cantidad
como a la ejecución de las transacciones que se ejecutan en un momento dado. Ninguno
de los objetivos anteriores se lograría sin el concepto de diccionario de datos que es el
encargado de almacenar las descripciones de los objetos de la base de datos.
Palabras claves: Administrador de Bases de datos, esquema interno, transacciones,
concurrencia, optimización, diccionario de datos, seguridad, integridad.
———————————
Centro de Información en Sistemas de Información -CISIEscuela de Computación Facultad de Ciencias Universidad Central de Venezuela
Los Chaguaramos. Apartado 47002Caracas 1041-A Venezuela
2
INDICE
INDICE ______________________________________________________________ 3
INTRODUCCIÓN ______________________________________________________ 4
1.
Estructura Interna de los SMBD_______________________________________ 5
1.1.
Manejo de Memoria[1] __________________________________________ 5
1.1.1.
Acceso a bases de datos: Panorama General ______________________ 5
1.1.2.
Clustering [5] ______________________________________________ 7
1.1.3.
Organización de Archivos [5]__________________________________ 7
1.1.3.1.
Organización Secuencial__________________________________ 7
1.1.3.2.
Organización Directa ____________________________________ 8
1.1.3.3.
Organización Indexada ___________________________________ 9
1.1.3.3.1. Organización aleatoria indexada _________________________ 10
1.1.3.3.2. Organización indexada secuencial _______________________ 11
1.1.3.3.2.1. Manejador de archivos de datos con una organización indexada
secuencial 12
1.1.4.
Estructuras de Datos ________________________________________ 14
1.1.4.1.
Listas Invertidas _______________________________________ 14
1.1.4.2.
Listas Enlazadas _______________________________________ 15
1.1.4.3.
Árboles B ____________________________________________ 16
1.1.4.4.
Árboles B+ ___________________________________________ 17
1.2.
Casos de Estudio [12, 13] _______________________________________ 18
1.2.1.
Sybase ___________________________________________________ 18
1.2.2.
Oracle ___________________________________________________ 18
7.
REFERENCIAS BIBLIOGRAFICAS _________________________________ 21
3
INTRODUCCIÓN
Actualmente, la información es una de los recursos mas importantes que posee cualquier
organización.
Es por ello, que la tecnología ha evolucionado a sistemas que almacenan y
recuperan la información de manera eficiente. El campo de base de datos ha sufrido muchos
cambios hasta el día de hoy.
En un principio se tenían sistemas de procesamiento de archivos, los cuales eran limitados por la
fuerte dependencia entre los formatos de los archivos y los programas. A raíz de estos surgen
los sistemas manejadores de bases de datos, los cuales poseen muchas ventajas como son: la
minimización de redundancia, control de concurrencia, recuperación en caso de falla, etc. Los
primeros sistemas manejadores de bases de datos estaban basados en estructuras jerárquicas y
de red, pero debido a su complicación surgen los modelos relacionales, que son usados
ampliamente en la actualidad.
Todo este gran volumen de datos que almacenan las bases de datos es administrador por un
grupo de personas denominadas Administrador de Bases de Datos (ABD). Es labor del ABD:
•
Definir los esquemas de la bases de datos, por lo cual es importante conocer las
diversas estructuras de almacenamiento que permiten una recuperación eficiente. La
información de los esquemas es almacenada en el diccionario de la base de datos.
•
Proveer mecanismos de backup/restore que permitan la recuperación de la base de
datos ante cualquier particularidad.
•
Garantizar que el acceso concurrente de múltiples usuarios no comprometa la integridad
de la base de datos.
•
Garantizar un tiempo razonable de respuesta ante la ejecución de cualquier consulta, por
lo que es importante la optimización de consultas.
•
Proveer mecanismos de seguridad que permitan el acceso a los datos solo a personas
autorizadas.
•
Proveer mecanismos de integridad que representen restricciones que deben cumplirse
sobre los datos.
En este documento estudiaremos cada una de las funciones que efectúa un ABD.
4
1. Estructura Interna de los SMBD
1.1. Manejo de Memoria[1]
El nivel interno de un sistema de bases de datos es el que se ocupa de la forma como
están almacenados los datos. Físicamente, las bases de datos casi siempre se almacenan en
medios de acceso directo, por lo regular en discos magnéticos de cabeza móvil, aunque en
algunos sistemas pueden utilizarse otros medios (por ejemplo tambores, discos ópticos, etc.) en
vez de esos discos o además de ellos.
Daremos por sentado que se conocen los aspectos básicos de la arquitectura de los
discos y se conocen términos tales como tiempo de búsqueda, retardo rotacional, cilindro, pista,
cabeza de lectura / grabación, etc. [2, 3]
Lo fundamental en un ambiente de base de datos es que los tiempos de acceso a disco
son mucho más largos que los tiempos de acceso a memoria principal. Los tiempos de acceso a
disco representativos van de cerca de 400 milisegundos o más para un disco flexible en un micro
hasta unos 30 milisegundos o menos para un disco rápido en un mainframe; el acceso a
memoria principal será con toda probabilidad por lo menos cuatro o cinco órdenes de magnitud
más rápido que el acceso a disco en un sistema dado. Por todo esto, un objetivo prioritario de
desempeño en sistemas de bases de datos es reducir al mínimo el número de accesos a disco.
Para esto se utilizan técnicas para organizar los datos almacenados en disco de manera tal que
un elemento de información requerido se pueda localizar con un mínimo de operaciones de E/S.
Cualquier organización de los datos en el disco se denomina estructura de
almacenamiento. Es posible desarrollar (y así se ha hecho) un gran número de estructuras de
almacenamiento diferentes, y desde luego, tienen distintas características de desempeño que
son adecuadas para ciertas aplicaciones y no lo son para otras. No existe una sola estructura
óptima para todas las aplicaciones por lo que un buen sistema debe poder utilizar varias
estructuras distintas, a fin de almacenar diversas porciones de la base de datos en diversas
formas y deberá ser posible cambiar la estructura de almacenamiento de una porción
determinada cuando varíen o se comprendan mejor los requerimientos de desempeño.
1.1.1. Acceso a bases de datos: Panorama General
Localizar un elemento de información específico en la base de datos y presentarlo al
usuario requiere varios niveles de programas para acceso a los datos y sus principios generales
pueden explicarse en base a la figura 1:
1. En primer término, el SMBD decide cuál registro almacenado se necesita, y pide al
manejador de archivos que extraiga ese registro.
2. A su vez, el manejador de archivos decide cuál página contiene el registro deseado y
pide al manejador de disco que lea esa página. La página es la unidad de E/S, es decir,
la cantidad de datos transferidos entre el disco y la memoria principal en un sólo acceso
a disco (1K, 2K, 4Kbytes, etc.)
3. Por último, el manejador de disco determina la localización física de la página deseada
en el disco y realiza la operación de E/S necesaria. Si la página ya esta en memoria
principal porque ha sido leída anteriormente no es necesario volverla a leer de disco.
5
Figura 1
Manejador de disco: Es un componente del sistema operativo subyacente encargado
de todas las operaciones físicas de E/S. Como tal, es evidente que necesite conocer las
direcciones físicas en el disco. Por ejemplo, cuando el manejador de archivos solicita la lectura
de una página p, el manejador de disco necesita saber con exactitud donde está situada esa
página en el disco físico. Para el manejador de archivos, el disco es una colección lógica de
conjuntos de páginas, cada uno de los cuales se compone de un grupo de páginas de tamaño
fijo. Cada conjunto de páginas se identifica mediante un identificador de conjunto de páginas
único. Cada página a su vez, se identifica mediante un número de página que es único dentro
del disco; los diferentes conjuntos de páginas no se solapan, es decir, no tienen páginas en
común. El manejador de disco entiende y mantiene la correspondencia entre números de página
y direcciones físicas en el disco. Uno de los conjuntos de páginas, el conjunto de páginas de
espacio libre, sirve como reserva de páginas disponibles. El manejador de disco se encarga de la
asignación de páginas a los conjuntos y la liberación de páginas de los mismos cuando se los
solicita el manejador de archivos. Entre las operaciones que puede realizar el manejador de
disco con los conjuntos de páginas (que son las operaciones que puede solicitar el manejador
de archivos) se encuentran:
- Leer la página p del conjunto C.
- Reemplazar la página p dentro del conjunto de página C.
- Añadir una página nueva al conjunto de páginas C (es decir, obtener una página vacía
del conjunto de páginas del espacio libre y devolver el nuevo número de página p).
- Eliminar la página p del conjunto de páginas C (es decir, volver la página p al conjunto
de páginas del espacio libre).
Manejador de archivos: Utiliza los recursos del manejador de disco de manera tal que
su usuario (el SMBD) puede percibir al disco como un conjunto de archivos almacenados. Cada
conjunto de páginas contendrá uno o más archivos almacenados. Cada archivo almacenado se
identifica mediante un nombre de archivo o identificador de archivo único por lo menos dentro
del conjunto de páginas que lo contiene, y cada registro almacenado, a su vez, se identifica,
mediante un número de registro o identificador de registro único al menos dentro del archivo
6
almacenado que lo contiene (En la práctica, los identificadores de registro suelen ser únicos no
sólo dentro del archivo que los contiene sino dentro de todo el disco, ya que por lo general se
componen de un valor de número de página y algún valor único dentro de esa página). En
alguno sistemas, el manejador de archivos es un componente del sistema operativo subyacente
(que en muchos casos no resulta ideal para el SMBD), en otros casos está empacado con el
SMBD [4]. Entre las operaciones que puede realizar el manejador de archivos con los archivos
almacenados son:
- Leer el registro almacenado r del archivo almacenado A.
- Reemplazar el registro almacenado r dentro del archivo almacenado A.
- Añadir al archivo almacenado A un nuevo registro y devolver el nuevo identificador del
registro r.
- Eliminar el registro almacenado r del archivo almacenado A.
- Crear un nuevo archivo almacenado A.
- Destruir el archivo almacenado A.
Con estas operaciones primitivas de manejo de archivos, el SMBD es capaz de construir
y manipular las estructuras de almacenamiento.
1.1.2. Clustering [5]
Clustering es un proceso de agrupación de registros en páginas de disco basado en patrones de
uso. En un ambiente de base de datos, cada página puede contener diferentes tipos de registros
lógicos. Se puede querer colocar en una misma página de disco o en una página cercana
aquellos registros que son frecuentemente usados juntos con objeto de minimizar los accesos a
disco. Existen dos tipos de clustering:
- Clustering intra archivos: En este caso el clustering se aplica sobre archivos individuales.
Si los registros de un archivo son frecuentemente accesados según el orden de algún
campo del mismo, entonces es conveniente agrupar a los registros según el valor de ese
campo.
- Clustering ínter archivos: En este caso el clustering aplica sobre varios archivos. Si cada
vez que se acceda un registro de tipo 1 se accedan todos los registros tipo 2 asociados
con él entonces es recomendable agrupar cada registro tipo 1 con todos los registros
tipo 2 asociados a él.
1.1.3. Organización de Archivos [5]
La organización de archivos se refiere a la estructura física de un archivo sobre el disco.
Los tres métodos de organización de archivos disponibles son: secuencial, directo e indexado.
Cada una de estas organizaciones es usada por el SMBD en alguna forma. La organización
secuencial es usada para archivos journal; para copias de backup de la BD; para ciertos archivos
que sirven como entrada a aplicaciones batch; para archivos de transacciones batch, etc. Las
organizaciones directas e indexadas son técnicas usadas por el SMBD para el almacenamiento
de data dentro de la base de datos.
Una organización de archivos, junto con las posibles técnicas de acceso para esa
organización constituye un método de acceso. Una técnica de acceso define los pasos
involucrados en el almacenamiento y la recuperación de registros específicos a través de acceso
secuencial o aleatorio a dicho registro.
1.1.3.1.
Organización Secuencial
En este tipo de organización, los registros son almacenados en la secuencia física en la
que ellos van a ser procesados. Existen dos tipos posibles de organización secuencial. Si los
registros son almacenados sin ningún orden específico sino sólo por su orden cronológico de
llegada el archivo correspondiente es una pila. Los archivos journal, los backups, los archivos de
transacciones batch son del tipo pila. El segundo tipo de organización secuencial es aplicable en
un ambiente de procesamiento de archivos, donde un gran porcentaje de los registros necesitan
ser accesados frecuentemente. Un archivo con este tipo de organización secuencial tiene todos
sus registros almacenados según el valor de una clave que es normalmente la clave primaria.
7
Con un archivo organizado secuencialmente sólo se puede usar acceso secuencial. El
acceso aleatorio no es posible. Si un registro específico va a ser consultado desde el archivo,
todos los registros que lo preceden físicamente deben ser recuperados antes de obtenerlo a él.
Por esto, la organización secuencial no es recomendable para un ambiente en línea donde se
requiere un acceso rápido.
En un archivo con este tipo de organización, los registros pueden ser añadidos sólo al
final del archivo. Cuando se actualiza la información de un registro existente, puede ser
actualizado y reescrito en el mismo lugar físico en el que se encontraba. Pero si se debe insertar
un nuevo registro que va en la mitad del archivo, el archivo completo debe ser recopiado a una
nueva localización física donde se coloca adecuadamente el nuevo registro. El borrado físico de
un registro existente también requiere que el archivo sea recopiado a una nueva localización
física donde no se encuentra el registro borrado.
Comparada con la organización directa e indexada, la organización secuencial hace un
uso más económico del disco ya que no se requieren almacenar estructuras físicas adicionales
para acceder los registros y el archivo se mantiene tan compacto como se puede.
1.1.3.2.
Organización Directa
La organización directa da un performance excepcional en un ambiente on-line, donde
se requiere acceso aleatorio. En la organización directa, cada registro es almacenado y
recuperado en una dirección de disco sobre la base de una fórmula que es aplicada a un valor
de un campo del registro. Son posibles dos tipos de organización directa, una usando técnicas
de direccionamiento en base a una clave y la otra usando técnicas hashing.
Técnicas de direccionamiento por clave: Con estas técnicas una fórmula es aplicada
al valor del campo que es la clave primaria del registro y se obtiene un número relativo de
registro único. Por ejemplo, se tienen las siguientes ocurrencias del tipo registro EMPLEADO
donde la clave primaria es el número de empleado:
Emp 5
Emp 7
Emp 9
Emp 11
Emp 13
Emp 15
Emp 17
Emp 19
Emp 21
La fórmula a aplicar sobre cada valor de número de empleado es: (NUMEMP - 3) / 2. Por
ejemplo para el empleado 19 el resultado de la fórmula sería 8. Entonces, cada valor de clave
primaria da como resultado un número relativo de registro único a ser usado. Sólo se necesita un
acceso al archivo para almacenar o recuperar un registro específico. La rapidez provista por esta
técnica constituye una ventaja con respecto a la organización secuencial.
En la mayoría de los casos donde se aplica esta técnica, se observa una gran dispersión
entre las direcciones relativas generadas y las posiciones de memoria deben ser reservadas
aunque no sean usadas. Usualmente se debe hacer un estudio comparativo entre velocidad de
acceso y espacio de almacenamiento en disco necesario cuando se usa esta técnica y a menos
que se tenga una clave primaria que pueda ser convertida en un conjunto compacto de números
relativos, la técnica de direccionamiento por clave no es una buena selección para una
organización directa ya que aunque es un método de acceso rápido, puede dejar muchos
huecos, lo que desperdicia espacio en disco.
Técnicas Hashing: Son similares a las de direccionamiento por clave en que la fórmula
es aplicada a un campo del registro (usualmente la clave primaria) teniendo como resultado un
valor usado como la dirección en disco para almacenar ese registro. La diferencia es que las
técnicas hashing no garantizan una dirección de almacenamiento única. La fórmula puede
producir dos o más registros con el mismo valor resultante.
Esta técnica permite utilizar el disco eficientemente mientras intenta retener la rapidez
del acceso aleatorio (no más de un acceso a disco para obtener un registro específico) si se
pueden minimizar los efectos de los resultados duplicados de la fórmula. La función hashing es
seleccionada de manera tal que los registros sean esparcidos lo más uniformemente posible a lo
8
largo de todo el archivo, pero no quedan almacenados en una secuencia en particular. Cuando
para dos o más registros se obtiene como resultado el mismo valor de la función hashing se dice
que se produce una colisión y los dos registros son llamados sinónimos. Dentro de las técnicas
hashing más usadas se tienen:
Técnica hashing plegable (folding): Consiste en tomar el valor de la clave primaria,
dividir sus dígitos en dos o más grupos y sumar estos grupos de dígitos. El resultado de la suma
es usado como la dirección en disco. La idea es tomar un valor de clave primaria que puede ser
grande (C.I., por ejemplo) y transformarlo en números pequeños que son direcciones en disco
minimizando el número de colisiones a obtener.
Técnica hashing división-cociente: Consiste en dividir el valor de la clave primaria
entre un número fijo, preseleccionado y el cociente de la división se usa como dirección en disco.
Las investigaciones demuestran que el número seleccionado para hacer la división debe ser un
número primo para disminuir el número de colisiones posibles.
Manejo de colisiones: No importa lo bien seleccionado que esté nuestra función hashing,
siempre habrá que enfrentar el problema de las colisiones y se debe buscar la mejor forma de
manejarlo. Se sabe que el SMBD almacena registros en páginas que tienen capacidad para
varios registros y que cada página tiene un número único o dirección. Mas que usar un número
relativo para almacenar y recuperar registros, la técnica hashing usa el número de página para
localizar los registros. Entre las formas de manejar las colisiones se tienen:
Búsqueda lineal: Si la página en donde se debe almacenar un registro nuevo, según la
función hashing, no tiene espacio disponible, este se almacena en la próxima página que tenga
espacio disponible. La ventaja de este método es que los registros que tengan la misma página
estarán almacenados en la misma página o en páginas cercanas pero si existen muchos
registros que deben estar en una misma página y no caben allí se necesitarán varios accesos a
disco para obtenerlos y el problema puede empeorarse para archivos de gran tamaño con altas
densidades de ocupación.
Áreas de overflow: Este método usa un área de overflow separada para almacenar los
registros que no pueden ser almacenados en la página especificada por la función hashing. Al
momento de ubicar un registro que está en al área de overflow, el sistema obtiene primero la
página en donde debería estar almacenado. Al no ser encontrado allí se comienza a obtener las
páginas del área de overflow hasta que el registro es encontrado.
El método de búsqueda lineal tiende a causar colisiones a futuros registros que tengan que ser
ubicados en la página en la que ubico el registro sinónimo y si se mantienen el número de
colisiones al mínimo, es más rápido buscar en una área de overflow pequeña que buscar en el
área primaria.
La eficiencia de ambos métodos puede ser mejorada a través del uso de una cadena de
apuntadores (cadena de sinónimos o colisiones). Para esto cada página tiene un campo, llamado
apuntador, que sirve como indicador de que una colisión ha ocurrido en esa página. En este
campo se almacena el número de página en donde se encuentra almacenado el sinónimo. De
este forma no es necesario hacer una búsqueda secuencial en el área primaria para el método
de búsqueda lineal o no es necesario buscar en todas las páginas del área de overflow para el
método de áreas de overflow.
En general, el rendimiento de una técnica hashing específica en una aplicación dada
depende de ciertos factores tales como:
- Las características de la clave primaria usada como base de la función hashing.
- La función hashing seleccionada
- La técnica de manejo de colisiones seleccionada.
- El tamaño de la página. Las páginas grandes tienden a disminuir el número de
colisiones.
- La densidad de ocupación de la página. Si es muy alta (>80%) aumenta la probabilidad
de colisiones. Si es muy baja (< 40%) se desperdicia espacio en disco.
1.1.3.3.
Organización Indexada
La organización indexada provee acceso eficiente a los registros de ambas formas, tanto
secuencialmente como aleatoriamente; los registros lógicos son almacenados en un archivo
llamado archivo de datos y existe un archivo separado llamado archivo índice que contiene
registros formados por el valor clave y la dirección del registro lógico que tiene ese valor de
9
clave. Se dice entonces que el archivo de datos está indexado por el archivo índice. Muchos
S.O. restringen el tipo de archivos índices permitidos a aquellos definidos sobre valores únicos o
claves primarias, estos son llamados índices primarios, sin embargo también pueden permitir
definir índices sobre una clave secundaria no única. Estos son llamados índices secundarios. En
general existen dos tipos de organización indexada posibles: Organización aleatoria indexada y
organización secuencial indexada.
1.1.3.3.1. Organización aleatoria indexada
En este tipo de organización los registros en el archivo de datos están almacenados de
manera aleatoria y en el archivo índice existe una entrada por cada registro lógico existente en el
archivo de datos (este tipo de archivo índice se conoce como archivo denso) almacenados según
el orden de la clave primaria. Un ejemplo de este tipo de organización es mostrado en la
siguiente figura:
Archivo índice
Archivo de Datos
Clave Dirección (Nro. De Pág.)
Registro
Página
124
2
Empleado 405
Empleado 256 Página 1
256
1
Empleado 311
311
1
Empleado 611
315
3
Empleado 124 Página 2
405
1
Empleado 567
412
3
522
3
Empleado 522
567
2
Empleado 412 Página 3
611
2
Empleado 315
Los nueve registros del archivo empleado están almacenados en el archivo de datos y el
archivo índice tiene una entrada por cada una de las entradas en el archivo de datos. Cada
registro en el archivo índice contiene un NUM-EMP, que es la clave primaria del registro
Empleado, y un número de página, que indica donde está almacenado ese registro en el archivo
de datos.
El tener un archivo índice implica requerimientos de espacio adicionales para poder
almacenar un registro. ¿Por qué es necesario este overhead? Una razón es para permitir el
acceso secuencial de los registros lógicos. Los registros lógicos en el archivo de datos no están
almacenados según el orden de la clave primaria, pero los registros del archivo índice si lo están.
Entonces, al buscar los registros Empleado según el orden del archivo índice, se están
accediendo los registros Empleado según el orden de la clave primaria.
Un segundo beneficio de la organización indexada es que se pueden acceder
aleatoriamente los registros mucho más rápido que sin usar el archivo índice. Sin el archivo
índice se tendría que buscar directamente en el archivo de datos de manera secuencial el
registro deseado. Como los registros de este archivo son mucho más grandes que los registros
del archivo índice, el hacer la búsqueda directa en el archivo de datos es mucho más lento que
hacerla en el archivo índice. Además, si una gran porción del archivo índice cabe en memoria
principal, la búsqueda secuencial se puede hacer en memoria principal y se requerirán un
número mínimo de accesos a disco (en caso de que el archivo índice no quepa completo en
memoria principal) para tal fin y se pueden usar métodos de búsqueda más rápidos sobre el
archivo índice como la búsqueda binaria, para así reducir aún más el tiempo de búsqueda de un
registro específico.
Una ventaja adicional de este tipo de organización es que no se necesita acceder el
archivo de datos para saber si existe un registro con una clave primaria dada ya que esto lo
podemos saber buscando en el índice únicamente.
Una ventaja final de usar un archivo índice de este tipo para realizar acceso aleatorio se
obtiene cuando los archivos de datos contienen una gran cantidad de registros lógicos. El
archivo índice crece a la misma rata que la del archivo de datos porque existe una entrada en el
archivo índice por cada entrada en el archivo de datos. El tiempo de búsqueda se incrementa
pero no es comparable con el tiempo de búsqueda que se emplearía si esta actividad se
realizará directamente sobre el archivo de datos. Adicionalmente, una vez que el archivo índice
10
ha crecido hasta un punto tal que no cabe completo en memoria principal, se puede tratar como
se trata al archivo de datos y se crea un índice al índice teniéndose así un archivo índice con
varios niveles de indexación o índice multinivel. Un ejemplo de este caso se muestra en la
siguiente figura:
Nivel 1 del índice
Clave Dirección
315
7
567
8
611
9
Nivel 2 del índice
Clave Dirección
124
2
256
1
311
1
315
3
405
1
412
3
522
3
567
2
611
2
Página 8
Archivo de Datos
Registro
Página
Empleado 405
Empleado 256 Página 1
Empleado 311
Empleado 611
Empleado 124 Página 2
Empleado 567
Página 9
Empleado 522
Empleado 412 Página 3
Empleado 315
Página
Página 7
El nivel 2 (índice de bajo nivel) es igual al índice original y el nivel 1 (índice de alto nivel)
es el nuevo índice del índice original. Los valores en el nivel 2 del índice están en secuencia y en
el nivel 1 del índice se tiene un registro para cada página del nivel 2 que contiene el mayor valor
de clave almacenado en esa página y la página correspondiente (índice no denso o sparse). El
índice de alto nivel se puede tener en memoria principal, buscar en él, devolver la página exacta
del índice de bajo nivel donde se encuentra almacenado ese registro, buscar en memoria
principal el registro exacto en esa página de bajo nivel y finalmente devolver la página del
archivo de datos que contiene el registro que se quiere acceder aleatoriamente. Solo dos
accesos son necesarios para obtener de manera aleatoria un registro lógico. A medida que
crezca el archivo de datos se pueden ir expandiendo los niveles de índices tanto como sea
necesario.
Una ventaja adicional de este tipo de organización es que los registros en el archivo de
datos no necesitan estar en secuencia. Esto simplifica en gran manera el hecho de insertar y
borrar registros en el archivo de datos, ya que no se tienen que hacer reorganizaciones físicas.
Sin embargo, la programación para realizar el manejo de índices puede ser complicada.
Afortunadamente la organización indexada es un estándar y el manejo de índices es
responsabilidad de las rutinas de acceso del S.O. o del SMBD.
1.1.3.3.2. Organización indexada secuencial
En este tipo de organización los registros en el archivo de datos están almacenados
según la secuencia de la clave primaria. Siendo así a nivel del archivo índice sólo se necesita
una entrada o un registro por cada página del archivo de datos (índice no denso)
correspondiente al registro que tenga el mayor o el menor valor de clave primaria en la página
del archivo de datos. Un ejemplo de este caso se muestra en la siguiente figura:
Archivo de Datos
Registro
Página
Empleado 124
Empleado 256 Página 1
Empleado 311
Empleado 315
Empleado 405 Página 2
Empleado 412
Archivo índice
Clave Dirección
311
1
412
2
611
3
Empleado 522
Empleado 567 Página 3
Empleado 611
11
El tener menos registros índices implica tener archivos índices de menor tamaño,
tiempos de búsqueda más rápidos y pocos niveles de índices a medida que crece el archivo de
datos. Por otro lado, no se puede determinar la existencia de un registro con una clave
específica buscando sólo en el archivo índice ya que no es denso y para esto se debe acceder el
archivo de datos, lo que implica un acceso a disco adicional en comparación con la organización
aleatoria indexada, pero al final, como existen menos páginas de índices que en la organización
aleatoria indexada y por esto se requieren menos accesos a disco, la organización secuencial
indexada resulta más eficiente.
Con una organización indexada secuencial, si se quiere hacer un recorrido secuencial de
los registros por su clave primaria no es necesario usar el índice, ya que recorriendo el archivo
de datos de forma secuencial se obtienen los registros en el orden deseado. El índice se usa
cuando se quiere realizar un acceso aleatorio.
Si la organización indexada secuencial consume menos espacio y tiene un mejor
rendimiento que la organización indexada aleatoria ¿Por qué se usa esta última?. La
organización aleatoria indexada permite ordenar el archivo de datos por los campos que sean
necesarios, es decir, se pueden definir muchos índices secundarios por diferentes claves usando
esta organización. La organización indexada secuencial sólo permite una única secuencia,
porque los registros en el archivo de datos sólo pueden estar almacenados según una sola
secuencia (generalmente la de la clave primaria). Así que todos los archivos secundarios tienen
una organización aleatoria indexada o alguna otra estructura que permita relacionar el valor de
una clave secundaria a los registros que contienen ese valor en el archivo de datos.
1.1.3.3.2.1.
Manejador de archivos de
organización indexada secuencial
datos
con
una
¿Qué sucede cuando se quiere insertar un nuevo registro en un archivo de datos con
una organización indexada secuencial cuando la página a utilizar ya está llena?
Un método para manejar inserciones en archivos bajo una organización indexada
secuencial es el uso de un área de overflow y una cadena de apuntadores. Si la página en
donde se va a insertar el registro está llena, el registro se coloca en una página del área de
overflow y se establece una conexión con el área de overflow mediante un apuntador para poder
ubicarlo al momento de accederlo. En la siguiente figura se muestra un ejemplo:
Archivo índice
Clave Dirección
311
1
412
2
611
3
Archivo de Datos
Registro
Página
Empleado 124
Empleado 256 Página 1
Empleado 311
Empleado 315
Empleado 405 Página 2
Empleado 412
Apuntador
de Localización
Overflow
Valor
42
410
Apuntador
de Localización
Overflow
Valor
41
412
Empleado 522
Empleado 567 Página 3
Empleado 611
Area de Overflow
Registro
Página
Empleado 412
Empleado 410 Página 4
12
Como se ve en el ejemplo anterior se tiene un área de overflow separada y dos nuevos
campos en cada página de datos han sido añadidos. Uno de los nuevos campos es un
apuntador de localización de overflow el cual enlaza la página del archivo de datos al próximo
registro lógico en secuencia localizado en el área de overflow. Este consiste de un número de
página y un número de registro relativo dentro del área de overflow. El otro nuevo campo
representa el valor de la clave primaria que posee el registro apuntado en el área de overflow.
Los registros en el área de overflow son almacenados según la secuencia de llegada no según la
secuencia de la clave y por esto se requiere la cadena de apuntadores para el área de overflow.
Como es de suponerse, el rendimiento se degrada cada vez más cuando se añaden
más registros al área de overflow y comienza a crecer la cadena de apuntadores. Debido a esto,
los archivos indexados secuenciales tienen que ser reorganizados periódicamente para que
todos los registros sean colocados en el archivo de datos en la secuencia lógica correcta y en
este momento se reconstruye el archivo índice.
El método de acceso secuencial indexado de IBM (ISAM) usa la técnica de área de
overflow sobre una base más complicada, la cual toma en cuenta las características físicas del
disco.
Un segundo método para manejar las inserciones bajo una organización secuencial
indexada es el uso de la técnica de división de bloques. Con esta técnica cuando se va a añadir
un registro en una página que no tiene más espacio disponible se usa la siguiente página
disponible y los registros contenidos en la página llena más el nuevo registro son divididos entre
las dos páginas. Por ejemplo, dado el siguiente archivo de datos:
Archivo de Datos
Registro
Página
Empleado 124
Empleado 256 Página 1
Archivo índice
Empleado 311
Clave Dirección
Empleado 315
311
1
Empleado 405 Página 2
412
2
Empleado 412
611
3
Empleado 522
Empleado 567 Página 3
Empleado 611
Se quiere insertar el registro del Empleado 350. Este registro debería ir en la página 2, pero
como no hay más espacio disponible en esa página se usa la página 4, que es la próxima
disponible, y se divide el contenido de la página 2 entre la página2 y la página 4 quedando de la
siguiente manera:
Archivo de Datos
Registro
Página
Empleado 124
Empleado 256 Página 1
Empleado 311
Empleado 315
Empleado 350 Página 2
Empleado 522
Empleado 567 Página 3
Empleado 611
Archivo de índice
Clave Dirección
311
1
350
2
412
4
611
3
Empleado 405
Empleado 412 Página 4
El archivo índice tiene que cambiar para reflejar la página añadida en la secuencia
apropiada y éste puede ser usado para acceder en forma secuencial el contenido del archivo de
datos ya que ahora, según esta técnica, los registros lógicos no están en secuencia por número
13
de página. Para poder recorrer el archivo de datos directamente cuando se quiere hacer un
barrido secuencial del archivo de datos se puede añadir un campo adicional a cada página de
datos que sirva como apuntador a la próxima página según la secuencia lógica a seguir según la
clave primaria.
El método de acceso de almacenamiento virtual de IBM (VSAM) usa esta técnica para
manejar la organización secuencial indexada.
1.1.4. Estructuras de Datos
Las estructuras de archivos discutidas anteriormente
ambientes de procesamiento de archivos pero se quedan
ambientes completos de SMBD los cuales manejan una gran
entre ellos. Para esto necesitan estructuras de datos más
encuentran:
1.1.4.1.
son suficientes para soportar los
cortos para soportar totalmente
cantidad de archivos y relaciones
sofisticadas entre las cuales se
Listas Invertidas
Anteriormente se dijo que una estructura de archivo que puede ser usada para
representar claves secundarias es una organización aleatoria indexada y estos archivos son
llamados índices secundarios. Cuando se usa un índice sobre un campo secundario se dice que
se tiene una lista invertida o archivo invertido ya que se ha invertido el rol normal de un campo
en el registro porque se encuentra el registro basándose en el valor del campo en vez de
encontrar el valor del campo después de haber localizado al registro.
En el caso en que se definan listas invertidas sobre campos que pueden tener el mismo
valor para diferentes registros en el archivo de datos la estructura de la lista consiste de un
primer nivel de índice que tiene una entrada por cada valor diferente del campo de índice
existente en el archivo de datos. Para cada una de estas entradas se tienen un apuntador al
nivel 2 del índice donde comienza la lista de números de registros relativos con ese valor de
campo índice. Por ejemplo, para el siguiente archivo de datos se quiere construir una lista
invertida por el campo PCCOST, entonces se tiene lo siguiente:
Archivo Empleado
NUMEMP COSTO
124
4500
256
0
311
2175
315
2175
405
0
412
0
522
567
611
0
4500
1429
# relativo de registro
1
2
3
4
5
6
7
8
9
La estructura de lista invertida sobre el campo COSTO sería:
Nivel 1 del índice
Campo
Localización
índice
0
1
1429
5
2175
6
4500
8
Nivel 2 del índice
# relativo de registro
2
5
6
7
9
3
4
1
8
14
Si se tienen listas invertidas para todos los campos del archivo se dice que se tiene un
archivo invertido completamente. Si sólo algunos campos tienen asociados listas invertidas se
dice entonces que se tiene un archivo invertido parcialmente.
Las listas invertidas pueden usarse para responder ciertas consultas sin tener que
acceder el archivo de datos, como por ejemplo:
- ¿Cuántos empleados tienen costos 0?
- ¿Cuántos registros tienen costos mayores que 5000? ...
Con la utilización de listas invertidas la recuperación de registros es muy eficiente pero
entre las desventajas que tienen se cuenta el espacio requerido para almacenar los índices
multinivel y el tiempo extra requerido para actualizar las listas invertidas por lo que las listas
invertidas son creadas sólo para los campos sobre los cuales se necesita tener un acceso
rápido.
El SMBD ADABAS utiliza este esquema de indexación.
1.1.4.2.
Listas Enlazadas
Una lista enlazada consiste de un campo añadido al final de cada registro lógico en el archivo de
datos que tiene un valor de localización del próximo registro lógico en la secuencia. Esta es
otra estructura usada para representar claves secundarias. Por ejemplo, la lista enlazada
asociada al archivo anterior sobre el campo COSTO sería de la siguiente forma:
Head Pointer COSTO: 2
Archivo Empleado
NUMEMP COSTO
124
4500
256
0
311
2175
315
2175
405
0
412
0
522
567
611
0
4500
1429
Apuntador sobre COSTO
8
5
4
1
6
7
# relativo de registro
1
2
3
4
5
6
9
3
7
8
9
Externo a los registros del archivo EMPLEADO se tiene un campo adicional que sirve
como ancla o apuntador al comienzo de la lista que apunta al primer registro de la secuencia
según el campo COSTO. En el ejemplo anterior el último registro de la cadena apunta a NILL,
pero otro enfoque es que el último registro apunte al primer registro de la cadena. Este
refinamiento se llama lista enlazada circular o anillo.
Se pueden tener tantas listas enlazadas como sean necesarias y cada una de ellas
requiere espacio adicional y tiempo extra para actualizarlas.
Una lista enlazada puede ser usada como una alternativa a las listas invertidas para
representar claves secundarias a través de una estructura llamada Multilista. Esta es un índice
similar al nivel 1 de índices de la estructura de lista invertida. El índice multilista tienen un registro
por cada valor diferente de la clave secundaria y está ordenado por estos valores pero en vez de
apuntar al nivel 2 de índices, cada registro multilista tiene un apuntador ancla que comienza la
cadena de registros que tienen un valor de la clave secundaria particular. Por ejemplo, una
multilista sobre el campo COSTO para el archivo EMPLEADO quedaría de la siguiente manera:
15
Archivo Empleado
NUMEMP COSTO
124
4500
256
0
311
2175
315
2175
405
0
412
0
522
567
611
0
4500
1429
Apuntador sobre COSTO
8
5
4
6
7
# relativo de registro
1
2
3
4
5
6
-
7
8
9
índice Multilista sobre el
campo COSTO
Clave
# relativo de
reg.
0
2
1429
9
2175
3
4500
1
Si se tienen múltiples claves secundarias se pueden usar estructuras multilistas para
cada una. Comparando las multilistas con las listas invertidas, los índices multilistas son más
fáciles de crear y mantener ya que el nivel 2 de índices de las listas invertidas tiene un número
variable de entradas. Por otro lado, los apuntadores de las multilistas deben ser mantenidos
mientras que con las listas invertidas no hay apuntadores que mantener, pero el mantenimiento a
nivel de multilistas en el archivo de datos no implica una reorganización física a nivel de páginas
sino un mantenimiento a nivel de apuntadores, por los que son más fáciles de mantener que las
listas invertidas. Una de las principales desventajas de las multilistas con respecto a las listas
invertidas es que es más difícil y toma más tiempo responder ciertas consultas que se pueden
hacer con las listas invertidas sin tener que acceder el archivo de datos.
1.1.4.3.
Árboles B
Los árboles B [6] son una de las estructuras de datos más ampliamente usadas en el
procesamiento de base de datos hoy en día. Se usan principalmente para el almacenamiento y
manipulación de índices. El árbol B es una forma especial de una estructura general de árbol.
Un árbol está formado por nodos conectados por arcos. En el tope del árbol existe un
único nodo raíz y sus descendientes lo siguen. Un nodo que no sea la raíz junto con todos sus
descendientes comprenden un subárbol del árbol original. Cada nodo tiene exactamente un
padre excepto el nodo raíz que no tiene padre. Los ancestros de un nodo son todos los nodos,
incluyendo la raíz, que conectan al nodo a la raíz.
Un nodo hoja no tiene hijos. Un nodo gemelo es un nodo relacionado con otros nodos
por el hecho de que tienen el mismo padre. La raíz se define como el nivel 0 del árbol, los hijos
de la raíz son el nivel 1 y así sucesivamente. La altura del árbol es el máximo número de niveles
en el árbol.
Un árbol balanceado es aquel en donde la profundidad de cada subárbol de nodos
difiere a lo más en uno. El orden o grado de un árbol es el número máximo de hijos que puede
tener un nodo del árbol.
Cuando se usa este tipo de estructura de datos para los archivos índices, el objetivo es
minimizar los accesos a disco cuando se quiere hacer un acceso aleatorio a un registro
específico. Si se usa una estructura de árbol y cada nodo es una página de disco lo que se
quiere alcanzar para lograr el objetivo anterior es un árbol balanceado con la menor cantidad de
niveles que sean posibles. Una estructura de árbol que satisface bien esta condición es el árbol
B.
En el ambiente de base de datos un árbol B es un índice multinivel donde cada uno
de sus nodos es una página índice y tienen el siguiente formato general:
Apun 1 Clave 1
Apun 2 Clave 2 Apun 3.....
Cada apuntador apunta a la página índice en el nivel inferior siguiente, cada clave es el
valor de la clave de un registro lógico en el archivo de datos. Cada valor de clave (combinación
de valor clave y dirección) que exista en el archivo de datos va a aparecer solo una vez en la
estructura de árbol. El número máximo de apuntadores en la página es el orden del árbol B, de
aquí que el número máximo de apuntadores determine el número máximo de hijos que puede
tener el nodo. En cada nodo del árbol B los valores claves que contienen están en secuencia
Un árbol B de orden n tiene las siguientes propiedades:
16
• La raíz es una hoja o tiene al menos dos hijos.
• Cada nodo, excepto la raíz y las hojas, tienen entre n/2 y n hijos.
• Todas las hojas aparecen al mismo nivel.
• Un nodo no hoja con k hijos tiene k-1 claves.
Por ejemplo, véase el siguiente árbol de orden 5:
* 425 * 0 - 0 - 0 -
* 140 * 325 * 0 - 0 -
* 123 * 125 * 130 * 138 *
* 450 * 522 * 0 - 0 -
* 532 * 600 * 710 * 0 -
* 256 * 311 * 315 * 0 -
* 405 * 412 * 0 - 0 -
* 567 * 575 * 0 - 0 * 622 * 0 - 0 - 0 * 750 * 800 * 803 * 839 *
-
-
Las ventajas de los árboles B son:
Permiten un rápido acceso aleatorio a los registros de datos, el cual implica en el peor de
los casos, tantos accesos a disco como niveles tenga el árbol B.
Las inserciones y eliminaciones son razonablemente eficientes.
La utilización del disco es aceptable ya que por cada nodo se va a tener ocupado
mínimo el 50 % de su capacidad.
El archivo de datos es mantenido en secuencia por la clave primaria por lo que el acceso
secuencial es posible y eficiente.
1.1.4.4.
Árboles B+
El árbol B+ [7] es una variación del árbol B. La diferencia esta en que en un árbol B+,
los apuntadores de datos se almacenan sólo en los nodos hojas del árbol, por lo cual la
estructura de los nodos hoja difiere de la de los nodos internos.
Los nodos hoja del árbol B+ suelen estar enlazados para ofrecer un acceso ordenado a
los registros según el campo de búsqueda. Los nodos internos del árbol B+ corresponden a los
demás niveles del índice. Algunos valores del campo de búsqueda de los nodos hoja se repiten
en los nodos internos del árbol B+ con el fin de guiar la búsqueda.
La estructura de los nodos internos de un árbol B+ de orden p se define como sigue:
1. Todo nodo interno tiene la forma:
<Apun 1, Clave 1, ..., Apun q-1 Clave q -1>
donde q <= p, cada Apun i es un apuntador de árbol y cada Clave i es un valor de la
clave.
2. Dentro de cada nodo interno, Clave 1 < Clave 2 < ... < Clave q - 1.
3. Para todos los valores X del campo de búsqueda del subárbol al que apunta Apun i,
tenemos Clave i – 1 < X <= Clave i, para 1 < i < q, X <= Clave i, para i = 1, y Clave i - 1
< X, para i = q
4. Cada nodo interno tiene cuando más p apuntadores de árbol.
5. Cada nodo interno, con excepción de la raíz, tiene por lo menos (p/2) apuntadores de
árbol. El nodo raíz tiene por lo menos dos apuntadores de árbol si es un nodo interno.
17
6. Un nodo interno con q apuntadores, donde q <= p, tiene q – 1 valores de campo de
búsqueda.
La estructura de los nodos hojas de un árbol B+ de orden p es como sigue:
1. Todo nodo interno tiene la forma:
<Clave 1, Apun 1, ..., Clave q -1, Apun q-1, Apun siguiente>
donde q <= p, cada Apun i es un apuntador de datos, cada Clave i es un valor de la
clave y Apun siguiente apunta al siguiente nodo hoja del árbol B+.
2. Dentro de cada nodo hoja, Clave 1 < Clave 2 < ... < Clave q – 1, donde q <= p.
3. Cada Apun i es un apuntador de datos que apunta al registro cuyo valor de clave de
búsqueda es Clave i, o a un bloque de archivo que contiene dicho registro (o a un bloque
de apuntadores que apuntan a registros cuyo valor del campo de búsqueda es Clave i, si
el campo de búsqueda no es clave).
4. Cada nodo hoja tiene por lo menos (p/2) valores.
5. Todos los nodos hoja están en el mismo nivel.
1.2. Casos de Estudio [12, 13]
1.2.1. Sybase
Los índices son objetos de la base de datos que pueden crearse para una tabla para
acelerar el acceso directo a las filas de los datos específicas. Los índices guardan los valores de
la clave y apuntadores lógicos a las páginas de los datos ó a otras páginas del índice.
El Servidor de SQL proporciona dos tipos de índices:
- Indices clustered (arracimados) donde los datos de la tabla se guarda físicamente en el
orden de las claves en el índice.
- Indices Nonclustered donde el índice esta ordenado, pero la tabla no. Las filas en la tabla no
tienen ningún orden particular, y se agregan nuevas filas en el extremo de la tabla.
Los índices pueden tener múltiples niveles:
• El Nivel raíz es el nivel más alto del índice. Si la tabla es muy pequeña, no hay ningún nivel
intermedio y la raíz guarda los apuntadores a las páginas de los datos. Para las tablas más
grandes, la página de la raíz guarda los apuntadores al nivel intermedio de las páginas del
índice.
• El Nivel hoja es el nivel más bajo del índice. A nivel de la hoja, el índice contiene un valor
importante por cada fila en la tabla, y las filas se guardan según el orden de la clave del
índice. Para los índices del nonclustered, el nivel de la hoja contiene el índice a los valores
importantes, es decir, un indicador a la página dónde las filas se guardan, y un apuntador a
las filas en la página donde están los datos. El nivel de la hoja simplemente es el nivel
anterior los datos.
• El Nivel del intermedio: Todos niveles entre la raíz y las hojas son los niveles intermedios. Un
índice sobre una tabla grande o un índice que usa las claves largas puede tener muchos
niveles intermedios. Una tabla muy pequeña no puede tener un nivel intermedio; la raíz
apunta directamente al nivel de la hoja. Cada nivel (excepto el nivel de la raíz) contiene: las
claves de la página y los apuntadores de la página anteriores luego a otras páginas al mismo
nivel del índice.
1.2.2. Oracle
Oracle se conoce como un sistema de gestión de base de datos relacional, que además
admite estructuras O.O. (Orientadas a Objetos), como métodos y tipos de datos abstractos.
Tanto si se utiliza estructuras relacionales como estructuras OO la base de datos Oracle
almacena los datos en archivos. Internamente, existen estructuras en la base de datos que
realizan una asignación lógica entre los datos y los archivos, lo que permite almacenar por
separado diferentes tipos de datos. Estas divisiones lógicas se denominan espacios de tablas.
Cada espacio de tablas consta de uno más archivos, llamados archivos de datos, que se
almacenan en un disco. Un archivo de datos solo puede pertenecer a un único espacio de tablas.
18
Una instancia de base de datos (también conocida como servidor) es un conjunto de
estructuras de memoria y procesos de segundo plano que acceden a un conjunto de archivos de
la base de datos.
Las estructuras de datos de la base de datos de Oracle pueden dividirse en 3 categorías:
1. Interna de la Base de Datos.
2. Interna a la Área de Memoria.
3. Los externos a la Base de Datos.
Entre los internos a la base de datos podemos nombrar: tablas, columnas, restricciones,
tipos de datos, índices, agrupaciones, agrupaciones hash, procedimientos, funciones, vistas, etc.
Un índice es una estructura de base de datos que utiliza el servidor para localizar
rápidamente una fila de una tabla. Existen 3 tipos de índices:
• Índice de agrupación.
• Índice de tabla.
• Índice de mapa de bits.
Los elementos de los índices de tabla y de agrupación de una base de datos Oracle se
almacena mediante un mecanismo de árbol binario. Las operaciones de E/S necesarias para
localizar un valor clave son mínimas y, una vez encontrado, se utiliza el identificador de fila para
acceder directamente a una fila.
Las agrupaciones hash utilizan funciones hash sobre la clave de agrupación de fila para
determinar la ubicación física en la que debe almacenarse una fila.
Los internos a la área de memoria constan de los siguientes elementos:
• Área Global del Sistema (SGA).
• Caché del buffer del bloque de datos.
• Cache del diccionario.
• Buffer del registro de rehacer.
• Área de SQL compartida.
• Área de contexto.
• Área global del sistema (PGA).
Los externos a la Base de Datos constan de los siguientes elementos:
• Los registros de rehacer.
• Los archivos de control.
• Los archivos de traza.
• Los archivos de alertas.
En Oracle versión 8 el manejo de memoria se hace por Árboles Balanceados, las tablas
organizadas mediante índices almacenan las columnas de una tabla en los nodos de hoja de la
estructura de índice B-tree de Oracle8. De esta manera se reducen los requisitos globales de
almacenamiento cuando la mayoría de las columnas se indexan almacenándolas una sola vez,
no en un índice y en una tabla aparte. Las tablas organizadas mediante índices también reducen
el tiempo de acceso al recuperar todas las columnas desde una ubicación, en lugar de hacerlo
desde dos. El rendimiento de PL/SQL aumenta, al igual que el rendimiento al realizar llamadas a
SQL desde PL/SQL, y viceversa.
Para facilitar la administración, mejorar la disponibilidad de los datos críticos y aumentar
el rendimiento de consultas y DML, Oracle8 permite dividir las tablas y los índices en particiones,
o partes más pequeñas, en función de un rango de claves. La división en particiones es una
estrategia del tipo “divide y vencerás” que mejora la administración y el rendimiento en sistemas
de data warehouse y de procesamiento de transacciones on line. Puesto que las particiones
funcionan independientemente las unas de las otras, los datos contenidos en una tabla dividida
de esta manera están disponibles aunque una o más particiones no estén disponibles. Las
particiones también facilitan la gestión de tablas grandes al desglosar las tareas administrativas
en otras más pequeñas, que a su vez pueden realizarse en paralelo. Por último, la división de
una tabla o un índice en particiones puede mejorar el rendimiento de las operaciones realizadas
con los datos, al eliminar las particiones no utilizadas del plan de ejecución de la operación.
19
20
7. REFERENCIAS BIBLIOGRAFICAS
[1] Date C.J. “An Introduction to Database Systems”. 7th edition, Addison-Wesley, 2000.
[2] Gio Wiederhold. “Database Design”. 2a edición. Nueva York, N.Y.; McGraw-Hill (1983).
[3] T.H. Merret. “Relational Information Systems”. Reston, Va: Reston Publishing Company Inc.
(1984).
[4] Michael Stonebraker. “Operating System Support for Database Management”. CACM 24, núm
7. Julio 1981.
[5] Pratt P. and Adamski J. “Database Systems Management and Design”. Third Edition. Boyd &
Fraser publishing company. 1994.
[6] R. Bayer y C. McCreight. “Organization and maintenance of Large Ordered Indexes”. Acta
Informática 1, núm 3 (1972).
[7] Elmasri / Navathe. “Sistemas de Bases de Datos. Conceptos fundamentales”. Addison
Wesley. Segunda Edición 1997.
[8] Öszu, Tamar and Valduriez, P. “Principles of Distributed Database Systems”. 2nd Ed. Prentice
Hall, 1998.
[9] Korth H., Silberschatz A, Sudarshan, S. “Fundamentos de bases de datos”. Tercera edición.
McGraw-Hill. 1998. ISBN 84-481-2021-3
[10] Leon-Hong B., Plagman B., “Data Dictionary Directory Systems”. J. Wiley, 1982.
[11] Fernandez E., Summers R., Wood C. “Database Security and Integrity”. Addison Wesley,
1981.
[12] Loney, Kevin. “ORACLE 8. Manual del administrador”. McGrawHill. Primera Edición 2000.
FUENTES ELECTRÓNICAS
[13] Sybase. “Fast Track to Adaptive Server Enterprise 11.9.2”. 2001.
URL: www.sybase.com.
21
Descargar