Primeiros passos com MongoDB

0 Flares Twitter 0 Facebook 0 Google+ 0 LinkedIn 0 0 Flares ×

O MongoDB é um banco de dados documental (Orientado a documentos) open source que proporciona escalabilidade e flexibilidade ao projeto pois ele aninha os dados em documentos JSON e BSON, com isso se tornam simples as buscas. Nesse post farei uma Introdução ao formato “Javascript Object Notation” (JSON), ao BSON e aos primeiros passos com o MongoDB.

O JSON é um formato leve de troca de dados. Para seres humanos, é simples de ler e escrever e para máquinas, é fácil de interpretar e gerar. Quando se fala em aplicações AJAX, o JSON é mais rápido e mais fácil do que o XML.

Com o formato JSON, sempre teremos objetos de Chave-Valor, onde podemos observar alguns pontos característicos:

– As chaves são do tipo “String”.

– O delimitador entre Chave-Valor é o “:” (dois pontos).

– Cada entrada “Chave-Valor” é separada por “,” (vigula).

– Cada objeto JSON é delimitado por “{}” (Chaves).

Utilizando o exemplo abaixo, explicarei os campos que podem compor o “Valor” dentro de um objeto do formato Json.

– O nome do livro e a data de lançamento são do tipo “String”.

– A quantidade de páginas é do tipo numérico.

– O status de publicado é do tipo booleano.

– Já o Gênero está recebendo uma matriz.

OBS: Podemos ter valores dos tipos (string, number, object, array, true, false, null)

No mongoDB como complemento ao JSON, existe o BSON que suporta a incorporação de objetos e matrizes dentro de outros objetos e matrizes, ou seja o MongoDB através do BSON cria índices e compara objetos com expressões de consulta em chaves BSON de nível superior que estão aninhadas, isso significa que o MongoDB oferece aos usuários a simplicidade e a flexibilidade dos documentos JSON, juntamente com a velocidade e a riqueza de um formato binário leve.

Basicamente o BSON nasceu com três vértices principais:

– “Lightweight” (Leveza):

O BSON mantem a sobrecarga no mínimo e isso é importante para qualquer formato de representação de dados, especialmente quando usado na rede.

– “Traversable” (Atravessáveis):

O BSON é projetado para mover-se facilmente. Esta é uma propriedade vital para o MongoDB.

– “Efficient” (Eficiente) :

A Codificação de dados e decodificação do BSON pode ser realizada muito rapidamente na maioria das linguagens devido ao uso de tipos de dados C.

Para maiores informações sobre o BSON, segue o link do bsonspec http://bsonspec.org/

Após esta rápida introdução, vamos instalar e dar os primeiros passos com o MongoDB, nesse exemplo vou fazer a instalação em um CentOS, caso você precise instalar em outra plataforma, deixo o link oficial.

– Instalação no Linux.

– Instalação no Windows.

Instalação no OS X.

Primeiramente vamos adicionar o repositório do MongoDB.

Vamos atualizar nossa lista de repositórios.

Instalando o MongoDB.

Habilitando o MongoDB em todo boot.

Iniciando o serviço do MongoDB.

Nesse momento já podemos acessar a CLI do MongoDB, utilizando o comando “mongo”.

Quando acessamos a CLI, nos é mostrado a versão do shell, a string de conexão (mongodb://127.0.0.1:27017) nesse caso localhost e a versão do MongoDB instalado.

OBS: Para limpar a tela, podemos utilizar o “CTRL+L ou cls”

Para termos acesso a uma lista completa de comandos, podemos utilizar o help

Vamos listar todos os bancos de dados existentes.

Por padrão o mongoDB vem com duas bases criadas (local e admin), ambas vazias.

Como o MongoDB é um banco de dados documental, ele não trabalha com tabelas e sim “Collections”, para criarmos as nossas collections precisamos estar dentro de algum banco de dados, para acessamos um banco de dados utilizaremos o comando “use”.

Percebam que o banco de dados “livros” não existia, quando usamos o comando “use” ele verificou a existência, nesse caso como não existia ele criou automaticamente. Para realizarmos operações de inserção, atualização, leitura e remoção de dados no MongoDB, podemos usar algum script remoto fazendo isso ou podemos executar isso direto no shell. Se executarmos direto no shell, podemos usar uma variável global chamada “db”, essa variável faz referencia ao banco de dados no qual você está conectado, no nosso caso o banco “livros”.

Com esse comando nós vamos fazer uma inserção única em uma collection que ainda não existe.

Esse retorno indica duas coisas:

1. A gravação foi reconhecida;

2. Foi gerado um campo único e ele foi atribuído ao documento (todo documento precisa de um _id).

Após isso, a collection “misterios” acabou de ser criada, e possui um documento, para verificar o conteúdo dela, vamos gerar uma listagem completa.

Um ponto interessante é que mesmo não passando, o próprio mongo inseriu o campo “_id”, parece ser algo totalmente aleatório, porem segue uma sequencia lógica, é uma string com 12 bytes hexadecimais, como descrito abaixo.

                          Data             Mac Address              Pid                 Contador

ObjectId:         _ _ _ _       |           _ _ _            |           _ _         |            _ _ _

Os quatro primeiros campos são criados a partir do segundo atual da máquina, em seguida 3 campos nascem com base no endereço Mac da máquina, depois dois campos surgem do “Process ID” e por último um contador randômico que gera mais 3 bytes.

Farei uma sequencia de posts relacionados a MongoDB, nos posts seguintes, mostrarei outros métodos de inserção e faremos o CRUD utilizando a shell do MongoDB. Espero que esse primeiro post esclareça alguns conceitos do MongoDB e de como ele funciona.

Edgar da Silva Costa Filho é um sysadmin apaixonado por Linux, com foco na cultura DevOps, Formado em Redes de Computadores pela FIAP. Com 4 anos de experiência profissional em Tecnologia da Informação, atualmente atuando com desenvolvimento em python, infra ágil(Docker, Puppet, Ansible, Git, Jenkins e Rundeck), NoSQL (MongoDB) e também atuando como instrutor, ministrando cursos de Linux e suas mais diversas tecnologias, capacitando equipes de TI em sistemas Linux e soluções Open Source.

edgarsilva948

Edgar da Silva Costa Filho é um sysadmin apaixonado por Linux, com foco na cultura DevOps, Formado em Redes de Computadores pela FIAP. Com 4 anos de experiência profissional em Tecnologia da Informação, atualmente atuando com desenvolvimento em python, infra ágil(Docker, Puppet, Ansible, Git, Jenkins e Rundeck), NoSQL (MongoDB) e também atuando como instrutor, ministrando cursos de Linux e suas mais diversas tecnologias, capacitando equipes de TI em sistemas Linux e soluções Open Source.