BT

MongoDB 1.8 melhora a confiabilidade com journaling

por David Cooksey , traduzido por Rodrigo Urubatan em 01 Abr 2011 |

[Ed.: Esta notícia foi adaptada e enriquecida pelo tradutor]

A versão 1.8 do MongoDB, um banco de dados orientado a documentos, foi disponibilizada. Entre as principais mudanças estão o suporte a journaling, a melhora no desempenho de sharding e recursos para auto-complete de comandos no shell.

O MongoDB é um exemplo de banco de dados NoSQL. Diferentemente de um BD relacional, a unidade básica dos dados no MongoDB é um documento. Um documento, nesse contexto, é constituído de uma série de pares chave-valor com tipos como string, objeto, matriz, expressão regular, ou mesmo código. Os documentos são salvos no banco de dados no formato BSON e agrupados em coleções por tipo de documento (similares às tabelas de BDs relacionais).

Diferentemente do que acontece num banco relacional, o esquema do BD é definido quando se determina quais documentos merecem uma coleção própria e quais devem ser embutidos (embedded) em outras coleções. Documentos embutidos funcionam como objetos membros de uma classe.  Em um sistema relacional, seria usada uma tabela para armazenar as compras e outra com uma chave estrangeira para armazenar os itens comprados. No MongoDB, a forma recomendada de se resolver o mesmo problema é criar uma única coleção de compras, em que cada compra guarda uma lista de itens adquiridos dentro do próprio item da coleção.

Para aumentar a tolerância a falhas, na nova versão foi adicionado o recurso de histórico de mudanças (journaling). Por meio de "registros circulares com escrita antecipada" (write-ahead redo logs), as alterações são escritas primeiramente em registros históricos, ou journal logs, e são periodicamente submetidas e integradas aos dados reais da aplicação (atualmente esta varredura é executada a cada 100ms, e este tempo deve diminuir em versões futuras). Se o servidor for desligado corretamente, os registros históricos são então limpos. Caso o servidor seja finalizado de forma abrupta, por falta de energia ou problema de hardware por exemplo, as operações que não haviam sido integradas ainda serão reexecutadas a partir dos registros históricos na próxima inicialização do servidor antes de permitir o acesso de usuários, garantindo que quando o servidor estiver novamente disponível os dados estejam integros e acessíveis.

Uma das grandes vantagens dos servidores NoSQL é a escalabilidade horizontal, que normalmente é obtida através de grupos de servidores com dados replicados, sendo que qualquer um deles pode responder a consultas referentes a estes dados (uma técnica chamada de sharding). Para facilitar a configuração destes grupos de replicação (shards) foi adicionado o recurso de auto-sharding, permitindo uma distribuição de dados ordenada e por coleção, em que cada grupo pode ser responsável pelos dados de uma ou mais coleções. As consultas são direcionadas automaticamente para o grupo apropriado e dessa forma as aplicações não precisam registrar qual grupo possui quais dados. Além disso, um novo recurso dos grupos de replicação permite a autenticação automática entre os membros do grupo, utilizando um “arquivo senha” e a opção “--keyfile”.

Para melhorar o desempenho das consultas, a nova versão do MongoDB adicionou dois tipos de índice: os "índices abrangentes" (covering indexes) e os "índices esparsos" (sparse indexes). Índices abrangentes permitem que dados sejam armazenados nos próprios índices, melhorando muito o desempenho das consultas em que todos os campos solicitados fazem parte do índic, pois neste caso não é necessário buscar os documentos completos. Já os esparsos incluem apenas os documentos que possuem um campo especificado, e melhoram muito o desempenho de consultas que utilizam no filtro algum campo que não existe na maior parte dos documentos de uma coleção. Atualmente índices esparsos só podem especificar um campo.

Também existem alterações nas ferramentas de linha de comando do MongoDB. Um modo de pesquisa automática (--discover) foi adicionado ao comando mongostat que busca automaticamente estatísticas de todos os nós em um cluster. E também é possível fazer o dump e restaurar logs de transações de alto nível, utilizando os comandos “mongodump --oplog” e “mongorestore --pologReplay”, respectivamente.

Para obter mais detalhes sobre os novos recursos desta versão, recomendamos o MongoDB 1.8 webinar (em inglês).

 

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT