Está en la página 1de 9

Consultas sobre BDD

Las consultas distribuidas detienen acceso a datos de varios orígenes de datos


heterogéneos. Estos orígenes de datos pueden estar almacenados en el mismo
equipo o en equipos diferentes.
Los usuarios no especifican el procedimiento a seguir en la construcción de la
respuesta a una consulta. Este procedimiento es responsabilidad de un módulo,
dentro del Sistema de Base de Datos Distribuidas, llamado “procesador de
consultas”. Este módulo libera el usuario de la optimización de la consulta, una
tarea que consume mucho tiempo y que es mejor manejada por el “procesador de
consultas” ya que puede explotar grandes cantidades de información acerca de los
datos. El procesamiento de consultas tiene varias etapas a seguir para resolver
una consulta SQL, las características del modelo relacional permiten que cada
motor de base de datos elija su propia representación que, comúnmente, resulta
ser el álgebra relacional
En un ambiente de un SBDD, el procesador de consultas el problema del
procesamiento de consultas es complejo, debido a una gran lista de parámetros
que afecta el desempeño de las consultas distribuidas:
 Relaciones fragmentadas.
 Replicación de relaciones o fragmentos.
 Costos de comunicación (cantidad de datos a enviar)
 Tiempo de respuesta de las consultas.

Recomendaciones:
1. Transformar una consulta de alto nivel (solicitud del usuario final)
en su consulta equivalente en bajo nivel (SQL distribuida),
pasando por la representación en algebra relacional.

2. La transformación debe ser correcta y eficiente.

3. La transformación será correcta si la consulta es semánticamente


correcta y produce un resultado correcto.
Operaciones procesamiento de consultas
Esquema del ejemplo :
EMP (ENO, ENAME, TITLE)
ASG (ENO, PNO, RESP, DUR)

Consulta en ejecución: Encontrar los nombres de los empleados que están


administrando un proyecto.
SELECT ENAME
FROM EMP, ASG
WHERE EMP.ENO=ASG
AND RESP ="MANAGER";

El rol del procesador de consultas es elegir, para una consulta dada, la mejor
representación en álgebra relacional entre dos resultados equivalentes.

Ahora un escenario de SBDD (base de datos fragmentada)

Asuma que la relación EMP y ASG están horizontalmente


fragmentadas:

Los fragmentos ASG1, ASG2, EMP1, EMP2 están almacenados en los


sitios 1, 2, 3, 4 respectivamente.
Objetivos del procesamiento de consulta
 Transformar una consulta de alto nivel (solicitud del usuario final)
sobre una base de datos distribuida, en su consulta equivalente en
bajo nivel (operadores de álgebra relacional).

 Esta transformación implica capas (tareas), que serán presentadas


más adelante.

 Uno de los aspectos importantes es seleccionar una alternativa, ya


que hay muchas alternativas (transformaciones) correctas.

 Se debe seleccionar aquella alternativa que minimice (optimización)


el consumo de recursos
Capas del procesamiento de consultas distribuidas.

Descomposición de la consulta: Se requiere crear una consulta algebraica


utilizando el esquema global de relaciones. La información necesaria para esta
transformación se obtiene del esquema global. La consulta transformada debe ser
normalizada para facilitar su manipulación posterior, analizada semánticamente
para detectar consultas incorrectas, simplificada para eliminar redundancias en los
predicados y reestructurada como una transformación final.
Localización de datos: Recibe la consulta algebraica sobre las relaciones
globales. Su función principal es utilizar la información de distribución de datos en
el esquema de fragmentos para localizar los datos de la consulta. Esto implica
determinar qué fragmentos están implicados en la consulta y transformarla en una
consulta sobre fragmentos.
Optimización global de la consulta: Se encarga de encontrar la estrategia
óptima para ejecutar la consulta. Esto implica seleccionar los mejores operadores
para llevar a cabo la consulta, teniendo en cuenta los costos asociados. Además,
esta estrategia depende de la localización de los fragmentos de datos.
Ejecución de la consulta distribuida: La última capa del procesamiento de
consultas es realizada por todos los sitios que tienen fragmentos implicados en la
consulta. Cada subconsulta ejecutada en un sitio, conocida como consulta local,
se ejecuta utilizando el esquema local del sitio.

Operaciones sobre BDD


Operaciones sobre bases de datos distribuidas implican una serie de actividades y
procesos realizados en entornos distribuidos, donde los datos están dispersos en
múltiples ubicaciones físicas.
Consulta Distribuida
Consultar datos distribuidos a través de múltiples nodos en la red para recuperar
la información necesaria. Esto implica coordinar y ejecutar consultas en varios
nodos de la base de datos. La metodología es la siguiente:

 Identificación de los nodos relevantes: Determinar qué nodos de la base


de datos contienen la información necesaria para la consulta.
 División de la consulta: Descomponer la consulta en partes que puedan
ejecutarse en paralelo en cada nodo.
 Coordinación de la ejecución: Coordinar la ejecución de las partes de la
consulta en cada nodo y recopilar los resultados.
 Fusión de resultados: Combinar los resultados de cada nodo en un
conjunto único de resultados para la consulta.

Transacciones Distribuidas
Realizar transacciones que involucran operaciones en múltiples nodos de la base
de datos. Esto requiere coordinación entre los nodos para garantizar la
consistencia y la atomicidad de las transacciones distribuidas. La metodología es
la siguiente:
 Inicio de la transacción: Iniciar una transacción distribuida que involucre
múltiples nodos de la base de datos.
 Coordinación de la ejecución: Coordinar las operaciones dentro de la
transacción en cada nodo para garantizar la atomicidad y la consistencia de
la transacción.
 Confirmación o reversión: Confirmar o revertir la transacción en todos los
nodos dependiendo del resultado de la operación.

Replicación de Datos
Mantener copias de datos en múltiples nodos para mejorar la disponibilidad y la
escalabilidad del sistema. Las operaciones incluyen la sincronización de datos
entre nodos y la gestión de conflictos en caso de actualizaciones simultáneas.
 Selección de la estrategia de replicación: Decidir qué datos se replicarán y
en qué nodos se replicarán.
 Sincronización de datos: Sincronizar los datos entre los nodos replicados
para garantizar la consistencia.
 Resolución de conflictos: Resolver conflictos que puedan surgir debido a
actualizaciones simultáneas en nodos replicados.
Fragmentación de Datos
Dividir grandes conjuntos de datos en fragmentos más pequeños y distribuirlos en
múltiples nodos. Esto implica decidir cómo dividir los datos y distribuirlos de
manera eficiente para mejorar el rendimiento y la escalabilidad.
 Identificación de los criterios de fragmentación: Determinar cómo dividir los
datos en fragmentos basados en criterios como el rango de valores o la
ubicación geográfica.
 Distribución de fragmentos: Distribuir los fragmentos de datos en los nodos
de la base de datos según los criterios definidos.
 Replicación de fragmentos: Opcionalmente, replicar algunos fragmentos
para mejorar la disponibilidad y la redundancia.

Optimización de Consultas
Optimizar consultas para mejorar el rendimiento en entornos distribuidos. Esto
puede implicar la reescritura de consultas para minimizar la transferencia de datos
entre nodos y maximizar el paralelismo en la ejecución de consultas.
 Análisis del plan de ejecución: Analizar el plan de ejecución de la consulta
para identificar áreas de mejora.
 Selección de estrategias de ejecución: Seleccionar estrategias de ejecución
óptimas, como la optimización de predicados, el uso de índices y la
paralelización de consultas.
 Evaluación del rendimiento: Probar diferentes estrategias de ejecución y
comparar su rendimiento para seleccionar la más eficiente.

Gestión de la Concurrencia y la Consistencia


Garantizar la coherencia de los datos en entornos distribuidos, especialmente en
presencia de múltiples operaciones concurrentes. Esto implica el uso de
protocolos de control de concurrencia y mecanismos de sincronización distribuida.
 Implementación de protocolos de bloqueo: Utilizar protocolos de bloqueo
distribuido para gestionar la concurrencia y prevenir problemas como las
lecturas sucias y las escrituras perdidas.
 Coordinación de transacciones: Coordinar las transacciones distribuidas
utilizando mecanismos de control de concurrencia y sincronización para
garantizar la consistencia de los datos.
Seguridad y Control de Acceso
En una base de datos distribuida que almacena información confidencial de los
clientes, se implementarían medidas de seguridad como la encriptación de datos,
la autenticación de usuarios y el control de acceso basado en roles para proteger
la integridad y la confidencialidad de los datos.
 Implementación de políticas de seguridad: Establecer políticas de seguridad
que definan quién tiene acceso a qué datos y en qué circunstancias.
 Autenticación y autorización: Implementar mecanismos de autenticación
para verificar la identidad de los usuarios y autorización para controlar sus
derechos de acceso.
 Auditoría de acceso: Registrar y monitorear todas las operaciones de
acceso a la base de datos para garantizar el cumplimiento de las políticas
de seguridad.
Software de BDD
En el ámbito de la gestión de bases de datos distribuidas, existen diversas
herramientas y tecnologías que permiten administrar de manera eficiente y segura
estos entornos.
Apache Hadoop: Es un framework de software de código abierto que facilita el
procesamiento distribuido de grandes conjuntos de datos en clústeres de
computadoras. Hadoop incluye componentes como Hadoop Distributed File
System (HDFS) para el almacenamiento distribuido y MapReduce para el
procesamiento distribuido
Apache Cassandra: Es una base de datos distribuida altamente escalable y
tolerante a fallos diseñada para manejar grandes volúmenes de datos distribuidos
en múltiples nodos. Cassandra ofrece una alta disponibilidad y permite consultas y
escrituras rápidas en entornos distribuidos.
Apache Kafka: Es una plataforma de streaming distribuido que se utiliza para la
ingesta y procesamiento de datos en tiempo real. Kafka proporciona una
arquitectura distribuida para la transmisión de eventos entre diferentes
aplicaciones y sistemas.
MongoDB: Aunque MongoDB es una base de datos NoSQL orientada a
documentos, también ofrece capacidades distribuidas que permiten escalar
horizontalmente la base de datos en múltiples nodos. MongoDB puede distribuir
datos a través de réplicas y fragmentación para mejorar el rendimiento y la
disponibilidad.
MySQL Cluster: Es una versión específica de MySQL diseñada para aplicaciones
que requieren alta disponibilidad y escalabilidad horizontal. MySQL Cluster
distribuye datos y consultas entre múltiples nodos para proporcionar un
rendimiento escalable y tolerante a fallos.
Google BigQuery: Es un servicio de almacenamiento y análisis de datos en la
nube que permite ejecutar consultas SQL sobre grandes conjuntos de datos
distribuidos almacenados en la infraestructura de Google. BigQuery es altamente
escalable y se integra con otras herramientas de Google Cloud Platform.
Microsoft SQL Server AlwaysOn Availability Groups: Es una solución de alta
disponibilidad y recuperación de desastres para SQL Server que permite distribuir
datos y cargas de trabajo entre múltiples nodos. AlwaysOn Availability Groups
proporciona replicación de datos sincrónica y asincrónica para mejorar la
disponibilidad y la protección de datos.
Instalar y utilizar alun software de bdd
Requisitos iniciales
Tener al menos dos instancias de MySQL o MariaDB(cada una en un equipo físico
o virtual distinto).Una servirá como maestro y la otra como esclavo. Es decir, todo
lo que hagamos en maestro será replicado en el esclavo.
Asegurarnos de que sean accesibles entre si a través de una conexión de red.

También podría gustarte