jueves, abril 23, 2009

Mi experiencia con los DBMS

Hace algunos años empecé a trabajar con DBMS, como mucho de ustedes empecé mi mundo en la informática bajo plataformas propietarias, lo que a mi modo de ver me limitó mucho el aprendizaje, en aquellos años desarrollaba en lenguaje Basic con un IDE de Microsoft por lo que el primer "DBMS" (si se puede llamar DBMS) que utilicé fue el que ofrecen en el paquete de ofimática Office llamado Access, con el paso de los años y los requerimientos de los desarrollos, me ví en la necesidad de empezar a utilizar otros manejadores (gracias a dios!) como por ejemplo MySQL, PostgreSQL, SQL Server y Oracle, pero siempre alguien y hasta uno mismo en determinado momento se pregunta: ¿Cuál es mejor?

Primero que nada, pienso que este tipo de preguntas están relacionadas al modelo de negocios al que nos han llevado las empresas que venden software propietario, porque particularmente pienso que cada software puede ser muy bueno en determinados casos y muy malo para otros, pero de todos modos aqui expondré unas características que he observado en cada uno de ellos (ojo: es mi humilde opinión)

  • MySQL: primero que nada es Sofware Libre, por tanto es gratis, ya esto supone una gran ventaja para la gran mayoría, por otro lado es multiplataforma lo que nos permite utilizarlo en un sistema operativo libre y ahorrarnos muchísimo dinero en costos de licencia para servidores. Muy bueno en los casos de alojar páginas web con CMS y todo ese tipo de casos, ya que es excelente al manejar data que cambia con poca frecuencia, ya que fue destinado para realizar muchas consultas más no para inserciones y/o actualizaciones, en su versión 5 se incluyeron disparadores y procedimientos almacenados pero aún no están completamente bien implementados, administración sencilla.
  • PostgreSQL: al igual que MySQL es libre y multiplataforma. Muy estable, en sus últimas versiones han mejorado el rendimiento, ya que anteriormente comparado con MySQL las pruebas arrojaban un mejor rendimiento de MySQL, full soporte de disparadores y procedimientos, administración sencilla.
  • SQL Server: Es propietario y sólo puede ejecutarse en plataformas Windows, las licencias se venden tomando en cuenta cantidad de procesadores, cantidad de estaciones a conectar, etc. el hecho de estar disponible sólo para Windows no sólo nos incrementa los gastos sino que nos deja a merced de la poca estabilidad que nos ofrece este SO, administración sencilla, lo he utilizado para pequeñas cosas pero sinceramente teniendo MySQL y PostgreSQL no veo porque pagar por ese producto.
  • Oracle: Es propietario y multiplataforma, no sé muy bien como funciona el licenciamiento. Muy estable y extensible, compleja administración.
En definitiva pienso que si vamos a montar una página web CMS, foro, chat, etc... elegiría MySQL y para sistemas medianamente importantes, críticos, etc usaría PostgreSQL ¿y ustedes que opinan?

6 comentarios:

  1. Un pequeño comentario q hare con respecto a Mysql / PostgreSQL trata de como la mayoria (incluyendome)ven a Mysql como un MS Access por decirlo de una forma entendible y por que? bueno sencillo por la facilidad y manejabilidad que dispone Mysql, aunque desde un punto de vista tecnico seria una comparativa absurda yo lo tngo claro xD pero gracias a dios a mi curiosidad por aprender y al bloggero Carlos Chacin he visto distintas caracteristicas significativas de uno y de otro DBMS, con respecto a PostgreSQL y que lo colocan con una ventaja amplia ante Mysql en cierto trabajos especificos mejor respuesta en insersion mejor funcionamiento de procedimientos estabilidad ante BD incrementables y muy extensas. en resumen cada DBMS es para una funcion u/o trabajo especifico son buenos siempre y cuando cumplan con las necesidades al momento y futuro que asi lo requiera.

    Espero contribuir con la comunidad siempre que tnga internet y una pc xD. las grandes cosas no siempre la hacen muchos.

    ResponderBorrar
  2. Si bien es cierto que MySQL se presenta generalmente como un DBMS más sencillo gracias a su popularidad en arquitecturas LAMP (Linux, Apache, MySQL, PHP) y la cantidad de empresas que desarrollan GUIs para la administración de servidores MySQL; PostgreSQL también cuenta con herramientas de administración bastante amigables como es el caso de pgAdmin III y phpPgAdmin (equivalente a phpMyAdmin paa MySQL) y por otro lado es importante acotar que con lo comentado anteriormente no digo que no se pueda utilizar PostgreSQL para hacer algún proyecto sencillo ni tampoco que excluyamos a MySQL para proyectos grandes, porque de hecho hay muchos casos de éxito de implementaciones MySQL de alto rendimiento.
    En lo que a mí respecta MySQL me ha dado algunos problemas con disparadores y procedimientos almacenados, y PostgreSQL tiene algunas propiedades a nivel de administración que hacen que me incline hacia este DBMS.
    Saludos

    ResponderBorrar
  3. Mi experiencia con PostgreSQL en verdad fue limitada, a direrencia de MySQL observe que era un poco (casi in-notablemente) mas rapido para las operaciones CRUD, pero a la hora de leer los registros de la bd me parecio mas rapido mySQL, admito, fueron pruebas caseras y nada certificado, a la final, los invito a que utilicen utilicen como Table Engine a 'MyISAM' ya que es mucho mas rapido que 'InnoDB' (Segun mis pruebas 50% aprox mas rapido) solo porque este motor no soporta referencias, pero al fin y al cabo, quien necesita referencias?.

    Con respecto a los disparadores y procedimientos almacenados en verdad nunca me han dado problemas despues de que estan generados, recuerden tambien que los disparadores son relativamentes nuevos en MySQL y probablemente necesite algo mas de evolucion pero si tengo que reconocer que la IDE que los GUI tools presentan es totalmente incomoda, seca, e imperfecta a la hora de trabajar de crear Triggers y SPs, por lo menos yo no lo considero algo profesional, pero hasta ahora no he conseguido un IDE que se adapte a mis necesidades, alguna sugerencia?

    Saludos.

    ResponderBorrar
  4. Con respecto al motor de almacenamiento que comentas "MyISAM", pienso que cada motor tiene su propósito particular como le comentaba antes, y pienso que sí son extremadamente necesarias las referencias o claves foráneas en las tablas de una BBDD, ya que, en el mundo informático actual, es muy común que a una misma base de datos accedan varias aplicaciones al mismo tiempo, por lo que no me parece adecuado dejar la integridad referencial en manos de la aplicación(es).
    El motor InnoDB me parece el ideal para cualquier desarrollo mediano o grande, aunque si sólo vamos a montar un CMS (Joomla, drupal, wordpress, etc) o algo por el estilo, en donde estemos segurísimos de que sólo esa aplicación accede (y de manera adecuada) a esas tablas, podríamos considerar usar MyISAM de resto recomiendo InnoDB, aunque es sólo la opinión de un común mortal ya que no soy experto en la materia.
    Por otro lado, lo que comentas de las GUIs para MySQL, estoy totalmente de acuerdo, aunque sólo he usado phpMyAdmin, MySQL Control Center y MySQL GUI Tools, Si alguien conoce algo más avanzado le agradeceríamos la información al respecto.

    Saludos.

    ResponderBorrar
  5. Mi experiencia con PostgreSQL en verdad fue limitada, a direrencia de MySQL observe que era un poco (casi in-notablemente) mas rapido para las operaciones CRUD, pero a la hora de leer los registros de la bd me parecio mas rapido mySQL, admito, fueron pruebas caseras y nada certificado, a la final, los invito a que utilicen utilicen como Table Engine a 'MyISAM' ya que es mucho mas rapido que 'InnoDB' (Segun mis pruebas 50% aprox mas rapido) solo porque este motor no soporta referencias, pero al fin y al cabo, quien necesita referencias?.

    Con respecto a los disparadores y procedimientos almacenados en verdad nunca me han dado problemas despues de que estan generados, recuerden tambien que los disparadores son relativamentes nuevos en MySQL y probablemente necesite algo mas de evolucion pero si tengo que reconocer que la IDE que los GUI tools presentan es totalmente incomoda, seca, e imperfecta a la hora de trabajar de crear Triggers y SPs, por lo menos yo no lo considero algo profesional, pero hasta ahora no he conseguido un IDE que se adapte a mis necesidades, alguna sugerencia?

    Saludos.

    ResponderBorrar
  6. Con respecto al motor de almacenamiento que comentas "MyISAM", pienso que cada motor tiene su propósito particular como le comentaba antes, y pienso que sí son extremadamente necesarias las referencias o claves foráneas en las tablas de una BBDD, ya que, en el mundo informático actual, es muy común que a una misma base de datos accedan varias aplicaciones al mismo tiempo, por lo que no me parece adecuado dejar la integridad referencial en manos de la aplicación(es).
    El motor InnoDB me parece el ideal para cualquier desarrollo mediano o grande, aunque si sólo vamos a montar un CMS (Joomla, drupal, wordpress, etc) o algo por el estilo, en donde estemos segurísimos de que sólo esa aplicación accede (y de manera adecuada) a esas tablas, podríamos considerar usar MyISAM de resto recomiendo InnoDB, aunque es sólo la opinión de un común mortal ya que no soy experto en la materia.
    Por otro lado, lo que comentas de las GUIs para MySQL, estoy totalmente de acuerdo, aunque sólo he usado phpMyAdmin, MySQL Control Center y MySQL GUI Tools, Si alguien conoce algo más avanzado le agradeceríamos la información al respecto.

    Saludos.

    ResponderBorrar