Professional Documents
Culture Documents
y
Seguridad Multinivel
CONTROL DE CONCURRENCIA
TRANSACCIONES
El control de concurrencia permite que sus usuarios asuman que cada
una de sus aplicaciones se ejecuta atmicamente, como si no
existieran otras aplicaciones ejecutndose concurrentemente. Esta
abstraccin de una ejecucin atmica y confiable de una aplicacin se
conoce como una transaccin
Informalmente, una transaccin es la ejecucin de ciertas instrucciones
que acceden a una base de datos compartida.
Cada transaccin accede a informacin compartida sin interferir con
otras, si una transaccin termina normalmente, todos sus efectos son
permanentes, en caso contrario no tiene afecto alguno.
Durante una transaccin la base de datos pierde su consistencia, la
que debe restituirse al momento de finalizar la transaccin.
Atomicidad: Se refiere al hecho de que una transaccin se trata como una unidad de
operacin. Consistencia: La consistencia de una transaccin es simplemente su correctitud.
las transacciones no violan las restricciones de integridad de una base de datos.
Permanencia: Es la propiedad de las transacciones que asegura que una vez que una
transaccin finaliza exitosamente, sus resultados son permanentes y no pueden ser
borrados de la base de datos por alguna falla posterior.
Confiabilidad: Puesto que los sistemas de base de datos en lnea no pueden fallar.
Disponibilidad: Debido a que los sistemas de base de datos en lnea deben estar
actualizados correctamente todo el tiempo.
PROBLEMAS DE CONCURRENCIA
SEGURIDAD MULTINIVEL
CASO PRACTICO
EN MYSQL
En el motor de almacenamiento: InnoDB
InnoDBimplementaunbloqueoaniveldefilaestndar,dondehaydostiposde
bloqueos:
Compartido(Shared)(S)lepermiteaunatransaccinleerunafila.
Exclusivo(Exclusive)(X)lepermiteaunatransaccinactualizaroeliminarunafila.
SELECT ... FROM ... LOCK IN SHARE MODE
establecebloqueoscompartidosdeprximaclaveentodoslosregistrosde
ndicehalladosporlalectura
SELECT ... FROM ... FOR UPDATE
establecebloqueosexclusivosdeprximaclaveentodoslosregistrosde ndice
halladosporlalectura
IsolationLevel
DirtyRead
NonrepeatableRead
PhantomRead
Read uncommitted
Possible
Possible
Possible
Read committed
Not possible
Possible
Possible
Repeatable read
Not possible
Not possible
Possible
Serializable
Not possible
Not possible
Not possible
EN ORACLE
Oracle utiliza la informacin existente en el segmento de anulacin (datos
antiguos).
Cuando una consulta comienza se le asigna un nmero (SCN=System Change
Number).
DatosledosporunaconsultatienenunSCNmspequeo.
Bloques con SCN ms alto (ms reciente) son reconstruidos con la informacin
contenidaenelsegmentodeanulacin.
Oracleproporcionaconsistenciadelecturaadosniveles:
Niveldesentencia
Niveldetransaccin
ORACLEutilizaelnivelmenosrestrictivoguindoseporlassiguientesreglas:
Operacionesdelecturanoesperanalasdeescriturasobrelosmismosdatos.
Operacionesdeescrituranoesperanalasdelecturasobrelosmismosdatos.
Operaciones de escritura solamente esperan a otras operaciones de escritura que intentan
modificarlamismatupla.
Interbloqueos: ocurren cuando dos o ms usuarios estn esperando datos bloqueados por los
otros.Oracleautomticamentedetectasituacionesdeinterbloqueoylosresuelveabortandouna
delastransacciones.Sedetectanmediantegrafosdeesperas.
EN SQL SERVER
MVCC (Multi version concurrency
control)es una tcnica de concurrencia
optimista en donde ninguna tarea o hilo
es bloqueado mientras se realiza una
operacinenlatabla,porqueelotrohilo
usa su propia copia (versin) del objeto
dentrodeunatransaccin.
Todaslasbasesdedatosmodernasimplementan
actualmente este algoritmo de concurrencia
optimista.EnSQLServersellamaSNAPSHOT
ISOLATION, en MySql se llamaInnoDBMulti
Version, en Firebird MGA y en Oracle y
PostgreSQL,simplementeMVCC.