0% acharam este documento útil (0 voto)
96 visualizações40 páginas

BD Bigdata Nosql

Este documento discute o uso de bancos de dados não relacionais (NoSQL), como o MongoDB, para aplicações de big data. Ele explica a história do MongoDB e como ele foi projetado para ser flexível e escalável para aplicativos da web. Também dá exemplos de como empresas, instituições financeiras, organizações governamentais e não governamentais usam big data e ciência de dados para obter insights valiosos.

Enviado por

carlos
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
96 visualizações40 páginas

BD Bigdata Nosql

Este documento discute o uso de bancos de dados não relacionais (NoSQL), como o MongoDB, para aplicações de big data. Ele explica a história do MongoDB e como ele foi projetado para ser flexível e escalável para aplicativos da web. Também dá exemplos de como empresas, instituições financeiras, organizações governamentais e não governamentais usam big data e ciência de dados para obter insights valiosos.

Enviado por

carlos
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 40

Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

BANCO DE DADOS APLICADO A


BIG DATA
INTRODUÇÃO AOS
BANCOS DE DADOS NÃO
RELACIONAIS (NOSQL)
Autor: Esp. Everton Gomede
Revisor: Isabel Cristina Siqueira da Silva

INICIAR

1 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

introdução
Introdução
Se você desenvolveu aplicativos para web nos últimos anos, provavelmente, já
utilizou um banco de dados relacional como armazenamento de dados
primários. Se você está familiarizado com Structured Query Language (SQL),
pode apreciar a utilidade de um modelo de dados bem normalizado, a
necessidade de transações e as garantias fornecidas por um mecanismo de
armazenamento durável. Simpli�cando, o banco de dados relacional é
maduro e bem conhecido. Quando os desenvolvedores começam a defender
alternativas para armazenamento de dados, questões sobre a viabilidade e a
utilidade dessas novas tecnologias começam a surgir. Esses novos tipos de
armazenamento são substituições de sistemas de banco de dados relacionais?
Quem os está utilizando na produção, e por quê? Quais compensações estão
envolvidas na mudança para um banco de dados não relacional? As respostas
a essas perguntas dependem da resposta a esta: por que os desenvolvedores
estão interessados nos bancos de dados não relacionais? Um banco de dados
não relacional é um sistema de gerenciamento de banco de dados projetado
para desenvolver, rapidamente, aplicativos da web e infraestrutura de
internet.

2 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Bancos de Dados
não Relacionais e
sua Utilização em
Aplicações de Big
Data

A história dos bancos de dados não relacionais é breve, mas vale a pena ser
contada, principalmente do ponto de vista do seu mais ilustre representante:
o MongoDB, pois ele nasceu de um projeto mais ambicioso (BANKER et al .,
2016).

Em meados de 2007, uma startup da cidade de Nova York, chamada 10gen,


começou a trabalhar em uma plataforma como serviço (PaaS), composta por
um servidor de aplicativos e um banco de dados, que hospedaria aplicativos
da web e os escalaria conforme necessário. Assim como o aplicativo do Google
Engine, a plataforma da 10gen foi projetada para lidar com dimensionamento
e gerenciamento de infraestrutura de hardware e software automaticamente,
liberando os desenvolvedores para se concentrarem exclusivamente no
código do aplicativo. A 10gen, �nalmente, descobriu que a maioria dos

3 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

desenvolvedores não se sente confortável abrindo mão de tanto controle


sobre suas pilhas de tecnologia, mas os usuários desejam a nova tecnologia
de banco de dados da 10gen. Isso levou a 10gen a concentrar seus esforços
exclusivamente no banco de dados que se tornou o MongoDB (BANKER et al .,
2016).

Desde então, a 10gen mudou seu nome para MongoDB, Inc. e continua a
patrocinar o desenvolvimento do banco de dados como um projeto de código
aberto. O código está disponível publicamente e é livre para ser modi�cado e
usado (sujeito aos termos de sua licença), e a comunidade em geral é
encorajada a arquivar relatórios de bugs e enviar correções. Ainda assim, a
maior parte do núcleo do MongoDB foi feita pelos desenvolvedores, que são
fundadores ou funcionários da empresa, e o código do projeto continua a ser
determinado pelas necessidades de sua comunidade de usuários e pelo
objetivo abrangente de criar um banco de dados que combina os melhores
recursos dos bancos de dados relacionais e os armazenamentos dos pares
distribuídos. Assim, o modelo de negócios da MongoDB, Inc. não é contrário
ao de outras empresas de código aberto bem conhecidas: apoiar o
desenvolvimento de um produto de código aberto e fornecer serviços de
assinatura para usuários �nais (BANKER et al., 2016).

A coisa mais importante a se lembrar é que o MongoDB pretendia ser uma


parte extremamente simples, mas �exível, de uma pilha de aplicativos da web
. Esses tipos de casos de uso direcionaram as escolhas feitas no
desenvolvimento do MongoDB e ajudam a explicar suas características. Além
disso, o MongoDB começou a ser usado para aplicações utilizando o conceito
conhecido como big data .

Big data é um termo genérico para qualquer coleção de conjuntos


de dados tão grandes ou complexos que torna-se difícil processá-
los usando técnicas tradicionais de gerenciamento de dados como,
por exemplo, os RDBMS (sistemas de gerenciamento de banco de
dados relacional) (CIELEN; MEYSMAN; ALI, 2016, p. 1).

A ciência de dados e o big data são usados em quase todos os lugares, tanto

4 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

em contextos comerciais quanto não comerciais. O número de casos de uso é


vasto e os exemplos que forneceremos, ao longo deste estudo, apenas
arranham a superfície das possibilidades.

Empresas comerciais de quase todos os setores usam ciência de dados e big


data para obter insights sobre seus clientes, processos, equipes, conclusões e
produtos. Muitas empresas usam ciência de dados para oferecer aos clientes
uma melhor experiência de usuário, bem como para venda cruzada, venda
incrementada e personalização de suas ofertas. Um bom exemplo disso é o
Google AdSense, que coleta dados de usuários da internet para que
mensagens comerciais relevantes possam ser direcionadas a eles. O MaxPoint
é outro exemplo de publicidade personalizada em tempo real (CAMPELLO;
CALDEIRA, 2014).

Pro�ssionais de recursos humanos usam análises de pessoas e mineração de


texto para selecionar candidatos, monitorar o humor de funcionários e
estudar redes informais entre colegas de trabalho. A análise de pessoas é
ponto central e tema do livro Moneyball: a arte de ganhar um jogo injusto . No
livro (e �lme), vemos que o processo de seleção tradicional para o beisebol
americano era aleatório, e substituí-lo, por sinais correlatos, mudou tudo.
Baseando-se em estatísticas, foram contratados os jogadores certos, que
foram colocados nas posições em que teriam maior vantagem.

As instituições �nanceiras usam ciência de dados para prever mercados de


ações, determinar o risco de emprestar dinheiro e aprender como atrair
novos clientes para seus serviços. No momento em que esse estudo foi
escrito, pelo menos 50% das negociações, em todo o mundo, estavam sendo
executadas automaticamente por máquinas, com base em algoritmos
desenvolvidos por cientistas de dados que trabalham em algoritmos de
negociação (DOURADO, 2013).

Organizações governamentais também estão cientes do valor dos dados.


Muitas organizações governamentais não contam apenas com cientistas de
dados internos para descobrir informações valiosas, mas também para
compartilhar dados com o público. Além disso, esses dados podem ser
utilizados para obter insights ou construir aplicativos baseados em dados. Por

5 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

exemplo, Data.gov é um dos conjuntos de dados abertos do governo dos EUA.


Em uma organização governamental, um cientista de dados trabalha em
diversos projetos, como detecção de fraude e outras atividades criminosas ou
em otimização de �nanciamento do projeto. Um exemplo bem conhecido foi o
caso revelado por Edward Snowden, que vazou documentos internos, da
Agência de Segurança Nacional Americana e do Governo Britânico, que
mostram claramente como eles usaram a ciência de dados e o big data para
monitorar milhões de indivíduos. Essas organizações de segurança
arrecadaram 5 bilhões de registros de dados de aplicativos amplamente
difundidos, como Google Maps, Angry Birds, e-mail e mensagens de texto,
dentre muitas outras fontes de dados, e, em seguida, aplicam técnicas da
ciência de dados para destilar informações (CIELEN; MEYSMAN; ALI, 2016).

As Organizações Não Governamentais (ONGs) também conhecem o uso de


dados e os utilizam para arrecadar dinheiro e defender suas causas. A The
World Wildlife Fund (WWF), por exemplo, emprega cientistas de dados para
aumentar a e�cácia de sua arrecadação de fundos. Muitos cientistas de dados
dedicam parte de seu tempo ajudando ONGs, porque elas, muitas vezes, não
têm recursos para coletar dados e empregar cientistas de dados. O DataKind,
por exemplo, é um grupo de cientistas de dados que dedica seu tempo ao
benefício da humanidade (BANKER et al., 2016).

As universidades utilizam a ciência de dados em suas pesquisas e também


para aprimorar a experiência de estudo de seus alunos. A ascensão de cursos
on-line abertos e massivos (MOOC) produz muitos dados, o que permite que
as universidades estudem como esse tipo de aprendizagem pode
complementar as aulas tradicionais. MOOCs são um ativo inestimável, então,
se você deseja se tornar um cientista de dados e pro�ssional de big data ,
de�nitivamente, dê uma olhada em alguns dos mais conhecidos: Coursera,
Udacity e edX. O cenário do big data e da ciência de dados muda rapidamente,
e os MOOCs permitem que você se mantenha atualizado, seguindo os cursos
das melhores universidades. Se você ainda não os conhece, reserve um tempo
para fazer isso. O quadro, a seguir, apresenta um resumo das aplicações do
big data em diversos contextos.

6 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Contexto Aplicação Benefícios Exemplos

Obter insights sobre


Ciência de seus clientes,
Empresas Google
dados e big processos, equipe,
comerciais AdSense
data conclusão e
produtos.

Análises de pessoas
e mineração de
texto para selecionar
Big data e candidatos,
Recursos
aprendizado monitorar o humor Linkedin
humanos
de máquina de funcionários e
estudar redes
informais entre
colegas de trabalho.

Obter informações
Organizações Big data e dos cidadãos e suas
Data.gov
governamentais sensores interações com
câmeras etc.

Usam para
Organizações
arrecadar dinheiro e
não Big data WWF
defender suas
governamentais
causas.

Usam ciência de
dados em suas
Big data e pesquisas e também Coursera,
Universidades bancos não para aprimorar a Udacity e
relacionais experiência de edX
estudo de seus

7 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

alunos.

Quadro 1.1 - Resumo das aplicações de big data e bancos não relacionais
Fonte: Elaborado pelo autor.

#PraCegoVer : o quadro apresenta um resumo dos cenários de utilização


do banco de dados NoSQL no contexto de big data . Além disso, traz
alguns exemplos de aplicações que podem ser encontradas na internet.

Como podemos veri�car no Quadro 1.1, existem diversas aplicações para os


bancos de dados não relacionais. Muito provavelmente você já utilizou alguns
deles ao navegar em um site de comércio eletrônico ou fazer um curso em
uma das plataformas citadas.

Conhecimento
Teste seus Conhecimentos
(Atividade não pontuada)

Big data é um termo genérico para qualquer coleção de conjuntos de dados tão
grandes ou complexos que se torna difícil processá-los usando técnicas tradicionais
de gerenciamento de dados. Algumas das dimensões que não podem ser facilmente
processadas envolvem velocidade, volume e volatilidade.

CIELEN, D.; MEYSMAN, A. D. B.; ALI, A. Introducing data science . Big data, machine
learning, and more, using Python tools. New York: Manning Publications Co., 2016.

8 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Assinale a alternativa que apresenta uma tecnologia para armazenamento de dados


que pode ter di�culdades ao lidar com o cenário de big data.

a) MongoDB.
b) Bancos de dados NoSQL.
c) Apache Hadoop.
d) RDBMS.
e) MOOC.

9 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Casos de Uso
Visando Direcionar
os Cenários de
Utilização dos
Bancos de Dados
não Relacionais

Um banco de dados não relacional (NoSQL), como o MongoDB, por exemplo, é


um sistema de gerenciamento de banco de dados projetado para desenvolver,
rapidamente, aplicativos web, big data e infraestrutura de internet. O modelo
de dados e as estratégias de persistência são construídos para alta capacidade
de leitura e gravação e têm a capacidade de escalar facilmente e com failover .
Se um aplicativo requer apenas um nó de banco de dados ou dezenas deles, o
MongoDB pode fornecer um desempenho surpreendentemente bom. Se você
teve di�culdades dimensionando bancos de dados relacionais, isso pode ser
uma ótima notícia. Mas nem todo mundo precisa operar em escala. Talvez
você só precise de um único servidor de banco de dados (BANKER et al. ,

10 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

2016). Talvez a maior razão para os desenvolvedores utilizarem o MongoDB


não seja por causa de sua possibilidade de escalonamento, mas devido ao seu
modelo de dados intuitivo. O MongoDB armazena suas informações em
documentos, em vez de linhas. Mas o que é um documento? Segue um
exemplo:

_id: 10,

username: 'everton',

email: 'evertongomede@gmail.com'

Esse é um documento bastante simples: armazenar alguns campos de


informações sobre um usuário. Qual é a vantagem desse modelo? Imagine
que você deseja armazenar vários e-mails para cada usuário. No mundo
relacional, você pode criar uma tabela separada de endereços de e-mail e dos
usuários aos quais eles estão associados. Já o MongoDB oferece outra
maneira de armazená-los:

_id: 10,

username: everton,

email: [

'evertongomede@gmail.com',

'gomede@gmail.com'

11 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

E, assim, você criou uma variedade de endereços de e-mail e resolveu seu


problema. Nesse caso, como desenvolvedor, você achará extremamente útil
ser capaz de armazenar um documento estruturado dessa forma em seu
banco de dados, sem se preocupar em ajustar um esquema ou adicionar mais
tabelas quando seus dados mudarem (BANKER et al., 2016).

O formato de documento do MongoDB é baseado em JSON, um esquema


popular para armazenar estruturas de dados. JSON é um acrônimo para
JavaScript Object Notation . Como você acabou de ver, a estrutura JSON
consiste em chaves e valores que podem ser aninhados de forma arbitrária.
Tais estruturas são análogas aos dicionários e mapas hash de outras
linguagens de programação. Um modelo de dados baseado em documento
pode representar estruturas de dados ricas e hierárquicas. Tais estruturas, em
bancos relacionais, muitas vezes, só podem ser feitas com as junções de
várias tabelas comuns aos bancos de dados relacionais (CIELEN; MEYSMAN;
ALI, 2016).

Por exemplo, suponha que você esteja modelando produtos para um site de
comércio eletrônico. Com um modelo de dados relacional totalmente
normalizado, as informações de qualquer produto podem ser divididas em
dezenas de tabelas. Se você deseja obter uma representação de produto do
banco de dados, você precisará escrever uma consulta SQL cheia de junções.

Em contraste, com um modelo de documento, a maioria das informações de


um produto pode ser representada dentro de um único documento. Quando
você abre o shell JavaScript do MongoDB, você pode, facilmente, obter uma
representação compreensível de seu produto, com todas as suas informações
organizadas hierarquicamente, em uma estrutura semelhante ao JSON. Além
disso, depois de o produto estar armazenado, você também pode consultá-lo
e manipulá-lo. Os recursos de consulta do MongoDB são projetados
especi�camente para manipular documentos estruturados, para que os
usuários que mudam de bancos de dados relacionais experimentem um nível
semelhante de poder de consulta. Além disso, a maioria dos desenvolvedores,

12 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

atualmente, trabalha com orientação a objetos e quer um armazenamento de


dados que mapeie melhor os objetos. Com o MongoDB, um objeto de�nido na
linguagem de programação pode, muitas vezes, ser persistido como está,
removendo parte da complexidade dos mapeadores de objetos. Se você tem
experiência com bancos de dados relacionais, pode ser útil abordar o
MongoDB na perspectiva da transição de suas habilidades existentes nesse
novo banco de dados (CAMPELLO; CALDEIRA, 2014).

O MongoDB foi criticado em várias frentes, às vezes, de forma justa e, às


vezes, injustamente. Nossa visão é que ele é uma ferramenta na caixa de
ferramentas do desenvolvedor, como qualquer outro banco de dados, e você
deve conhecer suas limitações e pontos fortes. Algumas cargas de trabalho
exigem junções e gerenciamento de memória diferentes do que o MongoDB
fornece. Por outro lado, o modelo baseado em documento se encaixa
particularmente bem com algumas cargas de trabalho, e a falta de um
esquema signi�ca que o MongoDB pode ser uma das melhores ferramentas
para desenvolver rapidamente e iterando em um aplicativo (CIELEN;
MEYSMAN; ALI, 2016).

Modelo de Dados do Documento


O modelo de dados do MongoDB é orientado a documentos. Se você não está
familiarizado com documentos no contexto de bancos de dados, o conceito
pode ser demonstrado mais facilmente por um exemplo. Um documento
JSON precisa de aspas duplas em todos os lugares, exceto para valores
numéricos. A lista, a seguir, mostra a versão JavaScript de um documento
JSON, em que as aspas duplas não são necessárias.

_id: ObjectID('5bd9e8e1acefdaa2212108aa961b'),

title: 'MongoDB',

url: 'http://mongodb.com/',

13 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

author: 'everton',

vote_count: 20,

(1) tags: ['databases', 'mongodb', 'indexing'],

(2) image: {

url: 'http://mongodb/db.jpg',

caption: 'Um banco de dados.',

type: 'jpg',

size: 85181,

data: 'Binary'

},

(3) comments: [

user: 'everton',

text: 'Artigo'

},

user: 'everton',

text: 'Artigo'

14 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Essa lista mostra um documento JSON representando um artigo em um site


de notícias sociais (por exemplo, Reddit ou Twitter). Como você pode ver, um
documento é essencialmente um conjunto de nomes de propriedades e seus
valores. Os valores podem ser tipos de dados simples, como strings , números
e datas. Mas esses valores também podem ser matrizes e até mesmo outros
documentos JSON, como na Linha (1). Essas últimas construções permitem
que os documentos representem uma variedade de estruturas de dados ricas.
Você verá que a amostra do documento tem uma propriedade, tags , como na
Linha (2), que armazena as tags do artigo em uma matriz. Mas mais
interessante é a propriedade de comentários, como na Linha (3), que é uma
matriz de documentos de comentários.

Internamente, o MongoDB armazena documentos em um formato chamado


Binary JSON ou BSON. BSON tem uma estrutura semelhante, mas se destina
ao armazenamento de muitos documentos. Quando você consulta o
MongoDB e obtém os resultados de volta, eles serão traduzidos em uma
estrutura de dados fácil de ler. O shell do MongoDB usa JavaScript e obtém
documentos em JSON, que é o que usaremos para a maioria de nossos
exemplos. Onde os bancos de dados relacionais têm tabelas, o MongoDB tem
coleções. Em outras palavras, MySQL (um banco de dados relacional popular)
mantém seus dados em tabelas de linhas, enquanto o MongoDB mantém
seus dados em coleções de documentos, que você pode considerar como um
grupo de documentos (BANKER et al ., 2016).

Coleções são um conceito importante no MongoDB. Os dados em uma


coleção são armazenados em disco, e a maioria das consultas exige que você
especi�que qual coleção deseja segmentar. Vamos parar um pouco para
comparar as coleções do MongoDB com a representação de um banco
relacional padrão de banco de dados dos mesmos dados. A Figura 1.1 mostra
um provável análogo relacional.

15 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Figura 1.1 - Modelo relacional para o exemplo do JSON listado anteriormente


Fonte: Adaptada de Banker et al. (2016, p. 8).

#PraCegoVer : a imagem apresenta um exemplo de modelagem, utilizando um


banco de dados relacional, de como o código escrito em JSON seria
implementado.

Porque as tabelas são essencialmente planas, a representação dos vários


relacionamentos “um-para-muitos”, em seu documento de postagem, requer
várias tabelas. Você começa com uma tabela de posts contendo as
informações essenciais para cada postagem. Então, você cria três outras
tabelas, cada uma delas inclui um campo, post_id , referenciando a postagem
original. A técnica de separar os dados do objeto em várias tabelas é
conhecida como normalização. Um dado normalizado set , dentre outras
coisas, garante que cada unidade de dados seja representada em um único
lugar. Mas a normalização estrita tem seus custos. Notavelmente, alguma
montagem é necessária. Para exibir a postagem que você acabou de fazer
referência, você precisará realizar uma junção entre as postagens e as tabelas
de comentários.

16 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Em última análise, a questão de saber se a normalização estrita é necessária


depende do tipo de dado que você está modelando. O que é importante notar
aqui é que um modelo de dados orientado a documento representa
naturalmente os dados de uma forma agregada, permitindo que você trabalhe
com um objeto holisticamente: todos os dados que representam uma
postagem, de comentários a tags , podem ser encaixados em um único objeto
de banco de dados (BANKER et al., 2016).

Conhecimento
Teste seus Conhecimentos
(Atividade não pontuada)

Os bancos de dados não relacionais permitem que um par de chaves e valores


possa ser utilizado para o armazenamento de dados. O formato para o
armazenamento é conhecido como JSON. Esse formato é transformado para o
BSON, de maneira a facilitar o armazenamento interno do MongoDB.

BANKER, K. et al . MongoDB in action . Second Edition. New York: Manning


Publications Co., 2016.

Assinale a alternativa que indica qual a principal vantagem, do ponto de vista da


modelagem, para o desenvolvedor de software, ao utilizar o armazenamento chave-
valor.

a) Existe a necessidade de junções com chaves estrangeiras, para a


recuperação dos dados do banco.
b) Existe a necessidade de normalização utilizando várias formas normais,
para evitar anomalias.

17 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

c) Não existe a necessidade de implementação de um modelo de dados que


seja �xo ou complexo.
d) Não é necessária a alteração de um esquema, no caso de alteração da
estrutura do modelo.
e) Existe a necessidade do armazenamento em BSON, para que os dados
possam ser binários.

18 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Princípios de
Design
Comparando-os
com os Bancos de
Dados Relacionais

Provavelmente, você já percebeu que, além de fornecerem uma estrutura rica,


os documentos não precisam estar em conformidade com um esquema
previamente especi�cado. Com um banco de dados relacional, você armazena
linhas em uma tabela. Cada tabela tem um esquema estritamente de�nido,
especi�cando quais colunas e tipos são permitidos. Se alguma linha em uma
tabela precisar de um campo extra, você deve alterar a tabela explicitamente.
O MongoDB agrupa documentos em coleções, contêineres, que não impõem
nenhum tipo de esquema (BANKER et al., 2016). Em teoria, cada documento
em uma coleção pode ter uma estrutura completamente diferente; na prática,
o documento de uma coleção será relativamente uniforme. Por exemplo, cada
documento na coleção de postagens terá campos para título, tags,
comentários etc.

19 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Vantagens do Modelo sem Esquema


Essa falta de esquema imposto confere algumas vantagens. Primeiro, o código
do seu aplicativo, e não o banco de dados, reforça a estrutura dos dados. Isso
pode acelerar a aplicação inicial de desenvolvimento, quando o esquema
muda com frequência. Em segundo lugar, e mais signi�cativamente, um
modelo sem esquema permite que você represente dados com propriedades
verdadeiramente variáveis. Por exemplo, imagine que você está construindo
um catálogo de produtos de comércio eletrônico. Não há como saber, com
antecedência, quais atributos um produto terá, então, o aplicativo precisará
levar em conta essa variabilidade. A forma tradicional de lidar com isso em um
banco de dados de esquema �xo é usar o valor padrão do atributo de
entidade, mostrado na Figura 1.2.

20 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Figura 1.2 - Extrato de um esquema para um e-commerce


Fonte: Adaptada de Banker et al. (2016, p. 9).

#PraCegoVer : a imagem apresenta um extrato de um modelo de dados baseado


em um banco de dados relacional. No caso da falta de um determinado valor, o
padrão é assumido.

O que você viu foi uma parte de um modelo de dados para uma estrutura de

21 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

comércio eletrônico. Observe a série de tabelas que são essencialmente


iguais, exceto por um único atributo, valor (value) , que varia apenas por tipo
de dados. Essa estrutura permite que um administrador de�na tipos de
produtos adicionais e seus atributos, mas o resultado é uma complexidade
signi�cativa. Pense em utilizar o shell do MySQL para examinar ou atualizar
um produto modelado nesse caminho; as junções SQL necessárias para
montar o produto seriam enormemente complexas. Modelado como um
documento, nenhuma junção é necessária, e novos atributos podem ser
adicionados dinamicamente. Nem todos os modelos relacionais são tão
complexos, mas o ponto é que, quando você está desenvolvendo um
aplicativo MongoDB, não precisa se preocupar tanto sobre quais campos de
dados você precisará no futuro (DOURADO, 2013).

Consultas ad hoc
Dizer que um sistema suporta consultas ad hoc é dizer que não é necessário
de�nir, de forma antecipada, quais tipos de consultas o sistema aceitará.
Bancos de dados relacionais têm essa propriedade; eles executarão �elmente
qualquer consulta SQL bem formada, com qualquer número de condições.
Consultas ad hoc são fáceis de utilizar se os únicos bancos de dados que você
já tem usado são relacionais. Mas nem todos os bancos de dados oferecem
suporte a consultas dinâmicas. Por exemplo, armazenamentos de valores-
chave podem ser consultados em apenas um eixo: a chave do valor. Como
muitos outros sistemas, armazenamentos de valores-chave sacri�cam o rico
poder de consulta em troca de um simples modelo de escalabilidade. Um dos
objetivos de design do MongoDB é preservar a maior parte da consulta; poder
este que é tão fundamental para o mundo do banco de dados relacional. Para
ver como a linguagem de consulta do MongoDB funciona, vamos apresentar
um exemplo simples envolvendo postagens e comentários. Suponha que você
queira encontrar todas as postagens marcadas com o termo “política” tendo
mais de 10 votos. Uma consulta SQL seria assim:

SELECT * FROM posts

22 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

INNER JOIN posts_tags ON posts.id = posts_tags.post_id

INNER JOIN tags ON posts_tags.tag_id == tags.id

WHERE tags.text = 'politics' AND posts.vote_count > 10;

A consulta equivalente no MongoDB é especi�cada usando um documento


como um matcher. A chave $gt especial indica a condição maior que:

db.posts.find({'tags': 'politics', 'vote_count': {'$gt':


10}});

Observe que as duas consultas assumem um modelo de dados diferente. A


consulta SQL depende de um modelo estritamente normalizado, em que os
posts e as tags são armazenados em tabelas distintas, enquanto a consulta do
MongoDB assume que as tags são armazenadas em cada documento de
postagem. Mas ambas as consultas demonstram a capacidade de consultar
combinações arbitrárias de atributos, que é a essência da capacidade de
consulta ad hoc .

Índices
Um elemento crítico das consultas ad hoc é que elas procuram valores que
você ainda não conhece quando cria o banco de dados. Conforme você
adiciona mais e mais documentos ao seu banco de dados, a busca por um
valor se torna cada vez mais cara; é uma agulha em um palheiro, em
constante expansão. Portanto, você precisa de uma maneira e�ciente de
pesquisar seus dados. A solução para isso é um índice.

A melhor maneira de entender os índices de banco de dados é por analogia:


muitos livros têm índices que combinam palavras-chaves com números de
página (BANKER et al ., 2016). Suponha que você tem um livro de receitas e
deseja encontrar todas as receitas que utilizam peras (talvez você tenha

23 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

muitas peras e queira utilizá-las antes que estraguem). A abordagem


demorada seria examinar cada receita e veri�car cada lista de ingredientes,
para ver se há peras no preparo. A maioria das pessoas preferiria veri�car o
índice para a entrada “peras”, que forneceria uma lista de todas as receitas
que contêm peras. Os índices de banco de dados são estruturas de dados que
fornecem esse mesmo serviço. Os índices, no MongoDB, são implementados
como uma estrutura de dados B-tree. Índices de árvore B, também usados em
muitos bancos de dados relacionais, são otimizados para uma variedade de
consultas, incluindo varreduras de intervalo e consultas com cláusulas de
classi�cação. Mas o WiredTiger tem suporte para log estruturado merge-trees
(LSM), que deve estar disponível na liberação para produção do MongoDB.

saiba
mais
Saiba mais
Indexação é um assunto relevante para
qualquer tipo de tecnologia que recupere
informações. Nesse caso, vale a pena saber
mais sobre tais recursos e como utilizá-los
para melhorar a velocidade de recuperação
de dados. Uma das melhores referências
para o MongoDB é sua documentação o�cial.
Saiba mais, ao acessar o link a seguir.

ACESSAR

A maioria dos bancos de dados dá, a cada documento ou linha, uma chave
primária, um identi�cador único para esse dado. A chave primária é
geralmente indexada automaticamente, para que cada dado possa ser
acessado de forma e�ciente, usando sua chave exclusiva, e o MongoDB não é
diferente. Mas cada banco de dados permite que você também indexe os
dados dentro dessa linha ou desse documento. Tais índices são chamados de

24 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

índices secundários. Muitos bancos de dados NoSQL, como HBase, são


considerados armazenamento valores-chave, porque não permitem nenhum
índice secundário (BANKER et al ., 2016). Esse é um recurso signi�cativo no
MongoDB; ao propiciar vários índices secundários, o MongoDB permite que os
usuários otimizem uma ampla variedade de consultas. Com o MongoDB, você
pode criar até 64 índices por coleção. Os tipos de índices suportados incluem
todos aqueles que você encontraria em um RDBMS; ascendente, descendente,
índices únicos, de chave composta, hash , de texto e até mesmo geoespaciais
são suportados. Como o MongoDB e a maioria dos RDBMSs usam a mesma
estrutura de dados para seus índices, o conselho para o gerenciamento de
índices, em ambos os sistemas, é semelhante.

praticar
Vamos Praticar
Vimos que a construção de junções e a complexidade de um código para
recuperação de informações pode reduzir, drasticamente, ao se utilizar um banco
de dados não relacional. Isso pode ser de grande importância no dia a dia e facilitar
o desenvolvimento de aplicações para big data . A partir do que foi apresentado,
elabore um código de programação para recuperar a seguinte informação,
baseando-se no modelo não relacional:

SELECT * FROM posts

INNER JOIN posts_tags ON posts.id = posts_tags.post_id

INNER JOIN tags ON posts_tags.tag_id == tags.id

25 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

WHERE tags.text = 'economics' AND posts.vote_count > 5;

26 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Pontos Adicionais
do Modelo não
Relacional

Existem mais pontos importantes que podemos destacar com relação ao


modelo relacional. Por exemplo, a replicação de dados é comum para permitir
o escalonamento horizontal. A durabilidade das transações também é outro
ponto importante para o modelo de pares de chave-valor. Além disso, outro
recurso muito útil é a estratégica de dimensionamento dos bancos, para
suportar as cargas necessárias. Vamos ver alguns deles, com um pouco mais
de detalhes, na sequência.

Uma visão inicial dos bancos de dados NoSQL, em especial, o MongoDB, pode
ser resumida, de maneira a destacar os elementos fundamentais desse tipo
de tecnologia. O infográ�co a seguir apresenta tais informações.

NoSQL

27 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Big data
Conjunto de ferramentas, princípios
e técnicas utilizadas para gerenciar
um volume de dados muito grande.

#PraCegoVer : o infográ�co apresenta seis tópicos em linha horizontal que


destacam os elementos fundamentais dos bancos de dados NoSQL. Ao clicar no
primeiro tópico é apresentado o título “Big Data”, logo abaixo está o conceito
“Conjunto de ferramentas, princípios e técnicas utilizadas para gerenciar um
volume de dados muito grande”; ao lado do conceito há a imagem ilustrativa de
um monitor que apresenta um grá�co em barras. Cada uma das barras apresenta
uma cor: azul, vermelho, verde-água, amarelo, branco e roxo. No canto direito do
monitor, há três engrenagens, uma de cada cor: verde-água, azul e amarelo. Ao
clicar no segundo tópico é apresentado o título “Consultas ad hoc”, logo abaixo
está o conceito “Consultas em bancos de dados feitas para recuperar linhas de
acordo com os critérios de seleção”; ao lado do conceito há a imagem ilustrativa
de três bancos de dados seguidos, nas cores: verde-água, amarelo e azul-escuro.
Na parte superior dos bancos de dados há uma �echa vermelha, que inicia no
banco de dados azul escuro e vai até o amarelo. Na parte inferior dos bancos de
dados há uma �echa vermelha, que inicia no verde-água e vai até o azul-escuro.
Ao clicar no terceiro tópico é apresentado o título “dimensionamento”, logo abaixo
está o conceito “Estratégia para escalonar os recursos de software e hardware
para atender a demanda de usuários”; ao lado do conceito há a imagem ilustrativa
de um lápis azul claro, sobre uma folha com linhas. Na parte superior da folha há
uma linha horizontal com três marcações. A marcação do canto esquerdo

28 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

apresenta um ícone de pessoa em cor verde-água. A marcação do meio apresenta


um ícone de pessoa em cor amarela. A marcação do canto direito apresenta um
ícone de pessoa em cor vermelha. Ao clicar no quarto tópico é apresentado o
título “Reaplicação”, logo abaixo está o conceito “Estratégia para reduzir a
indisponibilidade dos bancos de dados e aumentar seu poder de processamento”;
ao lado do conceito há a imagem ilustrativa de um monitor que apresenta uma
folha com linhas, na parte superior direita do monitor há três engrenagens, uma
de cada cor: verde-água, amarelo e vermelho. Ao lado do monitor há um celular
que apresenta uma folha com linhas. Entre as duas imagens há uma �echa, que
sai do monitor em direção ao celular. Ao clicar no quinto tópico é apresentado o
título “índices”, logo abaixo está o conceito “Recurso utilizado para acelerar a
recuperação dos dados em um banco de dados”; ao lado do conceito há a imagem
ilustrativa de mãos segurando um tablet. O tablet apresenta uma linha crescente
de grá�co, na cor vermelha e um grá�co em barras, com quatro barras, nas cores:
azul-claro, vermelho, verde-água e amarelo. Ao clicar no sexto tópico é
apresentado o título “Chave-valor”, logo abaixo está o conceito “A forma básica de
armazenamento de dados em um banco de dados NoSQL, ao lado do conceito há
a imagem ilustrativa de três bancos de dados, nas cores: verde-água, amarelo e
azul-escuro.

Replicação
O MongoDB fornece replicação de banco de dados por meio de uma topologia
conhecida como conjunto de réplicas. Conjuntos de réplicas distribuem dados
em duas ou mais máquinas, para redundância e para automatizar failover , em
caso de falhas no servidor e na rede. Além disso, a replicação é usada para
dimensionar leituras de banco de dados. Se você tiver um aplicativo de leitura
intensiva, como costuma ser o caso da web, é possível espalhar leituras de
bancos de dados entre máquinas no cluster (BANKER et al., 2016).

29 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Conjuntos de Réplicas
Os conjuntos de réplicas consistem em muitos servidores MongoDB,
geralmente, com cada servidor em uma máquina física separada; vamos
chamá-los de nós. A qualquer momento, um nó serve como o nó primário do
conjunto de réplicas, e um ou mais nós servem como secundários. Assim
como a replicação primary/secondary (primária/secundária), com a qual você já
deve estar familiarizado em outros bancos de dados, o nó primário de um
conjunto de réplicas pode aceitar ambos, leitura e escrita, mas os nós
secundários são somente para leitura. O que torna os conjuntos de réplicas
únicos é seu suporte para failover automatizado: se o nó primário falhar, o
cluster irá escolher um nó secundário e, automaticamente, promovê-lo ao
primário. Quando o antigo primário voltar on-line , fará isso como um
secundário. Uma ilustração desse processo é apresentada na Figura 1.3.

30 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Figura 1.3 - Exemplo de funcionamento de um ambiente de replicação


Fonte: Adaptada de Banker et al. (2016, p. 12).

#PraCegoVer : a imagem apresenta um exemplo de funcionamento de replicação.


Em (1), a replicação ocorre normalmente. Em (2), um dos nós falha. Por �m, em
(3), os nós se recon�guram para recuperar a replicação.

Velocidade e Durabilidade
Para entender a abordagem do MongoDB para durabilidade, deve-se,
primeiramente, considerar algumas ideias. Nos sistemas de bancos de dados,
existe uma relação inversa entre velocidade de gravação e durabilidade.

A velocidade de gravação pode ser entendida como o volume de inserções,


atualizações e exclusões que um banco de dados pode processar em um
determinado momento (BANKER et al ., 2016). A durabilidade refere-se ao
nível de garantia de que as operações de gravação tornaram-se permanentes.
Por exemplo, suponha que você escreva 100 registros, de 50KB cada, para um

31 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

banco de dados e, em seguida, desligue o servidor. Esses registros serão


recuperáveis? Quando você coloca a máquina on-line novamente, ou seja, a
liga? A resposta depende do seu sistema de banco de dados, sua con�guração
e do hardware que o hospeda.

A maioria dos bancos de dados permite durabilidade por padrão, então, você
estará seguro se isso acontecer. Para algumas aplicações, como o
armazenamento de linhas de registro, pode fazer mais sentido ter gravações
mais rápidas, mesmo se houver risco de perda de dados. O problema é que
gravar em um disco rígido magnético é muitas vezes mais lento do que gravar
em RAM. Certos bancos de dados, como o Memcached, gravam
exclusivamente na RAM, o que os torna extremamente rápidos, mas
completamente voláteis. Por outro lado, poucos bancos de dados gravam
exclusivamente para o disco, porque o baixo desempenho de tal operação é
inaceitável. Portanto, os designers de banco de dados, muitas vezes, precisam
fazer concessões para fornecer o melhor equilíbrio entre velocidade e
durabilidade.

reflita
Re�ita
O mundo da tecnologia atual exige
uma velocidade de resposta muito
signi�cativa. Por exemplo, imagine que
você esteja assistindo a um vídeo e
lendo os comentários enquanto isso.
Caso esses comentários sejam
carregados de forma lenta, sua
experiência será ruim. Os bancos
NoSQL tentam resolver essa questão
privilegiando muito mais as leituras do
que as escritas, para que a experiência

32 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

de usuário não seja prejudicada.

Além disso, esses bancos permitem


que o acesso aos dados seja mais
veloz, utilizando técnicas de indexação
e escalonamento, vertical ou
horizontal. Tudo isso visando reduzir o
consumo de rede e manter o �uxo de
informação para uma melhor
experiência de usuário. Nesse cenário,
pense sobre como as tecnologias de
NoSQL possibilitam a entrega de
informação com a velocidade desejada
(BANKER et al ., 2016).

Dimensionamento
A maneira mais fácil de dimensionar a maioria dos bancos de dados é
atualizar o hardware. Se seu aplicativo está sendo executado em um único nó,
geralmente, é possível adicionar alguma combinação de discos, mais memória
e uma CPU mais robusta, para aliviar quaisquer gargalos de banco de dados. A
técnica de aumentar o hardware de um único nó para escala é conhecida
como escala vertical ou scaling up (BANKER et al ., 2016).

A escala vertical tem como vantagens ser simples, con�ável e econômica, até
certo ponto, mas, eventualmente, você chega a um ponto em que não é mais
viável mudar para uma máquina melhor. Então, faz sentido considerar o
dimensionamento horizontal ou horizontal (consulte a Figura 1.4). Em vez de
aumentar um único nó, escalar horizontalmente signi�ca distribuir o banco de
dados em várias máquinas. Uma arquitetura em escala horizontal pode ser
executada em muitas máquinas menores e mais baratas, geralmente,
reduzindo seus custos de hospedagem. Além disso, a distribuição de dados

33 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

pelas máquinas atenua as consequências da falha. Máquinas, inevitavelmente,


vão falhar de vez em quando. Se você escalou verticalmente e a máquina
falhou, então, você precisa lidar com a falha de uma máquina, da qual a maior
parte do seu sistema depende. Isso pode não ser um problema se houver
uma cópia dos dados em um secondary replicado, dessa forma, ocorre que, se
apenas um único servidor falhar, isso irá desativar todo o sistema.

Figura 1.4 - Dimensionamento do banco de dados não relacional


Fonte: Adaptada de Banker et al. (2016, p. 14).

#PraCegoVer : a imagem apresenta um exemplo de escalonamento


(dimensionamento) do banco de dados não relacional. Isso pode ser feito
verticalmente, com o aumento da capacidade do hardware; ou horizontalmente,
com o aumento de nós do banco de dados.

Compare isso a uma falha dentro de uma arquitetura dimensionada


horizontalmente. Isso pode ser menos catastró�co, porque uma única
máquina representa uma porcentagem muito menor do sistema como um
todo. O MongoDB foi projetado para tornar o dimensionamento horizontal
gerenciável. Isso é feito por meio de um mecanismo de particionamento

34 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

baseado em intervalo, conhecido como sharding , que gerencia


automaticamente a distribuição de dados entre os nós. Também há uma
fragmentação baseada em hash e tag mecanismo, mas é apenas outra forma
de mecanismo de fragmentação baseado em alcance (BANKER et al., 2016). O
sistema de fragmentação lida com a adição de nós de fragmentos e também
facilita failover automático. Fragmentos individuais são constituídos por um
conjunto de réplicas, que consiste em pelo menos dois nós, garantindo
recuperação automática sem ponto único de falha. Tudo isso signi�ca que
nenhum código de aplicativo precisa lidar com essa logística; o código do seu
aplicativo se comunica com um cluster fragmentado da mesma forma que se
comunica com um único nó.

praticar
Vamos Praticar
Escalonamento ou dimensionamento é uma tarefa comum em ambientes de big
data. Para isso, há duas possibilidades para realizar tal operação. Nesse caso, o
escalonamento vertical exige um aumento de hardware, em termos de capacidade.
Por outro lado, o escalonamento horizontal pode ser feito com hardwares
heterogêneos e de menor capacidade.

A partir do que foi apresentado, explique, em um parágrafo de, no máximo, 4


(quatro) linhas, quando o escalonamento vertical deve ser utilizado e qual sua
limitação.

35 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

Como podemos observar em nosso estudo, existem alguns conceitos que


estão presentes tanto no domínio dos bancos de dados relacionais como nos
não relacionais. A diferença fundamental entre eles está na forma de
armazenamento dos dados. Enquanto os bancos relacionais estão no formato
de tuplas, nos bancos de dados não relacionais estão no formato de pares
chave-valor.

36 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

indicações
Material
Complementar

FILME

Moneyball
Ano : 2011

Comentário : este �lme apresenta uma visão geral de


como o big data pode auxiliar no desenvolvimento de
soluções para o esporte. Nele, podemos ver como os
dados são fundamentais para qualquer tipo de solução.
Para isso, o motor que permite tal desenvolvimento são
os bancos de dados NoSQL. Para conhecer mais sobre o
�lme, acesse o trailler a seguir.

TRAILER

37 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

LIVRO

Big Data
Editora : Elsevier

Autores: Viktor Mayer-Schonberer e Kenneth Cukier

ISBN : 8535270906, 9788535270907

Comentário : este livro trata de como extrair valor dos


dados disponibilizados no cotidiano e que podem
passar despercebidos. É uma grande fonte de insights
que vai permitir que você entenda como os bancos
NoSQL podem auxiliar em tais tarefas.

38 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

conclusão
Conclusão
Vimos como a demanda por dados tem crescido e como eles estão disponíveis
diariamente, para que todos possam criar soluções úteis em diversos
cenários. Uma dessas soluções refere-se ao conceito de NoSQL ou, em outras
palavras, bancos de dados não relacionais. Um dos grandes representantes
desse tipo de tecnologia é o banco de dados MongoDB. Ele permite criar
soluções para cenários de big data de forma escalonável. Além disso, vimos
como tais soluções exigem tecnologias complementares aos bancos de dados
relacionais, como os bancos de dados não relacionais. Tais tecnologias devem
ser encaradas não como uma melhoria dos bancos relacionais, mas, sim,
como algo que deve ser utilizado em conjunto, para suprir a demanda por
informações.

referências
Referências
Bibliográ�cas
BANKER, K. et al . MongoDB in action . 2. ed. New York: Manning Publications
Co., 2016.

CAMPELLO, B.; CALDEIRA, P. D. T. Introdução às fontes de informação . 3.

39 of 40 17/03/2022 14:20
Ead.br https://codely-fmu-content.s3.amazonaws.com/Moodle...

ed. Belo Horizonte: Autêntica Editora, 2014.

CIELEN, D.; MEYSMAN, A. D. B.; ALI, A. Introducing data science . Big data,
machine learning, and more, using Python tools. New York: Manning
Publications Co., 2016.

DOURADO, D. Big data . 1. ed. São Paulo. Editora Brasport, 2013.

MONEYBALL (2011) Movie Trailer – HD – Brad Pitt. 2010. 1 vídeo (2 min 30s).
Publicado pelo canal Movieclips Trailers. Disponível em:
https://www.youtube.com/watch?v=-4QPVo0UIzc . Acesso em: 24 nov. 2020.

MONGODB. Indexes . Disponível em: https://docs.mongodb.com/manual


/indexes/ . Acesso em: 24 nov. 2020.

40 of 40 17/03/2022 14:20

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy