Junio 3rd, 2009

Unir tablas sin + SQL

La mayoría de los proyectos en los que he trabajado, siempre han tenido bases de datos mysql o oracle en su defecto, pero ultimamente estoy trabajando con PostgreSQL. Esta tiene ventajas como Triggers, herencias y demás que son motivos de por si solas para un nuevo artículo. Lo que voy a comentar en este, es que en oracle tenía la posibilidad de hacer una unión externa con el simbolo (+) en los elementos seleccionados.  Así consigo seleccionar los elementos que no tienen un reciproco en otra tabla. Mi duda era como hacer esto tanto en mysql como en postgreSQL aquí la respuesta

SELECT d.departamento, e.empleado
FROM   dept d
LEFT   JOIN emp e ON e.departamento = d.departamento

Lo que se hace, es invertir las para que la de la “izquierda” (LEFT join) se convierta en la más importante. También, la claúsula WHERE se encuentra eliminada y ahora el criterio de unión está en la claúsula “ON” del LEFT JOIN.

Julio 2nd, 2008

Claves foráneas con MySQL

Para empezar hay dos cosas que debemos intentar tener claras ¿Qué es un clúster y que prestaciones puede ofrecer? Un cluster agrupa uno o varios sectores de un disco, que se encuentran consecutivos o adyacentes  y que puede o debe ser utiliado para los siguientes objetivos:

  • Alta disponibilidad (High Availability)
  • Alto rendimiento (High Performance)
  • Equilibrio de la carga (Load Balancing)
  • Escalabilidad. (Scalability)

Un clúster en el caso de  MySQL es una tecnología que nos permitirá optimizar el rendimiento de nuestras bases de datos con un hardware no muy costoso y con unos pocos requerimientos de software. Un clúster MySQL integra dos cosas: un servidor MySQL y un motor de almacenamiento en memoria denominado NDB clúster que nos permite funcionar en un conjunto de pcs.

MySQL INNODBE

Según este pequeño esquema las tablas de la BBDD se integran usando el motor NDB y se podría acceder a los datos almacenados a través de cualquiera de sus nodos, estos nodos funcionarían como espejos unos de otros, lo que nos permite que la caída de uno de los nodos de datos no afecte al conjunto de ordenadores.

Los principales procesos que nos serán necesarios para hacer funcionar un clúster de MySQL son: MySQLD, NDB_MGMD, NDBD.

Claves foránes en MySQL

A partir de la versión 4.0, MySQL agregó InnoDB (un gran exito) a la lista de tipos de tablas soportadas por MySQL, para los que no saben demasiado sobre este tipo de tablas de almacenamiento de datos decir que MyISAM es el utilizado por defecto (aunque no permite claves foráneas y nos puede llevar algún quebradero de cabeza usar SQL sin saber esto) en la mayoría de los casos pero no por ello el que más se adapte a las necesidades de nuestra aplicación. Puesto que entre otras cosas no permite claves foráneas.

Mayo 12th, 2008

1005 – Can’t create table ‘xxx’ (errno: 150)

MySQl Logo

Solo hay dos posibles casos en los que nos podría fallar, con este error, nuestra creación de claves foráneas en una base de datos MySQL.

  • Si los dos campos (Nombre de campo y el nombre de campo foráneo) usan tipos de campo incompatibles.
  • Si tu usas “On Delete Set Null” pero el campo no lo permite, MySQL te devolverá el error.

Me decidi a crear este post, porque tuve el problemilla, hay mucha gente por muchos foros buscando resolverlo y no está detallada la información :D. Es una tontería que me hizo perder tiempo, espero que no se lo haga perder a otros.