La mia esperienza con Postgres e Mongo dopo aver lavorato con entrambi i database nei miei progetti.
Postgres (RDBMS)
Postgres è consigliato se le tue applicazioni future hanno uno schema complicato che richiede molti join o tutti i dati hanno relazioni o se abbiamo una scrittura pesante. Postgres è open source, più veloce, conforme ad ACID e utilizza meno memoria su disco, offre ottime prestazioni anche per l'archiviazione JSON e include la completa serializzabilità delle transazioni con 3 livelli di isolamento delle transazioni.
Il più grande vantaggio di restare con Postgres è che abbiamo il meglio di entrambi i mondi. Possiamo memorizzare i dati in JSONB con vincoli, coerenza e velocità. D'altra parte, possiamo usare tutte le funzionalità SQL per altri tipi di dati. Il motore sottostante è molto stabile e gestisce bene una buona gamma di volumi di dati. Funziona anche su hardware e sistema operativo a tua scelta. Postgres fornisce funzionalità NoSQL insieme al supporto completo delle transazioni, archiviando documenti JSON con vincoli sui dati dei campi.
Vincoli generali per Postgres
Scalare Postgres orizzontalmente è significativamente più difficile, ma fattibile.
Le operazioni di lettura rapida non possono essere eseguite completamente con Postgres.
NESSUN database SQL
Mongo DB (Wired Tiger)
MongoDB può battere Postgres in una dimensione di "scala orizzontale". L'archiviazione di JSON è ciò per cui Mongo è ottimizzato. Mongo memorizza i suoi dati in un formato binario chiamato BSONb che è (approssimativamente) solo una rappresentazione binaria di un superset di JSON. MongoDB memorizza gli oggetti esattamente come sono stati progettati. Secondo MongoDB, per le applicazioni ad alta intensità di scrittura, Mongo afferma che il nuovo motore (Wired Tiger) offre agli utenti un aumento fino a 10 volte delle prestazioni di scrittura (dovrei provare questo), con una riduzione dell'80% dell'utilizzo dello storage, contribuendo a ridurre i costi di archiviazione , ottenere un maggiore utilizzo dell'hardware.
Vincoli generali di MongoDb
L'utilizzo di un motore di archiviazione senza schema porta al problema degli schemi impliciti. Questi schemi non sono definiti dal nostro motore di archiviazione, ma sono invece definiti in base al comportamento e alle aspettative dell'applicazione.
Le tecnologie NoSQL autonome non soddisfano gli standard ACID perché sacrificano la protezione dei dati critici a favore di prestazioni ad alto throughput per applicazioni non strutturate. Non è difficile applicare ACID su database NoSQL, ma renderebbe il database lento e inflessibile fino a un certo punto. "La maggior parte delle limitazioni di NoSQL sono state ottimizzate nelle versioni e nei rilasci più recenti che hanno superato in larga misura i limiti precedenti".