33

Mi historia de amor con PostgreSQL

6561Puntos

hace 4 años

En la universidad trabajamos en varios proyectos en el que se debía entregar una aplicación web que usara bases de datos, ya sea porque era la entrega final de alguna clase o de un grupo de investigación de los que hacíamos parte.

Al momento de elegir la tecnología que íbamos a usar teníamos opciones comunes para el servidor de aplicaciones, estaban Java, Python y PHP principalmente, sin embargo, parecía que no había que pensar en qué base de datos trabajar, MySQL era la respuesta casi por inercia.

Siempre nos inquietó el por qué era esa la base de datos elegida y nadie parecía preguntarse si habiendo otras opciones, no eran tenidas en cuenta, la mayoría de veces la respuesta era “ese otro motor de base de datos es de pago”, pero al preguntar PostgreSQL la respuesta era “bueno pues es que ya conocemos MySQL…”

Fue entonces cuando de proyecto de grado propusimos el desarrollo de una aplicación web para ayudar a los estudiantes a contactar otros estudiantes de la misma universidad para solicitar asesorías en tareas o proyectos, permitiendo filtrar por estudiantes que ya vieron esas clases y creando una especie de red social cooperativa.

El proyecto de grado fue admitido y una vez más debíamos elegir la tecnología. Para el backend teníamos varias opciones, veníamos trabajando en Java toda la universidad y, por aprender algo diferente elegimos en ese entonces, por allá en el 2011, PHP.

Para la base de datos, siguiendo la misma corriente, querer aprender una tecnología nueva, elegimos PostgreSQL, en un principio parecía un acto de rebeldía, pero empezamos a leer sobre esta tecnología entusiasmados porque íbamos a aprender algo nuevo y, entre más y más leíamos sobre éste motor de base de datos, más nos interesaba empezar nuestro proyecto y empezar a implementar todas sus emocionantes funcionalidades. Entre las funciones más llamativas estaban los procedimientos almacenados y las extensiones; quedamos asombrados con la cantidad de herramientas que la versión 9 tenía incorporadas.

El primer indicio de que estábamos entrando en tierras desconocidas fue descubrir que no había un paquete de instalación como un WAMP o LAMP, se debía hacer a mano (después apareció algo llamado WAPP o algo así). El proceso no fue complicado, a pesar que no existía un paquete de instalación prefabricado, la documentación era enorme, otro hallazgo.

Empezamos a encontrarnos con pequeños detalles que empezaban a distanciar mucho a PostgreSQL de otros motores de base de datos:

  1. Funciones cómo fuzzymatch, que nos permitió buscar nombres de estudiantes por proximidad entre sus letras, mostrar un “tal vez quiso decir”.

  2. ¡Poder incorporar bloques de código cómo SWITCH o IF en medio de una consulta!.

  3. Procedimientos almacenados que nos permitían cambiar parte de la lógica de la aplicación sin tener que desplegar cambios de código en el servidor de aplicaciones.

  4. Ahorrar consultas simplemente usando sentencias cómo RETURNING y ON CONFLICT DO.

Era simplemente un ahorro de tiempo de desarrollo constante, en el que nos logramos enfocar en la aplicación y no tanto en los problemas con bases de datos, nos hizo el desarrollo muy fácil y si bien el uso de éstas funcionalidades hacía nuestra aplicación dependiente del motor PostgreSQL no importó, simplemente podíamos pensar en entregar nuestro proyecto de grado a tiempo y eso es algo que pocos consiguen.

Descartamos la idea de hacer una implementación con la base de datos de manera que fuera fácil de migrar a otros motores, pensar que no podíamos usar columnas tipo SERIAL, Vistas y Vistas Materializadas, la sintaxis RETURNING, ON CONFLICT DO, INTERSECT, EXCEPT… pero más importante, pensar en no poder usar PLs o TRIGGERS nos hizo dejar claro que nuestra aplicación iba a sacar el máximo provecho posible de PostgreSQL y si alguien en un futuro quería hacer el cambio por otro motor, era libre de dar ese paso atrás, simplemente PostgreSQL estaba muy por delante de cualquier otro motor open source existente.

Terminamos el proyecto y lo entregamos, todo funcionó perfecto, para ese momento ya PostgreSQL había lanzado una nueva versión y con la herramienta de migración pudimos evaluar si teníamos alguna inconsistencia entre la versión que usamos versus la que queríamos instalar en los servidores de la universidad (sí, no AWS, ni AZURE ni Google Cloud), resulta que no tuvimos ningún problema de retrocompatibilidad, entregamos el proyecto y nos graduamos.

A partir de ése momento, del tener una experiencia de extremo a extremo con PostgreSQL, en el que tomamos una base de datos de cero, exploramos la lista de extensiones, usamos PLs, migramos de un servidor a otro, entre otras cosas quedó claro cuál motor de base de datos usar para el siguiente proyecto, sea lo que sea que fuere hacer, seguiríamos usando PostgreSQL.

Ese proyecto de grado fue desarrollado entre tres personas y yo era el encargado de la base de datos y su desarrollo, después del grado fui invitado a hacer parte de otro proyecto, uno sobre Ciudades Inteligentes y se necesitaba ayuda para el servidor de aplicaciones y base de datos, así que una vez más estaba en el ruedo, ésta vez era sólo yo el encargado del desarrollo de la aplicación web y la base de datos, elegí a PostgreSQL como motor de base de datos sin meditarlo.

Hoy en día ese proyecto de ciudades inteligentes creció, ahora es Marketing WiFi y tenemos tráfico de alrededor de 500 millones de peticiones al mes, de distintos tipos, todos atendidos por PostgreSQL, sin duda, una elección correcta.

Oswaldo
Oswaldo
Oz

6561Puntos

hace 4 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
3
5278Puntos

Emocinante tu historia con el SGBD PostgreSQL ♥. Sinceramente yo tambien estoy entrando a la implementacion de un proyecto base con postgresql y vi que hasta los mismo sistemas bancarios lo tienen como respaldo de uso

2

En la empresa donde trabajo usan PostgreSQL precisamente, y (aunque realmente fueron varias) esta fue una de las razones por las que conoci a Platzi

2
9619Puntos

Yo pensaba que PostgreSQL tenía básicamente las misma funcionalidades que MySQL pero eso de las busquedas aproximadas me parece muy cool.

0
153Puntos

The issues you share are very good and many people are interested in. it gave me lots of useful information. help me expand my knowledge.
among us 2