Mon expérience avec Postgres et Mongo après avoir travaillé avec les deux bases de données dans mes projets.
Postgres (SGBDR)
Postgres est recommandé si vos futures applications ont un schéma compliqué qui nécessite beaucoup de jointures ou si toutes les données ont des relations ou si nous avons une écriture lourde. Postgres est open source, plus rapide, conforme à ACID et utilise moins de mémoire sur le disque, et est tout à fait performant pour le stockage JSON également et comprend une sérialisation complète des transactions avec 3 niveaux d'isolation des transactions.
Le plus grand avantage de rester avec Postgres est que nous avons le meilleur des deux mondes. Nous pouvons stocker des données dans JSONB avec des contraintes, de la cohérence et de la vitesse. D'autre part, nous pouvons utiliser toutes les fonctionnalités SQL pour d'autres types de données. Le moteur sous-jacent est très stable et s'adapte bien à une bonne gamme de volumes de données. Il fonctionne également sur votre choix de matériel et de système d'exploitation. Postgres fournit des capacités NoSQL ainsi qu'une prise en charge complète des transactions, stockant des documents JSON avec des contraintes sur les données des champs.
Contraintes générales pour Postgres
La mise à l'échelle horizontale de Postgres est beaucoup plus difficile, mais faisable.
Les opérations de lecture rapide ne peuvent pas être entièrement réalisées avec Postgres.
PAS de bases de données SQL
Mongo DB (Tigre filaire)
MongoDB peut battre Postgres dans la dimension de «l'échelle horizontale». Le stockage JSON est ce pour quoi Mongo est optimisé. Mongo stocke ses données dans un format binaire appelé BSONb qui est (à peu près) juste une représentation binaire d'un sur-ensemble de JSON. MongoDB stocke les objets exactement comme ils ont été conçus. Selon MongoDB, pour les applications gourmandes en écriture, Mongo affirme que le nouveau moteur (Wired Tiger) offre aux utilisateurs une augmentation jusqu'à 10 fois des performances d'écriture (je devrais essayer ceci), avec une réduction de 80% de l'utilisation du stockage, ce qui contribue à réduire les coûts de stockage. , atteindre une plus grande utilisation du matériel.
Contraintes générales de MongoDb
L'utilisation d'un moteur de stockage sans schéma pose le problème des schémas implicites. Ces schémas ne sont pas définis par notre moteur de stockage, mais sont définis en fonction du comportement et des attentes de l'application.
Les technologies NoSQL autonomes ne répondent pas aux normes ACID car elles sacrifient les protections des données critiques au profit de performances à haut débit pour les applications non structurées. Il n'est pas difficile d'appliquer ACID sur les bases de données NoSQL, mais cela rendrait la base de données lente et rigide dans une certaine mesure. «La plupart des limitations de NoSQL ont été optimisées dans les nouvelles versions et versions qui ont largement surmonté ses limitations précédentes».