Utilisez simplement Postgres partout
(amazingcto.com)- Postgres peut remplacer de nombreuses technologies backend (jusqu’à des millions d’utilisateurs)
→ Kafka, RabbitMQ, Mongo, Redis, .. - Pour le cache, utiliser du
TEXTau format JSON dans des tablesUNLOGGEDau lieu de Redis- Définir une durée d’expiration pour les données avec des procédures stockées
- File de messages (Kafka) :
SKIP LOCKED - Pour l’entrepôt de données, utiliser Postgres + TimescaleDB
- Au lieu de Mongo, stocker du
JSONBet utiliser la recherche ainsi que l’indexation - Utiliser
pg_croncomme démon CRON pour l’envoi d’e-mails, par exemple - Utiliser pour les requêtes géospatiales
- Utiliser pour la recherche full-text à la place d’Elastic
- Générer du JSON dans la base de données pour le transmettre directement à l’API sans code côté serveur
- Support de GraphQL également via un adaptateur GraphQL
13 commentaires
Hum… il semble que l’idée de base soit que Postgres suffit, à moins d’avoir besoin de davantage de fonctionnalités prises en charge par chaque application.
Après tout, chaque application peut utiliser plus de fonctionnalités que le flux remplacé ci-dessus.
Je pense que ce n’est pas si absurde, à condition de bien définir l’interface. Cela dit, je trouve qu’on peut tout à fait laisser Redis gérer au moins le cache et la file de messages.
Moi aussi, j’ai récemment eu une réflexion similaire à celle de l’article ci-dessus. Bien sûr, pour des services à grande échelle, il vaut mieux répartir au maximum pour distribuer les risques, mais lors de petites missions en sous-traitance, le fait d’utiliser le type
jsonbde Postgres sans recourir à un NoSQL séparé s’est souvent révélé bien plus polyvalent. On obtenait une expérience proche d’un usage combiné de RDB + NoSQL, avec des performances largement suffisantes dans de petits projets.À force de tout faire avec un seul outil, tous les points de risque se retrouvent au même endroit... !
À l’époque où il n’existait pas vraiment de produits de remplacement, certaines de ces tâches étaient effectivement réalisées avec un SGBDR, mais pour Redis, Kafka ou Cron, on dirait que cela ne remplace pas leurs principaux avantages. Cela ressemble surtout à une idée amusante à parcourir pour le plaisir.
Ça devrait parfaitement convenir à ceux qui aiment tout faire avec un seul outil.
J’utilisais Postgres pour le géospatial.
C’était environ 10 à 100 fois plus rapide que les autres bases de données. Sur le volet géo, c’était vraiment écrasant.
En revanche, comme tout le monde le sait, quand le volume de données augmente et que le vacuum tourne mal, c’est l’enfer...
Oh, il y a pas mal d’astuces.
Cela dit, pour la première combinaison entre
UNLOGGEDet les procédures stockées, j’ai l’impression qu’utiliser Redis serait bien plus propre, haha.C’était il y a quelques années, mais j’avais déjà travaillé en utilisant
JSONB, puis quand la charge devenait trop importante, en choisissant ce qui correspondait au modèle clé-valeur pour le déporter vers Redis, et ça avait été une expérience très agréable.C’est une opinion intéressante.
Le titre est accrocheur, mais le sujet mérite quand même réflexion, donc je l’ai repris tel quel.
Après tout, introduire trop de composants dès le MVP initial peut aussi être un problème.
Cela semble être un bon concept.
Merci.