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
From [EMAIL PROTECTED]  Wed Apr 28 20:31:05 2004
From: [EMAIL PROTECTED] (Joel A. Iturra)
Date: Wed Apr 28 20:31:57 2004
Subject: otra duda
In-Reply-To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>

On Wednesday 28 April 2004 20:19, Alvaro Herrera wrote:
> 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.

no voy a discutir eso, pero....

>
> 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.

pero eso es obvio poh alvaro, si las transacciones estan solo para innodb en 
mysql, no puedes esperar que funcione en otro tipo de tablas. Osea, si el que 
esta haciendo la cuestion no tiene clara la diferencia, no es culpa de mysql


>
> 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.

por eso cuando definas tus tablas, debes asegurarte que todas sean innodb, de 
lo contrario es como querer que vuele un auto (solo un ejemplo) 


> 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.

bugs los tiene cualquiera no ??  y no son medios rebuscados esos ejemplos ??

> 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).

ahi cada uno ve donde le aprieta el zapato, si se puede vivir con eso, cual es 
el problema ??

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

pocas son las empresas que dicen donde estan sus debilidades (punto a favor de 
pgsql)


>[....]

respondiendo la pregunta original, yo diria que "depende".
En todo caso concuerdo que si aun no han escogido una db y el asunto a 
desarrollar es grande (complejo), mejor tirarse por postgresql.


-- 
Joel A. Iturra
(1)(718)823-3904
From [EMAIL PROTECTED]  Wed Apr 28 22:36:27 2004
From: [EMAIL PROTECTED] (Alvaro Herrera)
Date: Wed Apr 28 22:51:41 2004
Subject: otra duda
In-Reply-To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
        <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>

On Wed, Apr 28, 2004 at 08:31:05PM -0400, Joel A. Iturra wrote:

Joel,

> > 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.
> 
> pero eso es obvio poh alvaro, si las transacciones estan solo para innodb en 
> mysql, no puedes esperar que funcione en otro tipo de tablas. Osea, si el que 
> esta haciendo la cuestion no tiene clara la diferencia, no es culpa de mysql

Si, para mi y para ti puede ser obvio, pero si quiere llamarse
"transaccional" al menos deberia mandar un mensaje feo o tirar un error
cuando en una transaccion se involucra una tabla no transaccional.  O
derechamente, dado que se supone que el sistema es transaccional, no
deberian existir los tipos de tablas no transaccionales!


> > 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.
> 
> por eso cuando definas tus tablas, debes asegurarte que todas sean innodb, de 
> lo contrario es como querer que vuele un auto (solo un ejemplo) 

Me acuerdo haber oido que si tenias MySQL compilado sin tablas InnoDB
(versiones antiguas) y creabas una tabla con tipo InnoDB, el motor la
cambiaba a MyISAM y no te daba ninguna indicacion de esto!


> > 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.
> 
> bugs los tiene cualquiera no ??  y no son medios rebuscados esos ejemplos ??

De partida no son bugs, porque los de MySQL reconocen que estan ahi y no
los reparan (en el manual dice por ahi que los numeros muy grandes son
truncados y nuevamente, el usuario no tiene ningun mensaje de este
hecho)

No me parecen rebuscados en absoluto; si uno quiere datos consistentes,
todos los datos tienen que ser consistentes, no solo los que son
obviamente consistentes.  Es que los gallos para ganar rendimiento sacan
los chequeos de integridad que a mi juicio son basicos (y el de
cualquiera que valore sus datos).


> > (==> no puedes tener cluster _y_ transacciones _y_ rendimiento ...
> > escoge solo una).
> 
> ahi cada uno ve donde le aprieta el zapato, si se puede vivir con eso, cual 
> es 
> el problema ??

No se ... un motor de bases de datos que "inventa" cosas de esta manera
como MySQL no me da ninguna confianza.  Todo es bastante al lote.  En
PostgreSQL hay un esfuerzo constante para que esto no suceda, aunque a
veces se pierda un poco de rendimiento.  El tema de fondo es que lo
importante es entregar respuestas correctas, aunque sea un poco mas
lento.  Si la respuesta es erronea, de que te sirve que te la entreguen
muy rapido?  Para eso mejor generas datos al azar, total igual estan
malos.

> respondiendo la pregunta original, yo diria que "depende".

Yo diria que si los datos son importantes, no depende.  Si es para hacer
un sitio de articulos + comentarios y no importa que se pierdan algunos
de vez en cuando, o que aparezcan datos brujos, entonces puede no
importar ... pero si es el caso, mejor usa SQLite que es aun mas rapido.

> En todo caso concuerdo que si aun no han escogido una db y el asunto a 
> desarrollar es grande (complejo), mejor tirarse por postgresql.

No te quepa duda.

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"Uno puede defenderse de los ataques; contra los elogios se esta indefenso"
From [EMAIL PROTECTED]  Thu Apr 29 09:24:31 2004
From: [EMAIL PROTECTED] (Horst von Brand)
Date: Thu Apr 29 09:24:36 2004
Subject: Sistema de Archivos Ext3 
In-Reply-To: Your message of "Wed, 28 Apr 2004 18:45:39 -0400."
        <[EMAIL PROTECTED]> 
Message-ID: <[EMAIL PROTECTED]>

"Alexander Gajardo" <[EMAIL PROTECTED]> dijo:
> [1. text/html]

La primera regla de la lista es correo en texto plano. Esto no me interera
complicarme la vida para leerlo.

La segunda regla es que voy a instalar un filtro de correos HTML en la lista.

La tercera regla es que infractores reiterados (si, Uds saben quienes son)
seran eliminados sin mas tramite.
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513
From [EMAIL PROTECTED]  Thu Apr 29 09:37:49 2004
From: [EMAIL PROTECTED] (Horst von Brand)
Date: Thu Apr 29 09:37:53 2004
Subject: MySQL un DBMS? [Was: Re: otra duda]
In-Reply-To: Your message of "Wed, 28 Apr 2004 18:48:40 -0400."
        <[EMAIL PROTECTED]> 
Message-ID: <[EMAIL PROTECTED]>

=?Windows-1252?Q?Esteban_Fern=E1ndez?= <[EMAIL PROTECTED]> dijo:
> "Rodrigo Flores" <[EMAIL PROTECTED]> dijo:

[...]

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

Es un administrador de archivos que maneja un subconjunto limitado de SQL.
Solia tener mucho mejor rendimiento que las alternativas (a costa de no
hacer "cosas complicadas" como transacciones o consultas complejas). Las
alternativas se han hecho mas rapidas, y MySQL comenzo a agregar lo que le
falta (como parches mas bien sucios), aunque le queda muchisimo camino por
recorrer. En el proceso el rendimiento se fue de paseo.

El consenso es que MySQL es alternativa si puedes garantizar para todo el
futuro que jamas requeriras un verdadero RDBMS, y que estas dispuesto a
pagar un costo severo en funcionalidad a cambio de una pequen~a ventaja en
rendimiento para consultas muy simples, y que jamas requeriras mas que eso.
Algunos analisis que he visto muestran que en uso real MySQL es _mucho_ mas
lento que p.ej. Postgres (porque hay que hacer mucho a mano fuera de la
base de datos, y el costo en rendimiento de eso es altisimo).  Sin contar
que el desarrollo se complica (y encarece), y que se corren riesgos serios
de perdida de datos por falta de ACID.

> Por supuesto que si, antes de haber preguntado aqui, hubiese sido bueno
> ir a Google y verificar (solo un comentario), si defines en MySQL las
> tablas de tipo InnoDB tienes transacciones funcionando impecablemente.

Hay que hacer tonteras especiales para lograr (una parte de) la
funcionalidad fundamental de un DBMS de verdad. Que te dice eso?

PS: Es _tan_ dificil citar y responder como muestro aca? Se debe citar el
    mensaje original (indicando quien lo escribio), borrar lo irrelevante
    para la respuesta, y poner comentarios nuevos entre lo comentado? Es
    mucho trabajo tratar de poner titulos que sirvan de algo ("Duda",
    "Pregunta", "No tengo idea", ... nada aportan)?
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513
From [EMAIL PROTECTED]  Thu Apr 29 10:11:12 2004
From: [EMAIL PROTECTED] (Arturo Mardones)
Date: Thu Apr 29 10:11:21 2004
Subject: Problemas con postfix
Message-ID: <!~!UENERkVCMDkAAQACAAAAAAAAAAAAAAAAABgAAAAAAAAAA6CQVXp/[EMAIL 
PROTECTED]>

Hola,

Tras haber instalado postfix tengo un problema de relay que no he podido
solucionar... En mi log de maillog me aparece esto
<[EMAIL PROTECTED]>, size=1697, nrcpt=1 (queue active)

Y es que este correo de una compañía coreana esta usando mi servidor
para hacer relay de su condenada propaganda... Ahora mi duda y por todo
lo que he leído se supone que postfix es por defecto cerrado al relay
ilegal, al parecer no es tan así pq estos señores igual mandan mail como
condenados. Ahora mi servidor esta detrás de un firewall q le redirige
los paquetes al puerto imap via reglas de iptables.

Como puedo bloquear para q este correo no mande mas por mi servidor??
Les agradecere mucho cualquier idea o dato!!

Gracias,

Arturo Mardones F.
Core Technologies Ltda. http://www.coretech.cl
Bustamante 16, Of 3A, Providencia
Santiago, Chile
Fono: 56-2-2698822

Responder a