Arquitetura do MongoDB
Autores
Este documento foi produzido por Yally de Lima Galdino.
- Matrícula: 116211039
 - Contato: yally.galdino@ccc.ufcg.edu.br
 - Projeto documentado: https://github.com/mongodb/mongo
 
Descrição Arquitetural – Banco de Dados MongoDB.
O MongoDB é um software de banco de dados NoSQL, orientado a documentos livre, é opensource, permite que outros servidores repliquem sua database, tem alto desempenho e é flexível.
Descrição Geral sobre o MongoDB
O MongoDB é um software de banco de dados NoSQL, que é orientado a documentos livre, é opensource, permite que que outros srvidores repliquem seu database, tem alta performace e é flexível.
O banco de dados MongoDB
Objetivo Geral
O objetivo do MongoDB consiste em permitir que dados sejam indexados e sejam fáceis de serem buscados, mesmo quando estão complexos hierarquicamente, permitindo que a modelagem por parte das aplicações ocorra de forma mais natural.
Objetivos Específicos
O MongoDB, por ser AdHoc, permite, realizar buscas por campo, intervalo e expressões regulares, utilizar funções JavaScript, visualizar amostras aleatórias. Além disso, por realizar replicação dos seus dados, o MongoDB tem alta disponibilidade. Também é oferecida a indexação primária e secundária dos campos em documentos. Outra funcionalidade oferecida ao usuário do MongoDB é utilizar JavaScript no lado do servidor. Por fim, o MongoDB oferecer suporte a transações ACID multi-documento.
Contexto
Para ocorrer o funcionamento, um usuário, através de um browser ou outra aplicação, fará uma requisição para o Driver ou App com funcionamento como um plugin e se conectará com o Banco de Dados. O MongoDB executará e retornará operações, gerenciando os processos.

Containers
O MongoDB possui os seguintes sistemas:
- Mongod
 - Mongos
 - Mongo
 
O principal processo de MongoDB é o Mongod, responsável pelas requisições, gerenciamento de formatos de dados e execução de operações de gestão. Já o Mongos, tem função de controller, roteamento de consulta e de configurações e de determinar a localização dos dados. Por fim, o Mongo é o shell interativo do MongoDB.

Componentes
Há dois principais componentes na aplicação do mongod:
- replSet: consiste em um servidor que realiza réplica do MongoDB
 - qtconsole: realiza a configuração do particionamento de dados (realiza consultas e determina localização)
 

Visão de informação
Como foi visto anteriormente, o MongoDB é um banco de dados não-relacional de documentos (JSON). Ele tem como características aninhar documentos, criar links artificiais e tem operações de escrita atômica em um nível de um único documento.
As etapas a seguir irão demonstrar como usar o shell do MongoDB. Nesse caso, em um sistema Linux.
- Conectar-se ao MongoDB;
 - Listar os bancos de dados presentes no servidor;
 - Usar ou criar um banco de dados;
 - Exibir o banco de dados atual;
 - Criar uma coleção;
 - Criar um documento;
 - Listar coleções do banco de dados atual;
 - Listar todos os documento da coleção.
 
