domingo, 18 de noviembre de 2012

Conceptos básicos de confiabilidad

Desde el punto de vista de confiabilidad, es conveniente definir a un
estado interno como la unión de todos los estado externos de las
componentes que constituyen el sistema. Así, el cambio de estado
interno se da como respuesta a los estímulos del medio ambiente.

Conceptos básicos de un sistema
El comportamiento del sistema al responder a cualquier estímulo del
medio ambiente necesita establecerse por medio de una especificación,
la cual indica el comportamiento válido de cada estado del sistema. Su
especificación es no sólo necesaria para un buen diseño sino también es
esencial para definir los siguientes conceptos de confiabilidad.


Cualquier desviación de un sistema del comportamiento descrito en su
especificación se considera como una falla. Cada falla necesita ser
rastreada hasta su causa. En un sistema confiable los cambios van de
estados válidos a estados válidos en un sistema no confiable, es posible que el sistema caiga en un estado interno el cual no obedece a su especificación; a este tipo de estados se les conoce como estados erróneos. Transiciones a partir de este estado pueden causar una falla.

La parte del estado interno que es incorrecta se le conoce como error del
sistema. Cualquier error en los estados internos de las componentes del
sistema se le conoce como una falta en el sistema.


Las faltas del sistema se pueden clasificar como severas (hardware) y no
severas (software). Las faltas severas casi siempre son de tipo permanente y
conducen a fallas del sistema severas. Las faltas no severas por lo general son transitorias o intermitentes. Ellas inducir fallas del sistema no severas las cuales representan, por lo general, el 90 % de todas las fallas.



miércoles, 14 de noviembre de 2012

Disciplinas del Interbloqueo


Interbloqueo: Un esquema para resolver el interbloque en su detención.

Prevención.-

Las técnicas de interbloqueo utilizan el concepto de marca de tiempo de transacción existen dos esquemas que evitan el interbloqueo.


Detención.-

Existen diversos algoritmos para ello en la detención de ciclos en el grafo de esperas, entre ellos:

Algoritmo 1.-
Comprueba la existencia de ciclos mediante la eliminación de nodos terminales.

Algoritmo 
2
.-
Comprueba posibles ciclos desde la ultima transacción bloqueada y marcando los nodos por lo que pasa. Si pasa dos veces por el mismo nodo a detectado un ciclo.



Recuperación.-

El objetivo de esta parte de la asignación es conocer y entender las distintas fallas que pueden ocurrir en un BMS y como es posible restaurar el sistema después de dichas fallas este tema se llama recuperación de fallas.
La recuperación de fallas esta internamente ligado Al procesamiento de las transacciones tiene la cualidad de ser anatómica a pesar de que puede estar compuesto de varias operaciones de atomicidad se controla como llegada al commit. Si una transacción no sufrió ningún problema y se pudo ejecutar completa, entonces el DBMS debe de “comprometerse” hacer permanentes los cambios que la transacción hizo sobre la base de datos y a que esta debido quedar en un estado de conciencia. 



lunes, 12 de noviembre de 2012


Control de concurrencia

La concurrencia en las base de datos es de suprema importancia en los sistemas de información ya que evita errores en el momento de ejecutar las diferentes transacciones. En si la concurrencia es la propiedad de los sistemas que permiten que múltiples procesos sean ejecutados al mismo tiempo y que potencialmente puedan interactuan entre si.

BLOQUEOS COMPARTIDOS 
Los bloqueos compartidos permiten que varias transacciones simultáneas lean (SELECT) un recurso en situaciones de control de simultaneidad pesimista.
Ninguna otra transacción podrá modificar los datos mientras el bloqueo compartido exista en el recurso.Los bloqueos compartidos en un recurso se liberan tan pronto como finaliza la operación de lectura, amenos que se haya establecido el nivel de aislamiento de la transacción como REPEATABLE READ o más alto, o bien se utilice una sugerencia de bloqueo para mantener los bloqueos compartidos durante la transacción.

BLOQUEOS EXCLUSIVOS 
Los bloqueos exclusivos evitan que transacciones simultáneas tengan acceso a un recurso. Al utilizar un bloqueo exclusivo, el resto de las transacciones no pueden modificar los datos; las operaciones de lectura sólo se pueden realizar si se utiliza la sugerencia NOLOCK o el nivel de aislamiento de lectura no confirmada.Las instrucciones para modificar datos, como INSERT, UPDATE y DELETE combinan las operaciones de modificación con las de lectura. En primer lugar, la instrucción lleva a cabo operaciones de lectura para adquirir los datos antes de proceder a ejecutar las operaciones de modificación necesarias. Por tanto, las instrucciones de modificación de datos suelen solicitar bloqueos compartidos y exclusivos. Por ejemplo, una instrucción UPDATE puede modificar las filas de una tabla a partir de una combinación con otra tabla. En este caso, la instrucción UPDATE solicita bloqueos compartidos para la filas leídas en la tabla de combinación, además de bloqueos exclusivos para las filas actualizadas.

MARCAS DE TIEMPO
•En lugar de determinar el orden entre las transacciones en conflicto en función del momento del acceso a los elementos, determinan por adelantado una ordenación de las transacciones.
•El interbloqueo es imposible.
•Una marca de tiempo es un identificador único asociado a cada transacción.
•Las actualizaciones físicas se retrasan hasta la confirmación de las transacciones. No se puede actualizar ningún.
•Protocolos:
 –Wait-die: que fuerza a una transacción a esperar en caso de que entre en conflicto con otra transacción cuya marca de tiempo sea mas reciente, o a morir (abortar y reiniciar) si la transacción que se esta ejecutando es más antigua.
 Wound-wait: que permite a una transacción matar a otra que posea una marca de tiempo más reciente, o que fuerza a la transacción peticionaria a esperar.

•Marcas de tiempo multiversión
 –Varias transacciones leen y escriben diferentes versiones del mismo dato siempre que cada transacción sea un conjunto consistente de versiones de todos los datos a los que accede.

Control de concurrencia optimista
Los algoritmos de control de concurrencia discutidos antes son por naturaleza pesimistas. En otras palabras, ellos asumen que los conflictos entre transacciones son muy frecuentes y no permiten el acceso a un dato si existe una transacción conflictiva que accesa el mismo dato. Así, la ejecución de cualquier operación de una transacción sigue la secuencia de fases: validación (V), lectura (R), cómputo(C) y escritura (W) . Los algoritmos optimistas, por otra parte, retrasan la fase de validación justo antes de la fase de escritura . De esta manera, una operación sometida a un despachador optimista nunca es retrasada.Las operaciones de lectura, cómputo y escrita de cada transacción se procesan libremente sin actualizar la base de datos corriente. Cada transacción inicialmente hace sus cambios en copias locales de los datos. La fase de validación consiste en verificar si esas actualizaciones conservan la consistencia de la base de datos. Si la respuesta es positiva, los cambios se hacen globales (escritos en la base de datos corriente). De otra manera, la transacción es abortada y tiene que reiniciar.



sábado, 10 de noviembre de 2012

MANEJO DE TRANSACCIONES

CONCEPTOS DE TRANSACCIONES

A) Una transacción en un sistema de gestión de bases de datos (SGBD), es un conjunto de ordenes que se ejecutan formando una unidad de trabajo, es decir, una forma indivisible o atómica.

B) Transacción consiste en lograr hacer cualquier tipo de operación en una base de datos, basándonos en consultas desde las mas simples hasta las de mayor grado de complejidad.

C) Transacción se entiende en el ámbito de las bases de datos en lograr hacer acciones sobre las bases de datos deseadas, logrando operaciones de ingreso, borrado, actualización y visualizar.

CONTROL DE CONCURRENCIA
Un algoritmo de control de concurrencia asegura que las transacciones se ejecuten automáticamente controlando la intercalación de transacciones concurrentes, para dar la ilusión de que las transacciones se ejecutan serialmente, una después de la otra sin ninguna intercalación. 

CONFIABILIDAD

Se de be de tener la certeza de que un sistema en linea no puede fallar dado que si existe algún error en nuestro algoritmo ocasionaría no solo que se estropeara una operación  pueden significar estos errores perdidas económicas bastante grandes, para que nuestro sistema de bases de datos sea confiable se tienen que tener probadas todas las posibles operaciones que se pueden realizar en el para simular una transacción de un cliente en un tiempo determinado.

EJEMPLO:

Considere una agencia de reservaciones para líneas aéreas con las siguientes relaciones:

FLIGHT( FNO, DATE, SRC, DEST, STSOLD, CAP )
CUST( CNAME, ADDR, BAL )
FC( FNO, DATE, CNAME, SPECIAL )

Una versión simplificada de una reservación típica puede ser implementada mediante la siguiente transacción:
Begin_transaction Reservación

begin

input( flight_no, date, customer_name );
EXEC SQL UPDATE FLIGHT

SET STSOLD = STSOLD + 1
WHERE FNO = flight_no
AND DATE = date

EXEC SQL INSERT

INTO FC( FNAME, DATE, CNAME, SPECIAL )
VALUES (flight_no, date, customer_name, null )
output("reservación terminada");
end.
QUE ES EL ÁLGEBRA RELACIONAL

El álgebra relacional consiste de algunas simples pero poderosas maneras de construir nuevas relaciones a partir de otras. Si pensamos que las relaciones iniciales son los datos almacenados entonces las nuevas relaciones se pueden ver como respuestas a algunas consultas deseadas.
Consta de un conjunto de operaciones que toman como entrada una o dos relaciones y 
producen como resultado una nueva relación sin cambiar las relaciones originales, por lo 
tanto, es posible anidar y combinar operadores.
Tanto las relaciones que actúan como operando como la relación resultante a la salida pueden 
emplearse como entradas para otra operación.



Álgebra relacional a la optimización de consultas en Mysql

MySQL registra las consultas de tipo SELECT y su resultado. Como lo normal es que se acceda a la base de datos a través de un aplicación, las consultas repetidas son muy frecuentes (listas de poblaciones, de códigos, de nombres....etc ).
naturalmente las consultas de modificación de datos (INSERT, DELETE, UPDATE....) invalidan las consultas afectadas de la caché y provocan la eliminación de estas de la caché.

Como se representa la proyección y la selección   relacionado con las consultas  a  bases de datos

Proyección
La operación de proyección permite quitar ciertos atributos de la relación.
Esta operación es unaria, copiando su relación base dada como argumento y quitando ciertas 
columnas.
La proyección se señala con la letra griega pi mayúscula (Π). Como subíndice de Π se coloca 
una lista de todos los atributos que se desea aparezcan en el resultado.
La relación argumento se escribe después de Π entre paréntesis.

Selección
Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset.

CONSULTAS DE SELECCIÓN 

Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros es modificable.

La sintaxis básica de una consulta de selección es la siguiente:
SELECT Campos FROM Tabla; En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos.
División
Operación del álgebra relacional que crea una nueva relación, seleccionando las filas en una relación que se corresponden con todas las filas en otra relación. Se asume que A, B y C son relaciones y se desea dividir B por C, dando A como resultado.
Las columnas de C deben ser un subconjunto de las columnas de B. Las columnas de A son todas y sólo aquellas columnas de B que no son columnas de C.
Una fila se encuentra en A sí y sólo si está asociada en B con cada fila de C.

EJEMPLOS:




domingo, 4 de noviembre de 2012

Álgebra Relacional

El álgebra relacional se usa para la optimización de consultas y consultas distribuidas.
tambien define un conjunto de operaciones y formulas para manipular tablas, estos conjuntos son relacionales de base de datos.

Ejemplo:
EMP_TBL={Apellido,Nombre,ID_EMP}
tenemos la relación EMP_TBL
Contiene los atributos:
1.- Apellido
2.- Nombre
3.-ID_EMP
los valores de cada atributo determinar su dominio
relación es equivalente a:
1.-Archivo plano de dos dimensiones
2.-Tabla en base de datos relacionales 
Contiene 4-tuplas
Columnas son atributos
las filas son tuplas

Ejemplo













Símbolos
„ Π: Project  una columna de la relación  
„ σ: Select una fila o tupla de la relación
„ <>: natural JOIN entre dos relaciones
„ <: semi JOIN entre dos relaciones
„ θ: theta JOIN entre dos relaciones
„ ∪: unión entre dos relaciones
„ ∩: intersección entre dos relaciones
„ −: diferencia entre dos relaciones
„ X: producto Cartesiano entre dos relaciones





PARSING


Parsing: Se construye un parse tree de la consulta.

Función que se llama DATA PARSING, la cual consiste en que se puede editar la salida de los datos que se envían.


Análisis sintáctico y parse trees.

Tarea del parser: tomar texto de consulta SQL
convertirla en un parse tree cuyos nodos son:
• Átomos: elementos lexicográficos (keywords, nombre de atributo, constante, operador como +o <)
• Categorías sintáctica: Nombres de familias de subpartes de la consulta. <SFW> representa
consulta de la forma <Select-From-Where>< Condición > expresan que es una condición.
Si un nodo es un átomo entonces no tiene hijos.

• Si el nodo es una categoría sintáctica, sus hijos se descubren por medio de una de las
reglas de la gramática para el lenguaje.







Heurísticas 

En computación  heuristico se refiere a un proceso de encontrar la solución de manera empírica o sea haciendo una prueba analizando los resultados y formulando nuevas pruebas a base de los errores anteriores.
En informática, algunos motores de base de datos utilizan un método heuristico en los índices de búsqueda para encontrar el atributo de la condición porque usan las estadísticas de ocurrencia de los atributos que forman el índice.

Acceso concurrente a bases de datos

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

Como se crea un árbol de consulta 


Es una representación interna de una instrucción Sql donde se almacenan de modo separado las partes menores que la componen. Estos árboles de consultas son visibles cuando se arranca el motor de Postgres con nivel de debug 4 y se teclea queries en la  interface de usuario interactivo. Las acciones de las reglas almacenadas en el catalogo del sistema  pg_rewrite están almacenadas también como árboles de consultas.


Las partes de un árbol de consulta son:
•El tipo de comando (commandtype). Este es un valor sencillo que nos dice el comando que produjo el árbol de traducción (select, insert, update, delete).
La tabla de rango (rangetable). La tabla de rango es una lista de las relaciones que se utilizan en la consulta. En una instrucción Select, son las relaciones dadas tras la palabra clave from. Toda entrada en la tabla del rango identifica una tabla ovista, y dice el nombre por el que se identifica en las otras partes de la consulta. En un árbol de consulta, las entradas de la tabla de rango se indican por un índice en lugar de por su nombre como estarían en una instrucción Sql. Esto puede ocurrir cuando se han mezclado las tablas de rangos de reglas.