ORGANIZACION DE FILES DE ALTO NIVEL PARA DBMS 1. Instruccion Read : Los Metodos Basicos del S.O. de Acceso, Automaticamente Localizan y Transfieren el Registro deseado al Area de. Datos del Programa. Se limitan solo a Recuperaciones Via Clave Primaria (no usada con frecuencia en una Base de Datos ). 2. Tipos de Los mas comúnmente usados para recuperar información son: Busquedas 1. Recuperacion Basada en Clave Primaria : Recupera un Record basándose en el Valor de la Clave Primaria. Ej.: Display Name, Class Where S-ID =150 2. Recuperacion Basada en Clave Secundaria : Recupera un Record basandose en el valor de un Campo designado como Secundario ( puede ser cualquier Campo). Se pueden Localizar Varios Records como resultado de una recuperacion en una clave secundaria. Ejemplo: Display Name, Where AGE = 20. 3. Recuperacion Basada en Claves Multiples : Especifica en la Búsqueda mas de Una Clave en la Condicion de Consulta; Ejemplo: Display Name, Where Class =541 and AGE = 20. . Son las Mas Comunes en las Recuperaciones en Bases de Datos, no se restringen a un solo valor, pero en Lenguajes de Alto Nivel Requieren un Gran -Esfuerzo de Programacion. . Las Organizaciones Anteriores ( Secuencial , Directa , etc. ) no son Adecuadas Para Recuperaciones Sobre la Clave Secundaria. .Una Organizacion de Alto Nivel ( usada por los DBMS ) se llaman a veces "Organizacion de Archivos Secundarias", ya que esta Construida sobre sus propios Metodos de Acceso para consultas de claves multiples y tambien pueden usar todos Metodos Basicos de Acceso del S.O. B. ESTRUCTURAS DE ALTO NIVEL USADAS EN DBMS l. Organizacion Inversa de archivos 2. Organizacion Multilista de archivos 3. Organizacion Multianillo de archivos. C. ORGANIZACION INVERSA DE ARCHIVOS . En un File Inverso se crea un Indice para un File Directo o Secuencial Indexado basado en los valores de los campos Clave-Secundaria. .Todo Indice contiene un Valor Clave-Secundaria y Señaladores hacia Las Direcciones de los Records que contienen el Valor de la Clave Secundaria, asociandose este Valor con la Direccion del record y Puede estar Asociado con mas de una Direccion de Registro. . Un File Inverso se puede Indexar en uno o mas Campos Clave Secundaria, se crea un Indice para cada Clave Secundaria Declarada. 1. Tipos de Indices: - El Campo Clave Secundaria sobre el cual se crea un Indice se llama, "Clave Inversa o Clave Indexada". Se dice que el Campo es Inverso para la Recuperacion por Clave Inversa. - Cada Entrada del Indice Clave Consiste en un Valor de Clave Secundaria y un conjunto de Señaladores a los Records de Datos. Un Señalador puede contener una Direccion Relativa, una Direccion Fisica o una Clave Principal de los Records Objeto. - Dirección Relativa: Cuando el campo señalador en el indice valor clave contiene …Direcciones Relativas. Ej. Entrada 1 del indice indica que los records 1,4,5 contienen el valor 541 en el campo CLASS - Un Señalador Simbolico es un Identificador de Registro, pero no una Direccion de Registro. Si se escoje como identificador de registro , la primera entrada del indice en el indice valor clave contendria: 541 150, 164, 172(valores de claves prim. De los records 1,4,5) los cuales a s u vez se traducen a su direccion de registro via distribución o busqueda de indices (hashing). - Un Valor de Clave Primaria puede usarse como Señalador Simbolico al Identificar de forma unica a un Record del File. - Direcciones Fisicas: Se usan dentro del Campo Señalador para Accesar Directamente Records sin tener que traducir la Direccion . La Desventaja de las Direcciones Reales es que los Valores del Señalador Depende del Dispositivo Recrear Indices si la Data Migra de Un Disco a Otro. En el Indice Nombre-Clave existe la entrada Nombre clave –Inversa y un señalador a la primera entrada del indice Valor –Clave Ejems: listar nombres de estudiantes de 21 años; - Los Distintos Indices en una Organizacion Inversa Juntos Forman un Directorio. - Indice Denso : Cuando este Incluye cada Valor Clave Posible en un Conjunto Indexado. ( Cuando todos los Valores de las Claves Inversas estan incluidas en el Indice ). Se dice que una Clave Inversa esta Parcialmente Indexada si solo algunos de sus Valores Clave estan Incluidos en el Indice Valor - Clave, los Valores Clave que estan Indexados son aquellos Usados en las Condiciones de Busqueda. Un Indice Parcialmente Indexado se llama "Indice Disperso". ` Para un indice con gran cantidad de elementos Busqueda Secuencial sobre el Indice no es muy Eficiente El Indice se Organiza como Estructura de Varios Niveles.. Grado de Inversion : Se refiere al Nivel de Totalidad de Inversion expresada por el Numero de Campos y lo Extenso de los Valores de los Campos Invertidos Inversion de 0% No se Invirtio Ningun Campo Clave en un Registro . VSAM de IBM y AAM de SIEMMENS crean Indices Inversos Automaticamente si se Declaran Claves Secundarias sobre las Organizaciones Secuencial Indexada y Directa. - Manejo de Indices : Al Insertar, Borrar o Actualizar Records, las Entradas Afectadas de un Indice deben Modificarse por el Sistema, tal que el Indice Proporcione las Trayectorias de Datos Correctos. 1) Inserción Si se va a agregar al archivo el registro que contiene 191 542 DAVID 30 de la figura, en la dirección relativa 8, se debe modificar el índice valor-clave para incorporar los valores insertados en los dos campos clave inversa, AGE y CLASS. Los dos valores de clave inversa del registro nuevo son 30 para AGE y 542 para CLASS. Ya existe la entrada CLASS 542, así que la dirección del registro nuevo, 8, debe incluirse en el campo señalador correspondiente. Sin embargo, AGE 30 debe insertarse como una nueva entrada en el índice. Después de la adición, las entradas afectadas en el índice contendrán: Señalador de registro Señalador de registro Valor clave secundaria _______(antes)_______ ♦ • 542 2, ó, 7 30 ninguno (después)_____ 2, ó, 7, 8 8 2) Eliminación Si se va a eliminar un registro de un archivo, cada señalador dirigido a este registro se debe borrar. Supóngase que el registro 152 542 CAROL 20, con dirección relativa 2 se debe eliminar. Las entradas afectadas del índice serán: Señalador de registro Señalador de registro ._______(antes)_______ 542 2, 6,7 • • 20 1, 2, 5, 6 Valor clave secundaría ______(después)_____ 6,7 • 1, 5, 6 La dirección relativa del registro eliminado, se ha quitado de las entradas antes indexadas. Un registro eliminado se marca como tal, pero no se le remueve físicamente del archivo de datos. Sin embargo, las entradas afectadas en el índice también se deben actualizar porque algunas consultas se responden solamente barriendo el directorio. Por ejemplo, la siguiente petición puede responderse analizando las entradas del índice en la figura 3.5 sin necesidad de accesar al archivo. Contar el número de estudiantes donde CLASS = 541 y AGE = 20. Las entradas importantes de índice son: 541 20 1,4,5 1,2,5,6 Por las entradas del índice, es evidente que sólo los registros 1 y 5 cumplen las condiciones de búsqueda. Por lo tanto, la respuesta a la búsqueda es 2 y eso se descubre sólo a partir de los índices. 3) Actualizaciones Supóngase que "Vera" va a transferirse de la Clase CLASS 541 a la 542. El registro correspondiente en la dirección relativa 1 del archivo, se cambia como sigue: Antes: Después: 150 150 541 542 Vera Vera 20 20 Las entradas de índice afectadas en el índice valor clave son CLASS 541 y 542: Valores clave Señalador (antes) Señalador (después) 541 ._ 1, 4, 5 4, 5 5422, ó, 7 1, 2, 6, 7 No es necesario cambiar ninguna de las entradas en el índice nombre clave. Estableciendo un Indice Una de las complicaciones en la implantación y mantenimiento de un índice inverso es que las entradas del índice son de longitud variable. Por ejemplo, algunas de las entradas pueden contener un solo señalador, en tanto que otras pueden tener gran cantidad de ellos. Si se crea un archivo índice que contenga sólo registros de longitud fija, el tamaño del registro debe ser lo suficientemente grande como para que quepa el máximo número de señaladores en una entrada de índice. Consecuentemente, se desperdiciará mucho espacio de almacenamiento en aquellas entradas que contienen sólo un número pequeño de señaladores. Más aún, las inserciones de nuevos registros pueden requerir la inserción de nuevos señaladores en algunos campos. Es difícil predecir el número máximo de señaladores que se necesitarán en el campo señalador. Ademas, muchos compiladores pueden manejar sólo registros de longitud fija en archivos secuenciales índexados o en archivos dirigidos. En este caso, el índice inverso debe implementarse como registros de longitud fija. Como en otras decisiones de implementación, deben hacerse concesiones entre flexibilidad y espacio desperdiciado. Considérese el ejemplo de la figura. Para convertir el archivo índice en registros de longitud fija, se asignan tres espacios de señalador para cada registro de índice y una bandera para indicar si es que vienen más señaladores en el siguiente registro índice. Como lo muestra la figura siguiente, la entrada clave AGE 20 se ha separado en dos registros. La bandera en el primer registro índice para AGE 20 contiene Y, indicando que siguen más señaladores. La bandera del siguiente registro contiene N que denota el final de señaladores para esa entrada. Para la creación de una organización inversa de archivos se requiere de los siguientes requisitos principales: i) ii) Espacio de almacenamiento extra para índices Mantenimiento de los índices cuando se efectúen las operaciones de inserción, borrado o actualización en el archivo. Un archivo índice por sí solo puede ser tan grande como uno de datos sí involucra un alto grado de inversión. Por tanto, no deben crearse índices para campos de datos que tengan posibilidad de uso en condiciones de búsqueda. Muchos DBMS permiten al usuario escoger campos clavesecundaria para la inversión. La elección de campos por invertir depende de su posible uso en alguna condición de búsqueda. Tabla :Indice valor clave con registros de longitud fija Valores clave secundaria 541 542 543 20 20 21 25 Señalador 1 Señalador 2 1 4 2 6 3 1 2 6 3 7 4 - Señalador 3 5 7 5 - i Bandera N N N Y N N N ÍNDICE PARA UN ARCHIVO INVERTIDO IMPLANTADO CON REGISTROS DE LONGITUD FIJA. (El campo FLAG se usa para indicar si existen más señaladores asociados con el mismo valor clave secundaria contenidos en el siguiente registro indexado .) 541 542 543 541 541 542 642 VERA CAROL FRED GREG JOHN ANN PAUL 20 20 21 25 20 20 21 EJEMPLO DE CONSULTA SOBRE CLAVES MÚLTIPLES, Sólo se accesan las entradas que satisfacen ambas condiciones (esto es, AGE 21 CLASS 542). Si el campo no es inverso pero se usa para búsqueda, eí DBMS buscará secuencíalmente el archivo hasta encontrar el registro deseado. Por lo tanto, antes de invertir un campo, debe compararse la eficiencia en el acceso con el costo extra de crear y mantener íos índices. Consultas sobre claves múltiples en un archivo inverso Una vez creados los índices inversos en un archivo de datos, se pueden efectuar consultas sobre claves múltiples vía sus valores de clave inversa. Supóngase que se va a efectuar la siguiente búsqueda: Display NAME where CLASS = 542 and AGE = 21. Se buscan las entradas de índice para AGE 21 y CLASS 542 para encontrar direcciones de registros que satisfagan ambas condiciones. Se efectúa una operación AND en las dos condiciones de la manera siguiente: Campo AGE 21: CLASS 542: AGE AND CLASS Direcciones 3,7 2,6,7 7 El único registro que satisface ambas condiciones está en la dirección relativa siete. Esta dirección se usa entonces para accesar aí registro objeto. Así, como respuesta a la búsqueda sólo se accesa un registro. En consultas sobre claves múltiples, distintas condiciones son conjuntadas mediante el uso de operadores relaciónales. Si las condiciones de búsqueda se unen con OR en lugar de AND, el resultado final será la unión de todos los registros que satisfagan una o ambas condiciones. Por ejemplo, la siguiente búsqueda se contesta por medio de la unión de los señaladores con las entradas CLASS 542 y AGE 21: 542 or AGE = 21. Display ÑAME where Campo AGE 21: CLASS 542: AGE OR CLASS CLASS - 542 Direcciones 3,7 2,6,7 2,3,6,7 Cuatro registros cumplen con la condición de búsqueda y la respuesta es Carol, Fred, Ann y Paul.