domingo, 18 de noviembre de 2012

Conceptos básicos de confiabilidad

Desde el punto de vista de confiabilidad, es conveniente definir a un
estado interno como la unión de todos los estado externos de las
componentes que constituyen el sistema. Así, el cambio de estado
interno se da como respuesta a los estímulos del medio ambiente.

Conceptos básicos de un sistema
El comportamiento del sistema al responder a cualquier estímulo del
medio ambiente necesita establecerse por medio de una especificación,
la cual indica el comportamiento válido de cada estado del sistema. Su
especificación es no sólo necesaria para un buen diseño sino también es
esencial para definir los siguientes conceptos de confiabilidad.


Cualquier desviación de un sistema del comportamiento descrito en su
especificación se considera como una falla. Cada falla necesita ser
rastreada hasta su causa. En un sistema confiable los cambios van de
estados válidos a estados válidos en un sistema no confiable, es posible que el sistema caiga en un estado interno el cual no obedece a su especificación; a este tipo de estados se les conoce como estados erróneos. Transiciones a partir de este estado pueden causar una falla.

La parte del estado interno que es incorrecta se le conoce como error del
sistema. Cualquier error en los estados internos de las componentes del
sistema se le conoce como una falta en el sistema.


Las faltas del sistema se pueden clasificar como severas (hardware) y no
severas (software). Las faltas severas casi siempre son de tipo permanente y
conducen a fallas del sistema severas. Las faltas no severas por lo general son transitorias o intermitentes. Ellas inducir fallas del sistema no severas las cuales representan, por lo general, el 90 % de todas las fallas.



miércoles, 14 de noviembre de 2012

Disciplinas del Interbloqueo


Interbloqueo: Un esquema para resolver el interbloque en su detención.

Prevención.-

Las técnicas de interbloqueo utilizan el concepto de marca de tiempo de transacción existen dos esquemas que evitan el interbloqueo.


Detención.-

Existen diversos algoritmos para ello en la detención de ciclos en el grafo de esperas, entre ellos:

Algoritmo 1.-
Comprueba la existencia de ciclos mediante la eliminación de nodos terminales.

Algoritmo 
2
.-
Comprueba posibles ciclos desde la ultima transacción bloqueada y marcando los nodos por lo que pasa. Si pasa dos veces por el mismo nodo a detectado un ciclo.



Recuperación.-

El objetivo de esta parte de la asignación es conocer y entender las distintas fallas que pueden ocurrir en un BMS y como es posible restaurar el sistema después de dichas fallas este tema se llama recuperación de fallas.
La recuperación de fallas esta internamente ligado Al procesamiento de las transacciones tiene la cualidad de ser anatómica a pesar de que puede estar compuesto de varias operaciones de atomicidad se controla como llegada al commit. Si una transacción no sufrió ningún problema y se pudo ejecutar completa, entonces el DBMS debe de “comprometerse” hacer permanentes los cambios que la transacción hizo sobre la base de datos y a que esta debido quedar en un estado de conciencia. 



lunes, 12 de noviembre de 2012


Control de concurrencia

La concurrencia en las base de datos es de suprema importancia en los sistemas de información ya que evita errores en el momento de ejecutar las diferentes transacciones. En si la concurrencia es la propiedad de los sistemas que permiten que múltiples procesos sean ejecutados al mismo tiempo y que potencialmente puedan interactuan entre si.

BLOQUEOS COMPARTIDOS 
Los bloqueos compartidos permiten que varias transacciones simultáneas lean (SELECT) un recurso en situaciones de control de simultaneidad pesimista.
Ninguna otra transacción podrá modificar los datos mientras el bloqueo compartido exista en el recurso.Los bloqueos compartidos en un recurso se liberan tan pronto como finaliza la operación de lectura, amenos que se haya establecido el nivel de aislamiento de la transacción como REPEATABLE READ o más alto, o bien se utilice una sugerencia de bloqueo para mantener los bloqueos compartidos durante la transacción.

BLOQUEOS EXCLUSIVOS 
Los bloqueos exclusivos evitan que transacciones simultáneas tengan acceso a un recurso. Al utilizar un bloqueo exclusivo, el resto de las transacciones no pueden modificar los datos; las operaciones de lectura sólo se pueden realizar si se utiliza la sugerencia NOLOCK o el nivel de aislamiento de lectura no confirmada.Las instrucciones para modificar datos, como INSERT, UPDATE y DELETE combinan las operaciones de modificación con las de lectura. En primer lugar, la instrucción lleva a cabo operaciones de lectura para adquirir los datos antes de proceder a ejecutar las operaciones de modificación necesarias. Por tanto, las instrucciones de modificación de datos suelen solicitar bloqueos compartidos y exclusivos. Por ejemplo, una instrucción UPDATE puede modificar las filas de una tabla a partir de una combinación con otra tabla. En este caso, la instrucción UPDATE solicita bloqueos compartidos para la filas leídas en la tabla de combinación, además de bloqueos exclusivos para las filas actualizadas.

MARCAS DE TIEMPO
•En lugar de determinar el orden entre las transacciones en conflicto en función del momento del acceso a los elementos, determinan por adelantado una ordenación de las transacciones.
•El interbloqueo es imposible.
•Una marca de tiempo es un identificador único asociado a cada transacción.
•Las actualizaciones físicas se retrasan hasta la confirmación de las transacciones. No se puede actualizar ningún.
•Protocolos:
 –Wait-die: que fuerza a una transacción a esperar en caso de que entre en conflicto con otra transacción cuya marca de tiempo sea mas reciente, o a morir (abortar y reiniciar) si la transacción que se esta ejecutando es más antigua.
 Wound-wait: que permite a una transacción matar a otra que posea una marca de tiempo más reciente, o que fuerza a la transacción peticionaria a esperar.

•Marcas de tiempo multiversión
 –Varias transacciones leen y escriben diferentes versiones del mismo dato siempre que cada transacción sea un conjunto consistente de versiones de todos los datos a los que accede.

Control de concurrencia optimista
Los algoritmos de control de concurrencia discutidos antes son por naturaleza pesimistas. En otras palabras, ellos asumen que los conflictos entre transacciones son muy frecuentes y no permiten el acceso a un dato si existe una transacción conflictiva que accesa el mismo dato. Así, la ejecución de cualquier operación de una transacción sigue la secuencia de fases: validación (V), lectura (R), cómputo(C) y escritura (W) . Los algoritmos optimistas, por otra parte, retrasan la fase de validación justo antes de la fase de escritura . De esta manera, una operación sometida a un despachador optimista nunca es retrasada.Las operaciones de lectura, cómputo y escrita de cada transacción se procesan libremente sin actualizar la base de datos corriente. Cada transacción inicialmente hace sus cambios en copias locales de los datos. La fase de validación consiste en verificar si esas actualizaciones conservan la consistencia de la base de datos. Si la respuesta es positiva, los cambios se hacen globales (escritos en la base de datos corriente). De otra manera, la transacción es abortada y tiene que reiniciar.



sábado, 10 de noviembre de 2012

MANEJO DE TRANSACCIONES

CONCEPTOS DE TRANSACCIONES

A) Una transacción en un sistema de gestión de bases de datos (SGBD), es un conjunto de ordenes que se ejecutan formando una unidad de trabajo, es decir, una forma indivisible o atómica.

B) Transacción consiste en lograr hacer cualquier tipo de operación en una base de datos, basándonos en consultas desde las mas simples hasta las de mayor grado de complejidad.

C) Transacción se entiende en el ámbito de las bases de datos en lograr hacer acciones sobre las bases de datos deseadas, logrando operaciones de ingreso, borrado, actualización y visualizar.

CONTROL DE CONCURRENCIA
Un algoritmo de control de concurrencia asegura que las transacciones se ejecuten automáticamente controlando la intercalación de transacciones concurrentes, para dar la ilusión de que las transacciones se ejecutan serialmente, una después de la otra sin ninguna intercalación. 

CONFIABILIDAD

Se de be de tener la certeza de que un sistema en linea no puede fallar dado que si existe algún error en nuestro algoritmo ocasionaría no solo que se estropeara una operación  pueden significar estos errores perdidas económicas bastante grandes, para que nuestro sistema de bases de datos sea confiable se tienen que tener probadas todas las posibles operaciones que se pueden realizar en el para simular una transacción de un cliente en un tiempo determinado.

EJEMPLO:

Considere una agencia de reservaciones para líneas aéreas con las siguientes relaciones:

FLIGHT( FNO, DATE, SRC, DEST, STSOLD, CAP )
CUST( CNAME, ADDR, BAL )
FC( FNO, DATE, CNAME, SPECIAL )

Una versión simplificada de una reservación típica puede ser implementada mediante la siguiente transacción:
Begin_transaction Reservación

begin

input( flight_no, date, customer_name );
EXEC SQL UPDATE FLIGHT

SET STSOLD = STSOLD + 1
WHERE FNO = flight_no
AND DATE = date

EXEC SQL INSERT

INTO FC( FNAME, DATE, CNAME, SPECIAL )
VALUES (flight_no, date, customer_name, null )
output("reservación terminada");
end.
QUE ES EL ÁLGEBRA RELACIONAL

El álgebra relacional consiste de algunas simples pero poderosas maneras de construir nuevas relaciones a partir de otras. Si pensamos que las relaciones iniciales son los datos almacenados entonces las nuevas relaciones se pueden ver como respuestas a algunas consultas deseadas.
Consta de un conjunto de operaciones que toman como entrada una o dos relaciones y 
producen como resultado una nueva relación sin cambiar las relaciones originales, por lo 
tanto, es posible anidar y combinar operadores.
Tanto las relaciones que actúan como operando como la relación resultante a la salida pueden 
emplearse como entradas para otra operación.



Álgebra relacional a la optimización de consultas en Mysql

MySQL registra las consultas de tipo SELECT y su resultado. Como lo normal es que se acceda a la base de datos a través de un aplicación, las consultas repetidas son muy frecuentes (listas de poblaciones, de códigos, de nombres....etc ).
naturalmente las consultas de modificación de datos (INSERT, DELETE, UPDATE....) invalidan las consultas afectadas de la caché y provocan la eliminación de estas de la caché.

Como se representa la proyección y la selección   relacionado con las consultas  a  bases de datos

Proyección
La operación de proyección permite quitar ciertos atributos de la relación.
Esta operación es unaria, copiando su relación base dada como argumento y quitando ciertas 
columnas.
La proyección se señala con la letra griega pi mayúscula (Π). Como subíndice de Π se coloca 
una lista de todos los atributos que se desea aparezcan en el resultado.
La relación argumento se escribe después de Π entre paréntesis.

Selección
Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset.

CONSULTAS DE SELECCIÓN 

Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros es modificable.

La sintaxis básica de una consulta de selección es la siguiente:
SELECT Campos FROM Tabla; En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos.
División
Operación del álgebra relacional que crea una nueva relación, seleccionando las filas en una relación que se corresponden con todas las filas en otra relación. Se asume que A, B y C son relaciones y se desea dividir B por C, dando A como resultado.
Las columnas de C deben ser un subconjunto de las columnas de B. Las columnas de A son todas y sólo aquellas columnas de B que no son columnas de C.
Una fila se encuentra en A sí y sólo si está asociada en B con cada fila de C.

EJEMPLOS:




domingo, 4 de noviembre de 2012

Álgebra Relacional

El álgebra relacional se usa para la optimización de consultas y consultas distribuidas.
tambien define un conjunto de operaciones y formulas para manipular tablas, estos conjuntos son relacionales de base de datos.

Ejemplo:
EMP_TBL={Apellido,Nombre,ID_EMP}
tenemos la relación EMP_TBL
Contiene los atributos:
1.- Apellido
2.- Nombre
3.-ID_EMP
los valores de cada atributo determinar su dominio
relación es equivalente a:
1.-Archivo plano de dos dimensiones
2.-Tabla en base de datos relacionales 
Contiene 4-tuplas
Columnas son atributos
las filas son tuplas

Ejemplo













Símbolos
„ Π: Project  una columna de la relación  
„ σ: Select una fila o tupla de la relación
„ <>: natural JOIN entre dos relaciones
„ <: semi JOIN entre dos relaciones
„ θ: theta JOIN entre dos relaciones
„ ∪: unión entre dos relaciones
„ ∩: intersección entre dos relaciones
„ −: diferencia entre dos relaciones
„ X: producto Cartesiano entre dos relaciones





PARSING


Parsing: Se construye un parse tree de la consulta.

Función que se llama DATA PARSING, la cual consiste en que se puede editar la salida de los datos que se envían.


Análisis sintáctico y parse trees.

Tarea del parser: tomar texto de consulta SQL
convertirla en un parse tree cuyos nodos son:
• Átomos: elementos lexicográficos (keywords, nombre de atributo, constante, operador como +o <)
• Categorías sintáctica: Nombres de familias de subpartes de la consulta. <SFW> representa
consulta de la forma <Select-From-Where>< Condición > expresan que es una condición.
Si un nodo es un átomo entonces no tiene hijos.

• Si el nodo es una categoría sintáctica, sus hijos se descubren por medio de una de las
reglas de la gramática para el lenguaje.







Heurísticas 

En computación  heuristico se refiere a un proceso de encontrar la solución de manera empírica o sea haciendo una prueba analizando los resultados y formulando nuevas pruebas a base de los errores anteriores.
En informática, algunos motores de base de datos utilizan un método heuristico en los índices de búsqueda para encontrar el atributo de la condición porque usan las estadísticas de ocurrencia de los atributos que forman el índice.

Acceso concurrente a bases de datos

Un sistema que permita a varias estaciones de trabajo modificar en forma simultánea una misma base de datos, debe tomar precauciones para evitar operaciones concurrentes sobre un mismo registro. Esto es, si un usuario de una estación de trabajo solicita el registro Mfn 3 para ser modificado, el sistema debe advertir a otro usuario que  solicite el mismo registro 3, que está siendo actualizado por otra estación de trabajo.

Cuando a un operador se le concede la edición de un registro, el mismo se bloquea para que otro usuario no pueda actualizarlo en forma simultánea. Cuando este registro es actualizado o se cancela su edición (botones guardar o cancelar de la barra de herramientas), el registro se libera quedando disponible para el resto de los operadores

Como se crea un árbol de consulta 


Es una representación interna de una instrucción Sql donde se almacenan de modo separado las partes menores que la componen. Estos árboles de consultas son visibles cuando se arranca el motor de Postgres con nivel de debug 4 y se teclea queries en la  interface de usuario interactivo. Las acciones de las reglas almacenadas en el catalogo del sistema  pg_rewrite están almacenadas también como árboles de consultas.


Las partes de un árbol de consulta son:
•El tipo de comando (commandtype). Este es un valor sencillo que nos dice el comando que produjo el árbol de traducción (select, insert, update, delete).
La tabla de rango (rangetable). La tabla de rango es una lista de las relaciones que se utilizan en la consulta. En una instrucción Select, son las relaciones dadas tras la palabra clave from. Toda entrada en la tabla del rango identifica una tabla ovista, y dice el nombre por el que se identifica en las otras partes de la consulta. En un árbol de consulta, las entradas de la tabla de rango se indican por un índice en lugar de por su nombre como estarían en una instrucción Sql. Esto puede ocurrir cuando se han mezclado las tablas de rangos de reglas.



martes, 30 de octubre de 2012


Optimización de consultas

El objetivo del procesamiento de consultas en un ambiente distribuido es transformar una consulta sobre una base de datos distribuida en una especificación de alto nivel a una estrategia de ejecución eficiente expresada en un lenguaje de bajo nivel sobre bases de datos locales.
Así, el problema de optimización de consultas es minimizar una funcion de costo tal que la funcion del costo total = costo de I/O + costo de CPU + costo de comunicación

Los diferentes factores pueden tener pesos diferentes dependiendo del ambiente distribuido en el que se trabaje. Por ejemplo, en las redes de área amplia (WAN), normalmente el costo de comunicación domina dado que hay una velocidad de comunicación relativamente baja, los canales están saturados y el trabajo adicional requerido por los protocolos de comunicación es considerable. Así, los algoritmos diseñados para trabajar en una WAN, por lo general, ignoran los costos de CPU y de I/O. En redes de área local (LAN) el costo de comunicación no es tan dominante, así que se consideran los tres factores con pesos variables. 

Optimización Global de Consultas 

Dada una consulta algebraica sobre fragmentos, el objetivo de esta capa es hallar una estrategia de ejecución para la consulta cercana a la óptima. La estrategia de ejecución para una consulta distribuida puede ser descrita con los operadores del álgebra relacional y con primitivas de comunicación para transferir datos entre nodos. Para encontrar una buena transformación se consideran las características de los fragmentos, tales como, sus cardinalidades. Un aspecto importante de la optimización de consultas es el ordenamiento de juntas, dado que algunas permutaciones de juntas dentro de la consulta pueden conducir a un mejoramiento de varios órdenes de magnitud. La salida de la capa de optimización global es una consulta algebraica optimizada con operación de comunicación incluidas sobre los fragmentos. 

Optimización Local de Consultas 

El trabajo de la última capa se efectúa en todos los nodos con fragmentos involucrados en la consulta. Cada subconsulta que se ejecuta en un nodo, llamada consulta local, es optimizada usando el esquema local del nodo. Hasta este momento, se pueden eligen los algoritmos para realizar las operaciones relacionales.

domingo, 28 de octubre de 2012

LAS DIFERENTES ESTRATEGIAS DE PROCESAMIENTO 

DE CONSULTAS DISTRIBUIDAS


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. La optimización de consultas es, entonces, una de estas etapas.

Existen distintos métodos para optimizar consultas relacionales, sin embargo el enfoque de optimización basada en costos combinado con heurísticas que permitan reducir el espacio de búsqueda de la solución es el método mayormente utilizado por los motores de base de datos relaciones de la actualidad, en todo caso, independiente del método elegido para optimizar la consulta, la salida de este proceso debe ser un plan de ejecución
, el cual comúnmente es representado en su forma de árbol relacional.

Arboles de consultas




Transformaciones equivalentes 

1.-el servidor recibe una petición de un nodo
2.-el servidor es atacado por el acceso concurrente a la base de datos cargada localmente
3.-el servidor muestra un resultado y le da un hilo a cada una de las maquinas nodo de la red local.

Una base de datos es accesada de esta manera la técnica que se utiliza es la de fragmentación de datos que puede ser híbrida, horizontal y vertical.
En esta fragmentación lo que no se quiere es perder la consistencia de los datos, por lo tanto se respetan las formas normales de la base de datos ok.
Bueno para realizar una transformación en la consulta primero desfragmentamos siguiendo los estándares marcados por las reglas formales y posteriormente realizamos el envió y la maquina que recibe es la que muestra el resultado pertinente para el usuario, de esta se puede producir una copia que sera la equivalente a la original.

Join

La sentencia Join en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: interno, externo, y cruzado.
En casos especiales una tabla puede unirse a sí misma, produciendo una auto-combinación,SELF-JOIN.
Matemáticamente, JOIN es composición relacional, la operación fundamental en el álgebra relacional, y generalizando es una función de composición.

Optimización de Consultas Distribuidas
El objetivo del procesamiento de consultas en un ambiente distribuido es transformar una consulta sobre una base de datos distribuida en una especificación de alto nivel a una estrategia de ejecución eficiente expresada en un lenguaje de bajo nivel sobre bases de datos locales.
Así, el problema de optimización de consultas es minimizar una función de costo tal que función de costo total = costo de I/O + costo de CPU + costo de comunicación
Los diferentes factores pueden tener pesos diferentes dependiendo del ambiente distribuido en el que se trabaje. Por ejemplo, en las redes de área amplia (WAN), normalmente el costo de comunicación domina dado que hay una velocidad de comunicación relativamente baja, los canales están saturados y el trabajo adicional requerido por los protocolos de comunicación es considerable. Así, los algoritmos diseñados para trabajar en una WAN, por lo general, ignoran los costos de CPU y de I/O. En redes de área local (LAN) el costo de comunicación no es tan dominante, así que se consideran los tres factores con pesos variables.
Optimización Global de Consultas:
Dada una consulta algebraica sobre fragmentos, el objetivo de esta capa es hallar una estrategia de ejecución para la consulta cercana a la óptima. La estrategia de ejecución para una consulta distribuida puede ser descrita con los operadores del álgebra relacional y con primitivas de comunicación para transferir datos entre nodos. Para encontrar una buena transformación se consideran las características de los fragmentos, tales como, sus cordialidades. Un aspecto importante de la optimización de consultas es el ordenamiento de juntas, dado que algunas permutaciones de juntas dentro de la consulta pueden conducir a un mejoramiento de varios órdenes de magnitud. La salida de la capa de optimización global es una consulta algebraica optimizada con operación de comunicación incluida sobre los fragmentos.
Optimización Local de Consultas
El trabajo de la última capa se efectúa en todos los nodos con fragmentos involucrados en la consulta. Cada subconsulta que se ejecuta en un nodo, llamada consulta local, es optimizada usando el esquema local del nodo. Hasta este momento, se pueden eligen los algoritmos para realizar las operaciones relacionales. La optimización local utiliza los algoritmos de sistemas centralizados. Optimizar las consultas distribuidas
Para mejorar el rendimiento, SQL Server 2005 realiza los siguientes tipos de optimización específicos de las consultas distribuidas:
Ejecución de consultas remotas utilizada con proveedores de comandos SQL de OLE DB.
Se considera que un proveedor OLE DB es un proveedor de comandos SQL si cumple los siguientes requisitos mínimos:
Admite el objeto Command y todas sus interfaces obligatorias.
Admite la sintaxis DBPROPVAL SQL SUBMINIMUM o SQL-92 de nivel de entrada o superior, u ODBC de nivel de núcleo o superior. El proveedor debe proporcionar este nivel de lenguaje mediante la propiedad DBPROP_SQL SUPPORT de OLE DB.


viernes, 5 de octubre de 2012

  Esquema de fragmentación y distribución de una BDD


 La fragmentación y asignación de los datos caracterizan el diseño de BDD. La fragmentación se ocupa fundamentalmente de los criterios lógicos que motivan la división de relaciones globales en fragmentos, mientras que la asignación se ocupa de los aspectos físicos de su ubicación y réplicas en sitios; aunque hay una diferencia entre ambos procesos, su interrelación es importante para obtener un diseño óptimo. En caso que también se distribuyan las aplicaciones debemos tener en cuenta el diseño de los esquemas, los requerimientos más importantes de las aplicaciones tenemos las siguientes:  Sitio que comparte una aplicación. Frecuencia de activación de la aplicación  Cantidad, tipo y distribución estadística de los accesos de cada aplicación a cada dato requerido. En el diseño de un sistema de bases de datos distribuidas debemos tener en cuenta algunas estrategias y objetivos y se deben en paralelo tomar decisiones sobre cómo hay que distribuir los datos entre los sitios de la red.

Estrategias y objetivos.
Desde el punto de vista conceptual la transparencia en un sistema de gestión de bases de datos distribuida se refiere a la división del nivel semántico y la implementación del sistema. El objetivo de la transparencia es ocultar al usuario los detalles de diseño, es decir, el usuario no tiene conocer que se encuentra trabajando sobre un sistema distribuido, y menos como se encuentra distribuidos los dato del sistema. El nivel de transparencia tiene que garantizar un compromiso en dos extremos: la facilidad de uso y el grado de dificultad más el costo de proporcionar un alto nivel de transparencia. Los objetivos que son comunes en la implementación de los sistemas de 
bases de datos distribuidas son los siguientes: Transparencia de ubicación. Permite a los usuarios acceder a los datos sin tener en cuenta la ubicación de los mismos. Esta transparencia se puede conseguir cuando los administradores de transacciones distribuidas (ATD) son capaces de determinar la localización de los datos y de emitir acciones a los ADs apropiados, lo cual puede ejecutarse cuando los ATs poseen acceso a los directorios de localizaciones de los datos. Si los datos cambian de lugar, solo el ATs necesita conocer lo ocurrido. Todas las transacciones ignoran la modificación en la localización. Transparencia de duplicación. Para que la transparencia de duplicación sea posible, los administradores de transacciones deben traducir las solicitudes de procesamiento de transacción en acciones para el administrador de datos. Para las lecturas el ATs selecciona uno de los nodos que almacena los datos y ordena la lectura. Para facilitar esta selección el ATs debe conservar estadísticas sobre el tiempo que se requiere para leer datos de varios nodos, y seleccionar el de mejor rendimiento. La escritura de datos duplicados suelen ser más complicadas, porque el ATs debe emitir una acción de escritura para cada uno de los ADs que almacena una copia de dichos datos. Para mayor información ver la sección de log de transacciones de SQL  Server. Las actualizaciones afectan las columnas que tienen datos de longitud variable o nulos, esto se puede resolver combinando los DELETES y INSERT, aun cuando la longitud física de los datos no varia. En SQL Server para Windows NT ahora se ejecutan todas las actualizaciones sin modificar el tamaño físico de los datos, a pesar que el tipo de dato sea afectado Transparencia de concurrencia. Cuando múltiples transacciones que involucre la base de datos distribuida se ejecuten al mismo tiempo, los resultados de las transacciones no deberán afectarse. La transparencia de concurrencia se logra si los resultados de todas las transacciones concurrentes son consistentes de manera lógica con los resultados que se habrían obtenido si las transacciones se hubieran ejecutado una por una, en un orden serial arbitrario. Transparencia de fallas. Significa que a pesar de fallas en la transacción, en el SGBDD, en la red y en la computadora, las transacciones sean procesadas de un modo correcto. Frente a una falla, las transacciones deben ser atómicas, significa que se procesen todas o ninguna de ellas. Para este tipo de problemas es importante tener resguardo(Backup) de la base de datos, y así poder restaurarla cuando sea conveniente. El sistema debe detectar cuándo falla una localidad y tomar las medidas necesarias para recuperarse del fallo. El sistema no debe seguir utilizando la localidad que falló. Por último, cuando se recupere o repare esta localidad, debe contarse con mecanismos para reintegrarla al sistema con el mínimo de complicaciones. En un SBDD pueden surgir uno o varios problemas imprevistos, los cuales hay que solucionar de inmediato, de modo que la afectación de la disponibilidad del sistema sea mínima. Dentro de estos problemas encontramos los siguientes: Fallo de disco. Cuando una o más de las unidades de disco donde se almacena la base de datos falla, nos encontramos ante una pérdida completa de los datos, esto se puede resolver, restaurando la base de datos con el respaldo más actualizado. 
Errores del usuario En caso que un usuario o una determinada aplicación haga un gran número de modificaciones inválidas involuntariamente o malévolamente a los datos, la mejor manera de resolver este problema puede ser restaurar los datos en el punto antes de que se efectuaran estas modificaciones. Pérdida permanente de un servidor. Cuando un servidor queda fuera de servicio, ya sea por rotura o por alguna otra razón es necesario activar un servidor de reserva o restaurar una copia de la base de datos en otro servidor.

Localidad del procesamiento. Los datos se deben distribuir lo más cerca posible de las aplicaciones que los usan para maximizar la localidad del procesamiento, este principio responde a minimizar el acceso remoto a los datos. Diseñar una distribución que maximice localidad del procesamiento puede hacerse añadiendo la cantidad de referencias locales y remotas correspondientes a cada fragmentación candidata y asignar la fragmentación eligiendo la mejor solución. Independencia de configuración. La independencia de configuración permite añadir o reemplazar hardware sin tener que cambiar componentes de software existentes en el
SGBBD. SGBDD no homogéneos. Posibilita integrar bases de datos mantenidas por diferentes SGBDD sobre computadoras diferentes. Existen numerosos SGBDD que son suministrados por diferentes fabricantes. Para solucionar este problema se realizó esta amplia interfaz Particionamiento de la Base de Datos. La base de datos se distribuye de modo que no haya solapamiento o duplicación de los datos mantenidos en las diferentes localidades, como no hay duplicaciones de los datos, se evitan los costos asociados con el almacenamiento y mantenimiento de datos redundantes. Si un mismo segmento de datos se usa en más de una localidad se ve limitada la disponibilidad de los datos. La fiabilidad también puede verse limitada cuando se produce un fallo en el sistema de cálculo de una localidad se afecta la disponibilidad de los datos de esa localidad no estén disponible para los usuarios en cualquier parte del sistema. Fragmentación de datos. Consiste en subdividir las relaciones, y distribuirlas entre los sitios de la red, tiene como objetivo buscar formas alternativas de dividir una las instancias (tablas) de relaciones en otras más pequeñas. La fragmentación se puede realizar por tuplas individuales (fragmentación horizontal), por atributos individuales (fragmentación vertical) o una combinación de ambas (fragmentación híbrida)
El principal problema de la fragmentación radica en encontrar la unidad apropiada de distribución. Una relación no es una buena unidad por muchas razones. Normalmente las vistas de una relación están formadas por subconjuntos de relaciones.
Además, las aplicaciones acceden localmente a subconjuntos de relaciones. Por ello, es necesario considerar a los subconjuntos de relaciones como unidad de distribución. Al descomponer de una relación en fragmentos, tratados cada uno de ellos como una unidad de distribución, permite el proceso concurrente de las transacciones. El conjunto de estas relaciones, provocará la ejecución paralela de una consulta al ser dividida en una serie de subconsultas que operará sobre los fragmentos. Cuando las vistas definidas sobre una relación son consideradas como unidad de distribución que se ubican en diferentes sitios de la red, podemos optar por dos alternativas diferentes: La relación no estará replicada y se almacena en un único sitio, o existe réplica en todos o algunos de los sitios en los cuales reside la aplicación. Las consecuencias de esta estrategia son la generación de un volumen de accesos remotos que pueden ser innecesarios con un mal manejo de estas replicas. Además, las réplicas innecesarias pueden causar problemas en la ejecución de las actualizaciones y puede no ser deseable si el espacio de almacenamiento está limitado. Los inconveniente de la fragmentación están dados en que si las pueden estar definidas por fragmentos mutuamente exclusivos y al recuperar los datos de dos fragmentos situados en sitios diferentes es necesario trasmitir los datos de un sitio a otro y realizar sobre ellos la operación de unión (Join), lo cual puede ser costoso. El control semántico cuando los atributos implicados en una dependencia una relación se descompone en diferentes fragmentos y estos se ubican en sitios diferentes puede ser muy costos porque es necesario hacer búsquedas en un gran número de sitio. Fragmentación horizontal. La fragmentación horizontal es la división en tuplas de una relación en fragmentos. Estos fragmentos pueden ser disjuntos y pueden estar duplicados. Del concepto la fragmentación horizontal se desprende el de fragmentación horizontal primaria (FHP) utilizando predicados definidos en la relación y el de fragmentación horizontal derivada (FHD) que resulta de los predicados definidos en otra relación. Fragmentación vertical. Es la división de un conjunto de atributos de un objeto en subconjuntos que pueden solaparse. Cuando se proyecta la relación original sobre un conjunto de atributos se obtienen los fragmentos. Fragmentación mixta. Es el resultado de aplicar los dos tipos fragmentaciones mencionados anteriormente, este tipo de fragmentación puede llevarse a cabo de tres formas diferentes:
Es el resultado de aplicar la fragmentación vertical y, posteriormente el fraccionamiento horizontal sobre los fragmentos verticales (denominada VH). Es el resultado de realizar la división horizontal, para posteriormente aplicar sobre los fragmentos generados la fragmentación vertical (llamada HV) . Este enfoque es relativamente nuevo consiste en aplicar de forma simultánea, y no secuencial sobre una relación, la fragmentación horizontal y la vertical; en este caso, se generara una rejilla y los fragmentos formaran las celdas de esa rejilla, cada celda será exactamente un fragmento vertical y un fragmento horizontal (nótese que en este caso el grado de fragmentación alcanzado es máximo, y no por ello la descomposición resultará más eficiente
a) Relación R

b) Fragmentación Vertical

c) Fragmentación Horizontal

d) Fragmentación HV

e) Fragmentación VH

f) Celdas


 Distintos tipos de fragmentación Reglas de corrección de la fragmentación. A continuación se enuncian tres reglas que se deben cumplir durante el proceso de fragmentación, estas asegurarán que no se produzcan cambios semánticos en la base de datos durante el proceso. Compleción. Al decomponerse una relación Si una relación R en una serie de fragmentos R1, R2, ..., Rn, cada elemento de datos que pueda encontrarse en R deberá poder encontrarse en uno o varios fragmentos Ri. Esta propiedad extremadamente importante asegura que los datos de la relación global se proyectan sobre los fragmentos sin pérdida alguna. Es necesario aclarar que en el caso de la fragmentación horizontal los elementos o fragmentos son tuplas, mientras que en el caso vertical los fragmentos o elementos de datos son atributos. 2. Reconstrucción. Si una relación R se descompone en una serie de fragmentos R1, R2, ..., Rn, puede definirse un operador relacional  tal que R =  Ri, Ri ∈ FR El operador será diferente en dependencia de la forma de fragmentación. La reconstrucción de la relación a partir de sus fragmentos asegura la preservación de las restricciones definidas sobre los datos en forma de dependencias.
Disyunción. Esta regla garantiza que cuando una relación R se descompone en fragmentos R1, R2, ..., Rn, horizontales y un elemento de datos di se encuentra en algún fragmento Rj, entonces no se encuentra en otro fragmento Rk (k ≠ j). Esta regla asegura que los fragmentos horizontales sean disjuntos. Si una relación R se descompone verticalmente, sus atributos primarios clave normalmente se repiten en todos sus fragmentos.
Alternativas de asignación Partiendo de que la base de datos ha sido fragmentada correctamente, es necesario ubicar los diferentes fragmentos en varios sitios de la red, una vez que los fragmentos son asignados es necesario pensar en la posibilidad de duplicar algunos de ellos para mantener una copia. Las razones para mantener varias copias están en lograr incrementar de la seguridad, mayor disponibilidad, mayor paralelismo, mayor independencia de las unidades de procesamiento, menor tráfico de datos en la red. Las solicitudes de actualizaciones se complican un poco ya que el sistema tiene que asegurar que todas las copias de los datos se actualicen garantizando que sean consistentes. Por otra parte, la ejecución de consultas de actualización, de escritura, implicaría la actualización de todas las copias que existan en la red, cuyo proceso puede resultar problemático y complicado. Por tanto, un buen parámetro para afrontar es el grado de réplica, que consistiría en sopesar la cantidad de consultas de lectura que se efectuarán, así como el número de consultas de escritura que se llevarán a cabo. En una red donde las consultas que se procesen sean mayoritariamente de lectura, se podría alcanzar un alto grado de réplica, no así en el caso contrario. Con respecto a la duplicación de fragmentos se pueden seguir tres tendencias básicas:
1.Un extremo es replicar la base de datos completamente en cada sitio del sistema distribuido, en este caso la base de datos distribuida estaría completamente replicada. En este caso se mejora la disponibilidad e incrementa rapidez de las recuperaciones para solicitudes globales, pero retrasa drásticamente las operaciones de actualización y encarece los métodos de control de concurrencia y recobrado.
2. El otro extremo se refiere a las bases de datos no replicadas; o sea, cada fragmento es asignado a solo un sitio. En este caso todos los fragmentos deben ser disjuntos, excepto para la réplica de la llave primaria en la fragmentación vertical o mixta. Esta variante también se nombra localización no redundante.
 3. En las bases de datos parcialmente replicada algunos de los fragmentos de la base de datos son replicados, se ubicaran copias de algunos fragmentos en diferentes sitio de la red. Se muestra las tres alternativa de réplicas con respecto a distintas funciones de bases de datos distribuido.