Introdução ao MongoDB – Parte 1
Este post é uma parte de uma série de posts sobre o MongoDB e algumas aplicações.
Sempre que vamos iniciar um projeto já pensamos como será o modelo do banco de dados que vamos adotar. Isso é um fato para todo mundo que segue na área de desenvolvimento. Pensamos como serão as tabelas e os relacionamentos para conseguir obter o melhor resultado em nossas consultas e entregar o resultado com eficiência e integridade. Neste ponto os bancos de dados relacionais atenderam grande parte dos projetos até os dias de hoje.
Em nosso dia a dia temos ideias de projetos interessantes e assim acabamos criando novas necessidades. Uma grande preocupação hoje em projetos nas nuvens é a escalabilidade, seu projeto pode crescer a ponto de que seja complicado lidar com a quantidade de dados armazenada e número de acesso que recebe usando um banco de dados relacional.Neste ponto entra um novo paradigma, os banco de dados não relacionais, que vieram para suprir a necessidade de escalabilidade que os relacionais possuem.
Na procura de uma forma de escalar meu banco de dados para um projeto foi que eu conheci o MongoBD, um banco de dados não relacional que prometia atender a necessidade de escalabilidade do sistema proposto.
Orientação a documentos
Ao invés de tabelas, o MongoDB possui coleções de documentos BSON (uma forma binária de representar o objeto JSON). Sabemos que os documentos JSON possui uma estrutura de chaves e valores assim como uma tabela, porem um documento JSON é Schema-Free, ou seja, cada documento JSON da coleção pode ter um formato diferente, ao contrário de uma tabela.
A vantagem disso é o tratamento de documento com formatos semelhantes da mesma forma. Por exemplo, se temos diferentes tipos de programações de eventos em nossa base, e cada uma destas programações possuem dados diferentes (uma seção de cinema pode guardar Nome do filme, atores, diretores, sinopse e horários em que o filme será mostrado, já uma mostra de arte possui dados diferentes como Nome da mostra, autor, local da amostra e horário de funcionamento), e não vamos precisar de várias tabelas para cuidar destes dados.
Dois exemplos de documentos que podem ser guardados em uma mesma coleção:
{ nome: "Rio 2", tipo: "Filme", locais: [ { nome: "Cinearte Cidade", horarios: [ "13:40", "16:00", "18:15", "20:50" ], endereco: "Rua Rio de Janeiro, 910, Belo Horizonte - MG" }, { nome: "Cineplex Diamond Mall", horarios: [ "13:00", "15:30", "18:00" ], endereco: "Av. Olegário Maciel, 1600, Belo Horizonte - MG" } ], classificacao: "Livre", genero: "Comédia", audio: "Português", sinopse: "Todo o elenco do sucesso de animação RIO está de volta em RIO 2..." } |
{ nome: "50 Gramas de Copo", tipo: "Exposição", autores: [ "Manuel Carvalho", "Warley Desali" ], local: { nome: "Salão Cultural Georges Vicent da Aliança Francesa", endereco: "Rua Tomé de Souza, nº 1418 - Savassi" funcionamento: { inicio: "08:00", fim: "21:00", dias: [ "seg", "ter", "qua", "qui" ] }, inicio: "25/02/14", fim: "12/04/14" classificacao: "Livre", sinopse: "A mostra apresenta, ao todo, 12 pinturas dos artistas, sendo 5 do Manuel e 7 do Desali..." } |
Suporte a índices
Mesmo que os documentos sejam diferentes, eles são agrupados por algum elemento em comum, então o MongoDB tem a possibilidade de criar índices, o que faz com que pesquisas em cima destes índices sejam mais rápidas.
Escalabilidade
O MongoDB possui a vantagem de ser escalável, podendo dividir sua base em vários computadores a fim de aumentar a performance a medida que o banco cresce. O MongoDB também possui suporte a replicação do banco em várias máquinas.
Conclusão
O MongoDB é uma ótima alternativa para quem quer uma base de dados que seja escalável e que precisa um dinamismo nos dados a serem armazenados.
Outra vantagem do MongoDB quando comparado com outros bancos noSQL é que a documentação dele é excelente!