CONSTRUCCION DE BASE DE DATOS

ING TRIANA FLORES CESAR

MySQL es una base de datos relacional de licencia GPL, ésto implica que usa tablas para guardar los datos, visto desde su representación lógica (como lo vemos nosotros, los usuarios). Pero, por dentro, usa un motor de almacenamiento (storage engine) que será el encargado de guardar de verdad los datos a ficheros, según una determinada estrategia. Este motor es totalmente clave a la hora de evaluar la rápidez y las funcionalidades que puede tener el SGBD. MySQL tiene la opción (para cada tabla que se vaya a crear) de establecer explícitamente qué motor usar. • MyISAM, el motor por defecto, permite lo típico, pero no permite transacciones, todas las consultas se realizan con autocommit. Por lo demás no hay mucho que comentar, como curiosidad decir que los BLOB o TEXT pueden ser índices, e incluso un campo que sea índice puede tomar valor NULL. Usa Arboles B internamente para los índices (separado de los datos) y tiene herramientas para chequeo y reparación de tablas. BLACKHOLE: si tiene un nivel de inglés tan patético como el mío (o superior) fijo que descubres que hace este motor (blackhole = agujero negro). Sería el equivalente a /dev/null mayormente. puede llegar a ser útil, cuando realizas una transacción con este motor, aunque no se guardan los datos, ni te va a devolver nada, si que crea LOG de la sentencia SQL que se "ha ejecutado". El caso típico podría ser establecer un servidor esclavo para que de ese modo guardará el log de lo que pasa en el master CSV, motor completamente trivial, que guarda cada tabla en un fichero y cada fila de datos es una línea con los datos separados por comas. ARCHIVE, el motor almacen almacena, solo soporta INSERT's y SELECT's, es decir un almacen!. Además, siempre que escribes datos se comprimen (con zlib), así que es el motor típico para una base de datos histórica o cuando vamos a tener una cantidad realmente enorme de datos (quizás sea la idónea para GIS(Sistema de Informacion Geografico) Decir que si se realizan muchos SELECT a la vez que se realizan INSERT provocaría que el motor entre en conflicto ¿por qué? Porque cuando se hace un INSERT los datos van a un buffer (para no tener que recomprimir, con zlib, para cada línea que se inserta) y éstos datos serán flusheados cuando se realice el SELECT, ahora piensa cientos de INSERT y SELECT en paralelo. EXAMPLE, este no sirve para nada. Es solo un ejemplo de motor, para poder mirar su código y crear motores hechos y derechos FEDERATED, motor nuevo que se incorporó en la versión 5 de MySQL, para poder crear bases de datos federadas, esto significa que estaremos consultando a una bases de datos remota, es decir en nuestro servidor creamos la tabla pero le decimos, que esta tabla esta en otro lado, Este modelo tiene ciertas limitaciones, no permite ALTER's ni transacciones. MERGE, este es fácil, si tienes dos tablas con motor MyISAM y con la misma estructura, al crear una tabla MERGE, juntarás los datos de ambas tablas. Un caso para el cual puede ser útil este motor, podría ser, por ejemplo, diferentes tablas de log en diferentes servidores y te creas en uno de ellos tablas FEDERATED de esas tablas (que serán MyISAM) y entonces creas una tabla de "log_principal" (usando MERGE) que tendrá el log de todos los servidores. MEMORY, tablas que se guardan en memoria, es decir, cuando reinicies MySQL, se borran los datos. Utilizado cuando se quiere un almacenamiento temporal. Berkeley DB (BDB para los friends), una de las bases de datos openSource más famosa y utilizada. El motor es independiente de MySQL, con las ventajas e inconvenientes que esto pueda acarrear. Permite transacciones (COMMIT & ROLLBACK) y solo puede ejecutarse en sistemas operativos soportados (Linux x86 y Windows, Mac OS X y Linux AMD64/Alpha, no). Como curiosidad decir que su organización de ficheros se basa en solo dos, puesto que utiliza árboles B donde, en cada nodo, están tanto los datos como el índice primario (lo cual implica que será algo más lento a la hora de recorrerlo secuencialmente) InnoDB, es el motor más avanzado (junto con BDB) en cuanto a opciones y funcionalidad. Permite transacciones seguras (COMMIT y tal) y está orientado a manejar grandes

• •

• •

• •

LOS DOS MOTORES MÁS UTILIZADOS EN MYSQL ¿Qué es el Motor MyISAM? Es el motor de almacenamiento por defecto del MYSQL Como propiedades relevantes tenemos que destacar su gran rapidez con las consultas.O. Inserts. Si nuestra Aplicación utiliza mucho el uso de Inserts y Updates notaremos una gran mejoría respecto al motor MyISAM. pudiendo así crear una cola de peticiones. Del otro modo. Isolation and Durability (o dicho en español: Atomicidad. definir reglas o restricciones que nos aseguren la Integridad Referencial de los registros de la Tabla/Base de Datos. por lo tanto. el resto de registros quedan libres para su utilización. Consistency. Consistencia. InnoDB no envia los cambios de la tabla al Sistema Operativo (S. nos permite definir Claves Foráneas (Foreign Key). opción más lenta…) para que los escriba. Las Transacciones son de Tipo ACID: acrónimo de Atomicity. “ya que no tiene que hacer comprobaciones de Integridad Referencial”. Si alguna orden se ha ejecutado y no finaliza la ejecución de todo el bloque de órdenes correctamente. el SGBD (Sitema Gestor de Base de Datos) se encargará (como de un rollback se tratase…) de dejar la Base de Datos en el estado inicial. es decir mayor salvo casos raros de filas enormes) e incluso soporta lecturas consistentes tanto bloqueantes como no bloqueantes. que este bloque de órdenes (transacciones) no finalizan en un estado intermedio. como OpenLDAP por ejemplo) y fue comprado por ORACLE. por cada petición (Selects. se caracteriza por soportar transacciones de tipo ACID e incluir la Integridad Referencial. Los únicos motores que soportar transacciones seguras son BDB e InnoDB. Realiza el bloqueo usando como granualidad la fila (BDB lo hace a nivel de página. programas. updates…) que se haga a la tabla se bloquea a nivel de REGISTRO. • • • • . BDB es externo a MySQL (se usa en muchos otros proyectos. InnoDB también ha sido comprado por ORACLE. La llegada de este motor de almacenamiento en MySQL. Con lo consecuente. es decir. Está realmente optimizado para aplicaciones. Aislamiento y Durabilidad). ¿Qué es el Motor InnoDB? El innoDB es una tecnología de almacenamiento de datos. es mucho más rápido que MyISAM ACTUALIZACIÓN Bloqueo a nivel de registro.CONSTRUCCION DE BASE DE DATOS ING TRIANA FLORES CESAR cantidad de datos. al bloquear solamente el registro necesario. dicho de otro modo. y gracias a ello.. sistemas. en cambio MyISAM bloquea toda la tabla entera hasta finalizar su ejecución. En las que no hay un número elevado de inserciones. InnoDB vs MyISAM InnoDB: • Permite el uso de Transacciones: no es más que todo un conjunto de órdenes que se ejecutan como si fueran una unidad de trabajo. La caché de las lecturas y escrituras de los registros se realiza mediante una combinación entre Cachés de registro y de índice.

Es recomendable para aquellas Base de Datos donde predominan los Selects y no los Inserts o Updates.CONSTRUCCION DE BASE DE DATOS MyISAM: • • • • ING TRIANA FLORES CESAR • Mayor velocidad en general a la hora de recuperar datos. de aproximadamente unas 200 por segundo. Esto supone una limitación de transacciones para los discos duros. .…) obtenemos nuevamente una mayor velocidad. No soporta Transacciones. de modo que el espacio en disco. reduciendo así un 20% del espacio. no hay bloqueos de tablas. Aunque he leído que el motor InnoDB ha mejorado este aspecto y ya está en práctica en el MySQL 5. Cuenta con una algoritmo de Compresión de Datos muy eficiente. Ram o caché. Con la ausencia de Automacidad (no hay comprobaciones de integridad referencial. es realmente inferior al del motor InnoDB. por el simple echo que los accesos a disco que tiene el motor InnoDB es de al menos una por cada transacción.

Sign up to vote on this title
UsefulNot useful