Você está na página 1de 16

Bancos Título

Inserir de Dados
Aqui
Inserir
não Estruturados
Título Aqui
CRUD

Responsável pelo Conteúdo:


Prof. Esp. Milton Roberto y Goya

Revisão Textual:
Profa. Dra. Silvia Albert
CRUD

Nesta unidade, trabalharemos os seguintes tópicos:


• Introdução ao Tema
• Orientações para Leitura Obrigatória
• Material Complementar

Fonte: iStock/Getty Images


Objetivos
• Instruir sobre download e configuração do MongoDB
• Introduzir as operações CRUD: Create, Read, Update e Delete

Caro(a) aluno(a),

Nesta Unidade abordaremos as operações CRUD (Create, Read, Update e Delete) em


banco de dados não relacional. Para exemplificar o processo, usaremos o banco de
dados orientado a documentos MongoDB. Antes de iniciarmos, comentaremos sobre o
download e a configuração desse banco.

Nesta unidade, o principal objetivo é não só entender os aspectos relevantes da criação


de objetos em banco de dados não relacional, como também o seu uso em operações de
leitura, exclusão e alteração de documentos.

Acesse o Material Didático, onde encontrará o conteúdo teórico da unidade, e realize as

Atividades Propostas. Lembre-se de que depende também de você a construção de


novos conhecimentos na disciplina.

Bom estudo!
UNIDADE
CRUD

Introdução ao tema
Caro(a) aluno(a),

Alguns conceitos são compreendidos melhor através de exemplos práticos. Como


plataforma para testarmos esses exemplos, usaremos o banco de dados não relacional
MongoDB. O termo Non-Rel é usado para indicar bancos de dados não-relacionais.

O banco de dados Non-Rel MongoDB é orientado a documentos e seu nome deriva


da palavra inglesa humongous, que pode ser traduzido para gigantesco. Desenvolvido
na linguagem C++, um mesmo servidor com MongoDB pode armazenar vários
bancos. É desprovido de esquema (“schema free” ou “schemaless”) e trabalha com
BSON (Bynary JSON). Para sua melhor compressão, o quadro 1, a seguir, apresenta
uma comparação entre os termos usados no banco de dados relacional Oracle e o
banco MongoDB, orientado a documentos.

Quadro 1 – Comparação entre os termos usados no RDBMS Oracle e NonRel MongoDB


Oracle (RDBMS) MongoDB (documentos)
Database Database
Instância de Banco de Dados Instância MongDB
Esquema Banco de Dados
Tabela, View Coleção
Tupla Documento (JSON, BSON)
Coluna Campo ou Field
ROWID / Primary Key id
Junção DBRef (Embedded Document)
Foreign Key Reference
Partição Shard
Select Método find
Insert Método insert
Update Método update
Delete Método remove

Vale lembrar que uma forma simples de acessar o IDE do MongoDb é através do
site https://goo.gl/5YmcIu. Todo acesso é feito através do navegador do seu computador ou
dispositivo móvel. Não é necessário cadastro para utilizar o ambiente.

A instalação e configuração do MongoDB é simples e pode ser feita observando-se


os seguintes passos:
1. Faça download da versão compatível com seu computador em https://goo.gl/yHAk6y
2. No diretório principal do seu sistema, crie a pasta “data” (sem aspas) e, dentro
dela, a pasta “db” (sem aspas). Isso pode ser feito clicando com o botão direito
em seu disco C: e escolhendo “Criar Pasta”. Opcionalmente, entre no prompt
de comando e execute o comando mkdir c:\data\db.
3. Instale o programa. Após a instalação, navegue até a pasta onde o MongoDB foi

6
instalado e localize a pasta “bin” (sem aspas) e execute o programa mongod. Isso
irá iniciar o deamon do MongoDB. Após iniciar o programa, execute o programa
mongo para iniciar o aplicativo. As imagens abaixo mostram esse processo. Notem
que os caminhos exibidos podem ser alterados dependendo da instalação efetuada.

Figura 1 – Iniciando o Daemon do MongoDB

Figura 2 – Iniciando o banco nom-rel MongoDB


4. A instalação do software não altera os serviços do Windows. Caso queira que o
serviço seja iniciado automaticamente, é necessário registrá-lo com o comando
mongod --install --dbpath c:\data --logpath c:\MongoDB\Log\mongo_log.
txt. Notem que o caminho mostrado neste comando pode mudar dependendo
da forma como a instalação do software foi realizada.

Após a instalação e inicialização do software, teste seu funcionamento através do


comando show dbs;.

Figura 3 – Exemplo da execução do comando show dbs;

O comando show dbs; exibe uma listagem dos databases existentes. Dependendo
da instalação, o banco vazio local tem 0.078GB pré-alocado. Esse espaço é pré-alo-
cado por razões de desempenho e para garantir espaço sequencial para persistência.
O banco local é criado durante a instalação do software e seus arquivos ficam na pasta
data criada anteriormente.

Uma característica dos bancos de dados não relacionais é a facilidade de uso. Não

7
7
UNIDADE
CRUD

existe, por exemplo, o comando create database, o banco é criado no momento em que
é criada uma coleção. Para entrar em um banco específico, é utilizado o comando use.
O nome do banco não pode conter uma cadeia vazia, um ponto ou palavra reservada.
Exemplo: use banco;

Para compreender melhor, é importante definirmos Coleção: O MongoDB armazena


dados na forma de documentos. Os documentos são armazenados em formato
<chave:valor>. Uma coleção é um conjunto de documentos. A coleção só é criada
quando o primeiro documento é inserido. O exemplo, a seguir, mostra como se efetua
a contagem de documentos de uma coleção, como se acrescenta um documento à
coleção, e se efetua nova contagem e listagem de todos os seus documentos.

db.biblioteca.count();

db.biblioteca.insert({Nome:’Banco de Dados’, Autor:’Sandra Puga’});

db.biblioteca.count();

db.biblioteca.find();

db.biblioteca.find({Autor: “Sandra Puga”});

db.biblioteca.find({Autor: “Sandra Puga”}).pretty();

O método insert insere um documento a uma coleção. A operação irá criar a


coleção, caso ela não exista. A operação retorna um objeto WriteResult com o status
da operação. A sintaxe é db.collection.insert() onde db indica uma operação do banco,
collection é o nome da coleção e insert() é o método usado para incluir documentos
em uma coleção.

A operação de insert cria o atributo _id que consiste em um índice único (unique
index) produzido durante a criação de uma coleção. Este é sempre o primeiro campo
de um documento. Se o campo _id não for o primeiro em um documento, o servidor
move o campo para o início. Cada documento inserido possui seu próprio _id. Cada
_id é único. Normalmente, um _id é um tipo de dado ObjectId do BSON com 12
bytes que, assim, se organizam: 4 bytes indicam o timestamp da criação do objeto;
3 bytes identificam a máquina; 2 bytes mostram o identificador (id) do processo e 3
bytes correspondem ao contador, iniciado com um valor aleatório. Ordenar por _id é o
equivalente a ordenar por data de criação.O método getTimestamp() acessa a data de
criação do objeto. É possível outorgar valores a um atributo _id, mas o valor não pode
ser repetido. O comportamento é similar uma chave primária em um RDBMS. Esse
método pode conter qualquer tipo de dados BSON, com exceção de array. Expressões
regulares são desaconselhadas nesse campo em casos de replicação.

O método db.coleção.find() lista os registros de uma coleção e retorna um array


com os objetos da coleção, mesmo que ela tenha apenas um objeto. Os dados são
retornados em um cursor implícito e é preciso iterar o cursor para acessar o documento.
Se o cursor não for atribuído a uma variável usando a palavra-chave var, ele fará 20
iterações automaticamente. O método db.coleção.findOne() retorna apenas o primeiro
objeto encontrado. Usa-se find() para listagem de registros e findone() para consulta

8
de registros. Uma consulta vazia ({}) retorna todos os documentos de uma coleção. Vale
lembrar que não especificar uma consulta é o equivalente a efetuar uma consulta vazia.
Sendo assim, o db.coleção.find() é equivalente ao db.coleção.find({}). É possível, ainda,
efetuar uma consulta por igualdade {<campo>: <valor>}. Neste caso, serão listados
todos os campos com o valor especificado. Veja o seguinte exemplo:

db.biblioteca.find();

db.biblioteca.find({Autor: “Sandra Puga”});

O método find() trabalha com operadores aritméticos de comparação $lt (menor que),
$lte (menor ou igual), $gt (maior que), $gte (maior ou igual). O quadro 2, a seguir, com-
para o uso com comandos SQL tradicionais para facilitar a compreensão de seu uso.

Quadro 2 – Comparação dos operadores aritméticos do SQL com o MongoDB


SQL MongoDB
SELECT * FROM users db.users.find()
SELECT * FROM users WHERE age = 33 db.users.find({age: 33})
SELECT * FROM users WHERE age > 33 db.users.find({age: {$gt: 33}})
SELECT * FROM users WHERE age >= 33 db.users.find({age: {$gte: 33}})
SELECT * FROM users WHERE age < 33 db.users.find({age: {$lt: 33}})
SELECT * FROM users WHERE age <= 33 db.users.find({age: {$lte: 33}})

UPDATE users SET age = 33 WHERE name = ‘Bob’ db.users.update({name: “Bob”}, {$set: {age: 33}}, {multi: true})
UPDATE users SET age = age + 2 WHERE name = ‘Bob’ db.users.update({name: “Bob”}, {$inc: {age: 2}}, {multi: true})

Então, está acompanhando? Os quadros auxiliam a fazer as comparações, para que


você possa construir novos conhecimentos. Observe, a seguir, o quadro 3 que compara
o uso dos operadores com comandos SQL tradicionais, para facilitar a sua compreensão:

Quadro 3 – Comparação dos operadores lógicos do SQL com os do MongoDB


SQL MongoDB
SELECT * FROM users
db.users.find({age: {$gt: 33, $lt: 40}})
WHERE age > 33 AND age < 40
SELECT * FROM users
db.users.find({age: 32, name: “Bob”})
WHERE age = 32 AND name = ‘Bob’
SELECT * FROM users
db.users.find({$or:[{age:33}, {name:“Bob”}]})
WHERE age = 33 OR name = ‘Bob’
SELECT * FROM users
db.users.find(age: {$gte:32}, $or: [{name: “Bob”}, {job:
WHERE age >= 32 AND
“Salesman”}] })
(name = ‘Bob’ OR job=‘Salesman’)

O método update() modifica um ou mais documentos em uma coleção. Além disso,


esse método pode modificar um campo específico ou substituir um documento existente.
Se o parâmetro multi estiver ligado (TRUE), ele atualiza todos os documentos que
atendam ao critério de seleção. Se o parâmetro multi estiver desligado (FALSE), ele
atualiza apenas um documento.

O método update() ainda possui operadores para facilitar as operações de atualização


como $set que modifica o conteúdo de um campo específico e, se o campo não existir,

9
9
UNIDADE
CRUD

um novo campo será adicionado ao documento. Além disso, há os operadores: $inc,


que incrementa o conteúdo de um campo; $unset, que remove um campo de um
documento e $rename, que altera o nome de um campo em um documento.

O quadro 4, a seguir, compara o uso dos operadores com comandos SQL tradicionais,
para facilitar a sua compreensão:

Quadro 4 – Comparação entre os comandos de atualização do SQL com os do MongoDB


SQL MongoDB
UPDATE users SET age = 33 db.users.update({name: “Bob”}, {$set:
WHERE name = ‘Bob’ {age: 33}}, {multi: true})
UPDATE users SET age = age + 2 db.users.update({name: “Bob”}, {$inc:
WHERE name = ‘Bob’ {age: 2}}, {multi: true})

O método remove() remove os dados de uma coleção, mas ela continua existindo,
mesmo sem dados. A sintaxe geral é db.collection.remove( <query>, <justOne> )
onde <query> especifica os critérios de deleção. Para apagar todos os documentos de
uma coleção, basta especificar um documento vazio ({}). <justOne> define que será
apagado apenas um documento. O parâmetro deve ser configurado para true ou 1.

Observe o quadro 5, a seguir, que compara o uso dos operadores com comandos
SQL tradicionais, para facilitar a sua compreensão:

Quadro 5 – Comparação entre os comando de deleção do SQL com os do MongoDB


SQL MongoDB
DELETE FROM users WHERE
db.users.remove({name: “Bob”})
name = ‘Bob’

Vimos, nessa unidade, as operações CRUD (Create, Read, Update e Delete) em banco
de dados não relacional, exemplificado pelo banco de dados orientado a documentos
MongoDB. Além de abordar os aspectos relevantes da criação de objetos em banco de
dados não relacional, vimos como se dá o seu uso em operações de leitura, exclusão e
alteração de documentos.

Não deixe de fazer as leituras indicadas na unidade e as atividades, para que possa
construir e solidificar novos conhecimentos! Bom trabalho!!

10
Orientações para Leitura Obrigatória
Caro(a) aluno(a),

Considerando que a ideia central desta Unidade é lhe mostrar os principais conceitos
que envolvem o banco de dados não relacional, é de suma importância que primeiro
conheçamos os princípios de um banco de dados relacional.

Editado pela Elsiever Editora, ‘Introdução a Sistemas de Bancos de Dados’, de C.


J. Date, oferece uma introdução bastante completa ao amplo campo de sistemas de
bancos de dados.

O livro apresenta uma base sólida sobre os alicerces da tecnologia de bancos de da-
dos, ao mesmo tempo em que esclarece como o campo deve se desenvolver no futuro.

A edição de 2015 foi revista e atualizada com as tendências e desenvolvimentos dos


sistemas de bancos de dados.

Atento(a) a esses aspectos, inicie sua leitura pelo capítulo Arquitetura de Sistemas de
Banco de Dados , da página 28 a 46 – da obra de C.J. Date, Introdução a Sistemas de Banco
de Dados, disponível na Biblioteca Virtual Universitária.

Passe, então, para o capítulo Normalização Avançada I: 1FN, 2FN, 3FN, FNBC, da página
302 a 323. Em seguida, reveja os conceitos de Banco de Dados distribuído, da página 554 a
583 e os princípios de Word Wide Web e XML, da página 768 a 801.

Para acessar essa obra, percorra o seguinte caminho:


Após entrar em sua “área do aluno”, disponível em: https://goo.gl/PsPf6p, no menu à
esquerda da tela, clique em “Serviços”, depois em “Biblioteca” e, no centro da tela, clique
em “E-books - Bib. Virtual Universitária”. No topo da tela que abrirá haverá um campo de
busca para autor, título, assunto etc., nesse espaço digite “Introdução a Sistemas de
Bancos de Dados” (sem as aspas) e clique na capa que aparecer como resultado.
Para ler os capítulos e páginas indicados, utilize a seta ao lado direito da tela para avançar
página a página. Observe também que os ícones no rodapé da tela correspondem a
determinadas funções, entre as quais ampliar a visualização (zoom), marcar a obra como
favorita, imprimir trechos que escolher e pular para um número específico de página.
Referência: DATE, C.J. Introdução a Sistemas de Bancos de Dados. Trad. Daniel Vieira.
Rio de Janeiro: Elsiever Editora, 2015.

11
11
UNIDADE
CRUD

Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:

Vídeos
Big Data Storymap
https://goo.gl/DuYrlv
Big Data Architecture Patterns
https://goo.gl/muTwcy
Explaining Big Data
https://goo.gl/IVOuA2
Introduction to Hadoop
https://goo.gl/zzdg7K

12
Referências
DATE, C.J.. Introdução a Sistemas de Bancos de Dados. Trad. Daniel Vieira. Rio
de Janeiro: Elsiever Editora, 2015.

MongoDB.org, CRUD Operations. Disponível em: <https://docs.mongodb.com/


manual/crud/>. Acesso em 3 de dezembro de 2016.

13
13

Você também pode gostar