Acceso concurrente a bases de datos

From ABCD Wiki
Revision as of 02:08, 5 January 2020 by Guilda (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Un sistema que permita a varias estaciones de trabajo modificar en forma simultánea una misma base de datos, debe tomar precauciones para evitar operaciones concurrentes sobre un mismo registro. Esto es, si un usuario de una estación de trabajo solicita el registro Mfn 3 para ser modificado, el sistema debe advertir a otro usuario que solicite el mismo registro 3, que está siendo actualizado por otra estación de trabajo.

Cuando a un operador se le concede la edición de un registro, el mismo se bloquea para que otro usuario no pueda actualizarlo en forma simultánea. Cuando este registro es actualizado o se cancela su edición (botones guardar o cancelar de la barra de herramientas), el registro se libera quedando disponible para el resto de los operadores

centro

Si el ciclo de actualización no se cumple, esto es, el registro no se escribe ni se cancela la actualización (botones guardar o cancelar de la barra de herramientas), el registro permanece bloqueado por un tiempo (4 horas) para el resto de los usuarios. Los registros se bloquean agregando en el campo 1101 la información del operador, fecha del bloqueo y número de segundos que el registros debe permanecer bloqueado, de acuerdo al siguiente formato:

          ^iabcd^t201004231742^x1272060769

Esto significa que cuando se hace clic sobre el botón editar, se almacena el campo 1101 en el registro solicitado y cuando se cancela o actualiza el registros el campo 1101 es borrado. ABCD reconoce si un registro está bloqueado cuando el campo 1101 está presente. Existen tres formas para forzar la eliminación del bloqueo:

  1. Si el mismo operador que bloqueó el registro, solicita de nuevo su edición, entonces, se le concede el derecho a actualizar el registro, pudiendo actualizar o cancelar la edición para liberar el registro
  2. Otra forma de desbloquear los registros es utilizando la opción "Desbloquear registros" contenido en el menú Utilitarios de la barra de herramientas. Solo los operadores con la permisologia adecuada tienen acceso a esta opción.
  3. También puede desbloquear los registros de una base de datos en forma rápida y sencilla utilizando el utilitario retag de las librerías CISIS

Desbloqueo de registros con ABCD

El menú de utilitarios de la barra de herramientas del módulo de catalogacion presenta dos opciones relacionadas con el bloqueo/desbloqueo de registros:

  • Listar registros bloqueados
Presenta la lista de los registros que tienen información de bloqueo
  • Desbloquear registros
Elimina el campo con la información del bloqueo

Ambos procesos pueden ejecutar por lotes de MFN pues, si la base de datos tiene muchos registros o se coloca un rango muy grande, se corre con el riesgo de cancelación del proceso por parte del servidor.

Si tiene acceso a la línea de comandos y la base de datos tiene muchos registros, se recomienda utilizar el utilitario retag de las librerías CISIS.

Nota importante: El campo 1101 se agrega al registro cuando se hace clic sobre el botón editar. Si se exporta una base de datos con registros bloqueados causará la adición del campo 110 en el archivo ISO ya que los tags se exportan siempre con tres dígitos. Se recomienda ampliamente desbloquear base de datos y registros antes de exportar, para evitar alteraciones en el contenido del archivo ISO

Acceso concurrente a las listas invertidas

En cuanto al ingreso multiusuario, el problema más común reportado por los usuarios de ABCD tiene que ver con el acceso concurrente a las listas invertidas (archivos invertidos o archivos de índice) ya que esta es una estructura compleja candidata a corromperse si dos más procesos manipulan el mismo árbol de términos. Las claves de generan mediante según las especificaciones contenidas en la llamada Tabla de Extracción de Campos (FST) la cual indica cómo se van a generar, para cada campo, los puntos de acceso a la base de datos. Existen 8 técnicas de indizacion 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 tabla de extracción de campos que utiliza ABCD es generalmente muy compleja por cuanto en la misma se resuelven las búsquedas del interfaz administrativo, las búsqueda del IAH y las listas de autoridades virtuales. El proceso de indización cuando se actualiza o elimina un registro toma cierto tiempo por cuanto:#Se aplica la fst sobre la copia anterior del registro para obtener la lista de claves ya existentes

  1. Estas claves se localizan en la lista invertida para proceder a la eliminación de los postings correspondientes
  2. Se aplica la fst sobre la nueva versión del registro para obtener la nueva lista de claves
  3. Estas claves se insertan en la lista invertida para##Agregar un nuevo posting en el archivo .ifp, si la clave ya existe
    1. Agregar una nueva clave en la estructura de la lista invertida, si la clave no existe. Esta nueva clave puede causar otras actualizaciones en la lista invertida, para mantener el árbol de búsqueda balanceado.

Entonces, este proceso será tanto más complicado como claves se generen a través de la FST, lo cual puede causar problemas al momento de actualizar los registros. Se pueden tomar algunas medidas para intentar minimizar este problema, como son:

  1. Mantener dos FST´s: una reducida que se aplique en el ingreso de los datos, y otra, ampliada que se utilice para la publicación de la base de datos. Si la base de datos que se publica a través del IAH es una copia de la base de datos utilizada en el proceso de catalogacion, refrescada cada cierto tiempo, entonces, el proceso de refrescamiento podría incluir la indización de los registros con la fst ampliada
  2. No usar listas de autoridades virtuales sino definir verdaderos archivos de autoridades
  3. En lo posible, cuando el ingreso de los datos así lo justifique, usar archivos temporales. Por ejemplo, si se va a registrar toda un donación o un grupo grande de títulos, definir una base de datos temporal y realizar el ingreso sobre la misma. De esta manera se podrá tener un mejor control de calidad sobre los datos ingresados. Además, si se usan listas de autoridades virtuales, la base de datos temporal podrá estar conectada con los archivos invertidos de la base de datos permanente.
  4. Revisar exhaustivamente la FST y eliminar aquellas líneas que no se usen en la recuperación de los datos