Leyes que legalmente REQUIEREN que aseguremos los datos
Ley Argentina 25326 (habeas data)
GDPR (Europa)
Normas que sugieren cómo asegurar los datos
ISO 27000 (27001:2022)
Aspectos en los que se protege la info:
confidencialidad
integridad
disponibilidad
Integridad
Respeto a las características del modelo relacional
Resistencia a fallos garantizada a través del modelo de Transacciones
Un fallo es que cualquiera de los pasos del CUU no se cumpla
Modelo de Transacciones
Qué es una transacción?
Para el usuario: Operaciones con significado en el modelo semántico
& ej: una transferencia de fondos en un banco
Para la BD: Conjunto de operaciones elementales que deben ejecutarse como una unidad lógica
& ej: La transferencia implica: debitar fondos de una cuenta; acreditar fondos a otra
Las transacciones están delimitadas por instrucciones de inicio y fin de transacción
El uso de transacciones está condicionado a que el sistema sea monousuario o multiusuario (con concurrencia)
Propiedades de las transacciones
Mnemotécnica: ACID
ACID TRANSACTIONS 😎
Atomicity: Se realiza todo o no se realiza.
Consistency: Se conserva la coherencia, incluso cuando la transacción se efectúe varias veces de forma concurrente
La Consistencia viene garantizada por la Atomicidad y las reglas de Integridad del modelo
Isolation: Concurrencia no problemática ~
Durability: Cuando termina la transacción, los nuevos valores de la db deben permanecer a pesar de cualquier falla
RESPONSABILIDADES de las transacciones
Estados de la BD
Consistente o Inconsistente
Generalmente la BD suele estar en estado INconsistente, y sólo es CONsistente cuando no hay nadie realizando transacciones (nadie conectado o todos haciendo consultas)
Estados de las transacciones
Activa: Cuando se inició la transacción (se leyó el start transaction)
Parcialmente comprometida: Hace una primera pasada para comprobar la integridad y coherencia, y se escriben los cambios en el log (se leyó el commit)
Fallida: Si se encuentra un error antes de terminar la primera pasada, o si después de estar parcialmente compometida hay un error físico (corte de luz o algo)
Cancelada: Si falla lógicamente, termina con un error
Compometida/confirmada: Hace una segunda vuelta para ejecutar los cambios, marcando el log escrito como efectivo
Concurrencia
La ejecución de varias transacciones en forma concurrente tieen muchos beneficios, pero puede destruir la consistencia de la DB
Para controlar la concurrencia, necesito evitar problemas de aislamiento:
Actualización perdida
Lectura sucia
Lectura no repetible
Lectura fantasma
sucede en los deletes/inserts
Niveles de aislamiento
Los niveles de aislamiento evitan los problemas pero dificultan la concurrencia