Buscar

BANCOS DE DADOS NÃO ESTRUTURADOS_II

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Inserir Título Aqui 
Inserir Título Aqui
Bancos de Dados
não Estruturados
CRUD
Responsável pelo Conteúdo:
Prof. Esp. Milton Roberto y Goya
Revisão Textual:
Profa. Dra. Silvia Albert
Nesta unidade, trabalharemos os seguintes tópicos:
• Introdução ao Tema
• Orientações para Leitura Obrigatória 
• Material Complementar Fonte: iStock/Getty Im
ages
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!
CRUD
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
7
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
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
9
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 
WHERE age > 33 AND age < 40 db.users.find({age: {$gt: 33, $lt: 40}})
SELECT * FROM users 
WHERE age = 32 AND name = ‘Bob’ db.users.find({age: 32, name: “Bob”})
SELECT * FROM users 
WHERE age = 33 OR name = ‘Bob’ db.users.find({$or:[{age:33}, {name:“Bob”}]})
SELECT * FROM users 
WHERE age >= 32 AND 
(name = ‘Bob’ OR job=‘Salesman’)
db.users.find(age: {$gte:32}, $or: [{name: “Bob”}, {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
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 
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})
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 
name = ‘Bob’ db.users.remove({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
11
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
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
13
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

Continue navegando