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