Primeiros passos com MongoDB
Atualmente o MongoDB é um dos mais populares banco de dados, sendo assim o mais famoso NoSQL (Not Only SQL) do mercado atualmente. O MongoDB é escrito na linguagem C++, é formado por um conjunto de aplicativos JSON e ainda é open-source licenciado pela GNU AGPL (Affero General Public License).
Criado pela empresa 10gen, conhecido atualmente como MongoDB Inc, é um banco de dados orientado por documentos que armazenam dados em documentos JSON com esquema dinâmico. Isso implica dizer que você pode armazenar os seus registros, sem se preocupar com estrutura de dados. Os documentos do MongoDB são parecidos com os objetos em JSON.
Sendo um banco de dados multi-plataforma, pode ser executado em vários SO’s diferentes: Windows, Mac OS, Linux. Esse tipo de banco de dados não utiliza as ideias de modelo de banco de dados relacional e nem da linguagem SQL.
Entre as empresas que já utilizam o MongoDB, as principais e que mais se destacam são: Globo.com, MailBox (Serviço de e-mails do DropBox), LinkedIn, MTV, Square Enix, Adobe e muitos outros. Aqui temos um link que lista os serviços em produção que utilizam o MongoDB.
Instalação do MongoDB
Para instalar o MongoDB, primeiramente devemos baixá-lo aqui, então você precisará criar uma conta no site e em seguida escolher uma versão de sistema operacional de sua escolha. Neste caso utilizaremos o Sistema Operacional Windows.
Você fará o download do MongoDB Community Server e do MongoDB Database Tools que serve para importar e exportar os bancos.
Após instalado, já podemos executar o cliente Shell do MongoDB. Através deste Shell já será possível dar início ao seu banco de dados. Se por acaso você tiver alguma dúvida, basta utilizar o comando help no Shell do MongoDB.
Por padrão, o banco de dados no Shell do MongoDB, se conecta ao banco de dados default:
Após digitar o comando mongo, ele se conecta ao servidor do MongoDB, ficando desta forma:
Agora estamos conectados com o MongoDB e podemos começar a utilizá-lo.
Para criarmos um novo banco de dados, precisa usar o comando use bancoDeDados, e assim podermos usá-los para fazermos nossas inserções e listagens. Veja o exemplo:
Caso o banco de dados ainda não exista, o próprio MongoDB o criará assim que os dados começarem a ser inseridos nele. Lembrando sempre que o Shell deverá apresentar a mensagem switched to db “nomeDoSeuBanco”.
Primeiros passos com o MongoDB
Após realizarmos o passo a passo acima, utilizaremos também o MongoDB Compass para a visualização do banco criado.
Veja que no canto esquerdo já está criado o nosso banco. Agora vamos realizar nossa primeira inserção de dados:
Ao utilizarmos a linha de comando acima no MongoSH, poderemos ver o seguinte:
Note que foi criada a pasta names e já foi feita a inserção de chaves e valores adicionados através da linha de comando.
Veja que a inserção foi realizada com sucesso e vamos para mais alguns exemplos.
Começando a entender as utilizações do MongoDB
A sintaxe utilizada pelo MongoDB, é a JSON que tem como padrão para retenção dos dados a utilização de pares chave/valor, como mostra o exemplo que virá a seguir.
No exemplo a seguir, faremos a adição de um usuário em um banco de dados de nome usuário:
Desta forma, teremos:
Vejam como é simples de ser utilizado, caso precisássemos fazer uma inserção da mesma forma em um banco de dados SQL, teríamos:
E ainda não iríamos conseguir fazer a inserção dos dados no banco de dados, pois seria preciso criar um INSERT para conseguir adicionar as informações referente ao usuário.
Utilizando outro tipo de inserção, teríamos o seguinte exemplo:
Utilizando uma estrutura mais complexa para inserção de dados em um banco de dados do MongoDB, teríamos o exemplo acima. Note que utilizei uma chave endereço para o armazenamento de mais de um valor referente ao endereço. Após executar o comando acima, teremos o seguinte documento no MongoDB Compass:
Note que foi criada uma nova chave endereço que possui mais de um atributo. Tendo isso em vista, poderíamos criar inserções mais complexas, como por exemplo:
Da forma citada anteriormente, no MongoDB Compass, teremos a seguinte adição de dados:
Vejam como a adição é feita de forma que podemos notar que não existem regras de validação muito severas, sendo assim, podemos armazenar qualquer tipo de documento no banco de dados. Outro ponto interessante para falarmos é que caso precise ser adicionado um novo atributo apenas no documento onde ele é necessário, podemos fazer isso sem problemas, sendo diferente do modelo de banco de dados relacional, que caso um novo atributo precise ser adicionado, a coluna se aplicaria a todos os registros existentes no banco.
Lembrando que para fazer a inserção de qualquer novo atributo em algo já existente é necessário muito cuidado para não desorganizar o seu banco de dados ou ficar com atributos perdidos/não utilizados.
Você deve estar se perguntando: "Beleza, já entendi como faço a inserção dos dados, mas caso eu queira fazer uma exclusão dos dados, o que precisaria ser feito?".
Antes de te explicar como fazer no MongoDB, vou te mostrar como seria em um banco de dados relacional:
Quando precisamos deletar em MongoDB, usamos:
Para a atualização de dados, caso estivéssemos utilizando o SQL teríamos o código:
Para realizar a atualização no banco de dados do MongoDB, teríamos:
Para entendermos o que aconteceu acima, a instrução $eq especifica a condição de igualdade. Esse operador corresponde a documentos em que o valor de um campo é igual ao especificado, nesse caso ele está procurando pela cidade Campina Grande e em seguida, utilizando a instrução $set, substituindo o valor de estado para Paraíba, caso o valor da cidade seja Campina grande. E por fim, temos o multi que é uma instrução opcional, mas que se definida como true, serve para atualizar vários documentos que atendem os valores dos critérios de consulta, mas, que tem por default o valor false.
Outro tipo de comando muito utilizado, é o comando de fazer consultas. O MongoDB possui uma linguagem poderosa de consulta baseada em documentos, o que torna as consultas no MongoDB de fácil transição de um banco de dados relacional, tendo a conversão das consultas sendo feita com bastante facilidade.
No exemplo abaixo teremos a consulta em SQL:
Quando pegamos a mesma situação e aplicamos em MongoDB temos:
Mais uma situação muito comum é: E se quisermos ordenar de forma ascendente e descendente?
Observe abaixo ambas as situações em SQL:
Ascendente:
Descendente:
Agora no MongoDB:
Ascendente:
Descendente:
Tendo em vista o que foi passado acima, podemos entender que as vantagens de se utilizar o MongoDB são as seguintes:podemos representar objetos do mundo real da forma que eles são e que caso seja necessário fazer update ou inserir novos atributos, podemos aplicá-los somente onde é necessário e não em todas as tabelas, como é o caso do modelo relacional.
Diferente do banco de dados relacional, onde precisamos criar os relacionamentos das tabelas de forma que evite redundâncias no código, no MongoDB a situação é diferente, tendo em vista que não precisamos de relacionamentos e que a duplicação, por vezes, é incentivada como em algumas situações ditas acima, sendo que armazenamos os dados da forma que queremos, lembrando sempre de montar o seu banco de forma bem estruturada para evitar erros e perda de dados.
De modo geral no MongoDB temos documentos que contém todas as informações que necessitamos sem que seja necessário utilizarmos vários joins, dessa forma, fazemos apenas uma consulta, tendo como retorno o documento inteiro,contendo todas as informações buscadas e resultando em um ganho de performance significativo.
Vantagens de se utilizar o MongoDB
Uma delas é a maior flexibilidade com documentos. Como foi citado anteriormente, o MongoDB utiliza documentos como base de armazenamento, permitindo que praticamente qualquer estrutura de dados possa ser modelada e manipulada de forma fácil.
Outra vantagem é que o MongoDB é amplamente suportado, tendo acesso nativo em código e sem necessitar do uso de frameworks wrappers e ferramentas mais pesadas.
Desvantagens de se utilizar o MongoDB
Uma delas é o tamanho máximo do arquivo BSON, tendo em vista que o tamanho máximo é de 16 megabytes, esse problema garante que um único documento não possa usar uma quantidade excessiva de memória RAM ou utilizar uma quantidade excessiva de banda. Para arquivos que você precise de mais armazenamento o próprio MongoDB fornece o GridFS.
Outra desvantagem do MongoDB, é a limitação de operações de ordenação, que acontece caso o MongoDB não consiga usar um ou mais índices para ordenar campos de um documento, iniciando-se uma operação de ordenação com bloqueio de dados (blocking data sort), que consiste na necessidade do MongoDB consumir e processar todos os documentos de entrada para a classificação antes de haver o retorno dos resultados.
Caso sua solicitação exija o uso de mais de 100 megabytes de memória do sistema para ordenação, será retornado um erro, a não ser que você utilize a função allowDiskUse() que permite que o MongoDB use de forma temporária arquivos em discos para armazenar dados que excedam o limite citado anteriormente durante o processamento da operação de ordenação.
Espero que este artigo tenha sido útil para aprender mais sobre o MongoDB. Em breve trarei mais conteúdos.
Até a próxima!
A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.