1.-Análisis de la estructura de almacenamiento del gestor de bases de datos Mysql

1.- Análisis de la estructura de almacenamiento del gestor de bases de datos MySQL MySQL tiene como característica princ

Views 58 Downloads 0 File size 136KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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 secundaria, esto es: separa el motor de almacenamiento al resto de los componentes de la estructura general. La segmentación de un disco, es utilizada para implementación de espacios en direcciones virtuales lógicas, que tendrán su uso para el almacenamiento de datos, cumpliendo con los dos principales requerimientos de asignación de nombre y longitud. El almacenamiento de la base de datos será alojado en fichero o archivos incluidos dentro del espacio del disco duro, segmentado para su propósito. MySQL utiliza diferente motores para el almacenamiento de los datos. Un motor de almacenamiento es la parte fundamental de MySQL ya que es el encargado de crear, recuperar eliminar y actualizar los registros de una base de datos los cuales pueden ser almacenados de diversas formas. Al conocer estos datos el administrador y planeador de la base de datos conocerá el máximo crecimiento al que puede llegar una base de datos. El tamaño de las tablas variará dependiendo del tamaño de los tipos de datos, los cuales pueden ser comúnmente: numéricos, caracteres y fechas. Existen valores null, este se considera como valor no existente y se puede aplicar a todos los tipos de columnas; existen también símbolos utilizados para la definición de los diferentes tipos de datos en MySQL El tamaño ocupado de acuerdo a cada tipo de columnas en el disco duro, esta en función de las especificaciones. De acuerdo al análisis anterior de los tipos de datos y diferentes tamaños de los valores de caracteres y número usados para la creación de tablas de una base de datos, se puede asumir el tamaño que utilizará la base de datos dentro del segmento asignado en el disco duro, asistido por el motor de almacenamiento usado por MySQL. El motor de almacenamiento InnoDB, emplea E/S en disco asíncrona simulada, creando un número de procesos que usarán las operaciones de almacenamiento.

2.- Segmentación del disco duro Cada disco duro constituye una unidad física. Sin embargo, los sistemas operativos no trabajan con unidades físicas directamente sino con unidades lógicas. Dentro de una misma unidad física de disco duro puede haber varias unidades lógicas. Cada una de estas unidades lógicas constituye una partición del disco duro. Esto quiere decir que podemos dividir un disco duro en, por ejemplo, dos particiones (dos unidades lógicas dentro de una misma unidad física) y trabajar de la misma manera que si tuviésemos dos discos duros (una unidad lógica para cada unidad física).

Particiones y directorios Ambas estructuras permiten organizar datos dentro de un disco duro. Sin embargo, presentan importantes diferencias: 1ª) Las particiones son divisiones de tamaño fijo del disco duro los directorios son divisiones de tamaño variable de la partición. 2ª) Las particiones ocupan un grupo de cilindros contiguos del disco duro (mayor seguridad); los directorios suelen tener su información desperdigada por toda la partición (por ello es necesaria la de fragmentación periódica). 3ª) Cada partición del disco duro puede tener un sistema de archivos (FAT, FAT32, NTFS, etc.) distinto. Todos los directorios de una partición tienen el mismo sistema de archivos. Como 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 razones que nos pueden llevar a crear más de una partición por disco se suelen reducir a tres: 1) Razones organizativas - Considérese el caso de una computadora que es compartida por dos usuarios y, con objeto de lograr una mejor organización y seguridad de sus datos, deciden utilizar particiones separadas. 2) Instalación de más de un sistema operativo - Debido a que cada sistema operativo requiere (como norma general) una partición propia para trabajar, si queremos instalar dos sistemas operativos a la vez en el mismo disco duro (por ejemplo, Windows 98 y Linux), será necesario particionar el disco.

3) Razones de eficiencia - Por ejemplo, suele ser preferible tener varias particiones FAT pequeñas antes que una gran partición FAT. Esto es debido a que cuanto mayor es el tamaño de una partición, mayor es el tamaño del grupo (clúster) y, por consiguiente, se desaprovecha más espacio de la partición. Más adelante, explicaremos esto con mayor detalle. Particiones 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 extendida. En un disco duro sólo pueden existir 4 particiones primarias (incluida la partición extendida, si existe). Ambos tipos de particiones generan las correspondientes unidades lógicas de la computadora. Sin embargo, hay una diferencia importante: sólo las particiones primarias se pueden activar. Además, algunos sistemas operativos no pueden acceder a particiones primarias distintas a la suya. Lo anterior nos da una idea de qué tipo de partición utilizar para cada necesidad. Los sistemas operativos (SO) deben instalarse en particiones primarias, ya que de otra manera no podrían arrancar. El resto de particiones que no contengan un sistema operativo, es más conveniente crearlas como particiones lógicas (por ejemplo, un sector del disco duro que ha de servir como depósito de instaladores, imágenes, mp3, documentos de textos, e-books. etc.). Por dos razones: primera, no se malgastan entradas de la tabla de particiones del disco duro y, segunda, se evitan problemas para acceder a estos datos desde los sistemas operativos instalados. Las particiones lógicas son los lugares ideales para contener las unidades que deben ser visibles desde todos los sistemas operativos. Algunos sistemas operativos presumen de poder ser instalados en particiones lógicas (Windows NT), sin embargo, esto no es del todo cierto: necesitan instalar un pequeño programa en una partición primaria que sea capaz de cederles el control. TECNOLOGÍA RAID Pese a que la tecnología en el desarrollo de dispositivos de almacenamiento secundario (especialmente discos duros) ha evolucionado espectacularmente, las prestaciones que se pueden alcanzar con una única unidad de disco resultan insuficientes para el almacenamiento eficiente de grandes cantidades de datos.

Es por este motivo por el que se ha desarrollado la tecnología conocida con el nombre de RAID (Redundant Array of Inexpensive Disk).La idea original de RAID fue la de igualar los rendimientos de los discos a los de los procesadores y

memorias principales. Mientras la capacidad de la RAM se cuadruplica cada dos o tres años, los tiempos de acceso a disco apenas mejoran un 10% al año, y los tiempos de transferencia menos de un 20%. Como solución RAID plantea crear un array de pequeños discos independientes que actúan como un único disco lógico de alto rendimiento. Además, se utiliza una estrategia de almacenamiento conocida como data striping (franjeo de datos) que se basa en el paralelismo. Según esta técnica un mismo fichero se distribuye entre varios discos para que su lectura completa se realice simultáneamente desde todos los discos. El acceso en paralelo a todos los discos es mucho más rápido que un acceso secuencial a BD1 2006-2007128 uno de ellos. De ahí que las lecturas y escrituras de los datos resulten mucho más rápidas. RAID tiene como objetivo principal mejorar el rendimiento de los discos magnéticos, aunque sin olvidar un aspecto fundamental que es la fiabilidad. Para un array de n discos, la posibilidad de fallo es n veces mayor que para un único disco. El mantenimiento de una única copia de los datos en este tipo de estructura conllevaría una importantísima pérdida de fiabilidad. La solución es introducir redundancia de datos. Una técnica que permite la redundancia es lo que se conoce como mirroring o shadowing, también conocido en español como espejo. Según esta técnica, los datos se escriben físicamente en dos discos diferentes de forma redundante. Al 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 hasta que se repare el primero. ORGANIZACIÓN Y NIVELES RAID Hay diferentes organizaciones RAID atendiendo a la forma de hacer el franjeo de los datos y a la forma de acceder a los datos redundantes. Estas organizaciones se jerarquizan en 7 niveles: desde RAID nivel 0 hasta RAID nivel 6. • RAID 0 no tiene redundancia de datos. De todas las organizaciones RAID, ésta tiene el mejor rendimiento en escritura ya que no tiene que duplicar modificaciones. Sin embargo, el rendimiento en lectura es menor. • RAID 1 ya plantea la redundancia de datos mediante discos espejo. El rendimiento en lectura es mayor que en RAID 0 debido a que la petición de lectura se aplica al disco que sea más rápido en cada momento.

• RAID 2 optimiza el almacenamiento de información redundante alalmacenar los códigos de detección de error (bits de paridad) una única vez (no una para cada

copia como ocurre en RAID 1) comunes. De esta manera, un ejemplo concreto de 4 discos, sólo necesitaría 3 discos espejo (en lugar de los 4 que necesita RAID 1). • RAID 3 a RAID 6 optimizan RAID 2 con diferentes estrategias para detección de errores que minimizan el número de discos necesarios aumentando el rendimiento del sistema sin perder fiabilidad.

Como conclusión para este apartado podríamos concluir que el disco magnético es una de las fuentes de almacenamiento secundario más extendidas para el almacenamiento de bases de datos. Sin embargo, la organización física de las bases de datos evolución tecnológica del disco magnético no ha sido tan espectacular como lo ha sido la evolución tecnológica de la memoria RAM o de los procesadores. Por este motivo ha sido necesario la introducción de técnicas de almacenamiento redundante que han conseguido mejorar los rendimientos de estos dispositivos. En concreto, la organización RAID es una de las más extendidas en los servidores que tienen como principal misión el almacenamiento de grandes bases de datos. Una vez sentados los fundamentos del “hardware” que se usa para la implementación de las bases de datos, introduciremos algunos conceptos sobre cómo se almacena físicamente un fichero. 3.- Los motores de almacenamiento que se usan en MySQL MySQL dispone de una docena de motores de almacenamiento propios, más los motores externos desarrollados por terceras partes que se pueden incorporar al servidor. Algunos de los más conocidos son: MyISAM, InnoDB, HEAP, NDB. A continuación se describe brevemente cada uno de los motores de almacenamiento. • MyISAM trata tablas no transaccionales. Proporciona almacenamiento y recuperación de datos rápida, así como posibilidad de búsquedas fulltext. MyISAM 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 viene por defecto con MySQL. • El motor de almacenamiento MEMORY anteriormente conocido como el montón motor de almacenamiento almacena todos los datos en memoria, una vez que se ha decidido apagar el servidor MySQL, cualquier información almacenada en una base de datos MEMORY se han perdido. Sin embargo, el formato de las tablas individuales se mantiene y esto le permite crear tablas temporales que se pueden

utilizar para almacenar información para un acceso rápido sin tener que recrear las tablas cada vez que el servidor de base de datos es iniciado. A largo plazo, el uso del motor MEMORY en general, no una buena idea, porque los datos podrían ser tan perdidos fácilmente. Sin embargo, se tiene la RAM para soportar las bases de datos en las que se están trabajando, el uso de tablas MEMORY es una forma eficiente de correr consultas complejas sobre grandes conjuntos de datos y beneficiándonos de las ganancias del rendimiento. • El motor de almacenamiento MERGE permite una colección de tablas MyISAM idénticas ser tratadas como una simple tabla. Como MyISAM, los motores de almacenamiento MEMORY y MERGE tratan tablas no transaccionales y ambos se incluyen en MySQL por defecto. Podemos ejecutar consultas que devuelven los resultados de múltiples tablas como si se tratara de una sola tabla. Cada tabla fusionada debe tener la misma definición de tabla. Las tablas MERGE son particularmente efectivas si estamos logging directorios de datos, directa o indirectamente, en una base de datos MySQL y creando una tabla individual por día, semana o mes y queriendo ser capaces de producir consultas agregadas de múltiples tablas. Hay limitaciones para esto sin embargo, podemos fusionar tablas MyISAM y la restricción de definición de idéntica de tabla es estrictamente forzada. • El motor de almacenamiento ISAM es el motor original disponible en las versiones de MySQL hasta que se introdujo el motor de almacenamiento MyISAM en MySQL. ISAM tiene un número de diferentes limitaciones que lo hacen poco práctico como un motor de base de datos. Estos incluyen el formato de almacenamiento, que es nativo de la plataforma y por lo tanto, no entre sistemas portátiles, un tamaño máximo de tabla de 4GB y limitado a búsquedas de solo texto. Los índices son también son más limitados, desde que MyISAM es compatible con las mismas plataformas que ISAM, y ofrece una mejor compatibilidad, portabilidad y rendimiento. • El motor EXAMPLE es en realidad un ejemplo de programación de un motor de almacenamiento que puede ser utilizado como base para otros motores en el sistema de MySQL. No soporta las inserciones de datos y no es un motor práctico para cualquier forma de acceso a bases de datos. Sin embargo, es una buena guía de cómo desarrollar su propio motor de almacenamiento y, por tanto, una eficaz guía para los programadores. • NDB Cluster es el motor de almacenamiento usado por MySQL Cluster para implementar tablas que se particionan en varias máquinas. Estando disponible en distribuciones binarias MySQLMax 5.0. Este motor de almacenamiento está disponible para Linux, Solaris, y Mac OS X. • El motor de almacenamiento ARCHIVE se usa para guardar grandes cantidades de datos sin índices con una huella muy pequeña.

• El motor de almacenamiento CSV guarda datos en ficheros de texto usando formato de valores separados por comas. • El motor de almacenamiento FEDERATED se añadió en MySQL 5.0.3. Este motor guarda datos en una base de datos remota. En esta versión solo funciona con MySQL a traves de la API MySQL C Client . 4.- Definición del espacio para la base de datos Son muchas las consideraciones a tomar en cuenta al momento de hacer el diseño de la base de datos, quizá las más fuertes sean: 

La velocidad de acceso,



El tamaño de la información,



El tipo de la información,



Facilidad de acceso a la información,



Facilidad para extraer la información requerida,



El comportamiento del manejador de bases de datos con cada tipo de información.

No obstante que pueden desarrollarse sistemas de procesamiento de archivo e incluso manejadores de bases de datos basándose en la experiencia del equipo de desarrollo de software logrando resultados altamente aceptables, siempre es recomendable la utilización de determinados estándares de diseño que garantizan el nivel de eficiencia más alto en lo que se refiere a almacenamiento y recuperación de la información. De igual manera se obtiene modelos que optimizan el aprovechamiento secundario y la sencillez y flexibilidad en las consultas que pueden proporcionarse al usuario. 5.- Diferencias entre un disco preparado y un disco que no sea preparado para instalarlos Todo 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 físico: aquí se incluye desde consideraciones del tamaño de página de tablas e índices, el soporte de almacenamiento hasta el formato de almacenamiento en disco.



Caché de memoria: diferentes aplicaciones responden mejor a ciertas estrategias de caché que otras, por lo que aunque algunos caché de memoria son comunes a todos los mecanismos (como los usados para conexiones de usuario o al caché de sentencias de alta velocidad), otros son particulares a cada uno de ellos.



Concurrencia: algunas aplicaciones necesitan granularidad de bloqueo más fina (i.e. bloqueo a nivel de fila) que otras. La elección de la estrategia de bloqueo adecuada puede reducir tiempos de espera y aumentar la prestación general. Este factor incluye las capacidades concurrencia multi -versión (MVCC) o toma de "instantáneas".



Integridad referencial: característica que responde a la necesidad de que el servidor asegure la integridad referencial de la base de datos mediante claves externas.



Particionado: algunos mecanismos permiten que diferentes secciones de una misma tabla pueden ser almacenadas en diferentes porciones de disco. Las reglas por las que se realiza este particionado se denominan funciones, que en MySQL pueden ser el módulo, lista de rangos o valores, una función de hash interna o una función lineal.



Prestaciones: las diferencias pueden estar causadas por los hilos múltiples para operaciones en paralelo, la concurrencia de hilos, la toma de puntos de control y el manejo de inserciones masivas.



Soporte de índices: diferentes aplicaciones necesitan diferentes estrategias en cuanto a índices. Cada mecanismo de almacenamiento tiene sus propios métodos de indexación -aunque los B-tree son comunes a casi todos ellos- aunque algunos carecen de índices.



Soporte de transacciones: no todas las aplicaciones necesitan transacciones, pero aquéllas que las necesiten tendrán definidos de manera precisa los requisitos ACID que deben satisfacer los mecanismos adecuados a ellas.



Características varias: aquí se puede incluir soporte para operaciones geo-espaciales y restricciones de seguridad para ciertas operaciones de manipulación de datos.

En base a esta información podemos concluir el éxito de nuestra base de datos ya que de la preparación del almacenamiento del mismo dependerá el correcto funcionamiento y eficiencia de nuestro sistema.