FUNDAMENTOS DE BASE DE DATOS



ALUMNO: JEAN MICHAEL PÁYE ZUNI


DOCENTE: ALDO ZANABRIA


AÑO: 2017

1. SEMANTICA: 

       El término semántica se refiere a los aspectos del significadosentido o interpretación de signos lingüísticos como símbolos, palabras, expresiones o representaciones formales. En principio las expresiones del lenguaje formal o de una lengua natural admiten algún tipo de correspondencia con situaciones o conjuntos de cosas que se encuentran en el mundo físico o abstracto que puede ser descrito por dicho medio de expresión.

-SEMANTICA EN LA INFORMATICA: 

       Define el significado de las construcciones sintácticas del lenguaje y de las expresiones y tipos de datos utilizadas.

Ejemplo:

  if (a>b) max := a else max := b;

  el significado corresponde a la construcción algorítmica Si … entonces … sino … . Además la          expresión después de If debe tener un resultado lógico (verdad o falso.)

2. EJEMPLOS DE CONCURRENCIA:




  • Los tres problemas son:
         El problema de la Actualización Perdida
         El problema de la Dependencia No Confirmada
         El problema del Análisis Inconsistente
    Veamos algunos ejemplos para entender cómo es que los programas pueden interferir con otros. Tomaremos como ejemplo las transacciones de las cuentas de un banco, supongamos que tenemos un programa llamado Depositar, el cual deposita dinero en una cuenta.

    Procedure Depositar(Cuenta, Monto)
    begin
    Start;
    temp := Leer(Cuentas[Cuenta]);
    temp := temp + Monto;
    Escribir(Cuentas[Cuenta],temp);
    Commit;
    end

    Supongamos que la cuenta 7 tiene un saldo de $1000 y que el cliente 1 deposita $100 en la cuenta 7 en el mismo instante en el que el cliente 2 deposita $100000 en la cuenta 7. Cada uno de los clientes llama al procedimiento Depositar de tal manera que se crea una transacción para realizar su actualización. La ejecución concurrente de éstos depósitos produce una secuencia de lecturas y escrituras en la base de datos, tales como

    Leer1(Cuentas[7])        devuelve el valor de $1000
    Leer2(Cuentas[7])        devuelve el valor de $1000
    Escribir2(Cuentas[7], $101000)
    Commit2
    Escribir1(Cuentas[7], $1100)
    Commit1

    El resultado de esta ejecución es que la Cuenta[7] contiene $1100. A pesar que el depósito del cliente 2 concluyó satisfactoriamente, la interferencia con la ejecución de Depósito del cliente 1 causó que el depósito del cliente 2 se pierda. Este fenónemo de actualización perdida ocurre cuando dos transacciones, mientras intentan modificar un dato, ambas leen el valor antiguo del elemento antes que ninguna haya modificado su valor.

    Otro problema del control de concurrencia se ilustra con el siguiente programa, llamado ImprimirSuma, el cual imprime la suma de los saldos de dos cuentas.

    Procedure ImprimirSuma(Cuenta1, Cuenta2)
    begin
    Start;
    temp1 := Leer(Cuentas[Cuenta1]);
    output(temp1);
    temp2 := Leer(Cuentas[Cuenta2]);
    output(temp2);
    temp1 := temp1 $+$ temp2;
    output(temp1);
    Commit;
    end

    Supongamos que las cuentas 8 y 9 tiene un saldo de $200 cada una, y que el cliente 3 imprime los saldos de las cuentas 8 y 9 (utilizando ImprimirSuma) en el mismo instante en el que el cliente 4 transfiere $100 de la cuenta 8 a la cuenta 9 (utilizando Transferir). La ejecución concurrente de estas dos transacciones puede originar la siguiente ejecución de operaciones de la base de datos.

    Leer4(Cuentas[8])        devuelve el valor de $200
    Escribir4(Cuentas[8], $100)
    Leer3 (Cuentas[8])       devuelve el valor de $100
    Leer3 (Cuentas[9])       devuelve el valor de $200
    Leer4 (Cuentas[9])       devuelve el valor de $200
    Escribir4 (Cuentas[9], $300)
    Commit4
    Commit3

    El procedimiento Transferir interfiere con ImprimirSuma en esta ejecución, causando que ImprimirSuma imprima el valor de $300, la cual no es la suma correcta de los saldos de las cuentas 8 y 9. El procedimiento ImprimirSuma no capturó los $100 en tránsito de la cuenta 8 a la cuenta 9. Es importante recalcar que, a pesar de la interferencia, Transferir todavíia asigna los valores correctos en la base de datos.

    Este tipo de interferencia se denomina análisis inconsistente que ocurre cuando una transacción lee un dato antes que otra transacción lo actualice y lea otro dato después que la misma transacción lo ha actualizado. Es decir, la extracción (lectura) de los datos sólo percibe algunos de los resultados de la transacción de actualización.

    Para conseguir el objetivo del control de concurrencia se utiliza un sincronizador. Un sincronizador es un programa (o una colección de ellos) que controla la ejecución concurrente de las transacciones; su función radica en ordenar las operaciones que forman parte de las transacciones que se requieren ejecutar concurrentemente, de tal manera que la ejecución resultante sea correcta. Usando tres operaciones básicas (ejecución, rechazo y retraso de una operación) el sincronizador puede controlar el orden en el cual las operaciones son ejecutadas por el Administrador de Datos.. Cuando éste recibe una operación de la transacción (mediante el TM), usualmente trata de pasarla al DM inmediatamente, si no produce alguna ejecución incorrecta. Si el sincronizador decide que la ejecución de la operación puede producir resultados incorrectos, puede o retrasarla (en caso de que pueda procesar correctamente la operación más adelante) o rechazarla (si no es posible procesarla en el futuro de tal manera que produzca resultados correctos).

    Por ejemplo, retomemos la ejecución concurrente de dos transacciones Depositar, que depositan $100 y $100,000 en la cuenta 7

    Leer1 (Cuentas[7])       devuelve el valor de $1000
    Leer2 (Cuentas[7])       devuelve el valor de $1000
    Escribir2 (Cuentas[7], $101000)
    Commit2
    Escribir1(Cuentas[7], $1100)
    Commit1

    Para evitar esta ejecución incorrecta, un sincronizador debe decidir rechazar Escribir1 provocando que la transacción T1 sea cancelada. En este caso, el usuario o el Administrador de Transacciones puede reenviar T1 , la cual ahora se puede ejecutar sin interferir con T2. Como otra alternativa, el sincronizador puede prevenir la ejecución anterior retrasando Leer2 hasta que reciba y procese Escribir1 y de esta forma evitando que se rechace Escribir1 más adelante.
  • Concurrencia de trabajadores de varias empresas en un mismo centro de trabajo”.
    En este primer punto, se destaca la posibilidad de que una empresa pueda coincidir y coexistir con otras empresas u organismos públicos dentro de un mismo centro de trabajo, sin que haya una relación jurídica-laboral entre estos. Por ello, únicamente comparten un espacio de trabajo sin la necesidad de tener relación alguna, exclusivamente para compartir el entorno laboral físico.
Podemos encontrar un claro ejemplo de este supuesto de concurrencia entre empresas en el caso de que se encuentren trabajando una administración pública junto a una empresa de telefonía en un mismo entorno físico.

3. REFERENCIAS:
-Lyons, J. (1995). Linguistic semantics: An introduction. Cambridge University Press.
-http://informatica.uv.es/iiguia/AED/oldwww/2004_05/AED.Tema.02.pdf
-http://www.grch.com.ar/docs/bd/apuntes/BDTema14.pdf
-http://www.coordinacionempresarial.com/que-tipos-de-concurrencia-nos-podemos-encontrar/

Comentarios