Simplemente usa Postgres para todo
(amazingcto.com)- Postgres puede reemplazar muchas tecnologías de backend (hasta para millones de usuarios)
→ Kafka, RabbitMQ, Mongo, Redis,.. - Para caché, usar
TEXTen formato JSON en tablasUNLOGGEDen lugar de Redis- Establecer un período de expiración para los datos con procedimientos almacenados
- Cola de mensajes (Kafka):
SKIP LOCKED - Para data warehouse, Postgres + TimescaleDB
- En lugar de Mongo, guardar
JSONBy hacer búsquedas e indexación - Usarlo como demonio CRON para tareas como envío de correos con
pg_cron - Usarlo para consultas geoespaciales
- Usarlo para búsqueda de texto completo en lugar de Elastic
- Generar JSON dentro de la DB y entregarlo directamente a la API sin código del lado del servidor
- También soporta GraphQL con un adaptador GraphQL
13 comentarios
Mmm... parece que la idea básica es que, si no necesitas más funciones de las que admite cada app, el concepto básico basta con Postgres.
Después de todo, cada app puede usar más funciones que el flujo que están reemplazando arriba.
No me parece una idea tan descabellada si se define bien la interfaz y se usa correctamente. Aun así, creo que está bien dejar cosas como la caché o la cola de mensajes a cargo de Redis.
Yo también he estado pensando algo parecido últimamente, igual que en el texto de arriba. Claro, para servicios a gran escala conviene distribuir lo más posible para repartir el riesgo, pero cuando hago trabajos externos pequeños, usar el tipo
jsonbde Postgres sin meter un NoSQL aparte me ha resultado mucho más útil. La experiencia de uso se siente como combinar RDB + NoSQL y, dentro de proyectos pequeños, el rendimiento ha sido más que suficiente.¡Al querer hacer todo con una sola cosa, todos los puntos de riesgo quedan concentrados en un solo lugar..!
Algunas de estas son cosas que en realidad se hacían con una base de datos relacional cuando no había productos alternativos, pero no parece que cosas como Redis, Kafka o Cron puedan reemplazar sus ventajas principales. Da la impresión de ser una idea para ver por diversión y seguir de largo.
Parece ideal para quienes disfrutan usar una sola cosa para todo.
Yo usaba Postgres por temas geoespaciales.
Comparado con otras bases de datos, era entre 10 y 100 veces más rápido... en la parte geo era abrumadoramente superior.
Pero, como todos saben, cuando los datos aumentan mucho y
vacuumcorre mal, se vive un infierno..Oh, hay varios trucos.
Pero en el primer caso, la combinación de
UNLOGGEDy procedimientos almacenados hace pensar que, más bien, usar Redis sería mucho más limpio jajaFue hace algunos años, pero una vez trabajé usando JSONB y, cuando la carga se volvió alta, elegí algo que encajara con el patrón KV y lo saqué a Redis; fue una experiencia bastante cómoda.
Es una opinión interesante.
Es un título provocador, pero es un tema que vale la pena considerar, así que lo comparto tal cual.
Al desarrollar un MVP inicial, también puede ser un problema introducir demasiados componentes.
Parece un buen concepto.
Gracias.