Saltar al contenido

Bases de datos · 11 min

Dos motores con filosofías opuestas. Qué implica de verdad la elección, con los números de nuestra comparativa delante.

PostgreSQL y MongoDB son dos de los motores más usados de la industria y parten de filosofías opuestas. Elegir entre uno y otro no es decidir cuál es mejor, sino cuál encaja con el problema que tienes delante. Y esa pregunta, con suerte, tiene respuesta medible.

PostgreSQL: relacional y estricto

Los datos se organizan en tablas con esquemas definidos, y las relaciones se gestionan con claves foráneas. Su punto fuerte es la consistencia: garantiza transacciones ACID, lo que lo hace la opción natural cuando un dato incorrecto tiene consecuencias reales —facturación, contabilidad, cualquier cosa que acabe en un cierre.

MongoDB: documental y flexible

Los datos se guardan como documentos, sin esquema fijo. Eso permite iterar rápido cuando el modelo cambia a menudo y resulta natural para estructuras jerárquicas o heterogéneas: catálogos de producto, perfiles, contenido que no siempre tiene los mismos campos.

Del principio a la medida

Montamos los dos motores en contenedores sobre la misma máquina, con los mismos límites de CPU y de caché, y lanzamos 160 escenarios con YCSB: cuatro perfiles de carga, cinco volúmenes de mil a diez millones de registros y cuatro niveles de concurrencia. Tres réplicas de cada uno.

480

Ejecuciones · ≈ 67 horas de cómputo

La dispersión entre réplicas se quedó por debajo del 3,5 %. Ese número es el que hace que los demás signifiquen algo: sin él, cualquier diferencia podría ser ruido de la propia medición.

Qué dicen los números

  • Si tu carga es sobre todo lectura, PostgreSQL gana a cualquier escala. En el mejor escenario, más del doble de rendimiento.
  • Por debajo de 100.000 registros, PostgreSQL rinde más en todos los perfiles, incluso escribiendo.
  • Por encima del millón de registros con escritura concurrente, la ventaja se da la vuelta: MongoDB sostiene cuatro veces más operaciones y una latencia de cola mucho más estable.
  • MongoDB consume unas 2,7 veces menos memoria y la mitad de disco a partir de 100.000 registros.

El motivo del cuello de botella de PostgreSQL escribiendo en paralelo no es la potencia de la máquina: es la contención de bloqueos de su control de concurrencia sobre registros JSONB. MongoDB bloquea a nivel de documento, y ahí saca la diferencia.

Entonces, ¿cuál eliges?

Alrededor de los 100.000 registros con carga mixta hay un empate técnico, y ahí el rendimiento deja de ser un criterio útil. Cuando dos opciones rinden igual, decide por lo que sí cambia con el tiempo: el ecosistema, los requisitos de consistencia y lo que tu equipo pueda mantener dentro de dos años.

Conviene además tener presente que la frontera se estrecha cada año. PostgreSQL incorporó JSONB y MongoDB añadió transacciones multidocumento: el paradigma, por sí solo, ya no basta para decidir.

Siguiente paso

¿Esto te suena a tu caso?

Escríbenos y lo miramos con tus números delante, que es cuando esto sirve de algo.

Respondemos en 24 h laborables