ARQUITETURA WEB Unidade3
ARQUITETURA WEB Unidade3
ARQUITETURA WEB Unidade3
de aplicações web
Unidade 3
Persistência de dados
Arquitetura
de aplicações web
Unidade 3
Persistência de dados
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
Objetivo de aprendizagem:
Esta unidade tem como objetivo ensinar os mecanismos de armazenamento e recuperação de dados
com ênfase na utilização de bancos de dados NoSQL.
Tópicos de estudo:
Iniciando os estudos:
Atualmente, são inúmeras as redes sociais disponíveis aos usuários da internet, sejam elas para fins
profissionais, de compartilhamento de fotos, de amizades, para relacionamentos, entre tantas outras
funções. Cada uma delas armazena inúmeras informações de seus usuários, tais como o nome, a idade,
a profissão, os locais onde já esteve, os amigos que contam em seu perfil, entre outras.
As informações fornecidas pelos usuários, seja em uma rede social ou em um serviço bancário, precisam
ser constantemente atualizadas, bem como estarem disponíveis para serem excluídas. Essas operações
e o seu correto armazenamento são o tema de estudo da persistência de dados. Assim, nesta unidade,
você irá estudar os bancos de dados NoSQL. Seja bem-vindo ou bem-vinda e bons estudos.
3
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
Além do aumento no volume de dados criados, a Web 2.0 se caracterizou fundamentalmente por dispo-
nibilizar plataformas que permitiam às pessoas terem interações sociais, compartilharem informações,
entre outras funcionalidades. Segundo Farias (2014), o Facebook consiste em um dos principais símbolos
da Web 2.0, uma vez que essa rede social permite aos seus usuários publicarem textos e fotos, fazerem
uso do sistema de geolocalização e da linha do tempo, entre outras possibilidades.
As funcionalidades trazidas pela Web 2.0 geraram imensas quantidades de dados, que passaram a ter
a necessidade de serem gerenciadas adequadamente. Nesse sentido, ocorreu o desenvolvimento de
avançadas tecnologias a fim de se gerenciar esses dados, o que originou uma nova categoria de banco
de dados denominada NoSQL, uma abreviação de Not Only SQL.
Reflita
Qual a origem do termo NoSQL? Segundo Farias (2014), o termo Not Only SQL (NoSQL) foi
utilizado pela primeira vez no ano de 1998 por Carlos Strozzi ao se referir ao seu Sistema
de Gerenciamento de Banco de Dados baseado no modelo relacional, no entanto, sem
Structured Query Language (SQL).
Continuando com a contextualização histórica dos bancos de dados do tipo NoSQL, no ano de 2004, o
Google fez o lançamento do Bigtable, que consistia num banco de dados de alto desempenho cujo obje-
tivo era oferecer escalabilidade e disponibilidade às aplicações, sendo essa a primeira implementação da
tecnologia não relacional a receber destaque.
Conhecido o contexto no qual surgiram os bancos de dados NoSQL, o vídeo a seguir irá apresentar os
conceitos iniciais sobre esse tipo de tecnologia.
Aprofunde-se
Título: Banco de dados NoSQL
Acesso em: 10/06/2020.
Disponível em: https://youtu.be/1B64oqE8PLs
4
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
Segundo Farias (2014), no ano de 2007, a Amazon realizou a apresentação do Dynamo, que essencial-
mente consiste em um banco de dados não relacional que possui uma elevada disponibilidade e é
empregado nos serviços web da empresa. Quatro anos mais tarde, o Facebook desenvolveu o banco de
dados distribuídos Cassandra, que tem a capacidade de manipular imensas quantidades de dados, além
de possuir uma elevada disponibilidade.
Segundo Diana e Gerosa (2020), atualmente, há quatro principais categorias de banco de dados NoSQL,
a saber: aqueles que são um banco de dados orientado a documentos, entre os principais represen-
tantes dessa categoria está o MongoDB; outra categoria é a de armazenamento de chave-valor, tendo
como um de seus principais representantes o Redis; outra classe é o banco de dados de famílias de
colunas, cujos maiores expoentes são o Cassandra e o HBase; e, por fim, a última categoria é a do banco
de dados de grafos, cujo principal representante é o Neo4j.
Conhecidas as principais categorias de banco de dados do tipo NoSQL, o material em vídeo a seguir irá
abordar a temática das propriedades desse tipo de banco de dados.
Assista
Acesse na plataforma o vídeo: Propriedades do NoSQL
Conhecidas as propriedades dos bancos de dados NoSQL, agora é fácil você compreender como são
vastas as ampliações dessa tecnologia e porque inúmeras empresas vêm se dedicando ao desenvolvi-
mento desse tipo de banco de dados.
De modo a organizar as principais opções desse tipo de tecnologia disponível no mercado, o infográfico
a seguir elenca as cinco opções amplamente utilizadas nos dias atuais.
5
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
6
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
Agora que você já conhece os principais bancos de dados do tipo NoSQL, as suas características e as
diferenças, recomendo o material a seguir, que é um estudo detalhado desse banco de dados.
Aprofunde-se
Este trabalho traz um amplo estudo sobre os bancos de dados NoSQL, sendo essencial a
leitura para a ampliação de seus conhecimentos.
Título: Avaliação de Desempenho entre Bancos de Dados Relacionais e NoSQL
Link: https://si.dcx.ufpb.br/wp-content/uploads/2015/12/Fred-Augusto-de-Melo-Farias.pdf
De posse de todo o referencial teórico que você obteve acerca dos bancos de dados NoSQL neste tópico,
torna-se conveniente realizar a sua comparação com os bancos de dados do tipo relacional. Nesse
sentido, a análise comparativa a seguir será feita a partir do Teorema CAP, acrônimo de Consistency,
Availability e Partition tolerance, que em uma tradução literal significa Consistência, Disponibilidade e
Tolerância ao particionamento.
Segundo Farias (2014), as três características elencadas pelo Teorema são esperadas por um sistema
computacional distribuído, no entanto, de acordo com o próprio, no mundo real só é possível garantir
apenas duas delas simultaneamente.
Conforme Farias (2014), os bancos de dados relacionais são uma tecnologia que se destina ao armaze-
namento de grandes quantidades de dados dentro de uma estrutura rígida, o que reduz a sua escalabi-
lidade. Essa tecnologia nasceu na década de 1970, quando as aplicações em bases de dados se caracte-
rizavam por possuir uma estrutura fixa e bem definida.
Já os bancos de dados NoSQL, de acordo com Delgado (2011), trazem um novo modelo de organização
de dados a fim de permitir aplicações com uma estrutura mais flexível, assim, possibilitando que esse
tipo de banco de dados seja altamente escalável.
7
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
Escalabilidade Possível, mas complexa. Devido à natureza Por não possuir nenhum esquema predefini-
estruturada do modelo, a adição de forma di- do, este tipo de banco de dados tem maior
nâmica e transparente de novos nós no grid flexibilidade, o que favorece a inclusão trans-
não é realizada de modo natural. parente de outros elementos. Dessa forma,
a escalabilidade é uma das principais vanta-
gens do modelo.
Consistência Ponto mais forte do modelo relacional. As re- Realizada de modo eventual no modelo, só
gras de consistência presentes propiciam um garante que se nenhuma atualização for rea-
maior grau de rigor quanto à consistência lizada sobre o item de dados, todos os aces-
das informações. sos a ele devolverão o último valor atualizado.
Disponibilidade Dada a dificuldade de se conseguir trabalhar O alto grau de distribuição dos dados propi-
de forma eficiente com a distribuição dos da- cia que um maior número de solicitações aos
dos, esse modelo pode não suportar a deman- dados seja atendido por parte do sistema, o
da muito grande de informações do banco. qual fica menos tempo não disponível.
O vídeo a seguir irá a ensinar a você quando usar cada um destes bancos de dados, considerando-se as
características de cada um deles.
Aprofunde-se
Título: Relacional ou NoSQL - Qual é a melhor opção?
Acesso em: 21/07/2020.
Disponível em: https://youtu.be/yLlkDda6EFw
8
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
Após essa consideração inicial, que visa fornecer uma maior compreensão das diferenças entre as tecno-
logias, esta seção irá se dedicar às operações de manipulação em banco de dados NoSQL. Nesse sentido,
elenquei aqui, para o desenvolvimento das operações e exemplos, o banco de dados MongoDB.
O banco de dados MongoDB é orientado a documentos, portanto, ele trabalha com documentos e não
com registros, como no modelo relacional, em que se faz presente a abordagem bidimensional por meio
de tabelas com linhas e colunas.
Aprofunde-se
Título: Instalando e configurando o MongoDB
Acesso em: 11/07/2020.
Disponível em: https://youtu.be/skK5xj-CK-Q
Além disso, o banco de dados MongoDB tem como característica fundamental ser de código aberto. Ele
é licenciado por meio da GNU AGPL, sendo um banco de dados de alto desempenho, multiplataforma
e formado por um conjunto de aplicativos JSON. Dada a sua robustez, o MongoDB vem sendo adotado
por inúmeras empresas, dentre as quais se destacam o SourceForge, o Foursquare, o LinkedIn, a SAP, a
MTV, a Pearson Education, entre outras.
9
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
Reflita
Neste ponto, você deve estar pensando quais são as operações que podem ser executadas
sobre um banco de dados. Essencialmente, são quatro operações que se aplicam aos
bancos de dados e elas são definidas pelo acrônimo CRUD, que designa Create, Read,
Update e Delete. No MongoDB, essas funcionalidades são:
• Create: insert()
• Read: find()
• Update: update()
• Delete: remove()
Após essa pequena introdução sobre o MongoDB, a seguir, será o início dos estudos das operações de
consulta e inserção nesse banco de dados.
Para que você compreenda mais detalhes do CRUD no banco de dados MongoDB, separei os materiais
a seguir, em que há mais explicações sobre como instalar este banco de dados, bem como realizar as
operações CRUD neste.
Aprofunde-se
Título: Operações CRUD do MongoDB
Acesso em: 11/07/2020.
Link: https://docs.mongodb.com/manual/crud/
10
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
2.1 INSERÇÃO
Como visto anteriormente, os bancos de dados são operacionalizados fundamentalmente por quatro
operações, as quais são definidas pelo CRUD. Este subtópico será sobre a operação Create (insert ())
e fará uso da documentação oficial do banco de dados MongoDB. De acordo com a documentação, as
operações de criação ou inserção têm como objetivo adicionar novos documentos a uma determinada
coleção, no caso de a coleção não existir, a operação de inserção irá criá-la.
Fundamentalmente, o MongoDB oferece dois métodos para documentos em uma coleção, a saber:
• db.collection.insertOne ()
• db.collection.insertMany()
As operações de inserção visam uma única coleção. Além disso, as operações de gravação são realizadas
ao nível atômico de um único documento. Considere a sintaxe a seguir:
db.users.insertOne(
{
nome: "Daniel Silva e Silva",
idade: 20,
pais: "Brasil",
estado: "SP",
cidade: "São Paulo"
}
A sintaxe anterior exemplifica a inserção de um único documento, no entanto, o MongoDB é robusto o sufi-
ciente para suportar a inserção de vários documentos simultaneamente. Para isso, basta utilizar o método
insertMany(). A fim de que você possa compreender o seu funcionamento, considere o seguinte exemplo:
db . inventário . insertMany ([
{ item : "journal", qty: 25, tags : [ "blank", "red" ]), tamanho : { h : 14, w : 21, uom : "cm" } },
{ item : "mat ", qty: 85, tags: [ "grey "], tamanho : { h : 27.9, w: 35.5, uom : "cm" } },
{ item : "mousepad" , qty : 25, tags : [ "gel" , "blue" ], tamanho : { h : 19, w : 22,85, uom : "cm" }
}
])
No exemplo apresentado, são inseridos três novos documentos na coleção inventory por meio do
método insertMany() no banco de dados db, nesse caso o MongoDB. Caso não seja especificado um ID
11
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
campo, o MongoDB adicionará um como um valor Objetoid a cada documento. Além disso, o método
insertMany() retorna um documento que inclui os _idvalores do campo de documentos recém-inseridos.
Agora que você conhece os métodos básicos de inserção no MongoDB, você pode ampliar os seus
conhecimentos por meio do material a seguir, que traz uma explanação detalhada acerca desse método.
Aprofunde-se
Título: Insert Documents
Acesso em: 11/07/2020.
Link: https://docs.mongodb.com/manual/tutorial/insert-documents/
Neste subtópico, você irá aprender a consultar as informações no MongoDB. Também haverá um tópico
específico para as operações de atualização e exclusão de dados.
Para que um banco de dados seja consultado, é necessário que ele tenha sido previamente alimentado
com dados. Nesse sentido, considere que, inicialmente, o banco de dados foi alimentado por meio do
método insertMany() com os documentos mostrados a seguir:
db.inventory.insertMany([
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
{ item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
Considerando a inserção realizada, o banco de dados conta com vários documentos. Caso você queira
selecionar todos os documentos da coleção inventory, basta passar um documento vazio para o método
find(), o qual é responsável por realizar a consulta. Onde db é o banco de dados, inventory é a coleção
e find é o método de consulta. A sintaxe é dada por:
db.inventory.find( {} )
12
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
No entanto, você pode ter interesse em documentos específicos. Nesse caso, pouca utilidade tem de
retornar todos os elementos de uma coleção, que podem ser milhares ou milhões. Assim, é necessário
realizar buscas mais assertivas.
A sintaxe a seguir, ao ser executada considerando os documentos inseridos no início desta seção, irá
retornar todos os documentos que têm status igual a “D”:
Enquanto que a sintaxe a seguir irá retornar todos os documentos da coleção inventory que têm status
igual a “A” ou a “D”:
E, se você quiser retornar todos os documentos do inventory que possuem status igual a “A” e que
sejam menores do que 30, a sintaxe é:
O método find é muito robusto e oferece inúmeras outras formas de se realizar consultas. Explanar
sobre todas tornaria este tópico demasiadamente extenso, nesse sentido, recomendo a você consultar
todas as opções no material a seguir.
Aprofunde-se
Título: Query Documents
Acesso em: 11/07/2020.
Link: https://docs.mongodb.com/manual/tutorial/query-documents/
Neste ponto, você aprendeu conceitualmente como realizar inserções e consultas no banco de dados
MongoDB. A fim de você ver como tudo isso funciona na prática, o material em vídeo a seguir irá realizar
essas operações.
Assista
Acesse na plataforma o vídeo: Inserindo e consultando dados no MongoDB
13
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
Reflita
Qual a importância de se manter um banco de dados atualizado e ausente de dados
desnecessários? De modo a ilustrar a importância das operações de atualização e exclusão
em um banco de dados, considere, por exemplo, todos os clientes de uma concessionária
de energia elétrica. É comum que eles se mudem de endereço ou solicitem a troca de
titularidade da fatura. Nesse sentido, na primeira situação, você deve realizar a remoção
do cliente do banco de dados, pois ele não está mais vinculado àquele endereço e, no
segundo caso, o cliente apenas atualizará a titularidade da fatura.
db.inventory .insertMany ( [
{ item : "canvas" , qty : 100 , tamanho : { h : 28 , w : 35.5 , uom : "cm" }, status : "A" },
{ item : "journal" , qty : 25 , ta manho : { h : 14 , w : 21 , uom: "cm" }, status : "A" },
{ item : "mat" , qty : 85 , tamanho : { h : 27,9 , w : 35,5 , uom : "cm" }, status : "A" },
{ item : "mousepa d" , quantida de : 25 , tama nho : { h : 19 , w : 22.85 , uom: "cm" }, status : "P" },
{ item : "notebook" , quantida de : 50 , tama nho : { h : 8,5 , w : 11, uom : "in" }, status : "P" },
{ item : "papel" , quantidade : 100 , tamanho : { h : 8.5 , w : 11, uom: "in" }, status : "D" },
{ item : "planejador" , qtd : 75 , ta manho : { h : 22,85 , w : 30 , uom : "cm" }, status : "D" },
{ item : "cartão postal" , quantidade : 45 , ta manho : { h : 10 , w : 15.25 , uom: "cm" }, status : "A" },
{ item : "caderno de desenho" , quantidade : 80 , ta manho : { h : 14 , w : 21 , uom : "cm" }, status : "A" },
{ item : "bloco de desenho" , quantidade : 95 , tamanho : { h : 22,85 , w : 30,5 , uom : "cm" }, status : "A" }
] );
14
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
Caso você queira atualizar um único documento, o método indicado é o updateOne(). Ele irá atualizar o
primeiro documento que combinar com o critério passado para o método. A sua sintaxe é:
db.inventory.updateOne
A sintaxe anterior informa que você está manipulando o banco de dados db, na coleção inventory,
fazendo uso do método updateOne().
Considere que você queira atualizar, na coleção inventory, o primeiro documento que possui o campo
item igual a “paper”, a sintaxe para o método update seria:
db.inventory.updateO ne(
{ item: "paper" },
{
$set: { "size.uom ": "cm", status: "P" },
$currentDate: { last Modif ied: true }
}
)
Ao ser executado, o método updateOne irá atualizar o primeiro documento que possuir o campo item
igual a “paper”. O operador $set atualizará o valor do campo size.uom para “cm” e o valor do campo
status para “P”.
15
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
Nesse exemplo, você aprendeu a atualizar um único documento. No entanto, você também pode realizar
de diferentes modos a atualização de múltiplos documentos simultaneamente, para isso, consulte o
artigo a seguir.
Aprofunde-se
Neste artigo, você irá aprender em detalhes como realizar as atualizações no MongoDB.
Título: Update Documents
Acesso em: 23/07/2020.
Link: https://docs.mongodb.com/manual/tutorial/update-documents/
A fim de você compreender como se dá a operação de exclusão em um banco de dados, considere que
ele tenha sido alimentado previamente com os dados apresentados na seção anterior, ou seja, você
estará manipulando a coleção inventory.
16
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
Aprofunde-se
Neste artigo, você irá aprender em detalhes como realizar as exclusões no MongoDB.
Título: Delete Documents
Acesso em: 23/07/2020.
Link: https://docs.mongodb.com/manual/tutorial/remove-documents/
O método mais simples de exclusão é o deleteOne(). Ele irá excluir o primeiro documento que combinar
com os seus parâmetros. Considere, por exemplo, que você queira excluir o primeiro documento cujo
status seja “D” na coleção inventory. A sintaxe para esse caso seria:
No entanto, a exclusão de um documento envolve diversas outras ferramentas. Assim, recomendo que você
consulte o material a seguir, que traz uma ampla explanação sobre os métodos de exclusão no MongoBD.
Assista
Acesse na plataforma o vídeo: Atualizando e excluindo documentos no MongoDB
17
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
CONSIDERAÇÕES FINAIS
Nesta unidade, você aprendeu o tema da persistência de dados no contexto dos bancos NoSQL. E
também como esses bancos de dados são manipulados pelas operações definidas pelo CRUD, as quais
permitem o correto manejamento de um banco de dados, bem como faz dele uma ferramenta útil aos
desenvolvedores e às empresas.
Os conceitos aqui abordados são introdutórios ao tema, sendo fundamental que você se aprofunde nas
recomendações deixadas ao longo do conteúdo.
18
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
GLOSSÁRIO
JSON: acrônimo de JavaScript Object Notation, uma formatação leve de troca de dados. Para seres
humanos, é fácil de ler e escrever. Para máquinas, é fácil de interpretar e gerar.
Persistência: garantia de que um dado foi salvo e que poderá ser recuperado quando necessário no futuro.
19
Arquitetura de aplicações web | Unidade 3 - Persistência de dados
REFERÊNCIAS
ALVES, W. Pereira. Desenvolvimento e Design de Sites. Disponível em: https://integrada.minhabiblio-
teca.com.br/#/books/9788536519012/ Acesso em: 15 jul. 2020.
DIANA, Mauricio de; GEROSA, Marco Aurélio. NoSQL na Web 2.0: Um Estudo Comparativo de Bancos
Não Relacionais para Armazenamento de Dados na Web 2.0, 2020. Disponível em: https://www.ime.usp.
br/~mdediana/nosql_wtdbd10.pdf Acesso em: 10 jul. 2020.
FARIAS, Fred Augusto de Melo. Avaliação de Desempenho entre Bancos de Dados Relacionais e
NoSQL. 2014. 62 f. Monografia (Bacharelado em Sistemas de Informação do Centro) – Universidade
Federal da Paraíba, Rio Tinto, Paraíba. Disponível em: https://si.dcx.ufpb.br/wp-content/uploads/2015/12/
Fred-Augusto-de-Melo-Farias.pdf Acesso em: 10 jul. 2020.
20