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
Descubra o novo curso gratuito de Lógica de Programação da 4Linux
Então você decidiu aprender programação. Pesquisou aqui, buscou acolá, e a única coisa que conseguiu foi ficar confuso com a avalanche de informações. Cada fonte diz uma coisa diferente,
Automatize processos com Ansible e otimize seu tempo de trabalho
Já parou para pensar como seria incrível executar um comando, e quase que instantaneamente, teríamos um processo que normalmente exigiria alguns bons minutos ou horas para executar, com diversas etapas
Autenticando terraform na Google Cloud sem compartilhamento de chaves
O terraform atualmente é, de longe, a ferramenta de infraestrutura como código mais popular no mundo de TI e de Cloud. Ele tem suporte aos principais provedores de cloud e