Integrantes: Céspedes F, Alexa Y. C.I.: 19.264.953. Escobar Y, Vanessa B. C.I.: 17.854.173. Hernández L, Mixyeli J. C.I.: 15.444.333. Mejias S, Edgar C.I.: 15.177.077. Peraza S, Eduardo J. C.I.: 15.580.007. Arquitectura de My SQL. MySQL, es un sistema de administración de bases de datos SQL, el cual se emplea para almacenar la información de los dominios virtuales y sus usuarios. Arquitectura de MySQL El elemento más notable de la arquitectura de MySQL es la denominada arquitectura de motores de almacenamiento reemplazables (pluggable storage engine architecture). La idea de esa arquitectura es hacer una interfaz abstracta con funciones comunes de gestión de datos en el nivel físico. De ese modo, el gestor de almacenamiento puede intercambiarse, e incluso un mismo servidor MySQL puede utilizar diferentes motores de almacenamiento para diferentes bases de datos o para diferentes tablas en la misma base de datos, permitiendo utilizar el motor de almacenamiento más adecuado para cada necesidad concreta y también que terceros puedan implementar motores de almacenamiento nuevos para necesidades específicas, o adaptar el código de los existentes a ciertos requisitos de almacenamiento. Así, las interfaces definidas por MySQL aíslan el resto de los componentes de la arquitectura de las complejidades de la gestión física de datos, facilitando el mantenimiento de los motores de almacenamiento. También esto permite que ciertos motores de almacenamiento no implementen parte de los servicios, lo cual les hace inapropiados para algunas aplicaciones pero más eficientes para otros. Por ejemplo, un motor de almacenamiento que no implementa bloqueos en la base de datos no debe utilizarse en aplicaciones multi-usuario, pero la ausencia de sobrecarga de procesamiento en la gestión de los bloqueos para el acceso concurrente lo hará mucho más eficiente para una aplicación monousuario. En consecuencia, una primera tarea de diseño físico en MySQL es la de decidir el motor de almacenamiento más apropiado. Los elementos que puede implementar un motor de almacenamiento son los siguientes: Concurrencia. Es responsabilidad del motor implementar una política de bloqueos (o no implementar ninguna). Una estrategia de bloqueos por fila permite una mayor concurrencia, pero también consume más tiempo de procesamiento en aplicaciones en las que la concurrencia no es realmente grande. Soporte de transacciones. No todas las aplicaciones necesitan soporte de transacciones. Comprobación de la integridad referencial, declarada como restricciones en el DDL de SQL. Almacenamiento físico, incluyendo todos los detalles de la representación en disco de la información. Soporte de índices. Dado que la forma y tipo de los índices depende mucho de los detalles del almacenamiento físico, cada motor de almacenamiento proporciona sus propios métodos de indexación. Cachés de memoria. La eficiencia de los cachés de datos en memoria depende mucho de cómo procesan los datos las aplicaciones. MySQL implementa cachés comunes en el gestor de conexiones y la caché de consultas, pero algunos motores de almacenamiento pueden implementar cachés adicionales. Otros elementos para ayudar al rendimiento, como puede ser el uso de múltiples hilos para operaciones paralelas o mejoras de rendimiento para la inserción masiva. La implementación de un gestor de almacenamiento implica escribir un software con una interfaz en lenguaje C, que implemente una biblioteca de funciones (storage engine API) que es la que el servidor MySQL invoca para pedir los servicios al gestor. Por ejemplo, si estamos implementando un gestor de almacenamiento, una de las funciones es la que crea una nueva tabla, que tiene la siguiente signatura. int ha_tina::create(const char *name, TABLE *table_arg, HA_CREATE_INFO *create_info) { ... } El parámetro name es, como cabe esperar, el nombre de la nueva tabla, y TABLE es una estructura que representa el esquema de la tabla. Las opciones de creación están en create_info, que incluye, por ejemplo, la asociación con índices, restricciones en el tamaño de la tabla, y otros. MySQL crea una representación del esquema de las tablas independiente del motor de almacenamiento, en ficheros denominados nombretabla.frm, uno por cada tabla del esquema. TABLE es una referencia a esa representación. Ejemplo de la arquitectura lógica de MySQL. La imagen anterior nos muestra la estructura de la arquitectura de MySql en donde podemos observar los componentes de la misma entre ellos los conectores que poseen las bibliotecas que permiten la conexión remota o local con servidores MySQL, seguida de esta el gestor de conexiones que permite mantener conexiones de los clientes y crear o eliminar algunas de las mismas, siendo este un proceso costoso, es por ello que se limita el número de conexiones concurrentes, otro de los componentes es el procesamiento y optimización de consultas que depende directamente de las capacidades del gestor de almacenamiento que se emplee, ya que este emite un análisis según las consultas recibidas para así ofrecer una serie de decisiones que ayudan al optimizador elegir el tipo de optimización más adecuado según las características que soporte el gestor. La misma estructura contiene los cache de consultas que guarda las consultas y sus resultados también cuenta con controles de concurrencias. como un gestor de base de datos el cual evita que lecturas o escrituras simultáneas a la misma porción de datos terminen en inconsistencias o efectos no deseados, empleando para este control bloqueos (Locks), bloqueos compartidos (Shared Locks) y bloqueos exclusivos (Exclusive Locks) y una de sus últimos componentes es la Gestión de transacciones y recuperación que permite dotar de semántica a una consulta que se declara como una sola transacción mientras que la recuperación permite volver hacia atrás (rollback) partes de una transacción. Los motores de almacenamientos se subdividen a su vez en varios motores entre ellos tenemos: El motor de almacenamiento InnoDB proporciona tablas transaccionales también se incluye por defecto en todas las distribuciones binarias de MySQL 5.0. y ofrece funcionalidades como: transacciones, bloqueo a nivel de registro, restricciones sobre claves foráneas y recuperación de datos perdidos. El motor de almacenamiento MyISAM trata tablas no transaccionales, proporciona almacenamiento y recuperación de datos rápido, 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. El motor de almacenamiento MEMORY proporciona tablas en memoria y trata tablas no transaccionales este se incluyen en MySQL por defecto, anteriormente conocido como HEAD. Los sistemas que manejan bases de datos se describen en tres capas; MySql no se escapa de esta descripción y posee la capa de aplicación que es la parte más externa del sistema y es la interfice a través de la que los usuarios se comunican con el sistema. La funcionalidad central de este sistema la encontramos en la capa lógica que es donde se realizan todas las operaciones del sistema. Esta capa se puede refinar de la siguiente manera: En esta capa se realizan varias operaciones. La primera y que sirve de interficie con la capa de aplicación es el procesamiento de las instrucciones SQL. Después hay dos módulos: el manejo de transacciones, y la recuperación después de errores. Finalmente está la parte que se encarga de traducir las instrucciones SQL en acciones sobre el almacenamiento de datos. Y finalmente, la capa física es donde están almacenados los datos. Conclusiones: De acuerdo a lo expresado anteriormente se puede decir que el aspecto más resaltante que posee la arquitectura de MySQL es que permite la creación de motores de almacenamiento especializado para cualquier requerimiento que tenga el usuario lo que le permite incluir nuevos motores de almacenamiento en cuanto sea necesario y al emplear diferentes motores se hace posible utilizar diferentes bases de datos a la vez, esto debido a que separa los motores del resto de los componentes de la arquitectura del manejador de bases de datos. Es notable que debido a esto se hace más fácil y accesible el empleo o uso de este sistema (MySQL) al usuario debido a la amplitud que brinda su arquitectura, además que permite la adaptación de su código haciéndolo compatible con otros sistemas operativos ya que soporta gran cantidad de lenguajes como php, c++, perl, java entre otros que se harán necesarios según las especificaciones y requerimientos que se puedan presentar es por ello que también se hace fiable y seguro. Uno de los elementos más destacables que se implementan en los motores de almacenamiento mencionados anteriormente es el de multihilos ya que le permite a MySql aprovechar la potencia de sistemas multiprocesador haciendo su base de datos muy veloz también resalta la cache de memoria que se hace más eficiente a medida que los motores de almacenamiento trabajan con mayor rapidez Otro de los beneficios que aporta esta arquitectura es que al usar el sistema como un monousuario este le permite crear respaldos sin tener que cerrar todos los objetos bloqueados por el usuario. Para finalizar se puede decir que gracias a la separación de los motores de almacenamiento del resto de los componentes de la arquitectura de MySql hacen la misma un sistema multiplataformico, además de facilitar el mantenimiento de motores y le permiten al usuario obtener una configuración simple e instalación rápida a través de las diferentes interfaces dinámicas que este presenta. Información obtenida de la dirección electrónica: http://cnx.org/content/m18938/latest/ http://alfa.facyt.uc.edu.ve/computacion/pensum/cs0347/download/exposiciones20052006/Oracle%20POstgre%20MySQL.pdf http://www.google.co.ve/#hl=es&biw=1280&bih=934&q=arquitectura+de+mysql&aq=f&aqi=g1& aql=&oq=&gs_rfai=&fp=ac9387fd6a393d8f