otra duda

Alvaro Herrera alvherre en dcc.uchile.cl
Mie Abr 28 20:19:03 CLT 2004


On Wed, Apr 28, 2004 at 06:17:07PM -0400, Rodrigo Flores wrote:

Hola,

> calza Mysql dentro de las Bases de Datos relacionales, tal vez deber??a
> preguntarme si es verdaderamente una BD.

La respuesta es no.

Primera referencia es "MySQL gotchas",
http://sql-info.de/mysql/gotchas.html

Segundo, la gente cree que "tener transacciones" es suficiente.  Esto no
es asi; hay muchos otros aspectos a considerar, sobre todo si las
transacciones son brujas.  Por ej. si tienes tablas InnoDB y tablas
MyISAM mezcladas, y en una transaccion haces cambios a ambos tipos de
tablas, al hacer ROLLBACK los cambios se deshacen en las tablas InnoDB
pero no las MyISAM; el estado es inconsistente al final.  Y cuidado,
porque si en la declaracion de una tabla se te olvida poner
"type=innodb", la tabla no sera transaccional, no se te avisara de esto,
las transacciones se ejecutaran aparentemente con exito pero al hacer
rollback no pasa lo que tu esperas ... en resumen puede pasar cualquier
cosa.

Idem con la integridad referencial: si tu declaras una tabla con llaves
foraneas pero no es InnoDB, nadie te va a informar que la llave foranea
no esta siendo validada.

Ojo con ingresar fechas 31 de febrero; el servidor las acepta y tu no
sabes que diablos metio ahi dentro.  Uno podria decir que es culpa de la
aplicacion, pero lo cierto es que el sistema debe hacer chequeos.  Idem
con numeros demasiado grandes y otras cosas raras.  Trata de calcular
123456789012345678901234567890 % 123; MySQL te dira 58.  Pero la
respuesta correcta es 117.  WTF!?  i.e.: no puedes confiar que MySQL te
entregue respuestas correctas.

Sobre el rendimiento: mucho se dice que MySQL es mas rapido, pero no te
dicen que MySQL es mas rapido con tablas MyISAM, y que con tablas InnoDB
la cosa es mucho mas lenta.  Ahora tambien estan anunciando un "MySQL
cluster", pero nadie dice que el cluster es un tipo especial de tabla y
no puedes tener un cluster con tablas InnoDB (==> no puedes tener
cluster _y_ transacciones _y_ rendimiento ... escoge solo una).

En fin ... puras pifias ocultas, que ellos nunca te mencionan.

MySQL es tan limitado en la sintaxis de consultas, que terminas haciendo
muchas cosas en la aplicacion que te sale mucho mas rapido hacer en SQL
(y el servidor de BD automaticamente te entrega resultados correctos, te
evitas corregir bugs que surjan en tu codigo, y te ahorras muchas lineas
de codigo!)  Consecuencia de esto es que como tienes que hacer cosas tu
mismo, las respuestas de la BD pueden venir mas rapido, pero tu pierdes
mas tiempo procesandolas, y la aplicacion, que es lo que importa, es mas
lenta.

Otra cosa a tener en cuenta es que MySQL no es software libre.  Es
simplemente software comercial, que para algunas circunstancias te lo
dejan usar gratis bajo licencia GPL, nada mas.  Es igual que Microsoft
aca: en la casa te lo dejan usar gratis (copia ilegal), pero la empresa
tiene que pagarlo.  Y olvidate que vas a tener voz y voto en el
desarrollo futuro; si ellos no quieren hacer algo que necesites, estas
frito.

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"Before you were born your parents weren't as boring as they are now. They
got that way paying your bills, cleaning up your room and listening to you
tell them how idealistic you are."  -- Charles J. Sykes' advice to teenagers


Más información sobre la lista de distribución Linux