conceptos avanzados de bd

Upload: frank-jairo-castillo-padilla

Post on 13-Apr-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/24/2019 Conceptos Avanzados de Bd

    1/22

    ACTIVIDAD 3 CONCEPTOS AVANZADOS DE BASES DE DATOS

    PRESENTADO POR:

    DANIEL SANTIAGO GUZMAN ROMERO

    MARLON STEVEN TORRES PULIDO

    ORLANDO SOLANO

    JUAN SEBASTIAN BARRERA SIABATO

    MIGUEL ANGEL LIEVANO

    PRESENTADO A:

    FRANK CASTILLO PADILLA

    ADSI

    CENTRO DE DISEO Y METROLOGIA

    ADSI- 576038BOGOTA .DC

  • 7/24/2019 Conceptos Avanzados de Bd

    2/22

    TIPOS DE BLOQUEO EN BD

    BLOQUEO PESIMISTA

    El bloqueo pesimistaes la tcnica por la cual los datos son bloqueados previos asu modificacin para evitar que nadie los modifique. Una vez que los datos aactualizar han sido bloqueados la aplicacin puede acometer los cambios, concommit o rollback, en ese caso el bloqueo es automticamente eliminado. Si alguienintenta adquirir un bloqueo de los mismos datos durante el proceso ser obligado aesperar hasta que la primera transaccin finalice.

    Esta tcnica es muy simple pero tiene dos problemas fundamentales:

    Bloqueo: un usuario selecciona un registro para actualizar, y entonces abandonala operacin. Todos los usuarios que necesitan actualizar ese registro tienen queesperar hasta que se complete la transaccin, o hasta que se mate y finalice elbloqueo.

    Deadlock: Si los usuarios A y B estn ambos actualizando la base de datos a lavez y A bloqueo un registro e intenta adquirir un bloqueo mantenido por B, que a suvez est esperando a adquirir un bloqueo mantenido por A ambas transaccionesquedaran en espera indefinidamente, dando lugar a un Deadlock.

    En general los Sistemas RDBMS ofrecen clusulas para este bloqueo. Oraclesoporta bloqueo pesimista a nivel de fila. La sentencia estndar para el bloqueo esSELECT FOR UPDATE que hace que todas las sentencias UPDATE o SELECTFOR UPDATE de otras conexiones se bloqueen hasta que un commit, rollback odeadlock se produzca. Se produce un deadlock cuando un usuario que tiene la fila

    A bloqueada intenta bloquear la fila B, mientras que otro usuario tiene la fila Bbloqueada e intenta bloquear la A. En este caso Oracle deshabilita uno de losbloqueos del usuario permitiendo al otro usuario bloquear ambas filas.

    Oracle adems tiene el bloqueo SELECT FOR UPDATE NO WAIT, de modo queOracle causar una excepcin cuando una fila bloqueada es seleccionada. Estopuede ser til si no se quiere bloquear un usuario para un tiempo indefinido.

  • 7/24/2019 Conceptos Avanzados de Bd

    3/22

    BLOQUEO OPTIMISTA

    El bloqueo optimistano bloquea los registros que se van a actualizar y asume quelos datos que estn siendo actualizados no van a cambiar desde que se han ledo.Puesto que en nuestro caso no se puede asumir esto es necesario un control de

    la concurrencia, de esta manera el bloqueo optimista con control deconcurrencia asegura que los datos que estn siendo escritos son consistentescon los ledos en primera instancia, es decir que ninguna otra transaccin haactualizado los datos despus de la lectura. El procedimiento para asegurar laconsistencia es muy sencillo: se leer un valor junto al registro, se actualizar esevalor a la BD cuando el registro es actualizado.

    Existen varios mecanismos asegurar el control de la concurrencia, el ms comn esel uso de un timestamp modificado. Este mecanismo slo ofrece una resolucin deun segundo.

  • 7/24/2019 Conceptos Avanzados de Bd

    4/22

    CONTROL DE CONCURRENCIA OPTIMISTA

    El control de concurrencia optimista (en ingls Optimistic concurrencycontrol o OCC) es un mtodo decontrol de concurrencia que se aplica a sistemastransaccionales, tales comosistemas de gestin de bases de datosrelacionales y memoria transaccional de software. El OCC asume que mltiplestransacciones se pueden completar frecuentemente sin interferir entre s. Mientrasse ejecutan, las transacciones utilizan recursos de datos sin adquirirbloqueos enesos recursos. Antes de hacer elcommit,cada transaccin verifica que ninguna otratransaccin ha modificado los datos que ha ledo. Si la comprobacin revelamodificaciones en conflicto, la transaccin que iba a hacer commit hace unrollback yse puede reiniciar.1 El control de concurrencia optimista fue propuesto por primeravez porH. T. Kung.2

    El OCC se utiliza generalmente en entornos con baja contencin de datos. Cuandolos conflictos son poco frecuentes, las transacciones se pueden completar sin el

    coste de la gestin de bloqueos y sin tener transacciones esperando a que se borrenlos bloqueos de otras transacciones, dando lugar a un mayor rendimiento que otrosmtodos de control de concurrencia. Sin embargo, si la contencin de recursos dedatos es frecuente, el coste de reiniciar las transacciones repetidamente perjudicael rendimiento de manera significativa; comnmente se piensa que otros mtodosdecontrol de concurrencia tienen un mejor rendimiento en estas condiciones. Sinembargo, los mtodos basados en bloqueos ("pesimistas") tambin pueden ofrecerun rendimiento pobre porque los bloqueos pueden limitar drsticamente laconcurrencia efectiva incluso cuando se evitan losdeadlocks.

    FASES DEL OCC

    Ms en concreto, las transacciones del OCC implican estas fases:

    Inicio: Grabar un timestamp que marca el inicio de la transaccin. Modificar: Leer los valores de la base de datos y tentativamente escribir

    cambios. Validar: Comprobar si otras transacciones han modificado datos que esta

    transaccin ha utilizado (ledo o escrito). Esto incluye las transacciones quese han completado con posterioridad al tiempo de inicio de esta transaccin

    y, opcionalmente, las transacciones que an estn activas en el momento dela validacin.

    Commit/Rollback: Si no hay conflicto, hacer que todos los cambios surtan efecto. Sihay un conflicto, resolverlo, tpicamente abortando la transaccin, aunque otrossistemas de resolucin son posibles. Se debe tener cuidado para evitar unbug TOCTTOU, especialmente si esta fase y la anterior no se realizan como unanica operacinatmica.

    http://es.wikipedia.org/wiki/Control_de_concurrenciahttp://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_bases_de_datos_relacionaleshttp://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_bases_de_datos_relacionaleshttp://es.wikipedia.org/wiki/Memoria_transaccionalhttp://es.wikipedia.org/wiki/Cierre_de_exclusi%C3%B3n_mutuahttp://es.wikipedia.org/wiki/Commithttp://es.wikipedia.org/wiki/Rollbackhttp://es.wikipedia.org/wiki/Control_de_concurrencia_optimista#cite_note-1http://es.wikipedia.org/w/index.php?title=H._T._Kung&action=edit&redlink=1http://es.wikipedia.org/wiki/Control_de_concurrencia_optimista#cite_note-2http://es.wikipedia.org/wiki/Control_de_concurrenciahttp://es.wikipedia.org/wiki/Deadlockhttp://es.wikipedia.org/w/index.php?title=TOCTTOU&action=edit&redlink=1http://es.wikipedia.org/wiki/Instrucci%C3%B3n_at%C3%B3micahttp://es.wikipedia.org/wiki/Instrucci%C3%B3n_at%C3%B3micahttp://es.wikipedia.org/w/index.php?title=TOCTTOU&action=edit&redlink=1http://es.wikipedia.org/wiki/Deadlockhttp://es.wikipedia.org/wiki/Control_de_concurrenciahttp://es.wikipedia.org/wiki/Control_de_concurrencia_optimista#cite_note-2http://es.wikipedia.org/w/index.php?title=H._T._Kung&action=edit&redlink=1http://es.wikipedia.org/wiki/Control_de_concurrencia_optimista#cite_note-1http://es.wikipedia.org/wiki/Rollbackhttp://es.wikipedia.org/wiki/Commithttp://es.wikipedia.org/wiki/Cierre_de_exclusi%C3%B3n_mutuahttp://es.wikipedia.org/wiki/Memoria_transaccionalhttp://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_bases_de_datos_relacionaleshttp://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_bases_de_datos_relacionaleshttp://es.wikipedia.org/wiki/Control_de_concurrencia
  • 7/24/2019 Conceptos Avanzados de Bd

    5/22

    Tipo VDescripci nBloqueo pesimista No todas las Bases de Datos lo soportan y

    cada una lo soporta de una manera Previene a los usuarios y aplicaciones de leer

    datos que estn siendo modificados Los usuarios se enteran inmediatamente si no

    pueden acceder a una fila o Es fcil de usar

    No todas las Bases de Datos lo soportan ycada una lo soporta de una manera.

    Necesita tener abierta la transaccin, elbloqueo slo es efectivo si la transaccin estabierta.

    Mengua la escalabilidad. Utiliza recursos extra en la base de datos. Impide a otros usuarios de tener acceso de

    lectura a los datos. Puede producir deadlocks. o Puede producir excesivos bloqueos.

    Bloqueo optimista concontrol de concurrencia

    Lo soportan todas las bases de datos Es fcil de usar No consume recursos extra en la BD. o No crea bloqueos ni deadlocks.

    Es necesario crear triggers en la BD. Requiere un pequeo trabajo extra. Retrasa las actualizaciones. o Todas las aplicaciones que actualizan una

    base de datos deben conocer el mecanismo deconsistencia.

  • 7/24/2019 Conceptos Avanzados de Bd

    6/22

    Bloqueo y Motores ORM

    Hibernate, y en general los motores de persistencia, y por supuesto JPA soportanel bloqueo optimista simplificando su uso. Algunos motores como Hibernate o JPA2 soportan incluso el bloqueo pesimista.

  • 7/24/2019 Conceptos Avanzados de Bd

    7/22

    PROCEDIMIENTO ALMACENADO

    Un procedimiento almacenado es un subprograma disponible para lasaplicaciones que tienen acceso a un relacional sistema de base de datos. Un

    procedimiento almacenado (a veces llamado un(proc, sproc, STOPRO, StoredProc, StoreProc, spo SP)se almacena en la basede datos del diccionario de datos.

    Los procedimientos almacenados son similares a las funciones definidas por elusuario (UDF). La principal diferencia es que las UDF se pueden utilizar comocualquier otra expresin dentro de sentencias SQL, mientras que los procedimientosalmacenados deben ser invocados usando la llamada comunicado.

    Llamado de procedimiento () o

    Ejecutar procedimiento ()

    Los procedimientos almacenados pueden devolver conjuntos de resultados, esdecir, los resultados de un SELECT comunicado. Tales conjuntos de resultadospueden procesarse utilizando los cursores, por otros procedimientos almacenados,mediante la asociacin de un conjunto localizador resultado, o por las aplicaciones.

    Los procedimientos almacenados tambin pueden contener variables para elprocesamiento de datos y cursores que permiten a recorrer varias filas en una tabladeclarada. Sentencias de control de flujo de los procedimientos almacenadossuelen incluir (SI, MIENTRAS, LAZO, REPEAT, y CASE) declaraciones, y ms.

    Los procedimientos almacenados pueden recibir las variables, devolver resultadoso modificar las variables y volver ellos, dependiendo de cmo y dnde se declara lavariable.

    IMPLEMENTACION

    La implementacin exacta y correcta de los procedimientos almacenados vara de

    un sistema de base de datos a otro. La mayora de los proveedores de bases dedatos principales que apoyan de alguna forma. En funcin del sistema de base dedatos, procedimientos almacenados se pueden implementar en una variedadde lenguajes de programacin, por ejemplo, SQL,Java, CoC ++.

    Los procedimientos almacenados escritos en lenguajes de programacin no son deSQL pueden o no ejecutar sentencias SQL mismos.

  • 7/24/2019 Conceptos Avanzados de Bd

    8/22

    EJEMPLO DE PROCEDIMIENTOS DE ALMACENAMIENTO EN MYSQL

    los procedimientos almacenados empezaron a ser soportados, como suele sucederen MySQL las sentencias se ejecutan luego de escribir el signo punto y coma (;),por esta razn antes de escribir el procedimiento almacenado la funcin del punto y

    coma se asigna a otros caracteres usando la sentencia DELIMITER seguida de un

    carcter tal como |, de esta manera el procedimiento puede ser escrito usando lospunto y comas sin que se ejecute mientras se escribe; despus de escrito elprocedimiento, se escribe nuevamente la sentencia DELIMITER ;para asignar al

    punto y coma su funcin habitual.

    El siguiente es un ejemplo de procedimiento almacenado en MySQL:

  • 7/24/2019 Conceptos Avanzados de Bd

    9/22

    TRIGGERS

    Triggers= (disparadores, gatilladores, gatillos)

    CREATE[DEFINER = {usuario | CURRENT_USER}]

    GATILLO tr igger_namemomento_disp evento_dispEN nombre_tablaFOR EACH ROWCuerpo_Del_Trigger

    momento_disp: {ANTES | DESPUS}

    evento_disp: {INSERT | ACTUALIZACIN | DELETE}

    Row Triggers(o Disparadores de fila): son aquellas que se ejecutaran cada vezque se llama al disparador desde la tabla asociada al trigger.

    row level triggers se pueden identificar por FOR EACH ROW se declara en el

    gatillo a nivel de fila declaracin gatillo se dispara internamente cuando cualquier

    operacin DML ocurre en cualquier objeto como mesa que se activar para cada

    fila. Ejemplo: si se produjo cualquier instruccin delete por 30 registros se

    disparar durante 30 veces.

    CREATE OR REPLACE TRIGGER Print_salary_changesANTES DE ELIMINAR O INSERT O ACTUALIZACIN SOBRE Emp_tabPARA CADA FILA

    CUANDO (new.Empno> 0)DECLARAR

    Nmero sal_diff;Comenzar

    sal_diff: =: new.sal -: old.sal;dbms_output.put ('salario Antiguo:' ||: old.sal);dbms_output.put ('Nueva sueldo:' ||: new.sal);dbms_output.put_line ('Diferencia' || sal_diff);

    Fin;

    Statement Triggers (o Disparadores de secuencia): son aquellos que sin

    importar la cantidad de veces que se cumpla con la condicin, su ejecucin es

    nica.

  • 7/24/2019 Conceptos Avanzados de Bd

    10/22

    Statement level triggers sin declaracin de FOR EACH ROW se dispara para

    cada terminacin. Ejemplo: la declaracin delete est producido por 30 registros

    que se dispararn despus de que los 30 registros se han realizado

    CREATE TRIGGER TriggerName{DESPUS | NO CASCADE ANTES}{INSERT | DELETE | ACTUALIZACIN [OF nombre-columna [, columna-Nombre] *]}EN mesa-Nombre[ ReferencingClause][PARA CADA {ROW | DECLARACIN}] [MODO DB2SQL]Activadas-sentencia-SQL

    TRANSACCION

    Transactions (BEGIN TRAN, COMMIT TRAN, ROLLBACK TRAN)

    Transaccin:

    Una transaccin en un Sistema de Gestin de Bases de Datos (SGBD), es unconjunto de rdenes que se ejecutan formando una unidad de trabajo, es decir, enforma indivisible o atmica.

    Un SGBD se dice transaccional, si es capaz de mantener la integridad de los datos,haciendo que estas transacciones no puedan finalizar en un estado intermedio.Cuando por alguna causa el sistema debe cancelar la transaccin, empieza adeshacer las rdenes ejecutadas hasta dejar la base de datos en su estado inicial(llamado punto de integridad), como si la orden de la transaccin nunca se hubiese

    realizado. Una transaccin debe contar con ACID (un acrnimo ingls) que quieredecir: Atomicidad, Consistencia, Durabilidad y Aislamiento. Entonces para que unSistema de Gestin de Bases de Datos sea considerado Transaccional, debecumplir con estos criterios (ACID).

  • 7/24/2019 Conceptos Avanzados de Bd

    11/22

    Para esto, el lenguaje de consulta de datos SQL (Structured Query Language),provee los mecanismos para especificar que un conjunto de acciones debenconstituir una transaccin.

    BEGIN TRAN: Especifica que va a empezar una transaccin:

    Marca el punto de inicio de una transaccin local explcita. La instruccin BEGIN

    TRANSACTION incrementa @@TRANCOUNT en 1

    Sintaxis

    BEGIN {TRAN | TRANSACTION}[ {transaction_name | @tran_name_variable }

    [WITH MARK [description]]]

    [ ; ]

    transaction_name

    Es el nombre asignado a la transaccin. transaction_name debe cumplir las reglasde los identificadores, pero no se admiten identificadores de ms de 32 caracteres.Utilice nombres de transacciones solamente en la pareja ms externa deinstrucciones BEGINCOMMIT o BEGINROLLBACK anidadas.transaction_name siempre distingue maysculas de minsculas, incluso cuando lainstancia de SQL Server no distingue maysculas de minsculas.

    @tran_name_variable

    Nombre de una variable definida por el usuario que contiene un nombre detransaccin vlido. La variable debe declararse con un tipo de datos char, varchar,nchar o nvarchar. Si se pasan ms de 32 caracteres a la variable, solo se utilizarnlos primeros 32; el resto de caracteres se truncar.

    WITH MARK[description]

    Especifica que la transaccin est marcada en el registro. Description es un valorde tipo string que describe la marca. Un valor de description superior a 128caracteres se trunca a 128 caracteres antes de almacenarse en la tablamsdb.dbo.logmarkhistory.

    Si utiliza WITH MARK, debe especificar un nombre de transaccin. WITH MARKpermite restaurar un registro de transacciones hasta una marca con nombre.

    BEGIN TRANSACTION representa un punto en el que los datos a los que hacereferencia una conexin son lgica y fsicamente coherentes. Si se producenerrores, se pueden revertir todas las modificaciones realizadas en los datos despus

  • 7/24/2019 Conceptos Avanzados de Bd

    12/22

    de BEGIN TRANSACTION para devolver los datos al estado conocido decoherencia. Cada transaccin dura hasta que se completa sin errores y se emiteCOMMIT TRANSACTION para hacer que las modificaciones sean una partepermanente de la base de datos, o hasta que se produzcan errores y se borrentodas las modificaciones con la instruccin ROLLBACK TRANSACTION.

    BEGIN TRANSACTION inicia una transaccin local para la conexin que emite lainstruccin. Segn la configuracin del nivel de aislamiento de la transaccin actual,la transaccin bloquea muchos recursos adquiridos para aceptar las instruccionesTransact-SQL emitidas por la conexin hasta que la misma finaliza con unainstruccin COMMIT TRANSACTION o ROLLBACK TRANSACTION. Lastransacciones que quedan pendientes durante mucho tiempo pueden impedir queotros usuarios tengan acceso a estos recursos bloqueados y pueden impedirtambin el truncamiento del registro.

    COMMIT TRANSACTION

    Marca el final de una transaccin correcta, implcita o explcita. Si@@TRANCOUNT es 1, COMMIT TRANSACTION hace que todas lasmodificaciones efectuadas sobre los datos desde el inicio de la transaccin seanparte permanente de la base de datos, libera los recursos mantenidos por latransaccin y reduce @@TRANCOUNT a 0. Si @@TRANCOUNT es mayor que 1,COMMIT TRANSACTION solo reduce @@TRANCOUNT en 1 y la transaccinsigue activa.

    Sintaxis

    COMMIT [ { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ]] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ][ ; ]

    transaction_name

    Motor de base de datos de SQL Server lo omite. transaction_name especifica un

    nombre de transaccin asignado a una instruccin BEGIN TRANSACTION anterior.transaction_name debe cumplir con las reglas para identificadores, pero no puedesuperar los 32 caracteres. transaction_name se puede usar como una ayuda delegibilidad, ya que indica a los programadores a qu instruccin BEGINTRANSACTION anidada est asociada la instruccin COMMIT TRANSACTION.

    @tran_name_variable

  • 7/24/2019 Conceptos Avanzados de Bd

    13/22

    Se trata del nombre de una variable definida por el usuario que contiene un nombrede transaccin vlido. La variable debe declararse con un tipo de datos char,varchar, nchar o nvarchar. Si se pasan ms de 32 caracteres a la variable, solo seusarn 32 caracteres; el resto de los caracteres se truncarn.

    DELAYED_DURABILITY

    La opcin que solicita esta transaccin se confirma con la durabilidad diferida. Seomitir la solicitud si la base de datos se ha modificado conDELAYED_DURABILITY = DISABLED o DELAYED_DURABILITY = FORCED. Veael tema Controlar la durabilidad de las transacciones para obtener ms informacin.

    ROLLBACK TRANSACTION

    Revierte una transaccin explcita o implcita hasta el inicio de la transaccin o hastaun punto de retorno dentro de la transaccin. Puede usar ROLLBACK

    TRANSACTION para borrar todas las modificaciones de datos realizadas desde el

    inicio de la transaccin o hasta un punto de retorno. Tambin libera los recursos que

    mantiene la transaccin.

    Sintaxis

    ROLLBACK {TRAN | TRANSACTION}[transaction_name | @tran_name_variable

    | savepoint_name | @savepoint_variable][ ; ]

    transaction_name

    Es el nombre asignado a la transaccin en BEGIN TRANSACTION.

    transaction_name debe ajustarse a las reglas para los identificadores, pero solo se

    usan los 32 primeros caracteres del nombre de la transaccin. Cuando se anidan

    transacciones, transaction_name debe ser el nombre de la instruccin BEGIN

    TRANSACTION ms externa. transaction_name siempre distingue maysculas de

    minsculas, incluso cuando la instancia de SQL Server no distingue maysculas de

    minsculas.

    @ tran_name_variable

  • 7/24/2019 Conceptos Avanzados de Bd

    14/22

    Nombre de una variable definida por el usuario que contiene un nombre de

    transaccin vlido. La variable se debe declarar con un tipo de datos char, varchar,

    nchar o nvarchar.

    savepoint_name

    Es savepoint_name de una instruccin SAVE TRANSACTION. savepoint_name

    debe ajustarse a las reglas para los identificadores. Utilice savepoint_name cuando

    una operacin de reversin condicional solo deba afectar a parte de la transaccin.

    @ savepoint_variable

    Es el nombre de una variable definida por el usuario que contiene un nombre de

    punto de retorno vlido. La variable debe declararse con un tipo de datos char,varchar, nchar o nvarchar.

    ROLLBACK TRANSACTION sin savepoint_name o transaction_name reviertetodas las instrucciones hasta el principio de la transaccin. Cuando se trata detransacciones anidadas, esta misma instruccin revierte todas las transaccionesinternas hasta la instruccin BEGIN TRANSACTION ms externa. En ambos casos,ROLLBACK TRANSACTION disminuye la funcin del sistema @@TRANCOUNT a0. ROLLBACK TRANSACTION savepoint_name no disminuye el valor de@@TRANCOUNT.

    ROLLBACK TRANSACTION no puede hacer referencia a un argumentosavepoint_name en transacciones distribuidas que se inician de forma explcita conBEGIN DISTRIBUTED TRANSACTION o que se extienden desde una transaccinlocal.

    END TRANSACTION (Comando)

    Finaliza la transaccin actual y guarda todos los cambios realizados a las tablas, alos archivos memos de tablas o a los archivos de ndice incluido en una transaccin.

    Sintaxis

    END TRANSACTION

  • 7/24/2019 Conceptos Avanzados de Bd

    15/22

    Las actualizaciones de la base de datos realizadas entre el BEGIN TRANSACTIONanterior y el END TRANSACTION se graban. Si la transaccin es la primera o lanica (es decir, si no est anidada), los cambios se escriben el disco.

    Si una transaccin est anidada, END TRANSACTION hace que se plieguen todaslas actualizaciones almacenadas en cach en el siguiente nivel superior detransaccin. Anidar transacciones hace que sea posible sobrescribir los cambiosrealizados en datos en un nivel superior de transaccin.

    Si END TRANSACTION genera un error (por ejemplo, no hay espacio en discosuficiente para escribir las modificaciones en el disco), los cambios realizadosdurante la transaccin se cancelan y se termina la transaccin.

    CONECTIVIDAD A LA BASE DE DATOS

    Uno de los objetivos fundamentales de un sistema de informacin es contarno slo con recursos de informacin, sino tambin con los mecanismosnecesarios para poder encontrar y recuperar estos recursos. De esta forma,las bases de datos se han convertido en un elemento indispensable no slopara el funcionamiento de los grandes motores de bsqueda y la recuperacinde informacin a lo largo y ancho de laWeb,sino tambin para la creacin desedes web, Intranets y otros sistemas de informacin en los que se precisa

    manejar grandes o pequeos volmenes de informacin. La creacin de unabase de datos a la que puedan acudir los usuarios para hacer consultas yacceder a la informacin que les interese es, pues, una herramientaimprescindible de cualquier sistema informativo sea en red o fuera de ella.

    Una base de datos es una coleccin de datos organizados y estructuradossegn un determinado modelo de informacin que refleja no slo los datos ens mismos, sino tambin las relaciones que existen entre ellos. Una base dedatos se disea con un propsito especfico y debe ser organizada con unalgica coherente. Los datos podrn ser compartidos por distintos usuarios yaplicaciones, pero deben conservar su integridad y seguridad al margen de las

    interacciones de ambos. La definicin y descripcin de los datos han de sernicas para minimizar la redundancia y maximizar la independencia en suutilizacin.

    En una base de datos, las entidades y atributos del mundo real, se convierten en registros ycampos. Estas entidades pueden ser tanto objetos materiales como libros o fotografas, pero

    http://www.hipertexto.info/documentos/web.htmhttp://www.hipertexto.info/documentos/web.htmhttp://www.hipertexto.info/documentos/web.htmhttp://www.hipertexto.info/documentos/web.htm
  • 7/24/2019 Conceptos Avanzados de Bd

    16/22

    tambin personas e, incluso, conceptos e ideas abstractas. Las entidades poseen atributos ymantienen relaciones entre ellas.

    Los modelos clsicos de tratamiento de los datos son:

    jerrquico: puede representar dos tipos de relaciones entre los datos: relaciones de uno a uno yrelaciones de uno a muchos. Este modelo tiene forma de rbol invertido en el que una ramapuede tener varios hijos, pero cada hijo slo puede tener un padre.

    en red: Este modelo permite la representacin de muchos a muchos, de tal forma que cualquierregistro dentro de la base de datos puede tener varias ocurrencias superiores a l. El modelo dered evita redundancia en la informacin, a travs de la incorporacin de un tipo de registrodenominado el conector. En el modelo en red se representa el mundo real mediante registroslgicos que representan a una entidad y que se relacionan entre s por medio de flechas

    relacional: Desde los aos 80 es el modelo ms utilizado, ya que permite una mayor eficacia,flexibilidad y confianza en el tratamiento de los datos. La mayor parte de las bases de datos ysistemas de informacin actuales se basan en el modelo relacional ya que ofrece numerosasventajas sobre los 2 modelos anteriores, como es el rpido aprendizaje por parte de usuariosque no tienen conocimientos profundos sobre sistemas de bases de dados. En el modelorelacional se representa el mundo real mediante tablas relacionadas entre s por columnas

    comunes. Las bases de datos que pertenecen a esta categora se basan en el modelorelaciones, cuya estructura principal es la relacin, es decir una tabla bidimensional compuestapor lneas y columnas. Cada lnea, que en terminologa relacional se llama tupla, representa unaentidad que nosotros queremos memorizar en la base de datos. las caractersticas de cadaentidad estn definidas por las columnas de las relaciones, que se llaman atributos. Entidadescon caractersticas comunes, es decir descritas por el mismo conjunto de atributos, formarnparte de la misma relacin.

  • 7/24/2019 Conceptos Avanzados de Bd

    17/22

    Ejemplo de base de datos relacional

    La arquitectura de un sistema de base de datos se basa en 3 niveles distintos:

    nivel fsico: es el nivel ms bajo de abstraccin y el nivel real de los datos almacenados. Estenivel define cmo se almacenan los datos en el soporte fsico, ya sea en registros o decualquier otra forma, as como los mtodos de acceso. Este nivel lleva asociada una

    representacin de los datos, que es lo que denominamos Esquema Fsico.nivel conceptual: es el correspondiente a una visin de la base de datos desde el punto de vistodel mundo real. Es decir se trata con la entidad u objeto representado, sin importar como estrepresentado o almacenado ste. Es la representacin de los datos realizada por laorganizacin, que recoge los datos parciales de los requerimientos de los diferentes usuarios yaplicaciones parciales. Incluye la definicin de los datos y las relaciones entre ellos. Este nivellleva asociado un Esquema Conceptual.

    nivel de visin: son partes del esquema conceptual. El nivel conceptual presenta toda la basede datos, mientras que los usuarios, por lo general, slo tienen acceso a pequeas parcelas de

    sta. El nivel visin es el encargado de dividir estas parcelas. Un ejemplo sera el caso delempleado de una organizacin que tiene acceso a la visin de su nmina, pero no a la de suscompaeros. El esquema asociado a ste nivel es el Esquema de Visin.

  • 7/24/2019 Conceptos Avanzados de Bd

    18/22

    Niveles de la arquitectura de un sistema de base de datos

    Este modelo de arquitectura permite establecer el principio de independencia de los datos, yase trate de una independencia lgica o fsica. La independencia lgica significa que los cambiosen el esquema lgico no deben afectar a los esquemas externos que no utilicen los datos

    modificados; la independencia fsica significa que el esquema lgico no se va a ver afectado porlos cambios realizados en el esquema interno, correspondientes a modos de acceso, etc.

    Fuente: Taller de Base de Datos.

    Cada uno de los objetos anteriores contiene una coleccin de objetos Property. El

    objeto Property permite a ADO mostrar dinmicamente las capacidades de un objeto especfico

    ADO permite disear sitios web que pueden acceder repetidamente a la misma base de datosusando una misma bsqueda u otra similar. Se pueden compartir conexiones y esto significauna menor carga de trabajo para el servidor de la base de datos, un tiempo de respuesta msrpida y ms accesos a pgina con xito.

  • 7/24/2019 Conceptos Avanzados de Bd

    19/22

    Existe un componente llamado RDS (Remote Data Service) que ofrece el ambiente de AccesoUniversal a Datos, ya sea desde Internet o la Word Wide Web, creando un marco de trabajo quepermite una interaccin fcil y eficiente con los datos fuente OLE DB tanto en Intranetscorporativas o en Internet. RDS ofrece la ventaja de obtener por el lado del cliente resultados dedatos, actualizacin y soporte para controles ADO y ofrece el modelo de programacin OLE

    DB/ADO para manipular datos de las aplicaciones del cliente.JDBC

    JDBC o Java Data Base Connectivity, creado por la empresa Sun, es la API estndar de accesoa bases de datos con Java. Sun opt por crear una nueva API en lugar de utilizar ODBC,porque esta ltima presentaba algunos problemas desde ciertas aplicaciones Java. ODBC esuna interfaz escrita en lenguaje C, que al no ser un lenguaje portable, haca que lasaplicaciones Java tambin perdiesen la portabilidad. Adems, ODBC ha de instalarsemanualmente en cada mquina, mientras que los controladores (drivers) JDBC que estnescritos en Java son automticamente instalables y portables. El nivel de abstraccin al que

    trabaja JDBC es ms alto que el de ODBC y, de esta forma, se pueden crear libreras de msalto nivel,

    Para trabajar con JDBC es necesario tener controladores que permitan acceder a las distintasbases de datos. Sin embargo, ODBC sigue siendo hoy en da la API ms popular para acceso aBases de Datos, por lo que: Sun se ha visto obligada a disear un puente que permite utilizar la

    API de JDBC en combinacin con controladores ODBC.

    Fuente: Taller de Base de Datos.

    Las tecnologas que se emplea para la conectividad entre los datos y la aplicacin, se haconvertido en un factor muy importante a la hora de desarrollar un proyecto web que cuente confuncionalidad de acceso a datos. A continuacin se muestra un cuadro comparativo de las dos

  • 7/24/2019 Conceptos Avanzados de Bd

    20/22

    tecnologas ms importantes en este sentido: ActiveX Data Objects (ADO) y Java Data BaseConnectivity (JDBC).

    ADO JDBC

    Tecnologa elaborada por Microsoft

    Tiene la principal funcin de realizar lasolicitud de los datos a la base de datos.

    Esta solicitud la realizar mediante la

    tecnologa OLE DB, la cual estar en contactode manera directa con la base de datos.

    La tecnologa OLE DB slo se emplearcuando el DBMS pertenece de igual manera aMicrosoft, como esSQL Server.

    ADO encapsular a ciertos objetos de OLEDB, para que de sta manera se realice laconexin con la base de datos.

    Para realizar la gestin de acceso a bases de

    datos heterogneas por parte de ADO, stehar uso de ciertos objetos de la tecnologaRDO (Remote Data Objects).

    RDO depender de los ODBCs para poder

    efectuar la conexin a la base de datos y conesto el acceso a la informacin.

    Tecnologa hecha por Sun Microsistems.

    Tiene la funcin de ser un gestor para laaplicacin con respecto a la base de datos.

    Por primera vez el JDBC fue empleado,tomando como intermediario entre l y la basede datos al ODBC.

    Como modelo cliente/servidor, el JDBC seencontrar trabajando en el equipo cliente,conectndose directamente con la base dedatos.

    Como modelo de tres capas, el JDBC seencontrar en una capa intermedia, dondetodos los usuarios pasarn por l para poder

    accesar a la base de datos.

    Existen mdulos JDBC que son propios de losfabricantes de DBMS, que son utilizados parael rpido acceso a la informacin de las basesde datos de los mismos.

    http://www.microsoft.com/sql/default.mspxhttp://www.microsoft.com/sql/default.mspxhttp://www.microsoft.com/sql/default.mspxhttp://www.microsoft.com/sql/default.mspx
  • 7/24/2019 Conceptos Avanzados de Bd

    21/22

    ADO podr encontrarse trabajando en unapgina web en conjunto con cdigo HTML;esto ser posible mediante un mecanismo deintroduccin de instrucciones como es elVBScript.

    Los objetos que conforman al ADO, no soncompatibles con otros lenguajes, solo poraquellos que pertenecen a la empresaMicrosoft como son: Visual C++, Visual Basic,Visual Java, etc.

    JDBC no se encontrar ligado a trabajar conalguna tecnologa en especfica, ya que seelabor con la finalidad de ser portable.

    En aplicaciones Web, JDBC se encontrar

    laborando en conjunto con cdigo HTML,mediante el mecanismo del Java script.

    JDBC se elabor con la finalidad de poder sercompatible y portable para poder ser empleadoen aplicaciones y para la conexin con basesde datos.

    Por ltimo, hay que destacar tambin una tecnologa llamada Web DB utilizada por algunosservidores de bases de datos, con la cual, un usuario puede solicitar la informacin que requiera

    y visualizarla a modo de respuesta en una pgina Web, que ser creada y elaborada por elpropio servidor de base de datos.

    El proceso que comprende desde la solicitud a la visualizacin de la informacin, puede serrepresentado de la siguiente manera:

    CONTROLADORES ODBC

    Open DataBase Connectivity (ODBC) es un estndar de acceso a las bases de

    datos desarrollado porSQL Access Group en 1992. El objetivo de ODBC es hacer

    posible el acceder a cualquier dato desde cualquier aplicacin, sin importarqusistema de gestin de bases de datos (DBMS) almacene los datos. ODBC logra

    http://es.wikipedia.org/wiki/Bases_de_datoshttp://es.wikipedia.org/wiki/Bases_de_datoshttp://es.wikipedia.org/w/index.php?title=SQL_Access_Group&action=edit&redlink=1http://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_bases_de_datoshttp://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_bases_de_datoshttp://es.wikipedia.org/w/index.php?title=SQL_Access_Group&action=edit&redlink=1http://es.wikipedia.org/wiki/Bases_de_datoshttp://es.wikipedia.org/wiki/Bases_de_datos
  • 7/24/2019 Conceptos Avanzados de Bd

    22/22

    esto al insertar una capa intermedia (CLI) denominada nivel de Interfaz de Cliente

    SQL, entre la aplicacin y el DBMS. El propsito de esta capa es traducir lasconsultas de datos de la aplicacin en comandos que el DBMS entienda. Para que

    esto funcione tanto la aplicacin como el DBMS deben ser compatibles con ODBC,

    esto es que la aplicacin debe ser capaz de producir comandos ODBC y el DBMSdebe ser capaz de responder a ellos. Desde la versin 2.0 el estndar

    soportaSAG y SQL.

    El software funciona de dos modos, con un software manejador en el cliente, o una

    filosofa cliente-servidor. En el primer modo, el driver interpreta las conexiones yllamadas SQL y las traduce desde el API ODBC hacia el DBMS. En el segundomodo para conectarse a labase de datos se crea una DSN dentro del ODBC que

    define los parmetros, ruta y caractersticas de la conexin segn los datos quesolicite el creador o fabricante.

    Java Database Connectivity (JDBC) es un derivado inspirado en el mismo,una interfaz de programacin de aplicaciones que permite la ejecucin deoperaciones sobre bases de datos desde el lenguaje de programacin

    Java independientemente del sistema operativo donde se ejecute o de la base dedatos a la cual se accede utilizando el dialecto SQL del modelo de base de datos

    que se utilice.

    http://es.wikipedia.org/w/index.php?title=SAG_(Base_de_datos)&action=edit&redlink=1http://es.wikipedia.org/wiki/SQLhttp://es.wikipedia.org/wiki/Base_de_datoshttp://es.wikipedia.org/wiki/Data_Source_Namehttp://es.wikipedia.org/wiki/Java_Database_Connectivityhttp://es.wikipedia.org/wiki/Interfaz_de_programaci%C3%B3n_de_aplicacioneshttp://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)http://es.wikipedia.org/wiki/Interfaz_de_programaci%C3%B3n_de_aplicacioneshttp://es.wikipedia.org/wiki/Java_Database_Connectivityhttp://es.wikipedia.org/wiki/Data_Source_Namehttp://es.wikipedia.org/wiki/Base_de_datoshttp://es.wikipedia.org/wiki/SQLhttp://es.wikipedia.org/w/index.php?title=SAG_(Base_de_datos)&action=edit&redlink=1