Cuando PostgreSQL es una alternativa

Dos años atrás me encontré escribiendo este post en LinkedIn:

Hace un tiempo me encontré en una reunión donde se discutían problemas de performance en una base Oracle en dónde, entre otras cosas, se utilizaba para un datawarehouse. Se estaba considerando la idea de comprar otra licencia para migrar esta aplicación pero eran muy altos los costos para algo que solamente se iba a utilizar para centralizar información y armar diferentes tipos de reportes. Algunos de los motivos de la elección eran porque el equipo ya conocía la herramienta y además se sincronizaba perfectamente con el resto de los servidores Oracle de la empresa.

Ahí se me ocurrió, “¿Por qué no PostgreSQL?”

Al principio hubo cierto rechazo debido a que se desconocía la herramienta, pero la ventaja de que no había necesidad de pagar licencias era más fuerte. Ya había bases de datos en Postgres por lo que eso facilitó bastante a la hora de decidir.

Se instaló un servidor CentOS 7 con PostgreSQL 11 y se configuraron los dblink a Oracle mediante un complemento llamado Oracle_FDW. Utilizando vistas materializadas para hacer la obtención de ciertos datos de manera mucho más eficiente desde la base principal mas un tunning bastante básico quedo un servidor muy performante.

Como era esperable, dado que la aplicación ahora estaba aislada, los tiempos de ejecución de los reportes mejoraron sustancialmente frente a la base anterior y aún con menos recursos. La base Oracle mejoró su performance dado que ya no tenía reportes corriendo todo el día. Además la curva de aprendizaje del equipo no fue tanto como se esperaba, por lo que se ganó por todos lados.

De mantenimiento PostgreSQL es bastante autónomo. Él por su cuenta corre un proceso llamado autovacuum que se encarga de actualizar las estadísticas, entre otras cosas.

La idea de esto no es comparar Oracle con PostgreSQL ni nada menos. Sino más bien es un ejemplo práctico de cómo ahorrar mucho dinero en licencias de software y horas DBA utilizando alternativas open source. Claro está que cada caso debe ser estudiado, pero aquí PostgreSQL está mas que holgado para soportar tablas de gigas de información sin ningún tipo de problema, con un resultado favorable en lo que a performance refiere.

Hoy en día, junio de 2021, nos encontramos planificando una migración de todo el cluster de base de datos del datawarehouse hacia una única instalación con PostgresSQL 13. En este tiempo nos encontramos con ciertas dificultades en las vistas materializadas (actualizadas desde el dblink), donde los volúmenes más grandes de información tuvimos que cargarlos vía archivo de texto. En cuestión de minutos importamos cerca de 7 millones de registros en la base sin problemas.

La herramienta demostró ser sólida y, con la configuración adecuada, capaz de soportar cargas de grandes volúmenes de datos sin ningún tipo de problemas. Sin dudas es una herramienta súper recomendable para diferentes cargas de datos sin incursionar en altos costos de licencias y contratos de mantenimiento.