Aplicación de Algoritmos Genéticos en la Fragmentación Vertical y

Anuncio
Aplicación de Algoritmos Genéticos en la Fragmentación Vertical y asignación simultanea en Bases de Datos Distribuidas
Rodrigo Peralta González
Alumno Ingeniería Civil Informática
Universidad Católica del Maule
Talca, Chile
[email protected]
Resumen.
Actualmente se produce que cada vez mas las empresas se encuentran abarcando territorios geográficamente separados por lo cual, estas poseen sucursales en diferentes lugares. Pero estas empresas necesitan compartir la información, es por esto y al actual avance tecnológico que se pueden utilizar y aplicar las bases de datos distribuidas. Para ser diseñadas se necesita tiempo y esfuerzo pues toman un arduo trabajo en la producción de la fragmentación y ubicación de la información. En este trabajo se presenta un Algoritmo Genético para la resolución de dichas tareas, este ataca, simultáneamente, el problema de fragmentar verticalmente y asignar los fragmentos a los sitios de manera óptima. Pues la naturaleza evolutiva del Algoritmo Genético permite resolver en paralelo la fragmentación y la asignación: problemas que guardan una relación no lineal entre ellos.
Palabras clave: Bases de Datos, Distribución, Fragmentación, Algoritmos Genéticos, Atributos, Transacción.
1. Introducción
En la bases de datos distribuidos, se trata de realizar de manera óptima la fragmentación de los atributos, pues este problema se suma a los ya presentados al realizar una base de datos clásica. Cabe destacar que el propósito de las bases de distribuidas es mejorar el rendimiento global del sistema. El diseño de la distribución, a su vez, está compuesto de la fragmentación (proceso mediante el cual una relación global es descompuesta en fragmentos horizontales y/o verticales) y de la asignación de los fragmentos a los diversos sitios de la red. En este trabajo se presentara una solución a la fragmentación vertical y a la asignación de los fragmentos, cabe decir que la fragmentación vertical atiende al agrupamiento de datos en función de atributos o conjuntos de ellos y la asignación, por su parte, se refiere al problema de ubicar los fragmentos (ya sean verticales u horizontales) de manera que el acceso a la información se haga de la “mejor” manera posible.
Típicamente, los criterios que determinan si la fragmentación y la asignación son óptimas se establecen de manera independiente. Por ello, es frecuente que se trate de optimizar en dos pasos. En el primero se busca la fragmentación más óptima y, en el segundo, se busca ubicar los fragmentos obtenidos en el paso anterior [CERI84] de la mejor manera. El propósito fundamental de realizar la distribución es mejorar el rendimiento global del sistema por lo que tanto la fragmentación como la ubicación de los fragmentos en la red deben estar fuertemente ligados con los requerimientos del sistema mismo. Esto es, las decisiones de qué fragmentos formar y dónde ubicarlos deben ser tomadas de acuerdo con el uso que las diferentes transacciones induzcan en los atributos de la relación, pues de acuerdo a los accesos a estos y las transacciones que se hacen, se debe tomar en cuenta para la distribución y localización de los diferentes atributos [NAVA89]. 2. Desarrollo del Algoritmo Genético
Al realizar un algoritmo genético lo primero que se requiere es determinar en qué espacio se encuentran las posibles soluciones al problema que se pretende resolver. Pero el algoritmo opera sobre “códigos genéticos”, sobre genotipos que se deberán inducir al espacio de soluciones. Es decir, es necesario codificar de alguna manera el dominio del problema para obtener estructuras manejables que puedan ser manipuladas por el Algoritmo Genetico [MUTH83].
Este trabajo presenta un Algoritmo Genético (AG) diseñado para la fragmentación vertical y asignación simultanea en Bases de Datos Distribuidas. En el diseño de este algoritmo se utilizó MATLAB 6.5, además de la selección proporcional [BACK96], el cruzamiento simple y la mutación uniforme [KURI99]. Algunos de los parámetros utilizados son: Probabilidad de cruzamiento=0.85, Probabilidad de mutación=0.005 yy Número de generaciones a ejecutarse = 100. La estructura del AG es la siguiente: 2.1. Representación de las soluciones.
Cuando se fragmenta de manera vertical se tienen distintas formas de dividir una relación de m atributos. Cada una de esas opciones tiene que ser representada con una cadena de longitud finita sobre algún alfabeto finito [GOLD89], tomando en cuenta las características del problema que se está resolviendo. En este caso los atributos de una relación y el sitio al cual serán asignados éstos deben ser codificados. Para lo cual se utilizo un vector de enteros de longitud igual al numero de atributos y los números que se encuentra en el vector es el fragmento donde esta cada uno de los atributo.
Es decir este vector tendrá números de 1 asta N, donde N indica en que fragmento se encuentra el atributo i­esimo del vector. De esta manera el vector siguiente representara una posible solución con 10 atributos y una red de 5 sitios.
(5 2 4 3 1 3 3 5 2 4)
Esta representación es adecuada para este problema ya que la solución incluye tanto la división de la relación en subrelaciones como su asignación a un sitio de la red simultáneamente.
Sitio Atributos en el Fragmento
1
5
2 2
9
3
4
6
7
4
3
1
0
5
1
8
2.2. Población inicial.
A cada punto se le llama individuo y al conjunto de puntos se le llama población y es necesario crear una población inicial para el arranque del algoritmo genético. En este trabajo la población inicial, esta creada al asar de manera aleatoria, para lo cual se utilizo un conjunto de vectores enteros como los de la sección 2.1, el tamaño de esta es de 100 individuos.
2.3. Función de evaluación.
La función objetivo, se define en función de la tarea de optimización que se desea realizar. En este caso, el objetivo de fragmentar y asignar fragmentos es la minimización de los accesos remotos. La función de evaluación propuesta es.
EP(i) = ER2
Esta calcula el costo de acceder a atributos remotos relevantes y para ello usa la matriz de uso de atributos (MUA)[MUTH93]. Para calcular los costos, se debe analizar cada una de las transacciones, en cada uno de los fragmentos, y se calcula de la siguiente manera
E2
R
=
Donde qt es la cantidad de acceso a los atributos del fragmento i, |Ritk| es el numero de atributos relevantes de los otros fragmentos que se accedan en la transacción t y n ritk es el numero total de atributos en los fragmentos. Δ indica el mínimo de valor de la transacción. Un ejemplo de esta es la siguiente:
Atributos
Trans A1 A2 A3 A4 A5
T1
0 q1 0 q1 q1
T2
q2 q2 q2 0 q2
T3
q3 0 0 q3 q3
T4
0 q4 q4 0 0 La función objetivo usada en este algoritmo es:
fitness(i) = 65000 – EP(i)
2.3.1 Matriz de uso de Atributos(MUA).
Esta matriz utilizada en el desarrollo del algoritmo genético, nos indica las diferentes transacciones que se hacen y el número de acceso a cada uno de los atributos. Pues para poder encontrar la mejor alternativa de fragmentación vertical y asignación de los atributos se debe considerar los accesos a los diferentes atributos de cada uno de los fragmentos. Trans. Atri.
1
2
3
4
5
6
7
8
9
10
T1
25
0
0
0
25
0
25
0
0
0
T2
0
50
50
0
0
0
0
50
50
0
T3
0
0
0
25
0
25
0
0
0
25
T4
0
35
0
0
0
0
35
35
0
0
T5
25
25
25
0
25
0
25
25
25
0
T6
25
0
0
0
25
0
0
0
0
0
T7
0
0
25
0
0
0
0
0
25
0
T8
0
0
15
15
0
15
0
0
15
15
2.4 Ejemplo de Solución
El algoritmo mostrara como resultado final la posición de los atributos en cada uno de los diferentes fragmentos.
Fragmento 1: 2 3
Fragmento 3: 1
Fragmento 4: 5 6
Fragmento 6: 4
Fragmento 7: 7 10
Fragmento 9: 8 9
4. Conclusiones
Se puede establecer que la naturaleza evolutiva del Algoritmos Genéticos, nos permite atacar varias problemáticas a la vez como es en el caso de este trabajo la fragmentación vertical y la asignación simultanea. Pues además nos permite establecer de mejor manera la estructura de los diferentes problemas, como se da en este caso con un simple vector se puede representar la posible solución.
Durante todo este trabajo se hablo lo difícil de realizar la fragmentación vertical y la asignación instantánea, pues el algoritmo genético mostró ser una alternativa factible para aplicarse en la solución de problemas de fragmentación de BDD en los que se considera la fragmentación vertical y la replicación de datos.
Además podemos decir que la metodología planteado en este trabajo puede utilizarse en problemas más generales, sin producirse cambios significativos. Por lo estudiado de algoritmos genéticos y por lo general que suelen ser estos.
5. Referencias
[BACK96] Back, T. Evolutinary Algorithms in Theory and Practice.Oxford University Press. 1996.
[CERI84] Ceri Stefano and Giuseppe Pelagatti. Distributed Database, Principles & Systems. McGraw­Hill. 1984.
[GOLD89] Goldberg, D. E. Genetic Algorithms in Search, Optimization, and Machine Learning. Addison­Wesley. 1989.
[KURI99] Kuri, A. A Comprehensive Approach to Genetic Algorithms in Optimization and Learning. Theory and Applications. Vol 1. Foundations. IPN 1999.
[MUTH93] Muthuraj R., S. Chakravarthy, R. Varadajan and S. B. Navathe. A Formal Approach to the Vertical Partitioning Problem in Distributed Database Design. Proceding IEEE, 1993.
[NAVA89] Navathe S. And M. Ra. Vertical Partitioning for Database Design: A
Graphical Algorithm. ACM 1989.
[OZSU97] Ozsu Tamer M. And Patrick Valduriez. Principles of Distributed Database Systems. Prentice Hall. 1997.
Descargar