Estructura de los archivos de datos
El almacenamiento de los datos en CDS/ISIS se lleva a cabo en una entidad lógica que comprende dos archivos físicos: el archivo maestro,con la extensión .MST y el archivo de referencias, con la extensión .XRF. Los datos se almacenan en el archivo maestro y el archivo de referencias es un archivo auxiliar que provee un mecanismo para el procesamiento de las operaciones de entrada y salida del archivo maestro.
El archivo de referencias se forma con registros de longitud fija, uno por cada registro del archivo maestro, y contienen la ubicación de cada registro dentro del maestro, permitiendo de esta forma acceso directo a los registros. Además de la dirección, se almacena el estado de cada registro: activo, lógicamente eliminado o físicamente eliminado. También indica si las listas invertidas ya han sido actualizadas con el registro en referencia. Los registros del archivo maestro son de longitud variable y cada uno de ellos se identifica con un número secuencial llamado master file number (MFN) o número de registro en el archivo maestro.
Los registros se almacenan secuencialmente en el archivo maestro y su posición física dentro al interior de éste se guarda en el registro correspondiente del archivo de referencias. Esto es, la dirección y estado del registro 1 del archivo maestro se encuentra almacenada en la posición 1 del archivo de referencias, la dirección y estado del registro 2 del archivo maestro se encuentra almacenada en la posición 2 del archivo de referencias … y así sucesivamente. Los nuevos registros se van agregando al final del archivo maestro, creándose el registro correspondiente en el archivo de referencias.
Como la estructura del maestro mantiene registros de longitud variable, en el proceso de actualización de registros ya existentes se da un caso especial: si se edita un registro ya almacenado el mismo puede no ocupar la misma posición que tenía asignada en la base de datos, dependiendo de las siguientes condiciones:
- Si la versión modificada del registro tiene una longitud mayor que la versión anterior del mismo, entonces el registro se graba de nuevo al final de la base de datos y la versión anterior del registro se marca para indicar que el mismo está deshabilidado. El archivo de referencias se modifica para colocar la nueva posición del registro dentro de la base de datos.
- Si la longitud de la versión modificada del registro no sufre ningún incremento, la lista invertida no ha sido actualizada y es la segunda modificación que ocurre sobre el registro, el registro modificado puede sobreescribir su versión anterior ya que las versiones intermedias generadas entre la primera versión y la última versión del registro no necesitan almacenarse para actualizar la lista invertida por cuanto con las dos versiones extremas basta para mantener actualizados los índices.
Las versiones del registro que han sido objeto de modificación permanecen en la base de datos hasta tanto no se active un proceso de reorganización del archivo maestro.
Todos los productos de la familia CDS/ISIS proveen funciones para las operaciones de entrada y salida de registros, las cuales manejan en forma automática el almacenamiento físico de los archivos maestro y de referencia y sus correspondientes mecanismos de actualización.
Integridad del archivo maestro
Dada la estrecha relación entre el archivo maestro y el archivo de referencias, la integridad de los datos en las estructuras CDS/Isis depende de la integridad de estos dos archivos: si el archivo .xrf se corrompe, el archivo maestro también se verá como corrompido aun cuando los datos están físcamente correctamente almacenados. Existen programas que ayudan a restablecer el archivo .xrf a partir del archivo maestro, para recuperar el acceso a la base de datos. Uno de estos programas es el denominado MKXRF perteneciente a las librerías CISIS distribuídas por Bireme.
La mejor manera de protejer los datos es asegurar el respaldo conjunto de los archivos .mst y .xrf, tener definidos procedimientos de auditoría y saber aplicar las herramientas de recuperación de bases de datos que ya existen para el mantenimiento de estas estructuras.
El registro de Control del Archivo Maestro
Todo archivo maestro posee un registro con MFN 0 denominado Registro de control del archivo maestro. Siempre se almacena al inicio del archivo, posee longitud fija y no genera entrada alguna en el archivo de referencias. Almacena la siguiente información
- Número de archivo maestro (siempre cero)
- Próximo Mfn a ser asignado
- Dirección del próximo registro disponible: apunta al inicio del próximo bloque de 512 bytes disponible
- Dirección del próximo registro del archivo maestro (apunta al desplazamiento dentro del próximo bloque disponible)
- Tipo de archivo maestro (siempre es cero)
- Número de aplicaciones que han solicitado el bloqueo de entrada de datos
- Indicador de bloqueo de lectura de la base de datos
Estructura de los registros del archivo maestro
En los registros del archivo maestro la información se organiza en campos de longitud variable y algunos son opcionales, esto es, no siempre están presentes en todos los registros. La estructura del registro del archivo maestro posee tres secciones:
- Leader
- Directorio
- Area de Datos
Los datos son almacenados en el área de datos uno a continuación del otro, sin ningún separador entre ellos. La sección de directorio contiene entradas de longitud fija las cuales almacenan apuntadores hacia cada campo contenido en el área de datos. El Leader también posee longitud fija y contiene información acerca de las características generales del registro en sí mismo, tales como: número de archivo maestro (MFN), longitud de registro, el número de campos almacenados, etc. En forma esquemática la estructura de un registro es la siguiente
El Leader
La estructura de datos del leader ocupa 18 bytes con la siguiente información:
- Mfn del registro
- Longitud del registro
- Apuntador hacia la versión anterior del registro si éste ha sido modificado (número del bloque en el archivo maestro)
- Apuntador hacia la versión anterior del registro si éste ha sido modificado (desplazamiento dentro del bloque)
- Posición de inico del area de datos, donde se encuentran los campos del registro
- Número de campos contenidos en el registro (representa el número de entradas presentes en la sección Directorio
- Estado del registro (0 = registro activo, 1 = registro marcado para eliminación)
El Directorio
La sección del directorio del registro posee una entrada por cada uno de los campos presentes en el registro. Cuando un campo, tal como el nombre del autor, ocurre más de una vez en el registro (campo repetible), existirá una entrada en el directorio para cada ocurrencia del campo, Igualmente, en el área de datos, existirán tantos campos como ocurrencias posea el campo repetible. El orden como se presentan estas ocurrencias corresponde con el orden como se ingresa el campo al momento de captura de información.
Cada entrada del directorio posee un máximo de 6 bytes y tiene la siguiente estructura:
- Tag (etiqueta) del campo
- Posición de inicio del campo dentro del registro (se expresa en término de desplezamiento respecto al inicio del area de datos
- Longitud del campo
Las entradas en el directorio se almacenan en el mismo orden como fueron ingresados los campos.
El área de datos
A continuación del directorio del registro se encuentra el área de datos con la información ingresada en el registro.
Una base de datos ISIS provee tres modalidades para almacenar la información en los campos:
- Campos elementales
- Campos repetibles
- Campos con sub-campos
Campos elementales son aquellos que poseen una sola instancia (ocurrencia) en el registro, ejm: la fecha de nacimiento de una persona, el estado civil, etc.
Campos repetible son aquellos que pueden poseer más de una instancia en el registro, ejm: los autores de una publicación, las materias de las cuales trata, etc.
Los campos con subcampos permiten estructurar la información al interior del campo a efectos de proveer el acceso a cada una de los elementos de datos que lo componen. Ejemplo: identificar dentro del nombre del autor, la porción correspondiente al nombre y la porción correspondiente al apellido (subcampo nombre y subcampo apellido). Cada subcampo estará precedido por un delimitador consistente en un indicador de subcampo (el carácter ^) y un identificador de subcampo (una letra o un número)
Ejemplo de un registro en formato Marc almacenado bajo una estructura CDS/Isis. El mismo ha sido obtenido a través de una catalogación directa desde la Biblioteca del Congreso (LC). El valor al inicio del registro, mostrado entre <…>, corresponde a la etiqueta del campo.
Archivos de índices Los archivos de datos (mst y xrf) solo permiten la recuperación de registros en forma secuencial por número MFN. Como se requieren otras formas de acceso la información, por ejemplo, autores, países, materias, etc., es necesario contar con una estructura adicional que permita, dada una palabra clave o una fórmula de búsqueda, ubicar los registros que contienen los términos solicitados. Esta estructura es lo que bajo Cds/isis se denomina Listas Invertidas.
El archivo invertido de las estructuras CDS/Isis está formado en realidad por 6 archivos físicos, cinco de los cuales contienen los términos de búsqueda del diccionario (organizados como un árbol B*) y el sexto contiene la lista de apuntadores asociadas a cada término.
A fin de optimizar el almacenamiento en disco, se mantienen dos árboles B* por separado: uno para los términos de hasta 30 caracteres (almacenados en los archivos .N=01 y .L01) y otro para los términos de más de 30 y hasta 60 caracteres(almacenados en los archivos .N02 y .L02). El archivo .CNT contiene campos de control para ambos árboles B). En cada archivo del árbol B el archivo .N0x contiene los nodos del árbol y el archivo .L0x contiene las hojas. Los registros de las hojas apuntan al lugar donde se encuentran los apuntadores que contienen la información para localizar los registros (postings) en la base de datos. Este archivo se identifica con la extensión .IFP . La relación física entre estos archivos puede representarse de la siguiente manera:
centro
La relación física en los seis archivos que forman la lista invertida está dada por un apuntador, el cual representa la posición relativa del registro al que se está seńalando. Una dirección relativa es el número ordinal del registro en un determinado archivo (por ejemplo, el primer registro es el registro 1, el segundo es el registro 2, etc.). El archivo CNT apunta al archivo .N0x; el archivo .N0x apunta al L0x y el archivo .L0x apunta al .IFP. Dado que el .IFP es un archivo cuyos registros no tienen necesariamente la misma longitud, el apuntador de .L0x a .IFP tiene dos componentes: el número del bloque y el desplazamiento dentro del bloque, cada uno expresado como un entero.
Formato del archivo .IFP
El archivo .IFP contiene la lista de apuntadores (postings) para cada término del diccionario. Cada apuntador consta de 4 elementos para identificar el registro desde el cual se genera la clave:
MFN Mfn del registro TAG Identificador del campo OCC Número de ocurrencia del campo desde el cual se extrae la clave CNT Número secuencial del término en el campo
Cada término tendrá tantos apuntadores como campos lo hayan referido en la base de datos. La lista de apuntadores es almacenada en secuencia ascendente de MFN/TAG/OCC/CNT. Cuando se carga la lista invertida por un proceso de Generación completa cada lista está formada por uno o más segmentos adyacentes. Conforme se realizan actualizaciones, pueden irse creando segmentos adicionales cuando sea necesario agregar nuevos apuntadores. En este caso se crea un nuevo segmento vinculándolo a los otros segmentos de modo que se mantenga la secuencia MFN/TAG/OCC/SEQ.
Cada vez que ocurre una división de este tipo, los apuntadores del segmento donde debía insertarse el nuevo apuntador, son distribuídos equitativamente entre este segmento y el nuevo recién creado. Los nuevos segmentos son siempre creados al final del archivo.
Las claves de generan mediante según las especificaciones contenidas en un llamado Tabla de Extracción de Campos (.fst) el cual contiene especifica cómo se va a generar, para cada campo, los puntos de acceso a la base de datos.Existen 8 técnicas de indización diferentes para la obtención de las claves, de forma tal de satisfacer todos los requerimientos de recuperación de información a aplicar sobre una base de datos.
Las listas invertidas se actualizan normalmente en el procedimiento de ingreso de los datos. Sin embargo, existen situaciones de obligan a regenerar estos archivos (corrupción de índices, carga de grandes lotes de información en la base de datos, cambios en las estrategias de indización). Por ello,es necesario activar procesos especiales para el mantenimiento de los índices, para procesar toda la base de datos y construir nuevamente las listas invertidas.Este proceso se denomina Generación completa de la lista invertida y en forma esquemática consta de los siguientes pasos:
- Generación del archivo de claves sin clasificar
En este primer paso se lee cada uno de los registros de la base de datos y se aplica sobre cada campo las técnicas de indización especificadas en la Tabla de Extracción de Campo (.fst). Como resultado de este proceso de generan dos archivos: .LN1 con los términos menores a iguales a 30 caracteres; y .LN2 con los términos mayores a 30 caracteres. Ambos archivos (.LN1 y .LN2) son archivos del tipo TXT por lo que pueden ser visualizado por un editor de textos.
Ejemplo del archivo .LN1 generado para los Mfn’s 1-5 de la base de datos CDS
1 24 1 1 TECHNIQUES
1 24 1 8 INDIVIDUAL
1 24 1 9 PLANTS
2 70 1 1 BOSIAN, G.
2 24 1 2 CONTROLLED
2 24 1 3 CLIMATE
2 24 1 6 PLANT
2 24 1 7 CHAMBER
2 24 1 10 INFLUENCE
3 70 1 1 BOSIAN, G.
3 24 1 1 CONTROL
3 24 1 3 CONDITIONS
3 24 1 6 PLANT
3 24 1 7 CHAMBER
3 24 1 8 FULLY
3 24 1 9 AUTOMATIC
3 24 1 10 REGULATION
3 24 1 12 WIND
3 24 1 13 VELOCITY
3 24 1 16 RELATIVE
3 24 1 17 HUMIDITY
3 24 1 19 CONFORM
3 24 1 22 FIELD
3 24 1 23 CONDITIONS
3 69 1 2 MOISTURE
3 69 1 4 WIND
3 69 1 6 ECOSYSTEMS
4 70 1 2 WENT, F.W.
4 24 1 2 ELECTRIC4 2
4 1 3 HYGROMETER
4 24 1 4 APPARATUS
4 24 1 6 MEASURING
4 24 1 7 WATER
4 24 1 8 VAPOUR
4 24 1 9 LOSS
4 24 1 11 PLANTS
4 24 1 14 FIELD
4 69 1 3 MOISTURE
5 70 1 1 GALE, J.
5 24 1 1 ANTI
5 24 1 5 RESEARCH
5 24 1 6 TOOL
5 24 1 9 STUDY
5 24 1 12 EFFECTS
5 24 1 14 WATER
5 24 1 15 STRESS
5 24 1 17 PLANT
5 24 1 18 BEHAVIOUR
Ejemplo del archivo .LN2 generado para los Mfn’s 1-5 de la base de datos CDS
1 70 1 1 MAGALHAES, A.C.
1 70 1 2 FRANCO, C.M.
1 24 1 4 MEASUREMENT
1 24 1 6 TRANSPIRATION
1 69 1 1 PLANT PHYSIOLOGY
1 69 1 2 PLANT TRANSPIRATION
1 69 1 3 MEASUREMENT AND INSTRUMENTS
2 24 1 12 ASSIMILATION
2 24 1 14 TRANSPIRATION
2 69 1 1 PLANT EVAPOTRANSPIRATION
3 24 1 14 TEMPERATURE
3 24 1 21 MICROCLIMATIC
3 69 1 1 PLANT PHYSIOLOGY
3 69 1 3 TEMPERATURE
3 69 1 5 MEASUREMENT AND INSTRUMENTS
4 70 1 1 GRIEVE, B.J.
4 69 1 1 HYGROMETERS
4 69 1 2 PLANT TRANSPIRATION
4 69 1 4 WATER BALANCE
5 70 1 2 POLJAKOFF-MAYBER, A.
5 24 1 2 TRANSPIRANTS
5 69 1 1 PLANT PHYSIOLOGY
5 69 1 2 SOIL MOISTURE
5 69 1 3 PLANT TRANSPIRATION
5 69 1 4 EVAPOTRANSPIRATION
5 69 1 5 MEASUREMENT AND INSTRUMENTS
Las primeras cuatro columnas contienen la información que dará orígen al apuntador del archivo .IFP. Se leen los valores de: MFN TAG OCC SEQ. La salida está ordenada por MFN ya que proviene de la lectura secuencial del archivo maestro.
- Clasificación de las claves
Como la lista invertida se presenta clasificada por órden alfabético del claves, el segundo paso consiste en el ordenamiento de las claves alfabéticamente. Como resultado se obtienen los archivos .LK1 y .LK2 los cuales contiene las mismas claves que .LN1 y .LN2, solo que ordenadas ascendentemente por la clave.
Ejemplo del archivo .Lk1 generado para los Mfn’s 1-5 de la base de datos CDS
5 24 1 1 ANTI
4 24 1 4 APPARATUS
3 24 1 9 AUTOMATIC
5 24 1 18 BEHAVIOUR
2 70 1 1 BOSIAN, G.
3 70 1 1 BOSIAN, G.
2 24 1 7 CHAMBER
3 24 1 7 CHAMBER
2 24 1 3 CLIMATE
3 24 1 3 CONDITIONS
3 24 1 23 CONDITIONS
3 24 1 19 CONFORM
3 24 1 1 CONTROL
2 24 1 2 CONTROLLED
3 69 1 6 ECOSYSTEMS
5 24 1 12 EFFECTS
4 24 1 2 ELECTRIC
3 24 1 22 FIELD
4 24 1 14 FIELD
3 24 1 8 FULLY
5 70 1 1 GALE, J.
3 24 1 17 HUMIDITY
4 24 1 3 HYGROMETER
1 24 1 8 INDIVIDUAL
2 24 1 10 INFLUENCE
4 24 1 9 LOSS
4 24 1 6 MEASURING
3 69 1 2 MOISTURE
4 69 1 3 MOISTURE
2 24 1 6 PLANT
3 24 1 6 PLANT
5 24 1 17 PLANT
1 24 1 9 PLANTS
4 24 1 11 PLANTS
3 24 1 10 REGULATION
3 24 1 16 RELATIVE
5 24 1 5 RESEARCH
5 24 1 15 STRESS
5 24 1 9 STUDY
1 24 1 1 TECHNIQUES
5 24 1 6 TOOL
4 24 1 8 VAPOUR
3 24 1 13 VELOCITY
4 24 1 7 WATER
5 24 1 14 WATER
4 70 1 2 WENT, F.W.
3 24 1 12 WIND
3 69 1 4 WIND
Ejemplo del archivo .LK2 generado para los Mfn’s 1-5 de la base de datos CDS
2 24 1 12 ASSIMILATION
5 69 1 4 EVAPOTRANSPIRATION
1 70 1 2 FRANCO, C.M.
4 70 1 1 GRIEVE, B.J.
4 69 1 1 HYGROMETERS
1 70 1 1 MAGALHAES, A.C.
1 24 1 4 MEASUREMENT
1 69 1 3 MEASUREMENT AND INSTRUMENTS
3 69 1 5 MEASUREMENT AND INSTRUMENTS
5 69 1 5 MEASUREMENT AND INSTRUMENTS
3 24 1 21 MICROCLIMATIC
2 69 1 1 PLANT EVAPOTRANSPIRATION
1 69 1 1 PLANT PHYSIOLOGY
3 69 1 1 PLANT PHYSIOLOGY
5 69 1 1 PLANT PHYSIOLOGY
1 69 1 2 PLANT TRANSPIRATION
4 69 1 2 PLANT TRANSPIRATION
5 69 1 3 PLANT TRANSPIRATION
5 70 1 2 POLJAKOFF-MAYBER, A.
5 69 1 2 SOIL MOISTURE
3 24 1 14 TEMPERATURE
3 69 1 3 TEMPERATURE
5 24 1 2 TRANSPIRANTS
1 24 1 6 TRANSPIRATION
2 24 1 14 TRANSPIRATION
4 69 1 4 WATER BALANCE
Las primeras cuatro columnas contienen la información que dará orígen al apuntador del archivo .IFP. Se leen los valores de: MFN TAG OCC SEQ. La salida está ordenada por CLAVE.
Nota: Estos ejemplos y gráficos fueron producidos con la versión 10-30 del CISIS que soporta claves cortas de hasta 10 caracteres y claves largas de hasta 30 caracteres. La versión estándard de ABCD trabaja con el CISIS 16-60 que trabaja claves cortas de hasta 16 caracteres y claves largas de hasta 60 caracteres (ver: http://wiki.bireme.org/es/index.php/CISIS)
Notese el manejo del campos repetibles, ejm. el campo 650, donde cada ocurrencia se mantiene en un campo por separado pero identificado con la misma etiqueta. El arte del trabajo con las herramientas CDS/Isis reside en un buen manejo del lenguaje de formateo, para extraer y manejar la información almacenada bajo estas estructuras.