Sei sulla pagina 1di 14

Bancos Título

Inserir de Dados
Aqui
Inserir
Não Estruturados
Título Aqui
Banco de Dados Não-Relacional

Responsável pelo Conteúdo:


Prof. Esp. Milton Roberto y Goya

Revisão Textual:
Profa. Dra. Silvia Albert
Banco de Dados Não-Relacional

Nesta unidade, trabalharemos os seguintes tópicos:


• Introdução ao Tema
• Leitura Obrigatória
• Material Complementar

Fonte: iStock/Getty Images


Objetivos
• Introduzir outros objetos do banco de dados não-relacional
• Capped Collection
• Arrays
• Datas
• Índices

Caro Aluno(a)!

Nesta unidade, abordaremos operações com outros objetos do banco de dados não-
-relacional.

Veremos as coleções limitadas ou capped collections, operações com vetores ou arrays,


além de operações com data e uso de índice.

O principal objetivo desta unidade é não só levá-lo a entender os aspectos relevantes do


uso desses objetos, mas também a saber onde podem ser melhor aplicados para ajustar
as operações do banco de dados não-relacional.

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.

Bons Estudos!
UNIDADE
Banco de Dados Não-Relacional

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

Alguns objetos do banco de dados são usados para melhorar o desempenho geral
do sistema. Índices e capped collection são objetos que, tipicamente, auxiliam no
desempenho do MongoDB. Uma capped collection é uma coleção limitada, com um
tamanho fixo, que sobrescreve, automaticamente, as atualizações antigas sempre que
atinge o tamanho máximo. Dessa forma, ela é utilizada, principalmente, para garantir
desempenho, pois o otimizador trabalha melhor quando o espaço reservado para o
objeto é pré-alocado. Esses objetos comportam-se como um registro de eventos circular.

O tamanho de uma capped collection é especificada em bytes e o número de


documentos em uma capped collection é definido por um valor absoluto. Ao inserir
um documento em uma capped collection, primeiro é verificado o tamanho da coleção
e, só então, é verificada a quantidade de documentos.

Nesse tipo de coleção, os dados antigos são sobrescritos pelos novos, mas
preserva-se a ordem de inserção dos dados, sem a necessidade de índices adicionais.
Além disso, uma capped collection tem melhor desempenho em inserções massiva
de dados (BULK INSERT) e operações de pesquisa. Ela só pode ser criada através do
método createCollection(). Apesar das operações de inclusão, alteração e consulta
não sofrerem alterações, não é possível remover dados de uma capped collection.

É possível converter coleções típicas em capped collection. O método isCapped()


é usado para verificar se uma coleção é capped ou não. Devido a seu desempenho,
essas coleções são usadas internamente pelo banco de dados. Observe, a seguir, um
exemplo de criação de uma capped collection:

db.createCollection(“mycol”,{ capped :true, autoIndexID :true, size :8192,


max :10})

Os índices em MongoDB são similares aos dos bancos de dados relacionais. É


possível colocar um índice em qualquer atributo. Campos indexados podem ser de
qualquer tipo de dados, incluindo objeto ou array. Como no caso de índices de RDBMS,
é possível criar índices compostos usando vários atributos e índices exclusivos, que
garantem que valores duplicados não sejam permitidos.

Todo índice possui uma ou mais chaves. Chaves são atributos que são usados para
organizar internamente os dados. O índice pode ser criado em ordem crescente (1)
ou decrescente (-1). Vale lembrar que índices ocupam espaço em disco. Toda coleção
contém um índice no campo _id. A função createIndex pode ser usada para criar um
índice básico. Já os métodos dropIndex e dropIndexes são usados para eliminar índices.
Além disso, os índices de uma coleção podem ser listados pelo método getIndexes().

6
Existem vários tipos de índices. Dentre eles, destacamos:
• Índices de campo único: índice que inclui apenas os dados de um único campo
dos documentos em uma coleção. O índice pode ser criado em qualquer documento
ou sub-documento de uma coleção.
• Índices compostos: índice que inclui mais de um campo dos documentos em
uma coleção.
• Índices multikey: índice em um campo de array, adicionando uma chave de índice
para cada valor no array.
• Índices geoespaciais: índice que suporta pesquisas baseadas em geo-localização,
sendo armazenado em objetos GeoJSON.
• Índices de texto: índice que suporta busca em sequência de caracteres em documentos.
• Índice de hash: índice usado para manter as entradas de hash dos valores de campos
indexados, sendo utilizado em sharded clusters para suportar índices particionados.

Observe, a seguir, um exemplo de criação de índice de campo único:

db.ColNumbers.createIndex ({number:1}, {unique: true} );

Sabemos que vetores ou arrays são objetos comuns em ambientes de programação.


A sintaxe do MongoDB permite trabalhar com arrays através de alguns operadores
especiais para arrays. Apresentamos, a seguir, esses operadores:

$in - Procura por valores dentro de um array. Exemplo:

db.inventory.find( { qty: { $in: [ 5, 15 ] } } )

$nin - Procura por valores que não existem dentro de um array. Exemplos:

db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )

db.inventory.find( { qty: { $exists: true, $nin: [ 5, 15 ] } } )

$all - Retorna documentos que contenham todos os elementos de um array, sendo


esse o mesmo comportamento de $and. Exemplo:

db.articles.find( { tags: { $all: [ [ “ssl”, “security” ] ] } } )

$size - Retorna qualquer array que tenha o número especificado de elementos. Exemplo:

db.inventory.find({a: {$size: 3}})

$push - Adiciona um elemento a um array. Exemplo:

db. articles.update({_id: 1}, { $push: { names: “Bob” }})

$pushAll - Adiciona mais de um elemento a um array. Exemplo:

db. inventory.update({_id: 3}, { $pushAll: { names: [“Peter”,”Joana”,”Mario”] }})

7
7
UNIDADE
Banco de Dados Não-Relacional

$pop - Elimina o último elemento de um array. Exemplo:

db. articles.update({_id: 2}, { $pop: {names:1} })

$pull - Elimina todas as ocorrências de um elemento específico em um campo ou


array. Exemplo:

db. articles.update({}, {$pull: { data: 1 } })

$pullAll - Elimina todas as ocorrências de uma lista de valores em um campo ou


array. Exemplo:

db. articles.update({}, {$pullAll: { data: [4,8] } })

Ao trabalharmos com datas devemos levar em consideração que o valor das datas
é armazenado internamente como um inteiro de 64 bits (com valores positivos e
negativos) que contém a quantidade de milissegundos desde primeiro de janeiro de
1970. Valores positivos indicam datas depois deste marco inicial e valores negativos
indicam datas anteriores a ele. As funções Date() ou ISODate() trabalham de maneira
análoga em manipulações de datas no JavaScript.

Alguns métodos podem ser usados para simplificar a operação com datas:
• Date() - Retorna uma data como texto ou como um objeto do tipo Date.
• new Date() - Retorna a data corrente como um objeto do tipo Date.
• new Date (“<YYYY-mm-dd>”) - Retorna à data especificada no texto (“<YYYY-
mm-dd>”) como um objeto do tipo Date.

Exemplo:

db.ColDate.insert({aDate: new Date() });

db.ColDate.find();

var myDateString = Date();

var doc = db.ColDate.findOne();

doc.aDate;

Além disso, existem métodos que extraem parte de uma data. Apresentamos, a
seguir, esses métodos:
• getMonth() - Retorna o mês de uma data. O primeiro mês é o mês 0 (janeiro) e o
último mês é o mês 11 (dezembro).
• getDate() - Retorna o dia do mês.
• getFullYear() - Retorna o ano com quatro dígitos.

Exemplo:

doc.aDate.getDate() + ‘/’ + (doc.aDate.getMonth() + 1) + ‘/’ + doc.aDate.


getFullYear();

8
Vale lembrar que em cálculos com datas, as operações de soma ou subtração de datas
sempre retornam valores em milissegundos. É necessário converter os microssegundos
na unidade de tempo desejada. Exemplo:

Calcular a quantidade de dias entre 01/01/2016 e hoje.

var x = new Date();

var y = new Date(‘2016-01-01’);

var z = x - y;

z/(24*3600*1000);

Vimos, nessa unidade, outras operações com outros objetos do banco de dados não-
-relacional como as coleções limitadas ou capped collections, operações com vetores ou
arrays, além de operações com data e uso de índice.
Esperamos ter alcançado o objetivo de levá-lo não só a entender os aspectos relevantes do
uso desses objetos, mas também a saber onde podem ser melhor aplicados para ajustar as
operações do banco de dados não-relacional.
Não deixe de fazer as leituras indicadas na unidade e as atividades, para que possa construir
e solidificar novos conhecimentos! Bom trabalho!

9
9
UNIDADE
Banco de Dados Não-Relacional

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 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


dados, 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 suas leituras 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 esta obra, percorra o seguinte caminho:
Após entrar em sua “área do aluno” https://goo.gl/ViBv20, 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.

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

  Sites
Array Update Operators
https://goo.gl/SQhXpF
Date Aggregation Operators
https://goo.gl/vkvLXn

 Vídeos
Capped Collections
https://youtu.be/-N9i-YXoQBE

11
11
UNIDADE
Banco de Dados Não-Relacional

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

MongoDB.org, Capped Collections. Disponível em: <https://docs.mongodb.org/


ma-nual/core/capped-collections/>. Acesso em 3 de dezembro de 2016.

MongoDB.org, Array Update Operators. Disponível em: <https://


docs.mongodb. com/manual/reference/operator/update-array/> Acesso em 3 de
dezembro de 2016.

MongoDB.org, Date Aggregation Operators. Disponível em: <https://


docs.mongo-db.com/manual/reference/operator/aggregation-date/> Acesso em 3
de dezembro de 2016.

12

Potrebbero piacerti anche