Introdução ao MongoDB – Parte 1

On 21 de agosto de 2014 by Brayan Neves

mongodb-logo

 

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.

One Response to “Introdução ao MongoDB – Parte 1”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *