![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
"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. |
#2
|
|||
|
|||
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 |
#3
|
||||
|
||||
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 |
#4
|
||||
|
||||
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 ![]() 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.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#5
|
||||
|
||||
![]() 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. ![]() ![]() 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... ![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 Última edición por rgstuamigo fecha: 03-03-2010 a las 18:58:47. |
#6
|
||||
|
||||
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 |
#7
|
||||
|
||||
Cita:
Saludos.
__________________
Ya tengo Firma! |
#8
|
||||
|
||||
![]() Cita:
![]() Si se dan cuenta estamos hablando no tan solo de 100 tablas, sino ,en algunos caso muy pero muy por encima de eso. ![]() Saludos... ![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 |
#9
|
||||
|
||||
![]() Cita:
![]() Saludos... ![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 |
#10
|
||||
|
||||
Cita:
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
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#11
|
||||
|
||||
Cita:
No lo quise decir yo porque pensé que me arriesgaba a sufrir un "coscorrón" de tu parte ![]() ![]() ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#12
|
||||
|
||||
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 |
#13
|
||||
|
||||
![]() Cita:
![]() ![]() ![]() 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... ![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 |
#14
|
||||
|
||||
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.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#15
|
||||
|
||||
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.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#16
|
||||
|
||||
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. |
#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
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#18
|
||||
|
||||
![]() 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 ![]() 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! ![]() 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. |
#19
|
||||
|
||||
Cita:
El pan nuestro de cada día ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#20
|
||||
|
||||
Cita:
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 |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
"OBJECT OR CLASS TYPE REQUIRED" en "APPLICATION EXENAME" | Xavierator | Varios | 3 | 27-10-2008 09:09:50 |
MySQL es el mejor manejador de base de datos en la actualidad | owarito | MySQL | 14 | 12-09-2008 08:05:57 |
Búsqueda "incremental" en una base de datos | loquillo3 | Conexión con bases de datos | 9 | 08-11-2007 18:07:02 |
Necesito llamar a métodos de clases "hija" desde su clase "padre" | Flecha | OOP | 17 | 20-04-2007 00:03:53 |
¿cuál es mejor: "close" o "application.terminate"? | unreal4u | Varios | 5 | 05-03-2007 11:01:19 |
![]() |
|