Minha experiência com Postgres e Mongo após trabalhar com os dois bancos de dados em meus projetos.
Postgres (RDBMS)
O Postgres é recomendado se seus aplicativos futuros tiverem um esquema complicado que precise de muitas junções ou todos os dados tiverem relações ou se houver muita escrita. Postgres é open source, mais rápido, compatível com ACID e usa menos memória em disco, e também tem bom desempenho para armazenamento JSON e inclui serializabilidade completa de transações com 3 níveis de isolamento de transação.
A maior vantagem de ficar com o Postgres é que temos o melhor dos dois mundos. Podemos armazenar dados em JSONB com restrições, consistência e velocidade. Por outro lado, podemos usar todos os recursos SQL para outros tipos de dados. O mecanismo subjacente é muito estável e lida bem com uma boa variedade de volumes de dados. Ele também funciona com sua escolha de hardware e sistema operacional. Postgres fornecendo recursos NoSQL junto com suporte total a transações, armazenando documentos JSON com restrições nos dados dos campos.
Restrições gerais para Postgres
Escalonar Postgres horizontalmente é significativamente mais difícil, mas factível.
As operações de leitura rápida não podem ser totalmente realizadas com o Postgres.
SEM bases de dados SQL
Mongo DB (tigre com fio)
O MongoDB pode vencer o Postgres em dimensão de “escala horizontal”. Armazenar JSON é o que o Mongo é otimizado para fazer. O Mongo armazena seus dados em um formato binário chamado BSONb que é (aproximadamente) apenas uma representação binária de um superconjunto de JSON. O MongoDB armazena objetos exatamente como foram projetados. De acordo com o MongoDB, para aplicativos de gravação intensiva, Mongo diz que o novo mecanismo (Wired Tiger) oferece aos usuários um aumento de até 10 vezes no desempenho de gravação (eu deveria tentar isso), com 80 por cento de redução na utilização do armazenamento, ajudando a reduzir os custos de armazenamento , obter uma maior utilização de hardware.
Restrições gerais do MongoDb
O uso de um mecanismo de armazenamento sem esquema leva ao problema de esquemas implícitos. Esses esquemas não são definidos por nosso mecanismo de armazenamento, mas sim com base no comportamento e nas expectativas do aplicativo.
As tecnologias NoSQL autônomas não atendem aos padrões ACID porque sacrificam proteções de dados críticos em favor do desempenho de alto rendimento para aplicativos não estruturados. Não é difícil aplicar ACID em bancos de dados NoSQL, mas tornaria o banco de dados lento e inflexível até certo ponto. “A maioria das limitações NoSQL foram otimizadas nas versões e lançamentos mais recentes que superaram suas limitações anteriores em grande medida”.