1
resposta

MongoDB ou SQL ?

Pelo que vimos ao longo desse curso, parece que dá pra montar um banco com MongoDB de uma forma bem parecida com o que seria um banco SQL, no sentido de coleções terem chaves que fazem referências a elementos de outras coleções.

A dúvida é: como eu sei que em um certo caso devo usar SQL ao invés do MongoDB ? Em que cada um é melhor, já que parece que o MongoDB pode fazer tudo que um SQL faz (e mais) ?

1 resposta

Olá!

No curso mostramos a possibilidade de associar dados entre uma coleção e outra, de forma similar ao que é feito nos bancos relacionais, para exemplificar que você tem a possibilidade de modelar as suas Collections (coleções) como desejar. Originalmente, a forma mais comum de uso é já incluir todas as informações dentro de um documento, conforme o exemplo abaixo:

{
    "titulo": "Primeiros passos com Node.js",
    "editora": {
      "nome": "Casa do Código",
      "email": "contato@casadocodigo.com.br",
      "twitter": "www.twitter.com/casadocodigo"
    },
    "autor": {
      "nome":"Joao Rubens",
      "nacionalidade":"brasileiro",
      "site": "www.youtube.com/professorbinho",
    },
    "numeroPaginas": 195
}

No MongoDB não existe um esquema fixo, então pode existir documentos com estruturas diferentes, uns com mais e outros com menos campos, conforme a necessidade. Além disso, não há uma definição rígida de que um campo deve ser de um tipo específico, promovendo uma flexibilidade que não existe nos bancos relacionais.

Isso é um dos fatores que são levados em consideração na escolha por um banco NoSQL, quando você ainda não tem certeza dos tipos de dados que receberá, ou se haverá muitas alterações. Essa incerteza do modelo de dados, que pode se tornar uma dor de cabeça nos bancos relacionais, é mais facilmente administrada nos bancos NoSQL. Outro fator é a escalabilidade. O MongoDB já foi desenvolvido pensando na escalabilidade e disponibilidade, e por isso já contempla ferramentas para replicar e distribuir os seus dados, coisa que pode ser mais complexa ou custosa nos bancos relacionais.

Quando há necessidade de manter integridade referencial dos dados ou até juntar muitos dados de fontes diferentes (coleções ou tabelas) para exibir em relatórios, por exemplo, pode ser que utilizar bancos relacionais seja melhor, pela facilidade de fazer consultas SQL com joins.

É importante olhar o cenário geral da aplicação que você está construindo para identificar a melhor opção.

Caso tenha ficado alguma dúvida, não deixe de nos avisar por aqui.

Bons estudos! 😄

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!