13 de agosto, 2005

Migrar de SQL Server a MySQL
archivado en

Al final hemos decidido migrar a MySQL la base de datos de TopMadrid. La razón principal ha sido el precio: Una base de datos de 500 Mb en un servidor SQL Server compartido son 200 €/mes, el doble que en un servidor MySQL compartido (precios de Arsys).

Además MySQL puedes instalártelo en local, lo cual además de ser algo muy útil para hacer pruebas, puede ser interesante para mantener un backup en local automático. Evidentemente esto también lo puedes hacer con SQL Server pero para ello necesitas comprar una licencia... que no la regalan precisamente.

La migración ha sido muy rápida, gracias en parte a SQLyog el mejor GUI para manejar MySQL que yo he conocido, especialmente util para migraciones pues te permite importar datos de varias fuentes ODBC.

Algunas consejos para la migración

  • Para pasar correctamente tus tablas de SQL Server a MySQL es imprescindible dominar los tipos de campo de las dos bases de datos, puesto que en ocasiones la conversión automática que te sugiere SQLyog no es la más correcta.


  • A parte de importar los datos es necesario hacer algunos cambios en el código de tus páginas, concretamente en las sentencias SQL que incluyan fechas ya que la estructura de fechas de MySQL es distinta a la de SQL Server. Es bastante sencillo y puedes crear una función que te transforme las fechas automáticamente.


  • Otro problema que nos trajo de cabeza fue debido no a MySQL sino al Sistema Operativo sobre el que está instalado. El Servidor SQL Server que compartíamos estaba instalado en Windows y por tanto no había problemas con las mayúsculas y las minúsculas, pero como probablemente el nuevo servidor MySQL esté instalado en Linux / Unix si que importa (case sensitive), y si a tus tablas no las llamas exactamente igual no las encuentra, porque cada tabla es un archivo en el servidor.


A parte del precio, MySQL tiene otras muchas ventajas, algunas de las cuales necesitabamos utilizar para el sistema estadístico a medida que estamos desarrollando. Una de ellas es la cláusula LIMIT en el enunciado SELECT del lenguaje SQL, que no existe en SQL Server y es muy útil para la paginación de resultados. Otra que a mi me gusta mucho es EXPLAIN SELECT vital para optimizar tus índices, tipos de indexación y consultas de la base de datos.

En total el proceso nos ha llevado unas 8 horas (intensas), aunque evidentemente todo depende de la complejidad tu aplicación y la experiencia que tengas en migraciones de este tipo.

Gráfico de Calidad sin robots
Gráfico de Calidad sin robots
|Así es como queda nuestro gráfico una vez eliminados los robots, como podéis observar las proporciones son muy estables a lo largo de varios días. Creo que el resultado final no va a variar excesivamente de éste, aunque podríamos seguir afinando, si bien...

Geoposicionamiento de Visitantes con Google Map API
Geoposicionamiento de Visitantes con Google Map API
|¿De dónde me visitan? Todo webmaster tiene acceso a esta información desde las estadísticas de su web, pero... ¿Por qué no ver a tus visitantes en un mapa mundial de Google Maps? Pues no es algo excesivamente complicado de conseguir, aquí os decimos cómo...

Control de calidad de un sitio web (cont)
Control de calidad de un sitio web (cont)
En un post muy reciente: Verificando la utilidad de tu web... hablaba de algo que me parece muy interesante ¿Cómo sabes si tu web gusta o es util?. Nosotros habíamos decidido implementar un sistema propio (aunque lo utilicen mucho los de Microsoft no...

Google Maps en TopMadrid
Google Maps en TopMadrid
Muy recientemente nos enteramos, gracias a Google Dirson y OJO!Buscador, de que Google había hecho pública su API para Google Maps, con lo que ahora es muy sencillo integrar los mapas de Google en tu web. Y nosotros nos hemos puesto las pilas y hemos...
Modificar plantillas en Blogger
Modificar plantillas en Blogger
Bien, esto de ir manipulando la plantilla de Blogger tiene su truquillo... de momento he cambiado la imagen de la cabecera. Lo de añadir el nombre del blog de esa manera ha sido un plagio (por qué llamarlo "inspiración" si plagio es más correcto) de...


En portada