miércoles, 9 de enero de 2008

Trasteando con MySQL sobre Windows

MySQL es sin duda la base de datos de moda. Gratuita en su edición "Community Server", es una base de datos muy potente, fiable, escalable y altamente configurable. En todos los sitios en los que he trabajado siempre se atacaban las mismas bases de datos: distintas versiones de SQL Server, Sybase y rara vez, algo de Oracle. Por aquel entonces, MySQL estaba emergiendo, y yo, erróneamente asociaba MySQL única y exclusivamente con Linux. Pues va a ser que no...

A día de hoy puedo decir que MySQL me ha sorprendido gratamente, tanto en entornos Linux (su hábitat natural), como en entornos Windows. Hemos llegado a un punto en el que para cualquier proyecto software que necesite una base de datos (por cierto, conozco muy poco software que no va de la mano de una base de datos), a menos que los requisitos del cliente sean muy específicos o que la aplicación software a desarrollar necesite una base de datos con características muy especiales (Sybase, DB2, etc.), nuestra opción number one para actuar como servidor de base de datos es sin duda MySQL Community Server.

Actualmente tenemos varias instancias instaladas, tanto en Linux como en Windows, y sinceramente estamos metiéndoles una cera impresionante, sobre todo a una instancia de MySQL Community Server que tenemos montada sobre un entorno Windows "normal". Aparte de un susto que tuvimos hace tiempo (al final no era culpa de la base de datos sino del tipo de partición de Windows), la base de datos está aguantando como una jabata.

Como digo, está de moda, y tiene por detrás una comunidad de desarrolladores y usuarios impresionante. Y yo, como ya me considero parte de la comunidad, me he animado a escribir unas pequeñas anotaciones personales que espero os sirvan para conocer algo más sobre el funcionamiento de MySQL Community Server montado en un entorno Windows:
  • Estructura interna de directorios. Bajo la carpeta de instalación por defecto (normalmente algo parecido a C:\Archivos de programa\MySQL\MySQL Server 5.0), se encuentra el directorio "data", obviamente el directorio encargado de almacenar los datos.

  1. MySQL representa a las bases de datos alojadas en el servidor de base de datos como directorios o carpetas. Y dentro de cada carpeta/base de datos, por cada tabla que creemos tendremos un fichero con el formato nombreTabla.frm.
  2. Los datos propiamente dichos, es decir, las filas que pueblan las distintas tablas se guardan en el fichero "ibdata1". A mí también me extrañó, pero MySQL Community Server sobre Windows gestiona todos los datos de las distintas bases de datos del servidor en un único fichero. Un poco peligroso a mi entender...pero sobre todo, diferente a otros servidores, donde cada base de datos tiene su propio fichero independiente (en SQL Server, 1 base de datos - 1 fichero .mdf + 1 fichero .ldf).
  3. En una instalación típica, por defecto se generan dos ficheros de log (ib_logfile0 y ib_logfile1).
  • Parámetros de configuración: Aunque durante la instalación es posible configurar muchos de los parámetros de forma visual, muchas veces es a posteriori cuando hay que empezar el tunning a base de cambiar valores de parámetros de configuración. El fichero maestro de parámetros de configuración de MySQL se denomina my.ini, situado en la raíz del directorio de instalación del servidor. Como en muchos otros productos, el proceso de configuración de parámetros es el siguiente:
    1. Detener el servicio (Panel de Control-->Herramientas administrativas-->Servicios) denominado "MySQL" (si no se ha cambiado el nombre durante la instalación).
    2. Editar el fichero my.ini, cambiar los valores requeridos y guardar el fichero.
    3. Iniciar de nuevo el servicio "MySQL", con lo que se aplicarán los cambios realizados.

Como se puede apreciar en la figura, este fichero almacena parámetros como el número de puerto (port) sobre el que corre MySQL, cual es el directorio de datos por defecto (datadir), el número máximo de conexiones concurrentes que permite (max_connections), y un largo etcétera.
  • Herramientas gráficas de MySQL: Se puede atacar la base de datos desde línea de comandos, pero como que no...¿verdad? Para eso están las MySQL GUI Tools, un set de herramientas gráficas para Windows formado por MySQL Query Browser, MySQL Administrator y MySQL Migration Toolkit. Los nombres dejan bastante claro para qué sirve cada una, así que os invito a probarlas. Las herramientas están bien, sobre todo para tareas sencillas, pero he de admitir que todavía tienen mucho margen de mejora. Quizás porque hemos trabajado con versiones beta y hemos tenido algún que otro problemilla...
  • Conectores: Los hay para todos los gustos ;-). Hemos probado los conectores para Java y .NET y hay que decir que van muy finos. Significar que el conector de Java para MySQL está aguantando "como un león" unas transacciones muy pero que muy potentes.
Ya veis, no son muchas las tips o pautas que os acabo de contar acerca de MySQL corriendo sobre un entorno Windows, pero menos es nada; la idea del post era comentar muy por encima mi corta experiencia con MySQL sobre Windows, y de paso, hacer este pequeño "mini-análisis personalizado" para que a la gente le suenen estas cosillas, por si algún día le toca trabajar contra MySQL.

SaludoX.


No hay comentarios: