Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   "Mejor" base de datos que MySQL... (https://www.clubdelphi.com/foros/showthread.php?t=66609)

Ñuño Martínez 03-03-2010 14:11:05

"Mejor" base de datos que MySQL...
 
Hola gente.

En realidad no es una pregunta de Delphi ni Pascal, pero no sé dónde más preguntar.

Resulta que llevo dos años con un desarrollo de la leche en PHP. Perdí la batalla para utilizar otro lenguaje, y ahora nos está pasando factura porque PHP no está hecho para cosas tan grandes y complejas.

La cosa es que este programa maneja una base de datos sobre MySQL (¿Qué esperábais?) que ahora tiene más de 100 tablas, otras tantas vistas (VIEW) nada simples y un puñado de funciones/eventos/triggers o como los queráis llamar. Varias de estas tablas tienen un buen centenar de miles de registros superando los 15Mib por lo que la cosa se resiente bastante en cuanto a velocidad.

La solución que va a proponerme mi jefe (que todavía no lo ha hecho) es... (redoble)... ¡Añadir más campos y vistas! (Minipunto a quien lo haya adivinado antes de leerlo) de esta forma cosas que ahora se obtienen mediante consultas y cálculos estarán precalculadas.

Esto puede solucionar parte de la papeleta, pero no toda. Yo tiraría a la basura lo hecho y empezaría de nuevo en otro lenguaje (incluso estoy dispuesto a programar en Java y todo) pero como no va a poder ser se me había ocurrido proponerle cambiar el gestor de la base de datos a otro que se maneje mejor con tablas gigantescas y vistas complejas (mucho, con muchos "JOIN" y "SELECT" anidados, y muchos campos calculados, etc).

Así que si alguien puede sugerirme webs donde se vea claramente que otros gestores (utilizables desde PHP, se entiende) son más eficientes que MySQL, y que sea lo más fácil posible de importar/exportar con esta, que lo diga para poder enviárselo a mi jefe "como quien no quiere la cosa".

Gracias.

ASAPLTDA 03-03-2010 14:44:00

Comentario
 
No se mi concepto te sirva de algo,
Creo que despues de 2 años el problema de lenguaje no es, es posible que se la forma de contruccion de la base de datos, a veces es mejor usar un procedimiento donde se ejecuten los calculos de la base de datos y retornar el resultset, a veces las vistas anidadadas y reanidadas se vuelven ineficientes ya que no utilizan el mejor opcion de indices, trata de ejecutar un proceso que hallas identificado como lento en otro lenguaje como delphi y compara le velocidad de respuesta, se que java tampoco es un avion para procesar. Otro punto imprante la maquina donde procesas los datos es rapida o es un simple computador ? Recuerda que a medida que las bases de datos crecen mucho requieren procesos de administracion, discos, procesadores mas rapidos, mayor tamaño de bus de datos etc
saludes amigo:)
Ultimo concepto volver a empezar son otros dos anos al menos

lbidi 03-03-2010 16:10:00

Hola, puede usar Advantage Database o Firebird.

Las dos te permiten hacer todo lo que tienes ya hecho en la mysql.

Y se que Advantage tiene un importador de datos.

Saludos

movorack 03-03-2010 18:04:43

Apoyo lo que dice ASAPLTDA, pero te abono un poco al tema...

Te dejo el link de un artículo acerca del uso de PostgreSQL (el que yo uso por lo general :D) y sus características

Aunque si de algo se puede sentir orgulloso MySQL es de su rapidez... y justo es de lo que te estás quejando... depronto sea cuestión de hardware.

rgstuamigo 03-03-2010 18:41:21

Si hay algo por lo que MySQL es conocido es por ser muy potente, es más, aquí el propio vBulletin trabaja con MySQL y te podrás imaginar la cantidad de datos que se almacena.;).
Lo que me gustaría es que brindaras mas datos sobre el problema en cuestión por ejemplo:
¿Que versión de MySQL se usa?
¿Sobre que motor(engine)de MySQL se está trabajando(Isam,MyIsam, InnoDB, BerkeleyDB, ARCHIVE, BlackHole, CSV, Federated, etc)?
¿Cómo se está accediendo al servidor(Via internet,atraves de un tunel o VPN)?,etc,etc.:confused::confused:
En fin a veces no es bueno tomar una decisión a la ligera y decir yo lo hago todo de nuevo o cambio ésto o aquello y listo, ya que segun se vé, se estaría perdiendo tiempo, dinero y sobre todo mucho pero mucho esfuerzo.
Dependerá de muchos otros factores que nos puedas brindar como información para quizás poder entre todos ver el problema y buscarle una posible solución si la situación amerita.;).
Saludos...:)

roman 03-03-2010 18:58:58

Cita:

Empezado por rgstuamigo (Mensaje 355458)
Si hay algo por lo que MySQL es conocido es por ser muy potente

Yo no creo que ésta sea la característica por la cual es conocido. MySQL es muy bueno para mostrar datos, pero para insertar, borrar y modificar ya no lo es tanto, sobre todo si se usan tablas InnoDB (y difícilmente se llega lejos si no se usan tablas transaccionales). Si a eso añadimos una buena cantidad de vistas y disparadores, no estaría tan seguro de la potencia de MySQL.

// Saludos

juanelo 03-03-2010 19:09:30

Cita:

Empezado por rgstuamigo (Mensaje 355458)
¿Sobre que motor(engine)de MySQL se está trabajando(Isam,MyIsam, InnoDB, BerkeleyDB, ARCHIVE, BlackHole, CSV, Federated, etc)?

Esto en verdad me ha dejado intrigado, y sobre todo que nunca he usado mySQL. A poco mySQL no usa un motor propietario, no entiendo y a lo mejor estoy preguntanto BOBADAS.
Saludos.

rgstuamigo 03-03-2010 19:16:04

Cita:

Empezado por roman (Mensaje 355460)
Yo no creo que ésta sea la característica por la cual es conocido. MySQL es muy bueno para mostrar datos, pero para insertar, borrar y modificar ya no lo es tanto, sobre todo si se usan tablas InnoDB (y difícilmente se llega lejos si no se usan tablas transaccionales). Si a eso añadimos una buena cantidad de vistas y disparadores, no estaría tan seguro de la potencia de MySQL.

// Saludos

No deseo generar una polémica , ya que cada programador siempre va defender su herramienta de trabajo y siempre van a existir diferentes puntos de vista, lo que puedo responder es que MySQL se ha ganado un lugar especial en lo que se refiere a Servidores de Base de datos, por ejemplo Wikipedia trabaja con MySQL, Amazon tambien,La NASA, y la lista de usuarios es larguita sin contar aquellos sitios desconocidos.;).
Si se dan cuenta estamos hablando no tan solo de 100 tablas, sino ,en algunos caso muy pero muy por encima de eso.;).
Saludos...:)

rgstuamigo 03-03-2010 19:23:05

Cita:

Empezado por juanelo (Mensaje 355463)
Esto en verdad me ha dejado intrigado, y sobre todo que nunca he usado mySQL. A poco mySQL no usa un motor propietario, no entiendo y a lo mejor estoy preguntanto BOBADAS.
Saludos.

Si deseas conocer más sobre el asunto pulsa aquí.;).
Saludos...:)

movorack 03-03-2010 19:49:56

Cita:

Empezado por rgstuamigo (Mensaje 355466)
... MySQL se ha ganado un lugar especial en lo que se refiere a Servidores de Base de datos, por ejemplo Wikipedia trabaja con MySQL, Amazon tambien,La NASA, y la lista de usuarios es larguita sin contar aquellos sitios desconocidos...

MySQL si se ha ganado un lugar en la web, obvio PHP le dá un excelente soporte... PHP+MySQL+Apache son una llave que trabaja muy bien... pero MySQL "sacrificó" algunas casracterísticas de estabilidad e integridad de datos en aras de la rapidez que necesita una pagina web.

Algunas entidades del estado Colombiano tienen sus portales de información construidos en JSP+Oracle... la información es sorprendentemente fiel pero a costo de la rapidez de consulta... uno puede ir al baño y volver mientras consultas la información de tu cedula desde la web... pero esos mismos sistemas los ves en las mismas oficinas del estado y allí, en la intranet... eso que era lento es eficaz.

Desde que me inicié en el desarrollo, usé Interbase/firebird y luego PostgreSQL; a MySQL lo habia escuchado hablar... y una vez estando en un seminario de desarrollo de aplicaciones en MySQL+PHP... el mismo conferencista se enredó con una llave foranea... (ojo... el seminario fué hace mas de tres años) pq aunque lo habia definido bien en la practica... no le funcionaba correctamente y le dejaba añadir lo que sea... luego se dió cuenta que no estaba usando el motor correcto... me quedé con la idea que si quieres rapidez de despliegue (webs y portales de información general)... MySQL... si quieres integridad (Información empresarial relevante, Bancos)... MySQL no es la opción. me terminé inclinando por PostgreSQL pq PHP le dá un buen soporte... en aquel tiempo tenias que configurar el php.ini para darle soporte a firebird y no era muy bueno que digamos

Casimiro Notevi 03-03-2010 20:17:55

Cita:

Empezado por roman (Mensaje 355460)
Yo no creo que ésta sea la característica por la cual es conocido. MySQL es muy bueno para mostrar datos, pero para insertar, borrar y modificar ya no lo es tanto, sobre todo si se usan tablas InnoDB (y difícilmente se llega lejos si no se usan tablas transaccionales). Si a eso añadimos una buena cantidad de vistas y disparadores, no estaría tan seguro de la potencia de MySQL.
// Saludos


No lo quise decir yo porque pensé que me arriesgaba a sufrir un "coscorrón" de tu parte :D:D:D

roman 03-03-2010 20:24:54

Je, je. No tendría por qué hacerlo. Como sabes, yo uso MySQL casi exclusivamente. Con lo que yo no estoy de acuerdo es con que se tilde a MySQL como base de juguete, de aficionados, light, etc. Hay mucho desarrollo profesional hecho sobre MySQL que va más allá de simples gestores de contenido.

Pero hay sistemas para los cuales no creo que de el ancho. Sistemas donde hay muchas inserciones, con muchos usuarios simultáneos y enorme cantidad de información.

// Saludos

rgstuamigo 03-03-2010 20:35:35

Cita:

Empezado por movorack (Mensaje 355474)
... y una vez estando en un seminario de desarrollo de aplicaciones en MySQL+PHP... el mismo conferencista se enredó con una llave foranea... (ojo... el seminario fué hace mas de tres años) pq aunque lo habia definido bien en la practica... no le funcionaba correctamente y le dejaba añadir lo que sea... luego se dió cuenta que no estaba usando el motor correcto... me quedé con la idea que si quieres rapidez de despliegue (webs y portales de información general)... MySQL... si quieres integridad (Información empresarial relevante, Bancos)... MySQL no es la opción. me terminé inclinando por PostgreSQL pq PHP le dá un buen soporte... en aquel tiempo tenias que configurar el php.ini para darle soporte a firebird y no era muy bueno que digamos

Interesante relato amigo movorack,yo tambien me acuerdo claramente que en la Universidad donde estudio, algun compañero me dijo que MySQL no soportaba Foreign Key (Integridad) y me sorprendió :eek: el desconocimiento de muchos hacia MySQL. Yo le explique que si lo soportaba y que si deseara usarlo debía usar el motor(engine) InnoDB, aunque parece que no me creyó, seguramente él estaba trabajando con el motor MyIsam.:rolleyes::D.
De PostGree no te puedo hablar mucho ya que no lo he usado casi nada pero segun he visto es un Monstruo ,tiene de todo y sobre todo es libre.;).
Saludos...:)

AzidRain 03-03-2010 21:27:21

Estoy de acuerdo con Román. También hace falta que hagas o te haga alguien externo que no conozca tu proyecto, un análisis a conciencia del diseño de tu base de datos así como de las consultas y vistas que ocupas. Muchas veces el problema de velocidad radica en un diseño deficiente que funciona con unos pocos registros ya que no se nota que esta mál planeado hasta que tienes varios miles. En lo personal es lo que yo haría ya que además en caso de que sea necesario migrar a otro motor ya tendrás todo optimizado.

movorack 03-03-2010 22:59:10

hago una aclaración... por si las moscas... no he pensado nunca que MySQL fuese una base de datos de juguete... es más conozco un sistema de administración escolar construido en PHP + MySQL que trabaja muy bien.

Lord Delfos 04-03-2010 14:46:33

Bueno, yo también recomiendo Postgre.

Tengo un amigo en una empresa cuyo nombre no puede ser nombrado... y tuvieron un problema similar: la base se hizo grande y MySQL parece que no podía con la carga, se cambiaron a Postgre y mi amigo volvió a dormir todas las noches. :)

También he leído por ahí que se puede conectar con Oracle, lo que sería fenomenal pero, por supuesto, hay que desembuchar unos cuantos billetines.

fjcg02 04-03-2010 23:34:17

Hola a todos,
desde mi punto de vista, antes de tirar todo a la basura, revisaría o mandaría revisar a un experto la configuración del srv donde corre la BBDD.
Quiero decir con esto ( que alguien me corrija si digo bobadas ya que no conozco mySQL pero sí algún que otro motor) lo siguiente:
- Tamaño de los buffers.
- Tamaño de la página, que sea la más eficiente y que coincida con el mismo tamaño de página que maneja el sistema operativo.
- Tamaño de la ram, sobre todo si en el sistema se conectan muchos usuarios.
- Discos de alta velocidad.
- Caché activa o no activada, ...
- Este punto desconozco si mySQL lo permite. Separar en diferentes discos los datos de los índices.
- Regeneración de índices en ventanas horarias de baja actividad, ...
- Revisar los planes de ejecución y confirmar que están todos los índices que deben estar.
- Auditar el tráfico y la infraestructura de la red a ver si hay cuellos de botella y dónde.
- Posibilidad de balancear la carga añadiendo más servidores de aplicación si la arquitectura lo permite.
- ...

Son parámetros a los que no se les da demasiada importancia, pero que realmente sí la tienen.
Generalmente instalamos la bbdd de producción igual que la de desarrollos, y al final acaba pagándolo el rendimiento.

Y bueno, me refiero a todos estos parámetros y parecidos que generalmente no tenemos en cuenta hasta que los pilla el toro.

Creo que puede ser más barato hacer una auditoría de este tipo e intentar cambiarlos para ver si hay mejoría que echar por la borda los dos años de trabajo. Aunque de este estudio puede concluirse que tengas que hacer cambios de aqrquitectura en la aplicación que puedan suponer muchas horas de trabajo.

Espero haberte ayudado en algo. A veces nos cuesta ver dónde está el problema porque somos todoterrenos y no especialistas de todas las materias.

Un saludo

Ñuño Martínez 05-03-2010 10:55:11

He ido dejando esto de lado y mira, ¡qué aluvión!

En teoría la gestión y diseño de la base de datos la hace mi jefe (que es el dueño de la empresa), pero para mi que se ha limitado a crear tablas y vistas sin ton ni son. He de decir que el programa se hizo casi sin planificación previa, ya que se empeña en darme la información a cuentagotas y no hubo forma de convencerle de que le dedicáramos un tiempo a planificar todo el programa... en fin, ¡qué voy a deciros que no hayáis comprobado vosotros mismos!

Respecto a lo que preguntáis acerca de la base de datos, es la versión 5.0.32 y el motor que utiliza es MyISAM (que por lo que decís aquí arriba es parte responsable del escaso rendimiento, y explicaría por qué no me funcionan las claves primarias y foráneas como se supone que deberían:mad:). El acceso se hace a "localhost", es decir, que el programa PHP y el servidor MySQL están en la misma máquina.

Del resto, sinceramente, NPI. Y tampoco quiero saberlo, porque se supone que no es mi trabajo, que dijo mi jefe que de eso se encargaba él y que yo no me preocupara.

Ahora que lo pienso, si voy ahora a decirle que hay que reinstalar/reconfigur la base de datos, me va a decir que lo haga yo, y paso. Bastante tengo con solucionar los problemas que aparecen por la nula planificación y mantener sincronizadas la aplicación "normal" y al de "El Corte Inglés" (por alguna razón que no logro comprender, no podía utilizarse la misma aplicación. Evidentemente no lo supe hasta un par de meses de iniciado el proyecto, y como siempre, a cuentagotas).

Si parezco algo mosqueado es porque lo estoy. ¡Que en casi diez años de profesión no haya encontrado ni un puñetero jefe de proyecto que sepa hacer su trabajo! ¡Manda webos! :mad:

Os dejo, que resulta que uno de los lusers dice que alguien pide un informe que no sé de dónde lo saca y da resultados erróneos. Y la aplicación de "El Corte Inglés" con tareas pendientes.

Casimiro Notevi 05-03-2010 11:24:25

Cita:

Empezado por Ñuño Martínez (Mensaje 355726)
[..]
Si parezco algo mosqueado es porque lo estoy. ¡Que en casi diez años de profesión no haya encontrado ni un puñetero jefe de proyecto que sepa hacer su trabajo! ¡Manda webos! :mad:

Os dejo, que resulta que uno de los lusers dice que alguien pide un informe que no sé de dónde lo saca y da resultados erróneos. Y la aplicación de "El Corte Inglés" con tareas pendientes.


El pan nuestro de cada día :D

roman 05-03-2010 14:25:43

Cita:

Empezado por Ñuño Martínez (Mensaje 355726)

Respecto a lo que preguntáis acerca de la base de datos, es la versión 5.0.32 y el motor que utiliza es MyISAM (que por lo que decís aquí arriba es parte responsable del escaso rendimiento, y explicaría por qué no me funcionan las claves primarias y foráneas como se supone que deberían

Desde luego, uno da por supuesto a estas alturas, que un desarrollo en MySQL hace uso de InnoDb y no de MyISAM puesto que transacciones y llaves foráneas dependen de eso y hace mucho tiempo que existe este motor. En ese sentido le doy la razón a rgstuamigo. Hay muchas características de MySQL que le gente sigue diciendo por ahí que carece de ellas: que no tiene transacciones, que no tiene vistas, que no tiene consultas anidadas, que no tiene disparadores, que no tiene procedimientos almacenados. Y, sin embargo, tiene todo eso.

Ahora bien, no creo que el rendimiento en sí se explique por el uso de MyISAM, todo lo contrario. El motor MyISAM es muy bueno para la rapidez, y de hecho yo sigo usándolo para cualquier tabla que es exclusivamente para consulta y no involucra ninguna transacción. El motor InnoDb es considerablemente más lento, o al menos lo era hasta hace un par de años; no he comparado últimamente.

Pero vista la precariedad del diseño de la base, pues bien puede tratarse entonces de problemas que pueden resolverse aún con MySQL. A veces un simple índice bien colocado hace maravillas. Éso más lo que ya comentan de afinar los parámetros del motor, como buffers, caché y esas cosas.

// Saludos


La franja horaria es GMT +2. Ahora son las 05:27:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi