jueves, 1 de marzo de 2012

PostgreSQL vs. Oracle

PostgreSQL vs. Oracle(TM) - Bases de Datos Cerradas vs. Bases de Datos de Software Libre
Le titulé de esa forma, por una cuestión de prensa :), aunque puede parecer una comparación de potencias, intentaré presentar los argumentos necesarios como para que vos puedas tomar la decisión por tu cuenta. Mencionaré también algunas experiencias con Firebird, que es una excelente base de datos, de software libre. Cuándo me refiero a Software Libre, me refiero a un programa distribuído bajo una licencia aprobada por la Free Software Foundation. http://www.gnu.org/licenses/license-list.html#SoftwareLicenses
Tampoco voy a hablar de performance, porque existen múltiples formas de lidar con problemas de performance, y en mi experiencia la mayoría de las veces, el problema principal no es el motor o el server de la base de datos, sino el diseño y la programación del sistema que utiliza el servicio. Pero no voy a entrar en muchos detalles sobre eso.
Oracle es probablemente la mejor base de datos del mundo (por ahora), no estoy contando nada nuevo con eso. Pero la pregunta que debes hacerte es ¿Realmente necesito Oracle? o mejor aún ¿Para el uso que voy a darle a la base de datos, mi presupuesto justifica que yo gaste en las funcionalidades extraordinarias del Oracle (que por cierto tiene también un precio extraordinariamente alto)?
La respuesta corta y rápida, que me animo a decir es que en la gran mayoría de los casos, no existe una justificación para pagar decenas de miles de dólares de licencia, cuándo hay alternativas gratuitas de excelente calidad y muy confiables.  
Citando a Bruce Perens, un ícono del movimiento Open Source:
"Un orador que emplea el término "comercial" como antónimo de software libre es probablemente alguien que no entiende lo suficiente aún de cómo funciona el software libre. Y alguien que no entiende los fundamentos de cómo se rige el software, estará constantemente confundido acerca de lo que controla tantos dispositivos en el planeta. Tenga cuidado con esas personas que tienen una falta entendimiento básico; es muy poco probable que le den un buen consejo de cómo elegir un software o para tomar buenas decisiones a cuestiones relacionadas con software. " http://www.dwheeler.com/essays/commercial-floss.html
Existen múltiples ejemplos de software libre con éxito comercial.
Cuándo tu única herramienta es un martillo, todos los problemas parecen clavos. Si vas a tomar una decisión empresarial importante, debes estar bien informado, y no escuchar sólo al dueño del martillo.
El hecho de que PostgreSQL o Firebird sean software libre, no significa que sean exclusivamente gratis, o porque se puede conseguir gratis, sean un producto con poca seriedad. Hecha la aclaración, y para no desviar demasiado el tema hacia Software Libre vs. Software Cerrado/Privativo. Sigo con el discurso sobre las bases de datos.
Siguiendo parte del análisis que propone Perens en http://www.dwheeler.com/oss_fs_eval.html
Aquí hay una buenísima comparación de funcionalidades entre Oracle y PostgreSQL: http://www.scriptol.com/software/oracle.php
 
1) Identifica los candidatos
Oracle, DB2
PostgreSQL, Firebird


2) Lee reviews existentes de los productos, de sitios, proyectos o empresas que tengan un negocio parecido al tuyo o al de tu cliente.

3) Brevemente compara las características principales que necesitás de la Base de Datos.
3.1) Funcionalidades
Si eres una empresa que pagará por una solución, pide a tu consultor informático que te detalle específicamente que funcionalidades espera del motor de base de datos. Si lo utilizará sólo de repositorio, para almacenar y recuperar datos, y no precisa de lujosas o complicadas funcionalidades, es probable que puedas ahorrarte dinero en licencias del motor, y puedas invertirlo en otras cosas que mejoren la calidad de los servicios de los que depende tu negocio o el de tu cliente. Por ej. un Data center alternativo, o un backup remoto, o profesionales reconocidos y con experiencia, por citar algunas.
En el caso de los productos cerrados, como Oracle, asegurate bien del costo que tendrá la licencia que debes adquirir, y cuánto te costará ampliar cuándo tu negocio crezca y tengas que ampliar la capacidad. No te dejes engañar por las versiones "Express" o "Embedded" o cualquiera que te cueste poco o nada inicialmente, porque vienen con muchas restricciones de tamaño de la base de datos, cantidad de procesadores que puede utilizar y por lo general tiene un montón de funcionalidades recortadas, que nadie te cuenta al inicio.Y si te salen con el cuento de que "no vas a necesitar más que eso" te está queriendo vender un caballo de troya. Hoy en día es moneda corriente los procesadores de múltiples cores, tener un motor de base de datos que no los aproveche es como tener una aire acondicionado de múltiples compresores y sólo usarlo en modo ventilador.


3.2) Costo
Los productos cerrados comerciales (Oracle, DB2(TM), etc. ) utilizan una conocida técnica de las grandes empresas, de hacer tan complicado su esquema de licencias como para que uno no pueda fácilmente determinar el costo real que necesita para su solución.
Asegurate de conocer el precio para la solución completa, incluso antes de aceptar el "regalo" de una versión demo o lite o express, para que "ya puedas iniciar tu desarrollo". El precio de Oracle, es lineal a la cantidad de procesadores.  http://www.oracle.com/us/corporate/pricing/price-lists/index.html
En el caso de las bases de datos de Software Libre (PostgreSQL, Firebird, etc.), siempre tendrás una opción de descargarlas y utilizarlas sin costo. Y también tendrás las opciones de  contratar soporte comercial para algunos de los motores. 

3.3) Market share
Oracle tiene un mercado muy grande, pero como leí en una discusión https://developers.slashdot.org/story/06/04/06/1828206/Oracle-and-PostgreSQL-Debate
"90% de la gente que lo usa, no lo necesita. 100% de ese 90% están o le han convencido de que sí lo necesitaban"
PostgreSQL, es probablemente la base de datos más completa, de las que tienen licencia de Software Libre, y por ello, su mercado está creciendo cada día. Más aún luego de que Oracle se hizo dueño de MySQL, la otra que tenía también un mercado muy grande, pero que cada vez más apunta a convertir su modelo de licenciamiento, hoy en día ya hay versiones community, developer, enterprise, etc..
Firebird tiene también una comunidad muy importante de usarios en el país, conozco dos consultoras nacionales exitosas, que lo utilizan desde hace al menos 8 años, con múltiples clientes en el sector privado, y hablan maravillas sobre todo de su lenguaje para elaborar procedimientos almacenados. Además en el Brasil está una de las comunidades más grandes de usuarios, y el motor tiene un activo desarrollo y hay disponible mucha documentación y libros al respecto.
3.4) Soporte. Posiblemente el punto más delicado a evaluar.
  • Soporte puede referirse a personas en el ámbito local con conocimientos.
  • Cantidad de documentación en línea o en libros.
  • Cantidad de tutoriales de puesta en marcha rápida.
  • Cantidad de sistemas operativos en los que puedo ejecutar, etc.
  • Empresas que puedan vender soporte profesional. Ojo con este punto, he tenido muy malas experiencias con ciertas marcas de productos, porque a pesar de tener representación local, no tienen técnicos bien preparados disponibles, y te terminan derivando por teléfono a alguien fuera del país, o te dan acceso al sistema de tickets de la empresa. En el 90% de los casos, terminábamos resolviendo el problema antes de que el ticket fuera resuelto, gracias a investigaciones y consultas en foros o listas de correo en internet. Evalúa bien si lo que necesitas es alguien que te resuelva problemas o alguien a quién hechar la culpa si algo pasa. Si es lo segundo, lee detenidamente la licencia, porque casi ninguna empresa se hace responsable por pérdida de datos en casos excepcionales. El representante vendedor, rara vez es también quién te vende la solución, o sea el desarrollo. Si vas a dejarte convencer por el vendedor, de que si querés calidad, tenés que pagar por eso, y especialmente si  viste  a programadores de un sistema, con menos de 25 años haciendo todo el trabajo pesado y al personal de experiencia aparecer sólo cuándo las papas queman y hay problemas graves que arreglar, sabrás de lo que te estoy hablando. Si vas a pagar mucho dinero por una Base de Datos, asegurate de que tu proveedor también pague mucho dinero por su equipo de desarrollo, de lo contrario es como tirarle perlas a los chanchos. Pide gente con título universitario de ser posible de una universidad reconocida por su calidad, y EXIGE gente certificada en la herramienta, por algo te están haciendo comprar algo caro y de calidad muy superior (según el vendedor), y asegurate de que trabajen en el proyecto, es muy común poner nombres en la planilla y luego nunca verles la cara en los momentos de desarrollo. Si comprarás un auto de lujo, ¿dejarías que gente no autorizada por el fabricante, trabaje por tu vehículo? 
No estoy diciendo de que sea la única forma de trabajar, he visto muchos proyectos exitosos con Software Libre y jóvenes trabajando en ellos, pero si vas a entrar en la temática de que "sólo si es caro, es de buena calidad", al menos exige a tu consultora o proveedor que sea coherente, y tenga personal certificado en las herramientas y productos por el que te está haciendo pagar licencias.

PostgreSQL tiene sponsors de la talla de Red Hat, HP, Skype, Fujitsu, por citar algunas de las empresas más conocidas. Más información en http://www.postgresql.org/about/sponsors/

PostgreSQL es un proyecto que tuvo un progreso asombroso desde la versión 8.x en adelante. Basta mirar con las funcionalidades nuevas que fueron incorporando, para comprobarlo:
http://www.postgresql.org/about/featurematrix/

Algunos usuarios de PostgreSQL (http://en.wikipedia.org/wiki/PostGres#Prominent_users)

Aquí hay una presentación hecha en  el Free Software Asunción 2011: "El Elefante de las Grandes Ligas" , realizada por Pablo Santa Cruz, una de las personas que más sabe de PostgreSQL en el Paraguay, hay un apartado dónde habla de los casos de éxito en nuestro país. http://blog.roshka.com/2011/09/postgresql-el-elefante-de-las-grandes.html

Firebird puede manejar bases de datos de Terabytes de tamaño http://www.ib-aid.com/articles/item104

Firebird on large big iron servers : 512G-2TB of ram 100.000 concurrent users http://www.firebirdnews.org/?p=6797  

"Bases de datos de juguete", "escarabajo vs. mercedes", yo que vos consideraría seriamente cambiar de consultor informático, si te sale con argumentos tan poco profesionales como esos o por lo menos enviarle a su cucha a investigar un poco más de la realidad actual de las alternativas de Software Libre.

Oracle es una marca registrada de de Oracle Corporation.

DB2 es una marca registrada de International Business Machines Corp.

No hay comentarios: