1.- Análisis de la estructura de almacenamiento del gestor de bases de datos MySQL
MySQL tiene como característica principal en su estructura que separa todos los detalles de Entrada/Salida además de la asignación de la información en memoria secu secund ndar aria ia,, esto esto es: es: sepa separa ra el moto motorr de alma almace cena nami mien ento to al rest resto o de los los componentes de la estructura general. La segmentación de un disco, es utiliada para implementación de espacios en direcciones !irtuales lógicas, que tendrán su uso para el almacenamiento de datos, datos, cumpli cumpliend endo o con los dos princip principale aless requeri requerimie miento ntoss de asignac asignación ión de nom"re y longitud. El almac almacena enami mient ento o de la "ase "ase de dato datoss será será alo# alo#ado ado en fic$ fic$ero ero o arc$i arc$i!o !oss incluidos dentro del espacio del disco duro, segmentado para su propósito. MySQL utilia diferente motores para el almacenamiento de los datos. %n motor de almacenamiento es la parte fundamental de MySQL ya que es el encargado de crear, recuperar eliminar y actualiar los registros de una "ase de datos los cuales pueden ser almacenados de di!ersas formas. &l conocer estos datos el administrador y planeador de la "ase de datos conocerá el má'imo crecimiento al que puede llegar una "ase de datos. El tama(o de las ta"las !ariará dependiendo del tama(o tama(o de los tipos de datos, los cuales pueden ser com)nmente: com)nmente: num*ricos, caracteres y fec$as. fec$as. E'isten !alores null, este se considera como !alor no e'istente y se puede aplicar a todos todos los los tipo tiposs de colu column mnas as++ e'is e'iste ten n tam" tam"i* i*n n sím" sím"ol olos os util utili iad ados os para para la definición de los diferentes tipos de datos en MySQL El tama(o ocupado ocupado de acuerdo a cada tipo de columnas en el disco duro, esta en función de las especificaciones. e acuerdo al análisis anterior de los tipos de datos y diferentes tama(os de los !alores de caracteres y n)mero usados para la creación de ta"las de una "ase de datos, se puede asumir el tama(o que utiliará la "ase de datos dentro del segmento asignado en el disco duro, asistido por el motor de almacenamiento usado por MySQL. El motor de almacenamiento -nno, emplea E/S en disco asíncrona asíncrona simulada, creando un n)mero de procesos procesos que usarán las operaciones de almacenamiento.
2.- Segmentación del disco duro
ada disco duro constituye una unidad física. Sin em"argo, los sistemas operati!os no tra"a#an con unidades físicas directamente sino con unidades lógicas. entro de una misma unidad física de disco duro puede $a"er !arias unidades lógicas. ada una de estas unidades lógicas constituye una partición del disco duro. Esto quiere decir que podemos di!idir un disco duro en, por e#emplo, dos particiones 0dos unidades lógicas dentro de una misma unidad física1 y tra"a#ar de la misma manera que si tu!i*semos dos discos duros 0una unidad lógica para cada unidad física1.
2articiones y directorios &m"as estructuras permiten organiar datos dentro de un disco duro. Sin em"argo, presentan importantes diferencias: 341 Las particiones son di!isiones de tama(o fi#o del disco duro los directorios son di!isiones de tama(o !aria"le de la partición. 541 Las particiones ocupan un grupo de cilindros contiguos del disco duro 0mayor seguridad1+ los directorios suelen tener su información desperdigada por toda la partición 0por ello es necesaria la de fragmentación periódica1. 641 ada partición del disco duro puede tener un sistema de arc$i!os 07&8, 7&865, 987S, etc.1 distinto. 8odos los directorios de una partición tienen el mismo sistema de arc$i!os. omo mínimo, es necesario crear una partición para cada disco duro. Esta partición puede contener la totalidad del espacio del disco duro o sólo una parte. Las raones que nos pueden lle!ar a crear más de una partición por disco se suelen reducir a tres: 31 aones organiati!as ; onsid*rese el caso de una computadora que es compartida por dos usuarios y, con o"#eto de lograr una me#or organiación y seguridad de sus datos, deciden utiliar particiones separadas. 51 -nstalación de más de un sistema operati!o ; e"ido a que cada sistema operati!o requiere 0como norma general1 una partición propia para tra"a#ar, si queremos instalar dos sistemas operati!os a la !e en el mismo disco duro 0por e#emplo, ? y Linu'1, será necesario particionar el disco.
61 aones de eficiencia ; 2or e#emplo, suele ser preferi"le tener !arias particiones 7&8 peque(as antes que una gran partición 7&8. Esto es de"ido a que cuanto mayor es el tama(o de una partición, mayor es el tama(o del grupo 0cl)ster1 y, por consiguiente, se desapro!ec$a más espacio de la partición. Más adelante, e'plicaremos esto con mayor detalle. 2articiones primarias y particiones lógicas Las particiones pueden ser de dos tipos: primarias o lógicas. Las particiones lógicas se definen dentro de una partición primaria especial denominada partición e'tendida. En un disco duro sólo pueden e'istir @ particiones primarias 0incluida la partición e'tendida, si e'iste1. &m"os tipos de particiones generan las correspondientes unidades lógicas de la computadora. Sin em"argo, $ay una diferencia importante: sólo las particiones primarias se pueden acti!ar. &demás, algunos sistemas operati!os no pueden acceder a particiones primarias distintas a la suya. Lo anterior nos da una idea de qu* tipo de partición utiliar para cada necesidad. Los sistemas operati!os 0SA1 de"en instalarse en particiones primarias, ya que de otra manera no podrían arrancar. El resto de particiones que no contengan un sistema operati!o, es más con!eniente crearlas como particiones lógicas 0por e#emplo, un sector del disco duro que $a de ser!ir como depósito de instaladores, imágenes, mp6, documentos de te'tos, e;"ooBs. etc.1. 2or dos raones: primera, no se malgastan entradas de la ta"la de particiones del disco duro y, segunda, se e!itan pro"lemas para acceder a estos datos desde los sistemas operati!os instalados. Las particiones lógicas son los lugares ideales para contener las unidades que de"en ser !isi"les desde todos los sistemas operati!os. &lgunos sistemas operati!os presumen de poder ser instalados en particiones lógicas 0
Es por este moti!o por el que se $a desarrollado la tecnología conocida con el nom"re de &- 0edundant &rray of -ne'pensi!e isB1.La idea original de &- fue la de igualar los rendimientos de los discos a los de los procesadores y
memorias principales. Mientras la capacidad de la &M se cuadruplica cada dos o tres a(os, los tiempos de acceso a disco apenas me#oran un 3F al a(o, y los tiempos de transferencia menos de un 5F. omo solución &- plantea crear un array de peque(os discos independientes que act)an como un )nico disco lógico de alto rendimiento. &demás, se utilia una estrategia de almacenamiento conocida como data striping 0fran#eo de datos1 que se "asa en el paralelismo. Seg)n esta t*cnica un mismo fic$ero se distri"uye entre !arios discos para que su lectura completa se realice simultáneamente desde todos los discos. El acceso en paralelo a todos los discos es muc$o más rápido que un acceso secuencial a 3 5G;5H35? uno de ellos. e a$í que las lecturas y escrituras de los datos resulten muc$o más rápidas. &- tiene como o"#eti!o principal me#orar el rendimiento de los discos magn*ticos, aunque sin ol!idar un aspecto fundamental que es la fia"ilidad. 2ara un array de n discos, la posi"ilidad de fallo es n !eces mayor que para un )nico disco. El mantenimiento de una )nica copia de los datos en este tipo de estructura conlle!aría una importantísima p*rdida de fia"ilidad. La solución es introducir redundancia de datos. %na t*cnica que permite la redundancia es lo que se conoce como mirroring o s$ado=ing, tam"i*n conocido en espa(ol como espe#o. Seg)n esta t*cnica, los datos se escri"en físicamente en dos discos diferentes de forma redundante. &l leer los datos, *stos se recuperan del disco que tenga menos carga de peticiones, o que sea más rápido. Si un disco falla, se usa el otro $asta que se repare el primero. AC&9-I&-J9 K 9-ELES &- ay diferentes organiaciones &- atendiendo a la forma de $acer el fran#eo de los datos y a la forma de acceder a los datos redundantes. Estas organiaciones se #erarquian en H ni!eles: desde &- ni!el $asta &- ni!el G. N &- no tiene redundancia de datos. e todas las organiaciones &-, *sta tiene el me#or rendimiento en escritura ya que no tiene que duplicar modificaciones. Sin em"argo, el rendimiento en lectura es menor. N &- 3 ya plantea la redundancia de datos mediante discos espe#o. El rendimiento en lectura es mayor que en &- de"ido a que la petición de lectura se aplica al disco que sea más rápido en cada momento. N &- 5 optimia el almacenamiento de información redundante alalmacenar los códigos de detección de error 0"its de paridad1 una )nica !e 0no una para cada
copia como ocurre en &- 31 comunes. e esta manera, un e#emplo concreto de @ discos, sólo necesitaría 6 discos espe#o 0en lugar de los @ que necesita &- 31. N &- 6 a &- G optimian &- 5 con diferentes estrategias para detección de errores que minimian el n)mero de discos necesarios aumentando el rendimiento del sistema sin perder fia"ilidad. omo conclusión para este apartado podríamos concluir que el disco magn*tico es una de las fuentes de almacenamiento secundario más e'tendidas para el almacenamiento de "ases de datos. Sin em"argo, la organiación física de las "ases de datos e!olución tecnológica del disco magn*tico no $a sido tan espectacular como lo $a sido la e!olución tecnológica de la memoria &M o de los procesadores. 2or este moti!o $a sido necesario la introducción de t*cnicas de almacenamiento redundante que $an conseguido me#orar los rendimientos de estos dispositi!os. En concreto, la organiación &- es una de las más e'tendidas en los ser!idores que tienen como principal misión el almacenamiento de grandes "ases de datos. %na !e sentados los fundamentos del O$ard=areP que se usa para la implementación de las "ases de datos, introduciremos algunos conceptos so"re cómo se almacena físicamente un fic$ero. 3.- Los motores de almacenamiento que se usan en MySQL
MySQL dispone de una docena de motores de almacenamiento propios, más los motores e'ternos desarrollados por terceras partes que se pueden incorporar al ser!idor. &lgunos de los más conocidos son: My-S&M, -nno, E&2, 9. & continuación se descri"e "re!emente cada uno de los motores de almacenamiento. • My-S&M
trata ta"las no transaccionales.
2roporciona almacenamiento y recuperación de datos rápida, así como posi"ilidad de ")squedas fullte't. My-S&M se soporta en todas las configuraciones MySQL, y es el motor de almacenamiento por defecto a no ser que tenga una configuración distinta a la que !iene por defecto con MySQL. • El
motor de almacenamiento MEMAK anteriormente conocido como el montón motor de almacenamiento almacena todos los datos en memoria, una !e que se $a decidido apagar el ser!idor MySQL, cualquier información almacenada en una "ase de datos MEMAK se $an perdido. Sin em"argo, el formato de las ta"las indi!iduales se mantiene y esto le permite crear ta"las temporales que se pueden
utiliar para almacenar información para un acceso rápido sin tener que recrear las ta"las cada !e que el ser!idor de "ase de datos es iniciado. & largo plao, el uso del motor MEMAK en general, no una "uena idea, porque los datos podrían ser tan perdidos fácilmente. Sin em"argo, se tiene la &M para soportar las "ases de datos en las que se están tra"a#ando, el uso de ta"las MEMAK es una forma eficiente de correr consultas comple#as so"re grandes con#untos de datos y "eneficiándonos de las ganancias del rendimiento. • El
motor de almacenamiento MECE permite una colección de ta"las My-S&M id*nticas ser tratadas como una simple ta"la. omo My-S&M, los motores de almacenamiento MEMAK y MECE tratan ta"las no transaccionales y am"os se incluyen en MySQL por defecto. 2odemos e#ecutar consultas que de!uel!en los resultados de m)ltiples ta"las como si se tratara de una sola ta"la. ada ta"la fusionada de"e tener la misma definición de ta"la. Las ta"las MECE son particularmente efecti!as si estamos logging directorios de datos, directa o indirectamente, en una "ase de datos MySQL y creando una ta"la indi!idual por día, semana o mes y queriendo ser capaces de producir consultas agregadas de m)ltiples ta"las. ay limitaciones para esto sin em"argo, podemos fusionar ta"las My-S&M y la restricción de definición de id*ntica de ta"la es estrictamente forada. El motor de almacenamiento -S&M es el motor original disponi"le en las !ersiones de MySQL $asta que se introdu#o el motor de almacenamiento My-S&M en MySQL. •
-S&M tiene un n)mero de diferentes limitaciones que lo $acen poco práctico como un motor de "ase de datos. Estos incluyen el formato de almacenamiento, que es nati!o de la plataforma y por lo tanto, no entre sistemas portátiles, un tama(o má'imo de ta"la de @C y limitado a ")squedas de solo te'to. Los índices son tam"i*n son más limitados, desde que My-S&M es compati"le con las mismas plataformas que -S&M, y ofrece una me#or compati"ilidad, porta"ilidad y rendimiento. • El
motor E&M2LE es en realidad un e#emplo de programación de un motor de almacenamiento que puede ser utiliado como "ase para otros motores en el sistema de MySQL. 9o soporta las inserciones de datos y no es un motor práctico para cualquier forma de acceso a "ases de datos. Sin em"argo, es una "uena guía de cómo desarrollar su propio motor de almacenamiento y, por tanto, una efica guía para los programadores. • 9
luster es el motor de almacenamiento usado por MySQL luster para implementar ta"las que se particionan en !arias máquinas. Estando disponi"le en distri"uciones "inarias MySQLMa' R.. Este motor de almacenamiento está disponi"le para Linu', Solaris, y Mac AS . • El
motor de almacenamiento &-E se usa para guardar grandes cantidades de datos sin índices con una $uella muy peque(a.
• El
motor de almacenamiento S guarda datos en fic$eros de te'to usando formato de !alores separados por comas. • El
motor de almacenamiento 7EE&8E se a(adió en MySQL R..6. Este motor guarda datos en una "ase de datos remota. En esta !ersión solo funciona con MySQL a tra!es de la &2- MySQL lient . 4.- e!inición del es"acio "ara la base de datos
Son muc$as las consideraciones a tomar en cuenta al momento de $acer el dise(o de la "ase de datos, quiá las más fuertes sean: •
La !elocidad de acceso,
•
El tama(o de la información,
•
El tipo de la información,
•
7acilidad de acceso a la información,
•
7acilidad para e'traer la información requerida,
•
El comportamiento del mane#ador de "ases de datos con cada tipo de información.
9o o"stante que pueden desarrollarse sistemas de procesamiento de arc$i!o e incluso mane#adores de "ases de datos "asándose en la e'periencia del equipo de desarrollo de soft=are logrando resultados altamente acepta"les, siempre es recomenda"le la utiliación de determinados estándares de dise(o que garantian el ni!el de eficiencia más alto en lo que se refiere a almacenamiento y recuperación de la información. e igual manera se o"tiene modelos que optimian el apro!ec$amiento secundario y la sencille y fle'i"ilidad en las consultas que pueden proporcionarse al usuario. #.- i!erencias entre un disco "re"arado y un disco que no sea "re"arado "ara instalarlos
8odo mecanismo de funcionamiento tiene unas características particulares. Las características en las que podemos encontrar diferencias entre los distintos mecanismos de almacenamiento son principalmente:
•
Almacenamiento !$sico: aquí se incluye desde consideraciones del
tama(o de página de ta"las e índices, el soporte de almacenamiento $asta el formato de almacenamiento en disco. •
%ac&' de memoria: diferentes aplicaciones responden me#or a ciertas
estrategias de cac$* que otras, por lo que aunque algunos cac$* de memoria son comunes a todos los mecanismos 0como los usados para cone'iones de usuario o al cac$* de sentencias de alta !elocidad1, otros son particulares a cada uno de ellos. •
%oncurrencia: algunas aplicaciones necesitan granularidad de "loqueo
más fina 0i.e. "loqueo a ni!el de fila1 que otras. La elección de la estrategia de "loqueo adecuada puede reducir tiempos de espera y aumentar la prestación general. Este factor incluye las capacidades concurrencia multi ;!ersión 0M1 o toma de instantáneas. •
(ntegridad re!erencial: característica que responde a la necesidad de que
el ser!idor asegure la integridad referencial de la "ase de datos mediante cla!es e'ternas. •
)articionado: algunos mecanismos permiten que diferentes secciones de
una misma ta"la pueden ser almacenadas en diferentes porciones de disco. Las reglas por las que se realia este particionado se denominan funciones, que en MySQL pueden ser el módulo, lista de rangos o !alores, una función de hash interna o una función lineal. •
)restaciones: las diferencias pueden estar causadas por los $ilos m)ltiples
para operaciones en paralelo, la concurrencia de $ilos, la toma de puntos de control y el mane#o de inserciones masi!as. diferentes aplicaciones necesitan diferentes estrategias en cuanto a índices. ada mecanismo de almacenamiento tiene sus propios m*todos de inde'ación ;aunque los ;tree son comunes a casi todos ellos; aunque algunos carecen de índices. de
$ndices:
•
So"orte
•
So"orte
•
%aracter$sticas *arias: aquí se puede incluir soporte para operaciones
no todas las aplicaciones necesitan transacciones, pero aqu*llas que las necesiten tendrán definidos de manera precisa los requisitos &- que de"en satisfacer los mecanismos adecuados a ellas. de
transacciones:
geo;espaciales y restricciones de seguridad para ciertas operaciones de manipulación de datos.
En "ase a esta información podemos concluir el *'ito de nuestra "ase de datos ya que de la preparación del almacenamiento del mismo dependerá el correcto funcionamiento y eficiencia de nuestro sistema.