0

Banco de Dados Mongo DB

A
Alfredo Neto

trodução Ao Banco De Dados MongoDB



Compartilhe Este Post

Share on facebook

Share on linkedin

Share on twitter

Share on email


Introdução ao banco de dados MongoDB

O MongoDB é um banco de dados multi-plataforma que segue o modelo de documentos, trazendo o conceito NOSQL. Este conceito utiliza o modelo de banco de dados relacionado a documentos, e signifca (Not Only SQL). Portanto o banco de dados não se limita somente ao modelo relacional de dados, ao contrário do MySQL, PostgreSQL, Oracle, dentre outros.

O banco de dados MongoDB é escrito em linguagem C++, armazena dados em documentos em formato BSON, de mesmo modo sendo uma versão binária de JSON e possui licenciamento GNU APL versao 3 (Affero General Public Licence), portanto possui suporte a sistemas operacionais Linux, Solaris, Microsoft Windows e MacOS.

Da mesma forma, outros bancos que seguem também o modelo estão se destacando atualmente são Cassandra, CouchDB, conforme bancos de dados utilizados em ambientes de cloud computing como Azure Table Storage e Amazon SimpleDB.

Características

Portanto, com características do MongoDB, podemos destacar ótima documentação disponível em seu site oficial, possibilidade de armazenamento de grandes objetos, replicação master / slave e distribuição de dados em sharding.

Portanto, veremos como utilizar a instalação do MongoDB em um sistema Linux, cobrindo a instalação, configuração, principais comandos e operações de inserção, consulta e remoção de dados. Devido ao fato de que o MongoDB é um banco de dados multi-plataforma , porque os conceitos aqui apresentados funcionarão em todas as plataformas oferecidas pelo software.

Instalação e configuração

A seguir é demonstrada a instalaçãod o binário do MongoDB em um sistema Linux. A distribuição utilizada é o Debian, versão 9.4 codnome Strech x64.

Finalmente, processo de instalação deve ser realizado com o gerenciador apt:

root@mongodb:~# apt-get install mongodb mongodb-clients mongodb-server

Durante a instalação dos pacotes o sistema questiona o administrador se realmente deseja instalar os mesmos e a ação deve ser confirmada pressionando a tecla Y. Após o processo de instalação, o MongoDB encontra-se funcional e na próxima sessão abordaremos alguns dos seus principais comandos.

Comandos

Uma vez com o MongoDB instalado, é possível acessar seu shell e gerenciar bancos de dados e collections. Com comando systemctl, podemos verificar o status do banco de dados:

root@mongodb:~# systemctl status mongodb
● mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-06-11 12:51:04 -03; 1h 16min ago
Docs: man:mongod(1)
Main PID: 877 (mongod)
Tasks: 18 (limit: 4915)
CGroup: /system.slice/mongodb.service
└─877 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf
Jun 11 12:51:04 mongodb systemd[1]: Started An object/document-oriented database.
Jun 11 12:51:04 mongodb mongod[877]: 2018-06-11T12:51:04.467-0300 I CONTROL [main] ** WARNING: Should not specify both --rest and –no

Caso a saída do comando for semelhante a demonstrada acima, com o campo Active com estado running significa que tudo ocorreu corretamente. Cao o banco de dados não esteja carregado, basta seguir com os seguintes comandos novamente utilizando o utilitário systemctl:

root@mongodb:~# systemctl enable mongodb
root@mongodb:~# systemctl start mongodb

Para verificar se tudo ocorreu bem basta executar novamente a linha de comandos “systemctl status mongodb” e observar o resultado do campo Active.

Portanto com o serviço iniciado, deve ser realizado acesso ao shell:

root@mongodb:~# mongo
MongoDB shell version: 3.2.11
connecting to: test

Por padrão é realizada a conexão no banco de dados test, portanto allistagem bases de dados disponíveis a seguinte linha de comandos a seguir listará todos os bancos de dados no sistema:

> show dbs
config 0.000GB
local 0.000GB
test 0.000GB
workshop 0.000GB

Por utilizar o conceito banco de dados orientado a documentos, o MongoDB não utiliza tabelas, e sim collections onde são armazenados os dados referentes ao documento. Para tanto utilizamos o comando show passando parâmetro collections:

> show collections
collectionTest

No caso foi exibida a collection chamada collectionTest, veremos mais adiante como criar collections e estruturas de dados, além de efetuar a manipulação dos mesmos.

Criar Banco

Para criar um novo banco de dados no MongoDB, entretanto basta utilizar o comando use seguido do nome do banco a ser criado. Entretanto, como demonstrado a seguir vamos criar o banco de dados corp:

> use corp
switched to db corp

Caso o banco informado não exista, o MongoDB se encarregará de criar o mesmo, a seguir criamos uma collection chamada customers inserindo um documento com informações básicas contendo o nome e email do cliente:

> db.customers.save({name:"Johnny Jhonny",email:"johnny@johnny.com"});
WriteResult({ "nInserted" : 1 })

Podemos verificar a collection criada com o comando show collections:

> show collections
customers

Inserimos dados na collection customers, para tanto estes dados precisam também ser consultados. Podemos realizar este procedimento utilizando o método find:

> db.customers.find()
{ “_id” : ObjectId(“5b1eb486173c258e389be57d”), “name” : “Johnny Jhonny”, “email” : “johnny@johnny.com” }
{ “_id” : ObjectId(“5b1eb5dd173c258e389be57e”), “name” : “John Richards”, “email” : “john.richards@example.com” }

Deve ser informada a collection para inserir dados:

> db.customers.save({name:"Daniel Saars",email:"daniel@test"});
WriteResult({ "nInserted" : 1 })

Para a remoção de documentos, utiliza-se o método remove.

LIstamos todos os documentos da collection e a remoção através do ObjectId:

> db.customers.find()
{ "_id" : ObjectId("5b1eb486173c258e389be57d"), "name" : "Johnny Jhonny", "email" : "johnny@johnny.com" }
{ "_id" : ObjectId("5b1eb5dd173c258e389be57e"), "name" : "John Richards", "email" : "john.richards@example.com" }
{ "_id" : ObjectId("5b1eb6a6173c258e389be57f"), "name" : "Daniel Saars", "email" : "daniel@test" }
{ "_id" : ObjectId("5b1eb71f173c258e389be580"), "name" : "Paul Stanley", "email" : "ps@test.net" }

Após a listagem removemos o documento desejado com o método remove informado o _id desejado:

> db.customers.remove({"_id": ObjectId("5b1eb71f173c258e389be580")});
WriteResult({ "nRemoved" : 1 })
Backup e Restore

Contudo, o processo de backup e restore no MongoDB realiza-se com os utilitários mongodump e mongo restore. Ambos trabalham com dumps de dados no formato BSON. Devido a testes digite mongodump, por padrão será efetuado o dump de todos os bancos diretório corrente:

root@mongodb:~# ls dump/
config corp test workshop

Como resultado é listado o conteúdo do diretório referente ao dump da base de dados corp:

root@mongodb:~# ls dump/corp/
customers.bson customers.metadata.json

Entretando, para efetuar o backup de apenas uma base de dados, deve ser passo o parâmetro —db. Portanto, atribuímos também um diretório de destino com o parâmetro —out:

root@mongodb:~# mongodump --db corp --out /tmp 
2018-06-12T10:56:06.968-0300 writing corp.customers to 
2018-06-12T10:56:06.971-0300 done dumping corp.customers (3 documents)

Enfim, é efetuada uma listagem do diretório contendo os arquivos referentes ao dump de uma base de dados específica:

root@mongodb:~# ls /tmp/corp/
customers.bson customers.metadata.json

Contudo, existem casos com necessidade de criar um dump específico ao invés de todo o banco de dados. Portanto é necessário especificar o parâmetro –collection a linha de comandos:

root@mongodb:~# mongodump --db corp --collection customers --out /tmp 
2018-06-12T11:03:20.296-0300 writing corp.customers to 
2018-06-12T11:03:20.299-0300 done dumping corp.customers (3 documents)

Portanto, para remover uma base de dados deve ser utilizado db.dropDatabse():

> use corp
switched to db corp
> db.dropDatabase()
{ "dropped" : "corp", "ok" : 1 }nalmente, 

Portanto, listando as bases podendo constatar que a base corp não consta mais entre as databases:

> show dbs
config 0.000GB
local 0.000GB
test 0.000GB
workshop 0.000GB

Portanto, uma vez em que a base de dados coro que está sendo utilizada nos exemplos foi removida, finalmente restore pode ser efetuado . Portanto, processo é realizado com o utilitário mongorestore.

Portanto, seguir será efetuado o restore da base de dados copr com base nos dumps que foram efetuados:

root@mongodb:~# mongorestore --db corp dump/corp/
2018-06-12T11:47:48.217-0300 building a list of collections to restore from dump/corp dir
2018-06-12T11:47:48.220-0300 reading metadata for corp.customers from dump/corp/customers.metadata.json2018-06-12T11:47:48.462-0300 restoring corp.customers from dump/corp/customers.bson
2018-06-12T11:47:48.470-0300 restoring indexes for collection corp.customers from metadata
2018-06-12T11:47:48.471-0300 finished restoring corp.customers (3 documents)
2018-06-12T11:47:48.472-0300 done

Portanto dados restaurados existem casos com necessidade de efetuar o restore de apenas uma collection em determinada base de dados:

root@mongodb:~# mongorestore --db corp --collection customers /tmp/corp/customers.bson 
2018-06-12T11:55:19.250-0300 checking for collection data in /tmp/corp/customers.bson
2018-06-12T11:55:19.257-0300 reading metadata for corp.customers from /tmp/corp/customers.metadata.json
2018-06-12T11:55:19.259-0300 restoring corp.customers from /tmp/corp/customers.bson2018-06-12T11:55:19.348-0300 restoring indexes for collection corp.customers from metadata2018-06-12T11:55:19.350-0300 finished restoring corp.customers (3 documents)
2018-06-12T11:55:19.350-0300 done

Portanto para confirmar a restauração do dump da collection customers com o método find():

> db.customers.find():
{ "_id" : ObjectId("5b1eb486173c258e389be57d"), "name" : "Johnny Jhonny", "email" : "johnny@johnny.com" }
{ "_id" : ObjectId("5b1eb5dd173c258e389be57e"), "name" : "John Richards", "email" : "john.richards@example.com" }
{ "_id" : ObjectId("5b1eb6a6173c258e389be57f"), "name" : "Daniel Saars", "email" : "daniel@test" }
Conclusão

O MongoDB é um banco de dados eficiente por ser totalmente compatível com JSON, multi-plataforma, portanto compatível com diversas linguagens. Portanto, possuindo documentação com conteúdo técnico bem elaborado e é um projeto bastante ativo.

Portanto para conhecer mais, vale a pena ver amis detalhes em dua documentação oficial;

Referências

Site Oficial – https://www.mongodb.com/community/licensing

Documentação Oficial – https://docs.mongodb.com

Licenciamento – https://www.mongodb.com/community/licensing


0
0

Comentários (0)

alfredo gelk neto

Brasil