Introdução ao MongoDB: aprenda sobre JSON, BSON e primeiros passos
Dando continuidade na série de MongoDB, nesse post farei uma Introdução ao formato “Javascript Object Notation” (JSON), ao BSON e aos primeiros passos com o MongoDB.
Se você está começando agora e precisa dar os primeiros passos veja esse post mas se já conhece o básico e deseja colocar a mão na massa, vá direto a esse esse post.
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.
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 comparado ao XML.
O formato JSON
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.
/{ "_id" : ObjectId("58edb75d435b6ecf52c6bf75"), "livro" : "Harry Potter e as Relíquias da Morte", "lancamento" : "2017-07-21", "paginas" : 561, "publicado" : true, "genero" : [ "ficcao", "fantasia" ] }
- 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.
Podemos ter valores dos tipos (string, number, object, array, true, false e null)
Conheça o BSON
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/
Instalação MongoDB
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.
Primeiramente vamos adicionar o repositório do MongoDB.
vim /etc/yum.repos.d/mongodb-org.repo
[mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
Vamos atualizar nossa lista de repositórios.
yum repolist
Instalação do pacote
yum install mongodb-org
Carregamento automático no boot
systemctl enable mongod
Inicialização do serviço
systemctl restart mongod
Nesse momento já podemos acessar a CLI do MongoDB, utilizando o comando “mongo”.
mongo MongoDB shell version v3.4.3 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.3 >
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.
Dica: Para limpar a tela, podemos utilizar o “CTRL+L ou cls”
Para termos acesso a uma lista completa de comandos, podemos utilizar o comando help
> help
Vamos listar todos os bancos de dados existentes.
> show dbs admin 0.000GB local 0.000GB
Acesso as bases de dados
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”.
> use livros
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, 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.
> db.misterios.insertOne({ "nome" : "Ponto de Impacto"}) { "acknowledged" : true, "insertedId" : ObjectId("58ee79afcc3801bb06082423") }
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.
> db.misterios.find() { "_id" : ObjectId("58ee79afcc3801bb06082423"), "nome" : "Ponto de Impacto" }
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.
About author
Você pode gostar também
Guia prático: Como usar o Terraform para gerenciar sua infraestrutura na nuvem
Terraform é uma ferramenta de código aberto comumente utilizada para construir, alterar e versionar uma infraestrutura de forma segura e eficiente, através de uma linguagem declarativa. A ferramenta é escrita
Guia completo sobre PromQL: a linguagem de consulta do Prometheus
Nesse post vamos falar sobre o PromQL, que nada mais é do que uma linguagem de consulta do Prometheus, ela nos possibilita selecionar e agregar dados de séries temporais em
A linguagem Go.
Hoje vamos falar um pouco sobre a linguagem Go, que vem ganhando o seu espaço no mercado de trabalho e no mundo de Software Livre. Arquitetada por Rob Pike, Robert