Usos Gerais
Se você possui estruturas de dados que não estão claramente definidas no momento em que você cria o sistema. Costumo manter as configurações do usuário no nosql, por exemplo. Outro exemplo foi um sistema em que os usuários precisavam adicionar campos em tempo de execução - muito doloroso em um RDBMS e muito fácil no NoSQL.
Se sua estrutura de modelo estiver amplamente centrada em torno de um ou poucos objetos de modelo e a maioria dos relacionamentos forem objetos filhos dos principais objetos de modelo. Nesse caso, você descobrirá que precisará muito pouco de junções reais. Eu descobri que o sistema de gerenciamento de contatos pode ser implementado bastante bem no nosql, por exemplo. Uma pessoa pode ter vários endereços, telefones e e-mails. Em vez de colocá-los em uma tabela separada, todos eles se tornam parte do mesmo modelo e você tem um objeto de pessoa.
Se você deseja se beneficiar do armazenamento de dados em cluster em vários servidores, em vez de ter um servidor monolítico, normalmente exigido pelo RDBMS.
Armazenamento em cache. Mesmo se você quiser usar um RDBMS como seu banco de dados principal, pode ser útil usar um banco de dados NoSQL para armazenar em cache os resultados da consulta ou manter os dados, como contadores.
Armazenando documentos. Se você deseja armazenar documentos coerentes, em um banco de dados, alguns dos bancos de dados NoSQL (como o MongoDB) são realmente especializados em armazená-los.
E as junções?
Honestamente, a coisa de não se juntar também me pareceu bastante assustadora no começo. Mas o truque é parar de pensar em SQL. Você precisa realmente pensar no objeto que tem na memória quando estiver executando seu aplicativo. Eles devem ser salvos mais ou menos apenas no banco de dados NoSQL, conforme a área.
Como você pode armazenar seu gráfico de objeto completo, com objetos filho, a maior parte da necessidade de junções é eliminada. E se você achar que precisa de um, precisará morder o marcador e buscar os dois objetos e ingressar no código do aplicativo.
Felizmente, a maioria dos drivers pode fazer a junção por você, se você configurar seu esquema corretamente.
Para uma leitura mais aprofundada, recomendo Martin Fowler .
Em alguns casos, você não precisará de chaves estrangeiras. Por exemplo:
pode ser tão simples quanto carregar a
comments
parte de um documento correspondente a um usuário. Isso é chamado de desnormalização : em vez de ter dois conjuntos com uma junção, você tem um documento e tudo o que precisa está dentro do documento. Uma consulta, nenhuma associação, melhor desempenho .Mas, em algumas circunstâncias, isso pode levar à duplicação de dados , portanto, a vinculação de um para outro documento pode ser adequada. Neste caso, você pode estar interessado por MongoDB normalização, chave estrangeira e juntando-se , banco de dados Referências página e, especialmente, recurso DBRefs.
fonte