‫Instrutor: Assim como nas seções
‫anteriores, antes de mergulharmos em uma nova
‫tecnologia, vamos realmente aprender do que se trata.
‫Portanto, neste caso, vamos aprender o que o MongoDB realmente é,
‫como ele funciona e uma rápida visão
‫geral de como ele se compara aos bancos de dados mais tradicionais.
‫E vamos começar com uma visão geral simples.
‫Portanto, o MongoDB é obviamente um banco de dados, e
‫é o chamado banco de dados NoSQL.
‫Algumas pessoas também dizem Não S Q
‫L, mas vou continuar dizendo "sem sequência", certo?
‫Agora, o outro tipo de banco de
‫dados, que é um pouco mais tradicional, é o banco de
‫dados relacional, ao qual o NoSQL é freqüentemente comparado.
‫De qualquer forma, no Mongo, que também podemos dizer em vez de
‫MongoDB, cada banco de dados pode conter uma ou mais coleções.
‫Portanto, se você realmente está vindo
‫de um desses sistemas de banco de dados relacionais
‫mais tradicionais, pode pensar em uma coleção como uma tabela de dados.
‫Então, cada coleção pode conter uma ou
‫mais estruturas de dados chamadas documentos e, novamente, em
‫um banco de dados relacional,
‫um documento seria uma linha em uma tabela.
‫Portanto, cada documento contém os dados
‫sobre uma única entidade, por exemplo, uma
‫postagem de blog ou um usuário ou uma revisão, ou qualquer
‫outra coisa, na verdade.
‫Você entendeu, certo?
‫Agora, a coleção é como a estrutura pai
‫que contém todas essas entidades.
‫Por exemplo, uma coleção de blog para todas as
‫postagens, uma coleção de usuários ou uma coleção de comentários.
‫E você também pode ver aqui que
‫o documento tem um formato de dados muito parecido com JSON, o
‫que tornará nosso trabalho muito
‫mais fácil quando começarmos a lidar com esses documentos.
‫E é claro que falaremos muito sobre isso mais
‫tarde, mas por enquanto, vamos aprender sobre os principais recursos do Mongo.
‫Portanto, de acordo com o site do MongoDB,
‫o MongoDB é um banco de dados de documentos com a
‫escalabilidade e flexibilidade que você
‫deseja, e com a consulta e indexação de que você precisa.
‫Agora, isso soa um pouco exagerado, então
‫vamos tentar entender o que isso realmente significa.
‫Portanto, como vimos antes, o MongoDB é um banco de dados baseado em documentos,
‫portanto, ele armazena dados em documentos que
‫são estruturas de dados emparelhadas com valor de campo, como JSON.
‫Então, novamente, ele armazena dados nesses documentos em vez
‫de linhas em uma
‫tabela, como nos bancos de dados relacionais tradicionais.
‫Portanto, é um banco de dados
‫NoSQL e não relacional.
‫Além disso, o MongoDB tem escalabilidade incorporada, tornando muito
‫fácil distribuir dados em várias máquinas
‫à medida que seus aplicativos obtêm
‫mais e mais
‫usuários e começam a gerar uma tonelada de dados.
‫Portanto, faça o que fizer, o MongoDB tornará muito mais
‫fácil seu crescimento.
‫A seguir, outro grande recurso do MongoDB
‫é sua grande flexibilidade.
‫Assim, não há necessidade de definir um esquema de dados do documento
‫antes de preenchê-lo com dados, o
‫que significa que cada documento pode ter um número e
‫tipo de campos diferente.
‫E também podemos alterar esses campos o tempo todo.
‫E tudo isso está realmente de
‫acordo com algumas situações de negócios do mundo
‫real e, portanto, pode se tornar muito útil.
‫MongoDB também é um sistema de banco de dados de alto desempenho.
‫Graças a recursos como modelos de dados
‫incorporados, indexação, fragmentação, os documentos flexíveis
‫de que já falamos, duplicação nativa e
‫muito mais.
‫E você não precisa saber tudo isso, é
‫claro, mas com certeza é bom saber que o MongoDB tem um
‫alto desempenho, se necessário.
‫Por fim, gostaria apenas de acrescentar que o
‫MongoDB é um banco de dados
‫gratuito e de código aberto, publicado sob a licença SSPL.
‫Portanto, em resumo, podemos dizer que o MongoDB é
‫um ótimo sistema de banco
‫de dados para construir muitos tipos de aplicativos
‫da web modernos, escaláveis e flexíveis.
‫E, na verdade, Mongo é provavelmente o banco de dados
‫mais usado sem JS e, portanto, é uma
‫combinação perfeita para usarmos neste curso.
‫Ok, agora vamos falar um
‫pouco mais sobre esses documentos, e voltando ao
‫nosso exemplo de postagens de blog desde
‫o início, isso poderia ser uma representação muito
‫simples de um único documento de postagem, certo?
‫E agora, apenas para fins de comparação, aqui
‫está como esses mesmos dados podem parecer
‫uma linha em um banco de dados relacional como o
‫MySQL, ou mesmo em uma planilha do Excel, se você
‫estiver mais acostumado com isso.
‫Como mencionei um pouco antes,
‫o MongoDB usa um formato de dados semelhante ao
‫JSON para armazenamento de dados chamado BSON.
‫Parece basicamente o mesmo que JSON, mas
‫é digitado, o que significa
‫que todos os valores terão um tipo de dados como
‫string, booleano, data e professor, objeto duplo ou mais.
‫Aprenderemos tudo sobre isso mais tarde na prática.
‫Então, o que isso significa é que todos
‫os documentos MongoDB serão
‫realmente digitados, o que é diferente de JSON, certo?
‫Agora, assim como o JSON, esses documentos BSON também
‫terão campos e os dados são armazenados
‫em pares de valores-chave.
‫Por outro lado, em um banco de
‫dados relacional, cada campo é chamado de coluna.
‫Portanto, aqui novamente você
‫pode ver como esses bancos de dados organizam os dados em
‫estruturas de tabela, enquanto nossos dados JSON são muito mais flexíveis.
‫Pegue por exemplo o
‫campo de tags, onde na
‫verdade temos uma matriz, então temos basicamente vários valores para um campo, certo?
‫Portanto, MongoDB, espaço e DV neste caso.
‫Mas em bancos de dados relacionais, isso não é permitido.
‫Não podemos ter vários valores em um campo
‫e, portanto, teríamos que encontrar soluções alternativas para
‫isso, o que poderia envolver
‫mais trabalho e mais complicações gerais.
‫Agora, outro recurso extremamente importante no MongoDB é
‫o conceito de documentos incorporados, que
‫é, novamente, algo que não está presente em
‫bancos de dados relacionais.
‫Portanto, em nosso campo
‫de comentários aqui, temos um array que contém três objetos.
‫Um para cada
‫documento, e cada um deles
‫poderia ser realmente seu próprio documento, certo?
‫Imagine que tínhamos uma coleção
‫de comentários que continha vários documentos de comentários.
‫Cada um deles poderia ser exatamente assim, então
‫com um autor e com o texto
‫do comentário, mas
‫em vez de fazer isso, incluímos esses comentários diretamente no
‫documento de postagem do blog, em outras palavras, incorporamos os
‫documentos de comentários diretamente no postar documento.
‫Portanto, esse processo de incorporação, ou desnormalização,
‫como também podemos chamá-lo, é basicamente incluir, portanto,
‫incorporar alguns dados relacionados, todos em
‫um único documento.
‫Neste exemplo, os comentários estão relacionados à postagem
‫e, portanto, são incluídos no mesmo documento.
‫E isso torna um banco de dados mais
‫eficiente em algumas situações porque, dessa forma, pode
‫ser mais fácil ler
‫todos os dados de que precisamos de uma vez.
‫E isso é algo sobre o qual falaremos muito quando
‫aprendermos sobre modelagem de dados,
‫mas, por enquanto, espero que isso ainda faça sentido para você.
‫Agora, o oposto de incorporar ou desnormalizar é normalizar,
‫e é assim que os dados são sempre modelados em
‫bancos de dados relacionais.
‫Nesse caso, não é possível incorporar dados e, portanto,
‫a solução é criar
‫uma tabela totalmente nova para os
‫comentários e, em seguida, unir as tabelas fazendo
‫referência ao campo ID da tabela de comentários.
‫Não vamos usar bancos de dados relacionais
‫neste curso, mas acredito que ainda seja importante conhecer
‫as diferenças se você quiser
‫se tornar um bom desenvolvedor de back-end.
‫De qualquer forma, e agora só
‫para terminar, mais duas coisas sobre os documentos BSON.
‫Primeiro, o tamanho máximo de
‫cada documento é atualmente 16 MB, mas pode aumentar no futuro.
‫E, em segundo lugar, cada documento contém um ID único,
‫que atua como uma chave primária desse documento.
‫Ele é gerado automaticamente com o tipo de dados do ID do objeto
‫cada vez que há um novo
‫documento e, portanto, não precisamos nos preocupar com isso.
‫Tudo bem, e essa deve ser uma visão geral breve o suficiente
‫para nos ajudar a
‫começar e realmente usar o MongoDB a partir da próxima aula.
‫Então, vamos prosseguir agora.