Apuntes Topicos de Base de Datos
Apuntes Topicos de Base de Datos
Apuntes Topicos de Base de Datos
Ingeniería en informática
Materia:
Tópicos de base de datos
Actividad:
“Apuntes”
Grupo: 702
1
Índice
Paginas
1.1 Concepto de base de datos distribuida 3
1.2 Diseño de base de datos distribuidas 5
1.3 Procesamiento de operaciones de actualización distribuidas 10
1.4 Procesamiento de consultas distribuidas 12
1.5 Manejo de transacciones 15
2
1.1 Concepto de base de datos distribuida
Una BDD (Base de Datos Distribuida) es un conjunto de Bases de Datos
relacionadas lógicamente, pero que se encuentran físicamente localizadas en
varios “sitios” de la red.
El soporte completo para las BDD implica que una sola aplicación debe ser capaz
de operar de manera transparente sobre los datos que están dispersos en bases
de datos diferentes, administradas por distintos DBMS, ejecutadas en máquinas
diferentes, manejadas por sistemas operativos diferentes y conectadas a una
variedad de redes de comunicación, donde el término transparente significa que
la aplicación opera desde un punto de vista lógico como sin todos los datos
fueran manejados por un solo DBMS y ejecutados en una sola máquina.
CARACTERÍSTICAS
1. Cuenta con autonomía local: Los sitios distribuidos deben ser
autónomos, es decir que todas las operaciones en un sitio dado se
controlan en ese sitio, pues cuenta con su propio SGBD.
2. Réplicas: Se realizan copias de los datos las cuales se almacenan en
los sitios que las requieren. De esta forma el usuario efectúa
operaciones sobre la réplica.
3. Fragmentación:. Es deseable por razones de desempeño, los datos
pueden almacenarse en la localidad donde se utilizan con mayor
frecuencia de manera que la mayor parte de las operaciones sean solo
locales y se reduzca el tráfico en la red.
4. No dependencia de un sitio central: No debe haber dependencia de
un sitio central para obtener un servicio.
3
5. Transparencia de localización de datos: No debe ser necesario que
los usuarios sepan dónde están almacenados físicamente los datos,
sino que el usuario debe verlo como si solo existiera un sitio local.
6. Manejo distribuido de transacciones: Tiene dos aspectos
principales, el control de recuperación y el control de concurrencia.
7. Independencia con respecto a la red: Se puede leer o escribir datos
localizados en diferentes nodos de la red.
8. Independencia del sistema operativo, hardware y DBMS: Para el
usuario final no importa que los datos estén almacenados en sitios en
los que no se maneje el mismo sistema operativo de su nodo local, el
mismo hardware o DBMS.
9. Dos tipos de transacciones: Locales, cuando se accede a los datos
del único sitio donde se inició la transacción. Globales, cuando se
accede a datos de sitios distintos al sitio donde se inició la transacción
4
1.2 Diseño de base de datos distribuidas
El proceso de diseño
Para dividir la información en tablas, elija las entidades o los temas principales.
Por ejemplo, después de buscar y organizar la información de una base de datos
de ventas de productos, la lista preliminar podría ser similar a la siguiente
Las entidades principales mostradas aquí son los productos, los proveedores,
los clientes y los pedidos. Por tanto, parece lógico empezar con estas cuatro
tablas: una para los datos sobre los productos, otra para los datos sobre los
proveedores, otra para los datos sobre los clientes y otra para los datos sobre
los pedidos. Aunque esto no complete la lista, es un buen punto de partida.
Puede seguir ajustando la lista hasta obtener un diseño correcto.
Cuando examine por primera vez la lista preliminar de elementos, podría estar
tentado a incluirlos todos ellos en una sola tabla en lugar de en las cuatro tablas
mostradas en la ilustración anterior. A continuación le explicaremos por qué eso
6
no es una buena idea. Considere por un momento la tabla que se muestra a
continuación
Para determinar las columnas de una tabla, decida qué información necesita
registrar sobre el tema representado por la tabla. Por ejemplo, para la tabla
Clientes, una buena lista de columnas iniciales sería Nombre, Dirección, Ciudad-
Provincia-Código postal, Enviar correo electrónico, Saludo y Correo electrónico.
Cada registro de la tabla contiene el mismo número de columnas, por lo que
puede almacenar información sobre el nombre, dirección, ciudad-provincia-
código postal, envío de correo electrónico, saludo y dirección de correo
electrónico para cada registro. Por ejemplo, la columna de dirección podría
contener las direcciones de los clientes. Cada registro contendrá datos sobre un
cliente y el campo de dirección, la dirección de ese cliente.
Cuando haya determinado el conjunto inicial de columnas para cada tabla, puede
ajustar con mayor precisión las columnas. Por ejemplo, tiene sentido almacenar
los nombres de los clientes en dos columnas distintas (el nombre y el apellido)
para poder ordenar, buscar e indizar por esas columnas. De igual forma, la
dirección consta en realidad de cinco componentes distintos: dirección, ciudad,
provincia, código postal y país o región, y parece lógico también almacenarlos
en columnas distintas. Si desea realizar, por ejemplo, una búsqueda o una
operación de ordenación o filtrado por provincia, necesita que la información de
provincia esté almacenada en una columna distinta.
7
• Especificar claves principales
Cada tabla debe incluir una columna o conjunto de columnas que identifiquen
inequívocamente cada fila almacenada en la tabla. Ésta suele ser un número de
identificación exclusivo, como un número de identificador de empleado o un
número de serie. En la terminología de bases de datos, esta información recibe
el nombre de clave principal de la tabla. Access utiliza los campos de clave
principal para asociar rápidamente datos de varias tablas y reunir
automáticamente esos datos.
Examine cada tabla y decida cómo se relacionan los datos de una tabla con las
demás tablas. Agregue campos a las tablas o cree nuevas tablas para clarificar
las relaciones según sea necesario.
• Ajustar el diseño
Analice el diseño para detectar errores. Cree las tablas y agregue algunos
registros con datos de ejemplo. Compruebe si puede obtener los resultados
previstos de las tablas. Realice los ajustes necesarios en el diseño.
Aplique reglas de normalización de los datos para comprobar si las tablas están
estructuradas correctamente. Realice los ajustes necesarios en las tablas.
8
• La sincronización de las operaciones
• La descomposición de las consultas
Alternativas de diseño
• La ascendente o Top-Down.
• La descendente o Bottom-Up.
10
1.4 Procesamiento de consultas distribuidas
ARBOLES DE CONSULTAS
Pasos:
TRANSFORMACIONES EQUIVALENTES
Cuando una base de datos es acezada de esta manera la técnica que se utiliza
es la de fragmentación de datos que puede ser hibrida, horizontal y vertical.
la equivalente a la original.
Al igual que el algoritmo de join por mezcla, el algoritmo de join por asociación
se puede utilizar para un Join natural o un equi-join. Este algoritmo utiliza una
función de asociación h para dividir las tuplas de ambas relaciones. La idea
fundamental es dividir las tuplas de cada relación en conjuntos con el mismo
valor de la función de asociación en los atributos de join.
El número de bloques ocupados por las particiones podría ser ligeramente mayor
que.
13
toda la relación s en memoria. Dado que el algoritmo de join por asociación
necesita max +1 bloques de memoria para dividir ambas relaciones se puede
utilizar el resto de la memoria (M – max – 1 bloques)para guardar en la memoria
intermedia la primera partición de la relación s, esto es, así no es necesaria leerla
ni escribirla nuevamente y se puede construir un índice asociativo.
Join Complejos
Los join en bucle anidado y en bucle anidado por bloques son útiles siempre, sin
embargo, las otras técnicas de join son más eficientes que estas, pero sólo se
pueden utilizar en condiciones particulares tales como join natural o equi-join. Se
pueden implementar join con condiciones más complejas tales como conjunción
o disyunción Dado un join de las forma se pueden aplicar una o más de las
técnicas de join descritas anteriormente en cada condición individual, el
resultado total consiste en las tuplas del resultado intermedio que satisfacen el
resto de las condiciones. Estas condiciones se pueden ir comprobado según se
generen las tuplas. La implementación de la disyunción es homóloga a la
conjunción.
Un outer join es una extensión del operador join que se utiliza a menudo para
trabajar con la información que falta.
Por ejemplo:
Suponiendo que se desea generar una lista con todos los choferes y los autos
que manejan (si manejan alguno) entonces se debe cruzar la relación Chofer con
la relación Móvil. Si se efectúa un join corriente se perderán todas aquellas tuplas
que pertenecen a los choferes, en cambio con un outer join se pueden desplegar
las tuplas resultado incluyendo a aquellos choferes que no tengan a cargo un
auto.
El outer join tiene tres formas distintas: por la izquierda, por la derecha y
completo. El join por la izquierda ( ) toma todas las tuplas de la relación de la
izquierda que no coincidan con ninguna tupla de la relación de la derecha, las
rellena con valores nulos en los demás atributos de la relación de la derecha y
las añade al resultado del join natural.
14
Para el caso de un outer join completo se puede calcular mediante extensiones
de los algoritmos de join por mezcla y join por asociación.
15
importante aquí es asegurar que la base de datos regresa a un estado
consistente al fin de la ejecución de una transacción.
Lo que se persigue con el manejo de transacciones es por un lado tener una
transparencia adecuada de las acciones concurrentes a una base de datos y por
otro lado tener una transparencia adecuada en el manejo de las fallas que se
pueden presentar en una base de datos.
Condiciones de terminación de una transacción
Una transacción siempre termina, aun en la presencia de fallas. Si una
transacción termina de manera exitosa se dice que la transacción hace un
commit (se usará el término en inglés cuando no exista un término en español
que refleje con brevedad el sentido del término en inglés). Si la transacción se
detiene sin terminar su tarea, se dice que la transacción aborta. Cuando la
transacción es abortada, su ejecución es detenida y todas sus acciones
ejecutadas hasta el momento son deshechas (undone) regresando a la base de
datos al estado antes de su ejecución. A esta operación también se le conoce
como rollback.
CARACTERIZACIÓN DE TRANSACCIONES
Observe que en el ejemplo anterior las transacciones leen y escriben datos.
Estas acciones se utilizan como base para caracterizar a las transacciones. Los
elementos de datos que lee una transacción se dice que constituyen el conjunto
de lectura (RS). Similarmente, los elementos de datos que una transacción
escribe se les denomina el conjunto de escritura (WS). Note que los conjuntos
de lectura y escritura no tienen que ser necesariamente disjuntos. La unión de
ambos conjuntos se le conoce como el conjunto base de la transacción (BS =
RS U WS).
Los conjuntos de lectura y escritura de la transacción del Ejemplo 3 son:
RS[Reservación] = { FLIGHT.STSOLD, FLIGHT.CAP }
16
se interrumpe por una falla, sus resultados parciales deben ser deshechos. La
actividad referente a preservar la atomicidad de transacciones en presencia de
abortos debido a errores de entrada, sobrecarga del sistema o interbloqueos se
le llama recuperación de transacciones. La actividad de asegurar la atomicidad
en presencia de caídas del sistema se le llama recuperación de caídas.
Consistencia. La consistencia de una transacción es simplemente su correctitud.
En otras palabras, una transacción es un programa correcto que lleva la base de
datos de un estado consistente a otro con la misma característica. Debido a esto,
las transacciones no violan las restricciones de integridad de una base de datos.
Aislamiento. Una transacción en ejecución no puede revelar sus resultados a
otras transacciones concurrentes antes de su commit. Más aún, si varias
transacciones se ejecutan concurrentemente, los resultados deben ser los
mismos que si ellas se hubieran ejecutado de manera secuencial (seriabilidad).
Durabilidad. Es la propiedad de las transacciones que asegura que una vez que
una transacción hace su commit, sus resultados son permanentes y no pueden
ser borrados de la base de datos. Por lo tanto, los DBMS aseguran que los
resultados de una transacción sobrevivirán a fallas del sistema. Esta propiedad
motiva el aspecto de recuperación de bases de datos, el cual trata sobre como
recuperar la base de datos a un estado consistente en donde todas las acciones
que han hecho un commit queden reflejadas.
Las transacciones proporcionan una ejecución atómica y confiable en presencia
de fallas, una ejecución correcta en presencia de accesos de usuario múltiples y
un manejo correcto de réplicas (en el caso de que se soporten).
TIPOS DE TRANSACCIONES
Las transacciones pueden pertenecer a varias clases. Aun cuando los problemas
fundamentales son los mismos para las diferentes clases, los algoritmos y
técnicas que se usan para tratarlas pueden ser considerablemente diferentes.
Las transacciones pueden ser agrupadas a lo largo de las siguientes
dimensiones:
Áreas de aplicación. En primer lugar, las transacciones se pueden ejecutar en
aplicaciones no distribuidas. Las transacciones que operan en datos distribuidos
se les conoce como transacciones distribuidas. Por otro lado, dado que los
resultados de una transacción que realiza un commit son durables, la única forma
de deshacer los efectos de una transacción con commit es mediante otra
transacción. A este tipo de transacciones se les conoce como transacciones
compensatorias. Finalmente, en ambientes heterogéneos se presentan
transacciones heterogéneas sobre los datos.
Tiempo de duración. Tomando en cuenta el tiempo que transcurre desde que se
inicia una transacción hasta que se realiza un commit o se aborta, las
transacciones pueden ser de tipo batch o en línea. Estas se pueden diferencias
también como transacciones de corta y larga vida. Las transacciones en línea se
17
caracterizan por tiempos de respuesta muy cortos y por accesar un porción
relativamente pequeña de la base de datos. Por otro lado, las transacciones de
tipo batch toman tiempos relativamente largos y accesan grandes porciones de
la base de datos.
Estructura. Considerando la estructura que puede tener una transacción se
examinan dos aspectos: si una transacción puede contener a su vez
subtransacciones o el orden de las acciones de lectura y escritura dentro de una
transacción.
ESTRUCTURA DE TRANSACCIONES
Las transacciones planas consisten de una secuencia de operaciones primitivas
encerradas entre las palabras clave begin y end.
En las transacciones anidadas las operaciones de una transacción pueden ser
así mismo transacciones.
Una transacción anidada dentro de otra transacción conserva las mismas
propiedades que la de sus padres, esto implica, que puede contener así mismo
transacciones dentro de ella. Existen restricciones obvias en una transacción
anidada: debe empezar después que su padre y debe terminar antes que él. Más
aún, el commit de una subtransacción es condicional al commit de su padre, en
otras palabras, si el padre de una o varias transacciones aborta, las
subtransacciones hijas también serán abortadas.
Las transacciones anidadas proporcionan un nivel más alto de concurrencia
entre transacciones. Ya que una transacción consiste de varios transacciones,
es posible tener más concurrencia dentro de una sola transacción. Así también,
es posible recuperarse de fallas de manera independiente de cada
subtransacción. Esto limita el daño a un parte más pequeña de la transacción,
haciendo que costo de la recuperación sea menor.
En el segundo punto de vista se considera el orden de las lecturas y escrituras.
Si las acciones de lectura y escritura pueden ser mezcladas sin ninguna
restricción, entonces, a este tipo de transacciones se les conoce como
generales. En contraste, si se restringe o impone que un dato deber ser leído
antes de que pueda ser escrito entonces se tendrán transacciones restringidas.
Si las transacciones son restringidas a que todas las acciones de lectura se
realicen antes de las acciones de escritura entonces se les conoce como de dos
pasos. Finalmente, existe un modelo de acción para transacciones restringidas
en donde se aplica aún más la restricción de que cada par <read,write> tiene
que ser ejecutado de manera atómica.
ASPECTOS RELACIONADOS AL PROCESAMIENTO DE TRANSACCIONES
Los siguientes son los aspectos más importantes relacionados con el
procesamiento de transacciones:
18
Modelo de estructura de transacciones. Es importante considerar si las
transacciones son planas o pueden estar anidadas.
Consistencia de la base de datos interna. Los algoritmos de control de datos
semántico tienen que satisfacer siempre las restricciones de integridad cuando
una transacción pretende hacer un commit.
Protocolos de confiabilidad. En transacciones distribuidas es necesario introducir
medios de comunicación entre los diferentes nodos de una red para garantizar
la atomicidad y durabilidad de las transacciones. Así también, se requieren
protocolos para la recuperación local y para efectuar los compromisos (commit)
globales.
Algoritmos de control de concurrencia. Los algoritmos de control de concurrencia
deben sincronizar la ejecución de transacciones concurrentes bajo el criterio de
correctitud. La consistencia entre transacciones se garantiza mediante el
aislamiento de las mismas.
Protocolos de control de réplicas. El control de réplicas se refiere a cómo
garantizar la consistencia mutua de datos replicados. Por ejemplo se puede
seguir la estrategia read-one-write-all (ROWA).
19