MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Práticas recomendadas de NoSQL


Eu acho que atualmente, toda a ideia de armazenamento de dados NoSQL e o conceito de banco de dados de documentos é tão novo e diferente das ideias estabelecidas que impulsionam o armazenamento relacional que atualmente existem muito poucas (se houver) práticas recomendadas.

Sabemos neste ponto que as regras para armazenar seus dados no CouchDB (ou qualquer outro banco de dados de documentos) são bastante diferentes daquelas para um banco de dados relacional. Por exemplo, é praticamente um fato que a normalização e o direcionamento para a 3NF não são algo pelo qual se deva se esforçar. Um dos exemplos comuns seria o de um blog simples.

Em uma loja relacional, você teria uma tabela para "Posts", "Comentários" e "Autores". Cada Autor teria muitos Posts, e cada Post teria muitos Comentários. Este é um modelo que funciona bem o suficiente e mapeia bem em qualquer banco de dados relacional. No entanto, armazenar os mesmos dados em um docDB provavelmente seria bem diferente. Você provavelmente teria algo como uma coleção de documentos Post, cada um dos quais teria seu próprio Autor e coleção de Comentários embutidos. consultar um único post é rápido - você só faz uma operação e recebe tudo de volta), mas não tem como manter a relação entre autores e posts (já que tudo passa a fazer parte do post document).

Eu também vi exemplos usando um atributo "type" (em um exemplo do CouchDB). Claro, isso soa como uma abordagem viável. É o melhor? Eu não tenho idéia. Certamente no MongoDB você usaria coleções separadas dentro de um banco de dados, tornando o atributo type totalmente sem sentido. No entanto, no CouchDB... talvez isso seja melhor. As outras alternativas? Bancos de dados separados para cada tipo de documento? Isso parece um pouco maluco, então eu me inclinaria para a solução "tipo". Mas isso sou só eu. Talvez haja algo melhor.

Percebo que divaguei bastante aqui e disse muito pouco, provavelmente nada que você já não soubesse. Meu ponto é o seguinte:acho que cabe a nós experimentar as ferramentas que temos e os dados com os quais estamos trabalhando e, com o tempo, as boas ideias serão espalhadas e se tornarão as melhores práticas. Eu só acho que você está pedindo um pouco cedo demais no jogo.