Escolar Documentos
Profissional Documentos
Cultura Documentos
1ª edição
Londrina
Editora e Distribuidora Educacional S.A.
2019
2
© 2019 por Editora e Distribuidora Educacional S.A.
Todos os direitos reservados. Nenhuma parte desta publicação poderá ser
reproduzida ou transmitida de qualquer modo ou por qualquer outro meio,
eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer outro tipo de
sistema de armazenamento e transmissão de informação, sem prévia autorização,
por escrito, da Editora e Distribuidora Educacional S.A.
Presidente
Rodrigo Galindo
Conselho Acadêmico
Carlos Roberto Pagani Junior
Camila Braga de Oliveira Higa
Carolina Yaly
Giani Vendramel de Oliveira
Juliana Caramigo Gennarini
Nirse Ruscheinsky Breternitz
Priscila Pereira Silva
Tayra Carolina Nascimento Aleixo
Coordenador
Nirse Ruscheinsky Breternitz
Revisor
Cecilia Sosa Arias Peixoto
Editorial
Alessandra Cristina Fahl
Beatriz Meloni Montefusco
Daniella Fernandes Haruze Manta
Hâmila Samai Franco dos Santos
Mariana de Campos Barroso
Paola Andressa Machado Leal
ISBN 978-85-522-1603-2
CDD 004
____________________________________________________________________________________________
Thamiris Mantovani CRB: 8/9491
2019
Editora e Distribuidora Educacional S.A.
Avenida Paris, 675 – Parque Residencial João Piza
CEP: 86041-100 — Londrina — PR
e-mail: editora.educacional@kroton.com.br
Homepage: http://www.kroton.com.br/
3
BANCOS DE DADOS NÃO RELACIONAIS (NoSQL)
SUMÁRIO
Apresentação da disciplina__________________________________________________ 05
4
Apresentação da disciplina
5
Bancos de dados não
convencionais: introdução aos
principais modelos de dados
NoSQL
Autor: Sergio Eduardo Nunes
Objetivos
Caro aluno, no início dos anos 2000, grande parte das salas das casas
possuíam um cantinho com um desktop, com acesso à internet, que
era utilizado pelas pessoas da família. Anos depois, com a maior oferta
de internet móvel por parte das operadoras de telecomunicações e o
acesso da população a smartphones, as pessoas passaram a consumir e
gerar grande quantidade de dados.
7
que posteriormente passou a ser mantido pela fundação Apache.
Finalmente, em 2009, uma empresa chamada 10Gen junto com a
Fundação Apache lançou o Mongo DB, que é um banco de dados não
relacional orientado a documentos. O sistema de banco de dados foi
escrito em C++, e a linguagem de manipulação de dados escolhida
foi o JSON.
CPFEB
Telefone
Nome
Client e 1 n)
Venda Produtos
--------
f-----e
f-o
Codigo
i - o Nome
varidade
Cod_Produto
CPF_Client e
Data
Id
8
Figura 2 – Chaves Estrangeiras
ven.i.. J ~~
~
---e Cod_Produto
CPtF_ Olien1te
O.ata
Id
1
8 Nome varchar (80 ) not nall ,
9 Id_Capita o char (l ) not nall ,
10 Foreign key Id_Capitao references Capitao (Id)
11 .> ;
9
No exemplo acima na tabela Capitão a chave primária Id foi declarada
para receber números inteiros. Já a chave estrangeira Id_Capitão
na tabela Navio foi declarada como char, o que possibilita que o
usuário possa cadastrar uma letra. Dessa forma, um Navio poderia
não encontrar o relacionamento correto com o Capitão e o banco
relacional acabaria apresentando uma inconsistência, devido ao erro no
desenvolvimento do banco de dados.
10
PARA SABER MAIS
Compreender a arquitetura de banco de dados do tipo
relacional e não relacional permite que o profissional de
tecnologia da informação possa escolher a mais adequada
para o seu projeto de maneira mais assertiva.
O artigo de Fernandes e Silva (2016), intitulado Comparativo
Técnico de tecnologias de banco de dados: Relacional
e NoSQL, aborda, de forma expositiva, uma análise
comparativa entre as duas arquiteturas. E permite que se
possa compreender algumas implementações possíveis em
cada um dos tipos apresentados.
11
• Durabilidade (Durability): deve ser garantido que, após uma transação
que tenha tido sucesso ao ser executada (commit), e posteriormente
ocorra alguma falha, o que foi feito não seja mais alterado.
Disponibilidade
12
Assim, os postulados do CAP determinam que:
2. NoSQL
.Â.
13
Essas características não chamaram a atenção apenas de profissionais
de tecnologia da informação. Empresas como a Amazon, Google e
Facebook viram nessa arquitetura uma solução altamente escalável,
o código livre, e a capacidade de armazenar, processar e gerenciar
grandes volumes de dados, de tipos variados.
Chave-valor
Orientado a documentos
14
Figura 5 – Script JSON
14 {
15 Usua~io : 'Serginho' ,
16 DataPostagem : new Date ,( ' 2019-07-06' ),
17 Assunto : 'Banco de dados NoSQL' ,
_'3 Texto : 'Orientado a docurr.entos' ,
19 Come nt arios : [
20 {Us uaria : 1 voão 1 , comentaria : 'Ótima opção pa=a me~s projetas' },
21 {Us u ario : 'Maria' , comen taria : 'H'J.ito utilizado pelas empresas' } ,
22 {Usuaria : 'vosé • , comentario : 'Utilizado em alguns jogos online• }
23
24 }
Colunar
Grafo
15
Figura 6 – Exemplo de Modelo em Grafo
Alguns bancos de dados que utilizam esse tipo são: neo4j, OrientDB,
AllegroGraph e Bitsy (Java).
Isso criou um novo mercado, pois a estrutura NoSQL possui quatro tipos
(chave-valor, orientado a documentos, colunar e grafos) com cada uma
delas voltada para uma necessidade, fazendo com que o mercado de
software voltado a NoSQL disponibilizasse diversas opções que podem
ser conhecidas a seguir (serão apresentados dois SGBDs de cada um dos
tipos discutidos anteriormente).
16
Dynamo DB – NoSQL do tipo chave-valor
17
O grande atrativo do Redis é a compatibilidade com mais de 40
linguagens de programação, entre elas: C, Delphi, Java, Lua, PHP,
Pythons, R, etc.
18
Devido às características técnicas, algumas grandes empresas de ponta
no mercado utilizam esse SGBD, entre elas: eBay, DirecTV, Linkedin, Sky
e Comcast.
ASSIMILE
19
Figura 7 – Exemplo de CQL
'40 CREATE KEYSPACE IF NOT EXISTS "teste"
'41 WITH replication = { 'class' : 'Sirr.pleStrategy' , 'replication_ factor' : 1 } ;
'42
'43 CREATE TABLE "teste" . "contatos"
.g.g Id uuid ,
'45 Nome t ext ,
'46 Email tex t ,
'47 Wbat s app te x t ,
.g 8 PRIMARY REY (Id)
'49 ) ;
20
OrientDB – NoSQL do tipo orientada a grafos
21
Mas nesse momento você deve estar se perguntando: quais são as
vantagens em se utilizar um banco de dados do tipo NoSQL? Pois bem,
mais uma vez vale a pena ressaltar que nenhum modelo é superior a
outro, mas sim, mais adequado para determinados projetos.
(1999, p. 14)
22
Porém, apesar de todas as vantagens apontadas até o presente
momento, quando se tem a necessidade de banco de dados do tipo
NoSQL ocorrem algumas perdas de funcionalidades. Em comparação
às funções encontradas na maioria dos sistemas de gerenciamento
de banco de dados do tipo relacional, alguns aspectos deixam de ser
utilizados, entre eles podemos destacar: as consultas que utilizam
join, group by, order by; as transações ACID são feitas com base no
CAP; a falta de suporte a NoSQL por parte de algumas ferramentas de
desenvolvimento.
TEORIA EM PRÁTICA
23
no qual o usuário deve escalar um time, onde pode ser
escolhido um jogador por posição, e de qualquer clube.
Conforme o desempenho em campo do jogador escalado
pelo usuário do aplicativo, são acumuladas as pontuações.
Os pontos são contados da seguinte forma: quando
o jogador escalado tem um bom desempenho, a sua
pontuação aumenta (gol, drible, passes, etc), e em caso
de faltas, cartões e gol contra, são retirados pontos do
jogador. Ao final da rodada é feita a somatória de pontos da
escalação feita pelo usuário, e ao longo do campeonato é
feito um rankeamento com as melhores pontuações.
Com base no cenário explicado dos aplicativos de
campeonato brasileiro, qual o tipo de banco de dados
NoSQL indicado para estruturar os dados? Chave-valor,
orientado a documentos, colunar ou grafos?
VERIFICAÇÃO DE LEITURA
24
III. A disponibilidade tanto em banco de dados relacional,
quanto não relacional, é a mesma.
a. Relacional.
b. Colunar.
c. Orientado a documentos.
d. Valor-chave.
e. Grafos.
25
3. Uma escola de cursos preparatórios para certificação
de redes deseja utilizar um banco NoSQL para que seja
possível fazer uma análise de mercado para direcionar
as propagandas aos prováveis alunos.
a. Valor-chave.
b. Orientado a documentos.
c. Colunar.
d. Grafos.
e. Relacional.
Referências
AllegroDB. Disponível em:<https://franz.com/agraph/allegrograph/>. Acesso em: 06
jul. 2019.
BREWER, E. Towards Robust Distribued. 2000. Disponível em: <https://www.
cs.berkeley.edu/brewer/cs262b-2004/PODC-keynote.pdf>. Acesso em: 07 jul. 2019.
CASSANDRA. Disponível em:<http://cassandra.apache.org/>. Acesso em: 06 jul. 2019.
CouchBase. Disponível em:<https://www.couchbase.com/>. Acesso em: 06 jul. 2019.
DYNAMO. Disponível em:<https://www.allthingsdistributed.com/files/amazon-
dynamo-sosp2007.pdf>. Acesso em: 06 jul. 2019.
MariaDB. Disponivel em:<http://www.wampserver.com/en/>. Acesso em: 06
jul. 2019.
MongoDB. Disponível em:<https://www.mongodb.com/>. Acesso em: 06 jul. 2019.
OrientDB. Disponível em:<http://www.orientdb.com/docs/last/>. Acesso em: 06 jul. 2019.
PRAMOD, J; FOWLER, M. NoSQL ESSENCIAL: Um guia conciso para o mundo
emergente da persistência poliglota. São Paulo: Novatec, 2013.
26
PHYTON. Disponível em:<https://www.python.org/>. Acesso em: 06 jul. 2019.
REDIS. Disponível em:<https://redis.io/>. Acesso em: 06 jul. 2019.
SILBERSCHATZ, A. Sistema de banco de dados. Rio de Janeiro: Elsevier, 2010.
TOTH, Renato Molina. Abordagem NoSQL–uma real alternativa. Universidade
Federal de São Carlos, 2016. Disponível em: <https://dcomp.sor.ufscar.br/verdi/
topicosCloud/nosql_artigo.pdf>. Acesso em: 07 jul. 2019.
Treinamento CouchBase. Disponível em:<https://learn.couchbase.com/
store?utf8=%E2%9C%93&ss=1&ct=78327&commit=Filter>. Acesso em: 08 jul. 2019.
► Gabarito
Questão 1 – Resposta: B
Resolução: a primeira afirmativa está incorreta, pois no banco do
tipo relacional a configuração e planejamento da escalabilidade é
difícil de se fazer, mas ainda assim é possível.
A segunda afirmativa está correta, pois o banco de dados NoSQL
não necessita de consistência dos seus dados, porque não são
necessários relacionamentos.
A terceira afirmativa está incorreta, pois devido à arquitetura ser
diferente nos dois tipos de banco de dados, a disponibilidade pode
ser diferente, conforme a taxa de processamento.
Questão 2 – Resposta: B
Resolução: no banco de dados NoSQL do tipo colunar, todos os
registros inseridos no BD ficam alocados em colunas diferentes.
Dessa forma, algumas linhas não possuem o mesmo número de
colunas que outras. Esse tipo de banco de dados é comumente
encontrado em aplicações online.
Questão 3 – Resposta:D
Resolução: no banco de dados NoSQL do tipo grafos, a busca
pelas informações é feita pela classificação dos vértices e arestas,
representando a interconectividade. Nesse caso, temos três
grandes grupos que necessitam ser interligados para que possam
gerar as informações desejadas.
27
Modelo de sintaxe XML e JSON
Autor: Sergio Eduardo Nunes
Objetivos
Para isso, Vieira et al. (2012) definem que as estruturas de dados são
classificadas como:
29
• Dados Estruturados: são banco de dados organizados com
obediência às linhas e colunas. Isso é possível, pois as informações
são armazenadas em uma estrutura na qual as colunas são
nomeadas, deixando bem claro o tipo de dado que poderá ser
inserido. Para uma melhor compreensão, observe o script SQL
(Structured Query Language) representado na Figura 1.
30
esperados. Ainda que em alguns projetos exista a possibilidade, devido
à característica dos dados, de se optar por mais de um tipo de estrutura
de dados, fica a critério do administrador do banco de dados determinar
qual dos tipos se encaixa melhor nas necessidades encontradas.
Nesse contexto, existe uma variante dos tipos de dados, que são os
metadados. Rêgo (2013) define que são estruturas encontradas em
banco de dados, que descrevem a estrutura e os significados dos dados.
Basicamente, eles visam acrescentar informações aos dados, podendo,
de alguma forma, contribuir para que a estrutura fique mais organizada.
Os metadados são utilizados pela técnica de XML, e permitem, por meio
das Tags, definir o tipo de dado que está sendo manipulado.
M etada dos
~ ~
Caráter Técnico Caráter de Negócios
31
• Metadados de caráter de negócios: voltado à geração de relatórios
com a saída correta, como também na transformação de dados
em informações.
32
dados. Com a sua evolução, foi possível perceber que a linguagem se
tratava de uma ferramenta eficiente e estruturada para a manipulação
de dados provenientes da rede mundial de computadores.
ASSIMILE
33
A sintaxe utilizada pelo XML é baseada no mesmo conceito do
HTML. Consiste em utilizar tags, tornando, assim, uma ferramenta
útil para diversas soluções, pois tem algumas características
interessantes para a área de tecnologia da informação, conforme
apontadas a seguir:
2 ? xml v ersion = 11
1.0 11 ?
3 - <cliente- i:nfo>
'4 <nome>Sieriginho Nun es·< / name>
5 <empresa>Kroton < / empresa>
6 ·< whtas> ( 99 ) 99999-9999< / whtas >
7 < / cliente- infa>
Fonte: elaborada pelo autor.
34
Assim como qualquer outra linguagem, o XML possui regras de sintaxe,
estruturadas conforme apresentado na Figura 4.
Tags Texto
~ - - -A-tr-ib-ut-0s
---
i
/
- - ~ 1·
Declaração XML
35
Referências
Texto
<version>exemplo
</version>
36
Tags
<raiz>
<filho_1>...</filho_1>
<filho_2>...</filho_2>
<filho_3>...</filho_3>
<filho_4>...</filho_4>
</raiz>
37
Independentemente de qual for a linguagem de programação escolhida,
todo e qualquer desenvolvedor sabe da importância em se comentar
um código. Isso faz com que as partes que compõem um programa
possam ser identificadas e entendidas por qualquer desenvolvedor,
facilitando assim novas implementações, correções e manutenções. No
XML, a sintaxe para esse fim é: <!— Comentários —>. Um exemplo pode
ser observado na Figura 6, onde no script da Figura 5 foram inseridos
comentários para identificar e entender as linhas da programação.
Atributos
Serginho Nunes
</atributos>
38
Para isso, algumas regras devem ser seguidas:
• Um mesmo atributo não pode ser utilizado mais do que uma vez
em uma mesma tag.
• Case sensitive, ou seja, diferencia maiúsculas de minúsculas.
39
próprio documento. Ou seja, não ocorre nenhuma chamada
de um arquivo externo.
• DTD Externo: quando o elemento do DOCTYPE possuir
a palavra reservada SYSTEM “nomeDocumento.dtd”,
significa que está ocorrendo uma referência para um
documento externo. Isso é similar à referência às folhas de
estilo CSS para HTML.
40
Figura 9 – DTD extreno
!<"? xml ve:::sion = 1 1 1. O 1 1 ?~
~ < ! DOCTYPE S Y STEM "' e x e mp l aEx t e r :n.o . dt ~ "
This XML file does not app earr to have any style infonnartion
Y <aviso>
<para>Grupo de alunos </para >
<de>Ser gi nho Nunes</de >
<assu nto >Re cado !</ ass unto>
<texto>Vamos es t uda r NoSQL???</ texto>
</a viso>
41
3. Linguagem JSON e a sua sintaxe
Segundo Bassett (2015), assim como o XML, no início dos anos 2000 as
aplicações web começaram a tomar outros rumos. Naquela época, as
execuções eram feitas do lado do servidor (server side) e isso deixava as
interações lentas e ineficientes, pois, a cada interação, era necessário
carregar a página inteira novamente. Para solucionar esse problema
surgiu o JavaScript, que permitiu que os dados fossem carregados e
manipulados diretamente do lado do cliente (front side).
42
Para Sistemas de Gerenciamento de bancos de dados
relacionais:
43
Um dos atrativos da linguagem está na sua simplicidade quanto ao
seu formato. Para isso, observe, na Figura 11, uma comparação entre
XML e JSON.
!O
9 <,xml ve r sio~ "' " 1 .0" s
<regi:stro>
1
1
{,.
l
2 id" : - ,
11
12
13
14
<id>l </J.d>
<nome>Serginho Nones</ nome>
<funcao>Aotor</funcao>
</ reg1.5'tro>
1
1
3
1 l " nome n : 11 Sergir-.ho Nu!'les 11 ,
"fu."'lcaoº : "Autor" }
44
Figura 12 – Exemplo de Script JSON
5 - rre stu dantes'" : [
6 { "primeiroNome r1 : rr'Ayrton r1 , nul timoNome rr : rrsenna rr•} ,
7 { "primeiroNomerr : rr'A llaor' , rr'ultimoNome 'rr : rrTu ringrr },
{ r'p:rimeiroNome r1 : rr'E ob rr' , r1u1 timoNome" : ª Mairley rr}
9 ]
45
Conforme pode ser observado na Figura 13, os tipos básicos são
divididos em:
• String (linha 12): são colocados entre aspas, podendo ser utilizadas
as simples ou as duplas.
• Número inteiro (linha 13): não necessita de aspas.
• Número real (linha 14): não necessita de aspas. Para representar a
parte decimal, deve-se utilizar ponto “.”.
• Booleano (linha 15): podem assumir somente os valores “True”
ou “False”.
• Nulo (linha 16): um atributo que permite receber valor nulo
(lembre-se de que nulo é diferente de zero).
Caro aluno, com isso, podemos concluir que os formatos XML e JSON
permitem um suporte eficiente em bancos de dados não relacionais,
46
com uma estrutura linguística simples, próximo às linguagens HTML
e JavaScript. São de fácil implementação, com ampla documentação
disponível em seus respectivos sites oficiais, já referenciados.
TEORIA EM PRÁTICA
As linguagens XML e JSON possuem uma escrita
relativamente simples em relação a linguagens mais
complexas como Java ou C. A sua integração com banco
de dados relacional ou não, e com diversas linguagens de
programação, fez com que grandes empresas de tecnologia
e desenvolvedores voltassem as suas atenções para ambas.
Em termos práticos, significa dizer que tais linguagens, por
meio de poucos comandos, permitem uma interação tanto
com a aplicação quanto com o sistema de gerenciamento
de banco de dados. Em aplicações web, ambas as
linguagens são largamente utilizadas.
Com base nisso, um site que comercializa jogos de
videogame fez uma captura de informações do que os
usuários mais buscam dentro do site, a fim de direcionar
as ações comerciais. O importante para essa tarefa é
a organização das informações como: título, console,
categoria e valor.
Com base no exposto, como essas informações ficariam nas
linguagens XML e JSON?
47
VERIFICAÇÃO DE LEITURA
48
I. O DTD faz a declaração do tipo de documento.
49
Referências
BASSETT, Lindsay. Introdução ao JSON: um guia para JSON que vai direto ao ponto.
São Paulo: Novatec, 2015.
BERTHOLD, Daum. Modelagem de objetos de negócio com XML: abordagem com
base em XML Schema. Rio de Janeiro: Elsevier, 2004.
BRAY, T. (editor). The JavaScript Object Notation (JSON) data interchange
format. 2014. Disponível em:<https://tools.ietf.org/html/rfc7159>. Acesso em: 22
jul. 2019.
GARRETT, Felipe. Metadados: como as fotos online revelam mais do que deveriam
na internet. 2017. Disponível em: <https://www.techtudo.com.br/noticias/2017/06/
metadados-como-suas-fotos-online-revelam-mais-do-deveriam-na-internet.ghtml>.
Acesso em: 15 jul. 2019.
RÊGO, B. L. Gestão e governança de dados: promovendo dados como ativo de
valor nas empresas. Rio de Janeiro: Brasport, 2013.
MySQL. Disponível em: <https://dev.mysql.com/doc/refman/5.7/en/json.html>.
Acesso em: 20 jul. 2019.
MongoDB. Disponível em: <https://www.mongodb.com/>. Acesso em: 20 jul. 2019.
NEO4J. Disponível em: <https://neo4j.com/developer/guide-import-json-rest-api/>.
Acesso em: 20 jul. 2019.
PostgreSQL. Disponível em: <https://www.postgresql.org/about/news/1481/>.
Acesso em: 20 jul. 2019.
VIEIRA, Marcos R.; FIGUEIREDO, Josiel M.; LIBERATTI, Gustavo; VIEBRANTZ Álvaro
M. Bancos de dados no SQL: conceitos, ferramentas, linguagens e estudos de
casos no contexto de Big Data. Cuiabá: Simpósio Brasileiro de Banco de Dados,
2012. p. 30.
W3C. Disponível em: <https://www.w3.org/standards/xml/>. Acesso em: 16 jul. 2019.
Gabarito
Questão 1 – Resposta: C.
Resolução: trata-se de uma linguagem de marcação derivado SGML
(Standard Generalized Markup Language – Linguagem Extensível de
Marcação Genérica), com características semelhantes ao HTML,
pelo motivo de apresentar abertura e fechamento de Tags.
50
Questão 2 – Resposta: B.
Resolução: a afirmativa I está correta, pois o DTD faz com que
sejam acordadas as regras gramaticais com a estrutura do XML
utilizada no documento.
A afirmativa II está incorreta, pois o XML não é uma linguagem que
permite orientação a objetos.
A afirmativa III está correta, pois, no cabeçalho, é possível fazer um
apontamento para um DTD externo.
Questão 3–Resposta: E.
Resolução: o formato do JSON é baseado no conceito de chave/
valor, como, por exemplo: {
“Cidade”: “São Paulo”,
“Ano”: 2019
}
51
Estrutura do MongoDB e Hadoop
e seus usos práticos
Autor: Sergio Eduardo Nunes
Objetivos
53
Para melhor compreensão do formato da estrutura de um banco
de dados orientado a documentos, observe o script desenvolvido
na Figura 1.
54
Figura 2 – Chave-Valor X Orientado a Documentos
ASSIMILE
Uma curiosidade a respeito do termo NoSQL está
relacionada à ausência da linguagem utilizada para a
manipulação de banco de dados, que tem como linguagem
básica o SQL. Porém, o termo inicialmente não seria esse.
A intenção era se referir à ausência de relacionamento
entre tabelas. Então, o nome escolhido foi NoREL (Not
Relational – Não Relacional). Porém, o nome NoSQL ganhou
popularidade entre os profissionais de banco de dados.
55
necessárias já estão contidas no próprio documento. No mercado, é
possível encontrar diversos sistemas de gerenciamento de banco de
dados orientado a documentos. Dentre os mais conhecidos, pode-se
destacar o MongoDB.
2. MongoDB
- MongoDB
200
+ Redi<
Cassandra
100
.. ...
] 40 + HBase
u
e
..
~ 20
8., -
Am.uon DynamoDB
N•n4J
.,,s 10
2
V-
e ~ebruarv 2018. 08-EnQones.com
20 13 2014 20 ü 2016 201/ 2018 1/11 'f'
56
Segundo Hows et al. (2015), o projeto da primeira versão do MongoDB
iniciou-se em 2007, porém só foi concluída em 2009 pela empresa
10gen, e código com licença GNU AGPL (Affero General Public License).
Já na sua primeira versão, era possível fazer a integração com as
linguagens de programação: C, C++, C#, Java, JavaScript, PHP, Python e
Ruby, demonstrando como o banco de dados possuía compatibilidade
com diversas tecnologias.
• SQL:
57
Figura 4 – Criação de tabelas em SQL
1 - create· ta.ble t b l _ u se r (
2 I d int not uull. primary key a u t o_ inc r e ment ,
3 Nome varchar ( 50 ) not null ,
4 I dade int ,
5 Pro f i ssaa varchar ( 32 ) not null.
6 ) ;
7
insert tbl u ser values 1( 0 , "Sergiru~o" , 42 , "Professorrr );
• JSON (MongoDB):
• SQL:
58
Figura 6 – Exemplo de script para excluir tabela em SQL
• MongoDB:
• SQL:
sel e ct * f r om t bl u ser ;
• MongoDB:
Ainda, para aplicar filtros por meio da palavra reservada WHERE, temos:
59
• SQL:
• MongoDB:
• SQL:
• MongoDB:
60
61
digitado a palavra mongo, que vai fazer com que o MongoDB inicie o seu
instalação e aplicar as sintaxes discutidas até o momento no MongoDB,
1~ ►I
O processo de instalação (manual completo com instalação, sintaxe e
[mi
gerenciamento de banco de dados possui suporte para Windows 64,
,,...,
para isso é necessário fazer o download no site oficial. O sistema de
><
-..... Q,) i:: -i::: :e
Caro aluno, nesse momento você irá compreender os processos de
<.:>
em sistemas operacionais Windows, após a instalação é necessário
a
<.:> <.:>
Com o prompt de comando aberto, deve-se digitar mongod, que é
V Q,)
-1,.)
....!Ci Q,)
-1,.)
Q,)
!Ci
.:7):.
::: .....::> ...::l i::~
0■ :.
o Q,)
IZ Q,)
,.,; ::
•.... Q,)
:. ....
~
Q,) <.:> "
<.:>
.....
:::)
!Ci o O.i:i
~
sr
co
Q,)
:. .., Q,) E :,, .., !Ci
.....~
•,-4 (,')
funcionamento, conforme pode ser observado na Figura 14.
Q,) N o o i::·.-<
G? M i:: ....." -1,.) -1,.) o-i:::
M Q,) -1,.) i:: :e
L'- ..::
.., ..,!Ci :: e: G? 0.l.i:i
N
.....o i:: 0.l"i::i
~
.... " !Ci
.....o &:
X
.....X
....
..
..... i::
o
..... -..,
. ....
-1,.)
!Ci
E
-1,.)
=i. .... i::
li
0.l"i::i
-1,.)
!Ci
:.
Q,)
:::
..,Q,)
.....
o
<+.
.....e:
-1,.)
i::
Q,)
!Ci E
i:: E
Q,) o
<.:>
~
=i. E .i:i
.......... ,....,
~
- .,..
..,o ....
.....
!Ci
i::
~
Q
o 't;;
....o :.::
a ....
o .:7) o
0.l...::l !Ci...::l...::l o...::i ..... -1,.) i::
:.o :::oo I O i:: :: Q,)
.... o o
.,. IZ IZIZ OI:.:: o :e <+. :.'
(,') E,-1 "f-,1 E,--1 ~ E,--1 E ,.,; .i:i ~ Q,)
0.lZ·.-<ZZ 0.lZ
-i:::o..::oo r,o
G?
U-1->UU
.... u
-i:::
Q,)
G?
.,.."
-i:::
V
....
!Ci
.....
!Ci
-
-1,.)
.....
:::
Q
o
.:7)
i::
0.l"i::i
.., .....
..:: i::
E
·'"1- (1)~-1""'"'1-
.... ..... !Ci ::> o
;:. ~
. :.ISl.i:IISllSl :ã:ISl
o IS) !Ci IS) IS)
""'M G?MM •M
IS)
.i:i
1
-i:::
::
-1,.)
i::
Q,)
E
!Ci
Q,)
.i:i
...::l
IZ
:::)
:e
-1,.)
G? "
' .....
::> IS) •.... IS) IS) -i::: IS)
....o ....:,,o .... Q,) Q,) i:7l..::
!Ci 1 "i::i 1 1 Q,) 1
..::,.., NN.-<N
Q,) sr o sr sr ,... sr
.i:IN..,NN !CIN
<.:>
Q,)
=i.
Q,)
....
..... ..,
:::
- Q,)
.:7)
.:7)
::
G?
.....1:-1->
:. Q,)
o.-<
'-1,.)
t -i::: -1,.).i:i
..... !Ci
-~
G? L'- M L'- L'- G? L'- !Ci o
..... IS) i:: IS)
' IS) IS) <+. ; -1,.) -1,.) i:; G?
iniciar os serviços.
!Ci
..:; 111S) 11 11•,-I
-1->M •M M
lt
M G? o -i::: G? -i::: º""'
E"i::i
IS) IS) IS) IS) -1,.) IS) ::r, i::
<+. " 1 li U Q li
~ ::ri ::s :::: !Ci Q,) ::r,
-NC'-NN C:N
MNM,-, ,.., Q
o ::
-1,.) i:: o o
..... ::r,:,, G? :. ..,
Q,) ....
•f,,,,11.,.-tf-,lf-,I C.".lf--,1 .:7) o :. -1,.) <+. e:,,...,
G?M ~~-,-t~ i:: .i:i o o Q,) i:: Q,)V
Q,) IS) =i. IS) IS) IS) o ::r, !Ci .., .., i:: Q,) Q,) i:: .:7)
<.:> 1 ..... 1 1 Q,) 1 :e !Ci ..... o E .... !Ci i::
!Ci co lcoco ..,co .-< G? i:: Q,):,, Q,) .i:i E·.-<
<+. IS) -i::: IS) IS) !Ci IS) Q,) =i. <.:> o .... i:: ::> ~:...:...
:. 1 i:: 1 1 "i::i 1 ....... C,? •l""I E.i:i !Ci o i:: Q,) o
Q,) 0-, ..... 0-, 0-, =i.,o-, ,.Q •.-1 :... •,-! ~ Q,) =i,..,
.., ..,_),-.,j,.Q,-.,1,-.,j :::,-.,1 !Ci"i::i.., Q,) G?"i::i -1-> =i., .....
i:: IS) 1 IS) IS) IS) i:: Q,) ..:: G? i:: <.:> E o oi::
., .,... C'l_ l_ C'l N :, N µ.j"i::i E 1- Q,) !Ci :: .,.. 1-1- o A
do banco de dados, pois é necessário criar uma pasta na raiz C:\ do
Windows com a seguinte estrutura:
Para comprovar que o documento foi criado, foi feita uma seleção dos
dados, conforme pode ser observado na Figura 16.
62
quantidades de dados. A documentação disponível pelo site oficial
é bem vasta, com uma abordagem bem didática, facilitando o
entendimento das funções mesmo quando o desenvolvedor não possui
conhecimentos técnicos a respeito da sintaxe utilizada pelo MongoDB.
3. HADOOP
63
Já em 2010, Rob Bearden, que era o representante da Hadoop, e a
Yahoo!, firmaram uma parceria, sendo fundada a Hortonworks. A nova
empresa havia conseguido juntar os 24 engenheiros que fizeram parte
do grupo que desenvolveram a primeira versão do software.
64
Segundo Amaral (2016), assim como qualquer outro sistema
de gerenciamento de banco de dados, o Hadoop possui
algumas peculiaridades em sua estrutura, conforme pode ser
observado a seguir:
65
• Reduce: é o componente responsável pelo retorno das
informações, por meio de uma lista. Também é necessário que o
desenvolvedor realize todas as configurações necessárias para o
retorno conforme a necessidade.
66
Figura 17 – Ferramentas do Hadoop
M.,.._
.-Javad m
CAMADA DE CAMADA DE GESTÃO
VISUALIZAÇÃO ~> RESTful API
~
EAPl'S
Chef
FERRAMENTAS DE
ANALÍTICA 'ê) pentaho ~ 1111 <® FERRAMENTAS
ADMINISTRAÇÃO
~
.-
~
CAMADA DE "==}
ANALISE Spo~ cloudera
Java ..... MPJ
FERRAMENTAS
llBidoop 9'Bidoop
~-
CAMADA DE MONITORAMENTO
PROCESSAMENTO
~ .t'.,,,w,_1, "'-A.,~
CAMADA DE
ARMAZENAMENTO f mongoDB Nagios
FERRAMENTAS DE
MOTOR -.Bidoop DIAGNÓSTICO
DE EVENTOS
fM,,,J.,~
CAMADA DE
INTEGRAÇÃO (ETL)
ZooKeeper
FONTES DE
INFORMAÇÃO
67
PARA SABER MAIS
Muito tem se falado a respeito de Big Data. O termo se
popularizou após a sua utilização nas campanhas eleitorais
estadunidenses, quando o então candidado à presidência,
Barack Obama, revelou que a sua equipe utilizou tais
recursos computacionais a fim de se analisar os dados e
trabalhar com informações relevantes para ganhar votos
dos delegados distritais.
TEORIA EM PRÁTICA
O mercado de games no Brasil ocupa a quarta posição no
ranking mundial de consumo, apenas Estados Unidos, Japão
e China movimentam mais esse mercado em relação ao
Brasil. Chegar ao top 10 não foi a toa, pois estima-se que
existam por volta de 3,4 milhões de gamers, movimentando
incríveis 1,5 bilhões de dólares ao ano.
Uma dificuldade muito comum entre os amantes dos
jogos eletrônicos é obter mais informações de títulos
que não são tão conhecidos, e assim poder comprar
um jogo que atenda às expectativas do consumidor.
Algumas ferramentas tentam auxiliar esse público, como:
gameplays disponíveis no YouTube, no qual um jogador
faz streaming de uma parte do jogo; blogs, que fazem
alguns resumos do jogo, e ainda, opinam a respeito dos
gráficos, jogabilidade, diversão, entre outros aspectos
relevantes aos gamers.
A fim de minimizar essa falha no setor, o MongoDB
possui uma estrutura que permite ao profissional de
banco de dados organizar os títulos dos jogos e adicionar
68
informações importantes para que os gamers possam
adquirir os jogos que realmente desejam.
Dentro desse contexto apresentado, de que forma poderia
ser estruturado um banco de dados no MongoDB, a fim
de se garantir que o consumidor de games encontrará
informações úteis antes de adquirir um título?
VERIFICAÇÃO DE LEITURA
69
b. Somente a alternativa II está correta.
c. Somente a alternativa III está correta.
d. Somente as alternativas I e II estão corretas.
e. Somente as alternativas II e III estão corretas.
a. nomeDoDocumento.count().
b. db.nomeDoDocumento.count.
c. db.nomeDoDocumento.count().
d. bd.count().
e. bd.nomeDoDocumento>count.
70
d. MongoDB; cluster; processamento.
e. Hadoop; cluster; armazenamento.
Referências
AMARAL, Fernando. Introdução à ciência de dados: mineração de dados e Big
Data. Rio de Janeiro: Alta Books, 2016.
BENGFORT, Benjamin. Analítica de dados com Hadoop: uma introdução para
cientistas de dados. São Paulo: Novatec, 2016.
DB-Engines. Disponível em: <https://db-engines.com/en/>. Acesso em: 30 jul. 2019.
GODOI, D. Apache Hadoop: tudo o que você precisa saber. Cetax. Disponível
em: <https://www.cetax.com.br/apache-hadoop-tudo-o-que-voce-precisa-saber/>.
Acesso em: 02 ago. 2019.
Hadoop. Disponível em: <https://hadoop.apache.org/releases.html>. Acesso em: 01
ago. 2019.
HOWS, David; MEMBREY, Peter; PLUGGE, Eelco. Introdução a MongoDB. São
Paulo: Novatec, 2015.
MongoDB. Disponível em: <https://www.mongodb.com/>. Acesso em: 01 ago. 2019.
RAMARKRISHNAN, Raghu. Sistema de gerenciamento de banco de dados. New
York: McGraw Hill, 2011.
Gabarito
Questão 1 – Resposta: A.
71
Questão 2 – Resposta: C.
Resolução: a alternativa C está correta, pois a sintaxe utilizada para
realizar contagem é a db.nomeDoDocumento.count(). Por exemplo,
se o nome do documento é carrosUsados, e a intenção é contar
quantos registros o documento carros usados possui, deve ser
usado: db.carrosUsados.count()
Questão 3–Resposta: E.
Resolução: o Hadoop suporta grandes cargas de processamento de
dados, com alta disponibilidade e detecção de falhas. O software foi
desenvolvido para utilização em cluster, porém o armazenamento é
feito no servidor local.
72
Banco de dados NoSQL: modelo
orientado a documentos
Autor: Sergio Eduardo Nunes
Objetivos
74
De acordo com Anderson e Slater (2010), a falta de um schema (regra
de estrutura comum a todas linhas da tabela) permite que, ao adicionar
um novo documento, não ocorra conflito na base de dados, ou ainda,
o dado não consiga ser inserido. Alguns SGBDs permitem que o
administrador do banco de dados consulte o schema e, em alguns casos,
possa alterar um schema existente, ou ainda, criar um novo schema.
Isso ocorreu pois o SGBD MySQL possui schema que exije que todas
as colunas devam ser preenchidas. Ainda é possível entrar com o valor
75
nulo, o que, de certa forma, garante que todas as linhas da tabela
possuam os mesmos números de colunas. Nos bancos de dados
orientados a documentos, tanto a inserção de dados com mais colunas
quanto com menos colunas seriam possíveis de serem inseridos no
banco de dados.
76
consequência das tabelas no banco de dados orientado a documentos
serem estruturadas desnormalizadas, os dados são lidos mais
rapidamente, devido à ausência de JOINS (técnica utilizada em consultas
em múltiplas tabelas em banco de dados do tipo relacional). Para
compreender o mecanismo de consulta observe a Figura 4, referente
ao mecanismo de consulta em banco de dados relacional, e a Figura 5,
referente ao mecanismo de consulta em banco de dados não relacional.
tbl_função
tbl artista
10 1 FUNÇÃO
REGISTRO NOME ID_FUNÇÂO
1000 Vocalista
001 Serj Tankian 1000
2000 Guitarrista
002 James Hitfeld 1000
3000 Baixista
003 Daron Malakian 4000
4000 Baterista
tbl banda
REGISTRO NOME FUNÇÃO PAÍS SOLO
001 Serj Tankian Vocalista Líbano SIM
002 James Hitfeld Vocalista
003 Daron Malakian Estados Unidos
77
Já no mecanismo do banco não relacional representado na Figura 5, a
consulta é feita em uma única tabela em busca de informações contidas
nas linhas e colunas. Dessa forma, o número de processos executados
em uma consulta é menor no NoSQL. Um exemplo de consulta seria:
selecione o nome do artista e a sua respectiva função somente de quem
possui projeto solo.
Server-PT
Se t2
Servl ~PT
Server4
witch-PT
Switch 3
Server-PT
ServerO Server-PT Switch-PT
Serverl Switch2
78
• Armazenar as informações de forma espelhada para todos os
dispositivos do cluster.
• Processar as informações de forma distribuída.
Caro aluno, é claro que quando pensamos em banco de dados nos vem
à cabeça efetuar consultas a essas bases a fim de se gerar informações
úteis a determinado segmento do mercado, e se tornar um produto/
79
empresa com maior poder de competitividade. Para isso, os bancos de
dados orientados a documentos utilizam um mecanismo de consulta
conhecido por MapReduce.
80
Figura 7 – Entrada e divisão no MapReduce
ENTRADA DIVISÃO
MAPEAR JUNTAR
Comba premium, 1. Combo premium, 1.
combo vegano, 1 Combo premium, 1.
DIVISÃO
Combo premium, 1.
Comba premium, 1. Combo premium, 1.
~ ombo premíum, combo vegano.]
81
Após isso, os dados são encaminhados para redução e, finalmente,
ocorre a saída desses dados. Esse processo é representado na Figura 9.
REDUZIR SAÍDA
JUNTAR
2. CouchDB
82
O CouchDB foi projetado para atender demandas web, no qual o
protocolo de acesso ao sistema de gerenciamento é o HTTP (HyperText
Transfer Protocol). O funcionamento do sistema consiste em criar versões
de operações de leitura para que o processo de consulta se torne
mais ágil.
C [j localhost:5984
83
Esse processo retorna a versão do CouchDb instalado no servidor.
Para acessar a configuração do software, o painel deve ser acessado
por meio do link de endereço local: <http://localhost:5984/utils>,
digitado diretamente no navegador. Apenas para se ter uma visão geral
dos passos para se configurar o CouchDB, alguns pontos devem ser
observados:
84
foi desenvolvida uma aplicação em PHP que acessa uma base de dados
com os registros apresentados no script na Figura 11.
<?php
$dsn "http://localhost:5984/" ;
$dbuser "root '' ;
$dbpass ;
{
$pdo PDO ($dsn, $dbuser, $dbpass);
} ( PDOException $e) {
echo "Falha ao conectar a base de dados!" ;
85
Após a conexão com a base de dados, é possível fazer a consulta dos
dados no navegador por meio de uma interface web e apresentá-los em
uma tabela, conforme pode ser observado na Figura 13.
ASSIMILE
86
A documentação disponível no site oficial CouchDB (2019) é vasta e
possibilita efetuar a consulta acerca do processo de instalação, até as
configurações do básico ao avançado. Existe, também, uma lista com
alguns comandos em JSON para se efetuar as operações no banco de
dados. A demonstração construída com a linguagem de programação
em PHP demonstra o suporte ao SGBD com uma documentação bem
detalhada e passos a serem seguidos para integração do CouchDB
com o PHP.
TEORIA EM PRÁTICA
As redes de computadores são encontradas na maioria
das empresas, podendo ter uma abrangência de pequeno
escritório até redes com muitos dispositivos e serviços
disponibilizados por meio de aplicações aos colaboradores.
São equipamentos como: computadores, impressoras,
câmeras, servidores, roteadores, access point,etc., que
podem compor toda essa estrutura.
Entre as diversas possibilidades de serviços que podem ser
configurados em um servidor estão os bancos de dados.
Peças importantes para que se possa ter uma forma
segura de armazenar os dados e possibilitar a geração de
informações úteis a cada segmento.
87
Acerca das aplicações indicadas na implementação dos
bancos de dados orientados a documentos, se caso uma
empresa tiver dois bancos de dados:
• O primeiro, um servidor local que recebe conexões de
colaboradores para acessar os serviços disponíveis a fim
de se desempenhar as tarefas pertinentes à função de
cada colaborador.
• O segundo é um servidor web com o e-commerce
da empresa. Esse servidor recebe muitas visitas
diariamente, e as compras são gerenciadas pelo sistema
de gerenciamento de banco de dados.
Suponha que a empresa necessite de informações sobre
os tipos de problemas que os clientes têm no e-commerce e
quais atividades estão sendo realizadas pelos colaboradores
da empresa, a fim de se verificar a tratativa dos problemas.
Utilizando um banco de dados orientado a documentos,
qual a indicação para o processamento dessas informações
em servidores geograficamente separados?
VERIFICAÇÃO DE LEITURA
“id”:”1”,
88
“atletas”: {
“nome”: “Felipe”,
“sobrenome”: “Melo”,
},
89
a. Entrada de informações >> Divisão >> Separação >>
Eliminação >> Redução >> Saída.
b. Captura de dados >> Separação >> Divisão >> Junção
>> Eliminação >> Saída.
c. Entrada de dados >> Divisão >> Mapeamento >>
Junção >> Redução >> Saída.
d. Captura de informações >> Eliminação >>
Mapeamento >> Junção >> Redução >> Saída.
e. Entrada de dados >> Separação >> Mapeamento >>
Divisão >> Redução >> Saída.
90
Referências
ANDERSON, J.; SLATER N. CouchDB: the definitive guide. Massachusetts: O’Really
Media, 2010.
BLUESOFT Labs. CouchDB Database, William Miranda, Papo Reto. YouTube, 22 mar.
2016. Disponível em: <https://www.youtube.com/watch?v=3tz3FSz_jAw>. Acesso em:
11 ago. 2019.
CouchDB. Disponível em: <http://couchdb.apache.org/>. Acesso em: 11 ago. 2019.
MENEGHETTI, D. Como funciona um download por torrent? Publicado em 24
maio 2013. Disponível em: <https://super.abril.com.br/mundo-estranho/como-
funciona-um-download-por-torrent/>. Acesso em: 28 ago. 2019.
RAMARKRISHNAN, Raghu. Sistemas de gerenciamento de banco de dados. Porto
Alegre: AMGH, 2011.
TecMundo. TecMundo explica: como funciona um download via torrent? YouTube,
14 out. 2013. Disponível em: <https://www.youtube.com/watch?v=HJhzdADYXXo>.
Acesso em: 11 ago. 2019.
Gabarito
Questão 1 – Resposta: E.
Questão 2 – Resposta: C.
91
Questão 3 – Resposta: C.
92
Modelo orientado a chave/valor
Autor: Marcio dos Santos
Objetivos
94
2. SQL x NoSQL
SQL NoSQL
95
ASSIMILE
Clusterizar, em uma tradução literal, significa aglomerar.
Na computação, o termo se aplica às estruturas em que
dois ou mais computadores (geralmente servidores) se
unem para executarem uma tarefa, trabalhando como
se fossem apenas uma máquina. Tal procedimento é
bastante utilizado na manipulação de dados ou softwares
que requerem grande poder de armazenagem ou
processamento.
96
introdução de algum metadado apenas por meio da nomenclatura
explícita das chaves. Também não existe a possibilidade de realização de
consultas mais complexas, como subconsultas. É possível realizar apenas
uma consulta por vez e, baseando-se em seu resultado, realizar uma
segunda. Essa perspectiva torna esse modelo de dados mais simples,
o que diminui os tempos de resposta, permitindo que a capacidade
de armazenamento de suas bases de dados seja uma das maiores dos
sistemas enquadrados na categoria NoSQL. (CLAUDINO et al., 2011, p. 39)
97
Embora as vantagens de velocidade no armazenamento e recuperação
de dados sejam indiscutíveis, é necessário considerar a quantidade de
dados que esse modelo gera, uma vez que existe muita redundância e
replicação de dados.
3. Conhecendo o Redis
~
98
Desta forma, é possível afirmar que bancos não relacionais
baseados em chave-valor possuem tipos de dados simples (ou,
fracamente tipados).
99
3.2 Utilizando os recursos de chave/valor
CHAVE VALOR
usuario José
usuario2 Pedro
idade 38
casado true
Mas cuidado, isso não significa que os tipos de dados não são levados
em consideração. Como ocorre um processamento em tempo de
execução de cada entrada realizada, os dados são previamente
reconhecidos pela linguagem e interpretados conforme seus
respectivos tipos, ou seja, se um número for setado na estrutura, ele
será lido e considerado como um dado numérico e aceitará operações
de incremento ou decremento, por exemplo. Já uma string, ao ser
reconhecida como tal categoria de dados, será tratada como tal, como
nos aponta Toth (2011):
100
O modelo apresenta a proposta que permite que o desenvolvedor efetue
a persistência de dados totalmente livre de definições de estrutura para
esquema. Como o nome já diz e sugere, trata-se de uma abordagem
parecida com uma tabela hash. A informação do conteúdo é armazenada
e um índice em forma de um tipo primitivo de dado é usado para mapeá-
lo. O conteúdo pode ser armazenado em qualquer formato, seja uma
string, inteiro, matriz, ou objeto. Pelo fato de ter uma chave de indexação
para mapear um valor, a inserção e a recuperação se torna mais fácil e
com interface simplificada. (TOTH, 2011, p. 3)
1-'·
{J'\
-....J
-....J
V)
\.O
___.
1--l
1--l
Ili
m
w
(/)
o(/)
ro
©
©
o
Nu NA N
e
e
V
u
)
o
1-'·
{J'\
-....J
-....J
\.O
___.
1--l
1--l
G)
Ili
m
w
(/)
©
©
o
e
e
V
)
=
=
o(/)
m ro
-....J
1--l
1--l
{J'\
-....J
\.O
w
©
101
Figura 3 – Utilizando comando SET e GET com dados numéricos
127.0.0.1:6379>
102
Os dados também podem ser armazenados em lote, ou seja, em uma
sequência, sem a necessidade de se armazenar um registro de cada vez.
Para isso, basta inserir uma cadeia de chaves e seus respectivos valores
conforme demonstrado na Figura 5.
127.0.0 . 1:6379> MSET nome Jose sobrenome Antonio idade 48 sexo ~, casado true
OK
127.0.0.1:6379> MGET nome sobrenome idade sexo casado
1 ) "Jose"
2 ) "Antonio"
3 ) "48"
4 ) "M"
5 ) "true"
127.0.0.1:6379>
4. Conclusão
103
Outros bancos de dados que atendam à estrutura chave-valor também
podem ser explorados para fins de estudo e ampliação de possibilidades
de uso, assim, deixamos como recomendação a exploração de
ferramentas como Riak e GenieDB, ótimos bancos de dados no padrão
key-value.
TEORIA EM PRÁTICA
Suponha que você fosse um DBA (data base administrator)
e precisou utilizar uma estrutura NoSQL para armazenar
os dados de uma rede social. Devido à sua facilidade
no manuseio, você utilizou o Redis como plataforma de
gerenciamento e usou o Modelo Chave/Valor em sua forma
padrão de instalação.
Sabe-se que para armazenar os dados desta rede social
você precisará de alguns campos como nome, email, senha,
nome de usuário, telefone, cpf e data de nascimento, sexo,
estado civil. Outros dados podem ser inseridos neste mesmo
escopo para tornar sua aplicação mais rica em recursos e
elementos de consulta, embora não sejam obrigatórios.
Após concluir o armazenamento de pelo menos 3 usuários,
liste todos os dados na tela em forma sequencial. Feita
esta listagem, efetue alterações básicas nos registros
(modificando um e-mail, por exemplo) para colocar em
prática os recursos de manipulação de dados.
Finalizado o passo anterior, escolha um dos usuários
inseridos e exclua-o do banco de dados e em seguida liste
novamente os dados para averiguar se de fato o usuário
foi removido.
Uma dica é recorrer à documentação do Redis para ter
acesso a todas as sintaxes disponíveis.
104
VERIFICAÇÃO DE LEITURA
a. Fortemente tipado.
b. Fracamente estruturado.
c. On the fly (em tempo de execução).
d. Relacional.
e. Fortemente estruturado.
105
3. Bancos de dados relacionais popularizaram-se na
década de 1970, mas com a expansão da informação
e a necessidade de rápidas respostas a consultas
surgiram os bancos de dados não relacionais, com
uma abordagem diferenciada quanto às estruturas
de armazenamento e recuperação das informações.
As diferenças entre ambos os bancos são bastante
evidentes, mas pode-se dizer que a mais importante
no NoSQL é:
Referências
AMAZON, 2019. O que é o Redis? Disponível em: <https://aws.amazon.com/pt/
elasticache/what-is-redis/>. Acesso em: 02 set. 2019.
CLAUDINO, Myller; SOUZA, Damires; SALGADO, Ana Carolina. Mapeamentos
conceituais entre os modelos Relacional e NoSQL: uma abordagem comparativa.
Revista Principia, (28), p. 37-50, 2015.
LÓSCIO, Bernadette Farias; OLIVEIRA, H. R. de; PONTES, J. C. de S. NoSQL no
desenvolvimento de aplicações Web colaborativas. VIII Simpósio Brasileiro de
Sistemas Colaborativos, v. 10, n. 1, p. 11, 2011.
TOTH, Renato Molina. Abordagem NoSQL – uma real alternativa. [S.l.]:
Universidade Federal de São Carlos – Campus Sorocaba, 2011. Disponível em:
<https://dcomp.sor.ufscar.br/verdi/topicosCloud/nosql_artigo.pdf>. Acesso em: 23
jul. 2019.
106
li►. Gabarito
Questão 1 – Resposta: C.
Resolução: como os dados são criados e resgatados de forma
dinâmica, em tempo de execução, eles recebem esta nomenclatura:
on the fly.
Questão 2 – Resposta: D.
Resolução: o MSET é utilizado para inserir uma cadeia de valores,
enquanto o GET resgata apenas um valor cadastrado.
Questão 3 – Resposta: C.
Resolução: a velocidade de execução é uma das características
de bancos NoSQL e isso é alcançado através de várias diferenças
entre sua arquitetura e a arquitetura de bancos relacionais; uma
das características mais marcantes é justamente o schema less (não
possui schemas).
107
Modelo orientado a família de
colunas
Autor: Marcio dos Santos
Objetivos
Vamos lá?
109
2. Características do modelo colunar: vantagens e
desvantagens
110
armazenamento, dada a grande quantidade de requisições simultâneas
realizadas por seus usuários em fracões de segundos.
ID NOME
id nome
id valor id valor
1 20 1 José M iguel
2 21 2 Antônio dos Santos
3 22 3 Pedro Lucas
EMAIL
- email
-
id valor
1 josemiguel@dom in ia.com
1 2 antoniodossantos@dominio.com
3 pedro lucas@dominio.com
111
Ainda que na Figura 2 a estrutura aparente conter 3 tabelas com 3
linhas cada uma, esta exemplificação foi apenas para que você pudesse
compreender a estrutura de maneira mais objetiva.
112
ASSIMILE
Uma característica comum a qualquer banco de dados
NoSQL é seu desvinculamento das normalizações
amplamente empregadas em Bancos Relacionais (1FN,
2FN, 3FN 4FN, 5FN). Isso significa que, em determinados
momentos, podem ocorrer redundâncias de dados. Embora
a redundância não seja vista como algo viável a um sistema
de banco de dados, a inconsistência de dados acaba por ser
adotada visando um melhor desempenho nas consultas.
Como este modelo não suporta junções de tabelas (Joins), a
desnormalização é uma consequência (OLIVEIRA, 2017).
3. Supercolunas
Li nha l
113
Quando temos uma coleção de supercolunas, ou seja, várias colunas
com supercolunas, temos uma estrutura chamada de superfamília de
colunas. Este tipo de estrutura é comumente utilizado, pois é a maneira
mais versátil de se trabalhar com dados de maneira escalável em
bancos NoSQL.
3.1 Keyspace
nome
-
id valor id valor
1 20 1 José Miguel
2 21 2. Antônio dos Santos
3 22 3 Pedro Lucas
CHAVE VLOR
ID NOME
id nome
1 id valor id vator
1 20 1 José M iguel
2 21 2 Antônio dos Santos
3 22 3 Pedro lucas
114
A manipulação de dados utilizando a família de colunas também é
algo que deve receber uma atenção especial, pois, em um processo
de inserção, por exemplo, é necessário apenas adicionar-se uma
nova coluna à família (uma coluna dentro de outra coluna, criando
uma supercoluna) e ela já fará parte da estrutura de um determinado
registro; o mesmo conceito se aplica à edição de dados, que,
diferentemente de uma estruturra relacional, não precisa carregar
uma tupla virtual para realizar a edição: apenas invoca-se a coluna que
contém o dado a ser editado.
4. Conhecendo o Cassandra
115
Outra característica interessante do Cassandra é a sua arquitetura
desenvolvida para trabalhar de forma descentralizada, de forma que
cada nó que compreende a estrutura do banco possui as mesmas
funções, facilitando todo o processo de manutenção e até mesmo
expansão. A não existência de JOINS e ações em tempo de execução
também são pontos fortes, conforme destacado por FERREIRA et
al. (2014):
116
Figura 4 – Estrutura de nodes no Banco de Dados Cassandra
Nó I Nó2 Nó 3
rctfe ·1rct5""tt51r• - • ·1
Anel com t• G)! !.8 CD_! t0 0 )
VNode
Nó 4 Nó 5 Nó 6
117
As inserções de dados com a linguagem CQL são feitas através do
comando INSERT INTO:
118
CREATE TABLE cadastro(
Id INT,
Nome TEXT,
Email TEXT,
Telefones map<text, text, text>,
PRIMARY KEY(id)
);
UPDATE cadastro
SET Nome = “Pedro”
WHERE id = 1
5. Conclusão
119
com Modelo baseado em Família de Colunas torna-se amplamente viável
desde que se tenha uma estrutura clusterizada para comportá-lo.
TEORIA EM PRÁTICA
Analise o seguinte cenário: você é um DBA (Data Base
Administrator) e precisa utilizar uma estrutura NoSQL
para armazenar os dados de uma rede social. Você
necessitaria criar uma estrutura para armazenar os dados
que trafegassem pela rede: nome dos usuários, e-mails,
postagens, fotos e vídeos.
Sabe-se que a estrutura desta rede social cresce de
forma exponencial e não ordenada, ou seja, pode ocorrer
estruturas de armazenamento distintas entre os vários
posts que ela armazena. Você deverá elaborar uma
estrutura capaz de comportar estes dados, armazenando-
os em um banco não relacional baseado em família de
colunas utilizando diagramas para demonstrar a forma
que os dados seriam organizados. Adicionalmente você
deverá criar uma estrutura minimalista, na linguagem CQL,
que represente os diagramas desenvolvidos. Atente-se
à possibilidade de utilizar supercolunas para dados mais
complexos.
120
VERIFICAÇÃO DE LEITURA
a. De forma controlada.
b. De maneira distribuída e centralizada.
c. De forma distribuída e free on demand.
d. De forma descentralizada e distribuída.
e. De forma local ou distribuída.
Referências
~
~
121
DATASTAX. CQL Commands – SELECT. Disponível em: <https://docs.datastax.com/
en/archived/cql/3.3/cql/cql_reference/cqlSelect.html>. Acesso em: 03 ago. 2019.
FERREIRA JR., Guilherme R.; FILIPE, Carlos; OLIVEIRA, Daniel. Uso de SGBDs NoSQL
na Gerência da Proveniência Distribuída em workflows científicos. Instituto de
Computação – Universidade Federal Fluminense (UFF), 2014. Disponível em: <http://
www.inf.ufpr.br/sbbd-sbsc2014/sbbd/proceedings/artigos/pdfs/9.pdf>. Acesso em:
01 ago. 2019.
OLIVEIRA, Fábio Vieira de. Migração de bases de dados relacionais para
NoSQL–métodos de análise, 2017. Disponível em: <https://repositorio.iscte-iul.pt/
bitstream/10071/15649/1/FabioOliveira_Tese_MEI.pdf>. Acesso em: 24 set. 2019.
Gabarito
Questão 1 – Resposta: D.
Resolução: uma das principais características do banco de
dados Cassandra é trabalhar com vários nós em um ambiente
clusterizado, ou seja, de forma descentralizada e distribuída.
Questão 2 – Resposta: A.
Resolução: as superfamílias são compostas pela união de várias
subcolunas.
Questão 3 – Resposta: C.
Resolução: a persistência de dados de forma durável é o objetivo
dos bancos de dados baseados no modelo Famílias de Colunas,
diferente dos bancos de dados baseados em chave/valor, cujo
registro é armazenado temporariamente em memória.
122
Modelo orientado a grafos
Autor: Marcio dos Santos
Objetivos
2. Instalando o Neo4J
Ainda que não seja uma regra, é importante que a instalação ocorra
em diretórios e pastas sem espaços em sua estrutura, ou seja, é
recomendado que a instalação ocorra em diretórios similares a C:\
pasta\. Para nossas aulas, utilizaremos a instalação dentro do disco C:
(Windows), na pasta neo4j, ficando: C:\neo4j. Já para a armazenagem
dos dados, utilizaremos uma subpasta chamada dados: C:\
neo4j\dados\.
124
Após realizar o download do instalador no site oficial do Neo4J, escolha a
pasta (C:\neo4j) como destino de sua instalação, conforme demonstrado
na Figura 1 a seguir, ressaltando que a instalação em diretórios é feita
sem espaços no nome.
O Neo4j Desktop será instalado na pasta a seguir. Para instalar em uma pasta diferente,
dique em Procurar e selecione outra pasta, Clique em Instalar para iniciar a instalação,
Pasta de Destino
1 C:v,eo4j\ 1 Prorurar., . J
125
Figura 2 – Interface gráfica
• Neo4j Oesktop - 12.1 o X
f ile Edil Voew Window Help Oeveloper
My Project
(D
•
Neo4j Browser
3.2.20
8;)
Add Appltcatoon
8;)
126
• Ícone da engrenagem: utilize esta seção para manipular
configurações gerais do banco de dados, inclusive o local de
armazenamento de seu banco que, em nosso curso, deverá ser:
C:\neo4j\dados\.
Para iniciar um novo banco, clique em Add Graph > Create a Local
Graph. Um nome deverá ser atribuído à sua base de dados. Utilizaremos
o nome “aula” para nosso banco de dados; este banco poderá ser
localizado no seguinte caminho: C:\neo4j\dados\neo4jDatabases. Com
a base devidamente criada, é possível acessar suas configurações
(botão Manage) ou iniciá-la (botão Start) conforme mostrado na tela
exemplificada na Figura 3.
127
Para iniciar nossos primeiros comandos dentro desta estrutura de banco
de dados, devemos clicar sobre o botão Start. O Neo4J só executará uma
base de dados de cada vez, ou seja, mesmo que você tenha outras bases
configuradas na aplicação gráfica, não poderá executá-las de forma
concomitante.
0.-nu CM.
l~C
S : scr11cr connect X
128
• Vértices (ou nós/nodes): são as estruturas que armazenam um
determinado dado, podendo estar atreladas a outros vértices-
filhos ou serem dependentes de outros vértices superiores.
• Arestas (ou relacionamentos): são as ligações existentes entre
os diversos vértices de um banco de dados como demonstrado
na Figura 5.
129
Figura 6 - Relacionamento e label
130
O efeito visual desta estrutura é bastante atrativo e permite que você
manipule a estrutura de maneira interativa e dinâmica. Observe que
um mesmo nó pode se relacionar com vários outros nós. Esta estrutura
representa um relacionamento do tipo n:n em bancos de dados
relacionais.
• Person
• <id>:151
• born: 1951.0
• name: Robert Zemeckis
131
Tabela 1 - Relação de estrutura não relacional
com modelo relacional
PERSON
Id INT
BORN CHAR
NAME VARCHAR
4. Sintaxe Cypher
132
do Neo4J, que vem com uma documentação completa para servir de
guia durante o desenvolvimento de uma base de dados.
ASSIMILE
A linguagem Cypher é bastante rica em recursos e é
declarativa, ou seja, vai na contramão das linguagens
convencionais e não demonstra como o algoritmo deve
se comportar, mas sim, o que ele deve executar. Isso
significa que, a priori, ainda que haja inversão na sequência
dos comandos dentro da linguagem, se a lógica e sintaxe
estiverem corretas, a execução ocorrerá sem erros.
133
• REMOVE: apaga um determinado registro, assim como o DELETE
dos bancos de dados relacionais.
• MERGE: cria um nó-filho de um nó específico.
• CONTAINS: similarmente à cláusula IN do MySQL, permite inserir
uma lista de possíveis resultados aceitos para uma consulta.
CREATE ()
134
No processo de criação de um nó, é possível inserir a criação de
seus nós-filhos:
O Neo4J irá criar sua estrutura gráfica sempre com associação de cores
para facilitar a identificação dos nós por categorias. A quantidade de
propriedades também é relativa, podendo ser diferente entre os nós.
MATCH(n) RETURN n
135
É possível ainda navegar entre todos os nós relacionados de um
banco, bastando apenas inserir a sequência hierárquica entre eles no
próprio comando:
136
Com esta estrutura, é possível realizar consultas utilizando-se a cláusula
CONTAINS, que analisará se um determinado registro contém um ou
mais valores aceitos:
CREATE (e :Estado{nomeEstado:”RJ”})
CREATE (c :Cidade{nomeCidade:”Macaé”})
RETURN e, c
RETURN c, e
137
Figura 8 – Resultado de consulta com relacionamentos
RETURN c, e
138
Figura 9–Relacionamento Bidirecional
· 1 ª d e), (e :Estado) WHERE ( c.norneC1dade)
■■■■■■
$ MATCH (e ·Cºd . = "Macaé" AND e.n...
RETURN c, e
139
5. Conclusão
TEORIA EM PRÁTICA
Pressuponha que você fosse um DBA (data base
administrator) e precisou utilizar uma estrutura NoSQL com
o Neo4J para armazenar os dados de uma grande rede de
supermercados com atuação em mais de 10 países. Elabore
a estrutura deste banco não relacional, baseado em grafos,
apontando os nós necessários e relacionamentos existentes
entre eles. Atente aos detalhes que o projeto precisa ter:
Cada país tem:
• Um tipo de moeda.
• Um idioma.
• Um leque diferenciado de produtos.
O mercado pode:
• Coexistir em vários estados do mesmo país.
• Coexistir em várias cidades do mesmo estado.
• Ter mais de uma loja física em metrópoles ou capitais.
140
Os produtos comercializados devem ser separados em 3
(três) grandes categorias:
• Bebidas.
• Vegetais.
• Industrializados.
• Proteínas (carnes de uma forma geral).
Cada categoria de produto deve ter uma particularidade
de venda, por exemplo, as carnes são vendidas por quilo,
enquanto as bebidas, por litros.
VERIFICAÇÃO DE LEITURA
a. Arestas.
b. Nodes relacionais.
c. Relacionamentos.
d. Colunas.
e. Vértices.
141
existentes em bancos orientados a grafos, é correto
afirmar que:
Referências
NEO4J. What is a Graph Database? Disponível em: <https://neo4j.com/developer/
graph-database/>. Acesso em: 25 Ago. 2019.
PEREIRA, Evelym Maria de Lourdes Rondon. Banco de dados orientado a grafos
com dados de artigos científicos. 2017. 17 f. TCC (Especialização em Banco
142
de Dados)–Universidade Federal de Mato Grosso, Instituto de Computação,
Cuiabá, 2017.
SOUZA, Talita de Paula Cypriano. Aplicação de banco de dados baseados em
grafos no controle de redes de computadores. 2016. 1. recurso online. 79
p. Dissertação (mestrado)–Universidade Estadual de Campinas, Faculdade de
Engenharia Elétrica e de Computação, Campinas, SP. Disponível em: <http://www.
repositorio.unicamp.br/handle/REPOSIP/305425>. Acesso em: 07 out. 2019.
llJiii,; Gabarito
Questão 1 – Resposta: E.
Resolução: nodes ou nós também podem ser chamados de vértices.
Questão 2 – Resposta: C.
Resolução: a bidirecionalidade pode ocorrer entre vários nodes
(embora não seja obrigatória).
Questão 3 – Resposta: B.
Resolução: bancos de dados não relacionais não possuem dados
estruturados, e isso permite que eles armazenem informações
com estruturas distintas, ainda que sejam informações de um
mesmo tipo.
143
Bons estudos!
144