Importar ficheros SQL de gran tamaño en MySQL

Estos días habréis comprobado (si me seguís a en twitter) que hemos estado peleándonos con la importación de un fichero de dimensiones considerables en MySQL. Concretamente el fichero pesaba casi 600MB y contenía instrucciones SQL correspondientes a una tabla de una base de datos con más de 12 millones de registros… la realidad es que no habíamos lidiado con algo de estas dimensiones hasta la fecha, y menos aun para tener que importarla desde una BBDD que existía previamente.

Ante este reto tienes varias alternativas… la mayoría de ellas ideas que NO funcionan. Hemos pensado que contarlas por aquí puede ahorraros a alguno de vosotros las pruebas ;)

Seguir leyendo…

Coca-Cola: El Almacén de la Ilusión

Cuando se te presenta un proyecto como éste, solo puedes sentirse más contento que una castañuela y ponerlo en el lugar que se merece en el portfolio. Y por supuesto recomendar a todo el mundo que se pase por allí para conocerlo en detalle.

¡Gracias javi!

Trabajar con más de una base de datos

Nosotros generalmente usamos una clase propia encargada de gestionar las operaciones con la base de datos (conexión, ejecutar consultas, desconexion…).
Instanciamos el objeto para la gestión de la base de datos al principio de las páginas que necesitan conexión con la misma (es decir realizamos la conexión con la bbdd), y al final de la página cerramos la conexión de la misma.

Hay en ocasiones que un proyecto trabaja con más de una base de datos, por lo que será necesario hacer conexiones a esas bases de datos para la manipulación de la información. Pues bien, en las páginas que se necesite manipular información de las distintas bases de datos, instanciamos tantos objetos como base de datos se necesiten, y al final de la página cerramos todas las conexiones.

Yo pensaba que al tener objetos distintos para cada conexón sólo tenía que usar el objeto correspondiente para hacer las peticiones.
Pero no, es necesario que cada vez que se vaya a usar una base de datos distinta a la que estabas manipulando deberás actualizar la base de datos (@mysql_select_db). Yo lo hago mediante un método de la clase.

Seguir leyendo…

BUG en MySQL

Muy buenas a todos. Durante el desarrollo de un proyecto necesitaba insertar un registro en la base de datos, o en caso de que ya existiera, actualizar un campo de dicho registro.

Pues bien, a partir de la versión 4.1 se puede hacer en MySQL todo esto en una sóla sentencia:
INSERT ... ON DUPLICATE KEY UPDATE.

La verdad que no era la primera vez que utilizaba esta sentencia, es mucho más cómodo que hacer primero una consulta a la base de datos para comprobar de la existencia del registro, para que en caso de existir actualizarlo o en caso contrario realizar una inserción.

Seguir leyendo…

Seguridad bajo PHP y MySQL

Por motivos del trabajo, últimamente nos hemos tenido que mirar bastante información sobre seguridad en PHP, y la realidad es que es muy fácil saltarse las barreras de seguridad de una web si no se toman medidas para evitarlo.

La buena noticia es que hay medidas bastante simples que se pueden tomar y que ayudan bastante a eliminar un alto índice de atacantes que emplean técnicas tradicionales. La mala noticia es que la seguridad nuca será algo infalible.

Seguir leyendo…

SQL_BIG_SELECTS

Hace un tiempo desarrollamos una tienda online. El caso es que hasta ahora había estado funcionando sin ningún problema ni error. Pero ayer nos llega un email del cliente diciéndonos que la tienda ha dejado de funcionar.

Sorprendidos accedemos a la tienda, y efectivamente cuando seleccionabas una categoría la web mostraba un error. El mensaje de error que salía en la página decía lo siguiente:

Seguir leyendo…