MBA em CIência de Dados
NOSQL
Instrutor: Dsc. Francisco Nauber Bernardo Gois
email: naubergois@[Link]
Francisco Nauber Bernardo Gois Experiência Profissional
Dsc. Informática Aplicada
Auditor de Controle Interno e Professor da
Especialização em Ciência de Dados
Cientista de Dados (2021-2022)
Cientista de Dados (Manutenção Preditiva com Modelos de Aprendizado
de Máquina e Sistemas Autônomos) - Lisboa, Portugal (2020-2021)
Lider da Equipe de de Inteligência Artificial da Secretaria de Saúde no
Combate a COVID-19 (2019-2020)
Professor Adjunto - Campus Russas (2017-2019)
Analista de Sistemas e Cientista de Dados (2004-2017)
Francisco Nauber Bernardo Gois Formação Acadêmica
Dsc. Informática Aplicada
Pós Doutorado- Laboratório de Neurociência
Aplicada (2022-2025)
Doutorado em Informática Aplicada (2012-2017)
Search-based Stress Test: an approach applying evolutionary
algorithms and trajectory methods
Mestrado em Informática Aplicada (2012-2017)
Francisco Nauber Bernardo Gois Publicações
Dsc. Informática Aplicada
Hu, Qinhua, Francisco Nauber B. Gois, Rafael Costa, Lijuan Zhang, Ling Yin, Naercio Magai, and Victor Hugo C.
de Albuquerque. "Explainable artificial intelligence-based edge fuzzy images for COVID-19 detection and
identification." Applied Soft Computing (2022): 108966.
Han, Tao, Francisco Nauber Bernardo Gois, Ramsés Oliveira, Luan Rocha Prates, and Magda Moura de Almeida Porto.
"Modeling the progression of COVID-19 deaths using Kalman Filter and AutoML." Soft Computing (2021): 1-16.
Predictive Models for Decision Support in the COVID-19 Crisis (Livro- 2021)
Marques, João Alexandre Lôbo, Francisco Nauber Bernardo Gois, Jarbas Aryel Nunes da Silveira, Tengyue Li, and Simon
James Fong. "AI and deep learning for processing the huge amount of patient-centric data that assist in clinical decisions."
In Cognitive and Soft Computing Techniques for the Analysis of Healthcare Data, pp. 101-121. Academic Press, 2022.
Marques, João Alexandre Lôbo, Francisco Nauber Bernardo Gois, João Paulo do Vale Madeiro, Tengyue Li, and Simon
James Fong. "Artificial neural network-based approaches for computer-aided disease diagnosis and treatment." In
Cognitive and Soft Computing Techniques for the Analysis of Healthcare Data, pp. 79-99. Academic Press, 2022.
Francisco Nauber Bernardo Gois Projetos
Dsc. Informática Aplicada
Detecção de Anomalias em Baterias , Pastilhas de Freios e Compressores de Ar
usando Self- Supervised Learning
Segmentação de Tomografias Computadorizadas de Pulmão
Detecção de Anomalias em EEG usando Self-Supervised Learning
MBA em CIência de Dados
[Link]
[Link]
[Link]
[Link]
MBA em CIência de Dados
Avaliação- Projeto Prático.
Realizar modelagem e implementação de schema de banco NOSQL
Data de Entrega: Último dia de aula (Haverá tempo para
realizar a prática em sala de aula)
Equipe de no máximo 3 pessoas
Metodologia aplicada:
Conceitos téoricos com aplicação prática.
Construção de um projeto final com todos os
MBA em CIência de Dados conceitos aplicados de forma integrada.
Spark Nesse curso o aluno deve aprender como utilizar o Spark
para criação de schema e armazenamento em banco de
Processamento em dados NoSQL.
Paralelo
MBA em CIência de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência de Dados
Processa os datasets e cria os papelines Desenvolve dashboards para visualização
Cientista de dados cria modelos preditivos de
forma descobrir e apresentar insights
Skills: Matemática, Programação e Skills: Matemática, Programação e Big data
Comunicação
[Link]
v=UwsrzCVZAb8&t=561s
MAP
REDUCE
MBA em CIência de Dados
Revisão de Map Reduce
[Link]
MBA em CIência de Dados
Bancos SQL
MBA em CIência de Dados
MBA em CIência de Dados
Processamento em
Paralelo
MBA em CIência de Dados
Arquitetura
MBA em CIência de Dados
Porque uma máquina
não é suficiente?
MBA em CIência
de Dados
MBA em CIência de Dados
Bancos NoSQL
ACID (Atomicity, Consistency, Isolation, Durability)
em um nó,
BASE (Basic Availability, Soft-state, Eventual
MBA em CIência de Dados consistência) em todo o cluster
pode não usar SQL como linguagem de consulta
Bancos NoSQL dados não requerem um modelo relacional
escalável horizontalmente
sem esquema
MBA em CIência de Dados
Bancos NoSQL
MBA em CIência de Dados
Bancos NoSQL
Benefícos do NO SQL
Escala elástica
• RDBMS escalonado - precisa de maiores servidores
MBA em CIência de Dados • NENHUM escalonamento SQL –
distribuir dados em vários hosts perfeitamente
Bancos NoSQL
DBA Especialistas
• RDMS exigem alta especialização e
treinamentos para monitorar o banco de
dados
NoSQL requer menos gerenciamento,
automático e reparação
MBA em CIência de Dados
Bancos NoSQL
MBA em CIência de Dados
Bancos NoSQL
MBA em CIência de Dados
Bancos NoSQL
MBA em CIência de Dados
Quando usar um banco de dados de
Bancos NoSQL
valor-chave?
Banco de chave-valor
O valor de um banco de dados de chave-valor é
simplicidade, velocidade, escalabilidade e confiabilidade. Os
bancos de dados de chave-valor também oferecem acesso
rápido na memória e são ótimos para quando seu aplicativo
precisa lidar com muitas leituras e gravações pequenas e
contínuas que podem ser voláteis.
MBA em CIência de Dados
Bancos NoSQL Gerenciamento de sessões em grande escala
Usando o cache para acelerar as respostas do aplicativo
Banco de chave-valor Recomendações de produtos, armazenando listas
personalizadas de itens para clientes individuais
Gerenciando a sessão de cada jogador em jogos online
multiplayer massivos
Acesso a dados aleatórios em tempo real, por exemplo,
atributos de sessão do usuário em um aplicativo online, como
jogos ou finanças
MBA em CIência de Dados
Quando usar um banco de dados de documentos?
Bancos NoSQL
Use um banco de dados baseado em documentos
Bancos baseado em quando precisar armazenar cada registro como um
Documentos documento com características específicas. Os
bancos de dados de documentos são populares entre
os desenvolvedores porque eles têm a flexibilidade
de retrabalhar suas estruturas de documentos
conforme necessário para se adequar ao seu
aplicativo, moldando suas estruturas de dados à
medida que os requisitos do aplicativo mudam ao
longo do tempo.
MBA em CIência de Dados
Bancos NoSQL Casos de uso do banco de dados de documentos:
Bancos baseado em Gerenciamento e personalização de dados do cliente
Documentos Internet das Coisas (IoT) e dados de séries temporais
Catálogos de produtos e gerenciamento de conteúdo
Processo de pagamento
Aplicativos móveis
Análise operacional
Análise em tempo real
MBA em CIência de Dados
Bancos NoSQL Quando usar um banco de dados
Bancos orientados a
orientado a colunas?
Colunas
Em um nível básico, os bancos de dados orientados a
colunas funcionam exatamente como anunciado: em
vez de organizar as informações em linhas, eles o
fazem em colunas. Isso essencialmente os faz
funcionar da mesma maneira que as tabelas funcionam
em bancos de dados relacionais.
MBA em CIência de Dados
Claro, como este é um banco de dados NoSQL, esse modelo
Bancos NoSQL de dados os torna muito mais flexíveis. Os bancos de dados
orientados a colunas são usados em data warehouses onde
Bancos orientados a as empresas enviam grandes quantidades de dados de várias
Colunas fontes para análise de BI e têm desempenho de consulta
mais rápido.
MBA em CIência de Dados
O design da coluna mantém os dados mais próximos,
Bancos NoSQL reduzindo o tempo de busca. Esses bancos de dados são
ideais para casos de uso que exigem um grande conjunto de
Bancos orientados a dados distribuído em vários nós de banco de dados,
Colunas especialmente quando as colunas não são sempre as
mesmas para todas as linhas.
Casos de uso de banco de dados orientado a colunas:
Análise e relatórios
Armazenamento de dados
Processamento de big data
MBA em CIência de Dados
NoSQL vs SQL
Mantém algumas propriedades amigáveis do SQL. (consulta, índice)
As consultas são expressões javascript
Execute funções javascript arbitrárias no lado do servidor
Replicação mestre-escravo
Fragmentação integrada
Simultaneidade: atualização no local
Possui indexação geoespacial
MBA em CIência de Dados
Armazena documentos como BSON (JSON binário)
Fornece CP (lembre-se do teorema CAP)
PyMongo Suporte de classe empresarial
MTV Networks
craigslist
Disney Interactive Media Group
foursquare
[Link]
The New York Times
SourceForge
The Guardian
Barclays
MBA em CIência de Dados
PyMongo
• Esquema dinâmico
• Sem DDL
MBA em CIência de Dados • Banco de dados baseado em documentos
• Índices secundários
PyMongo • Linguagem de consulta por meio de uma API
• Gravações atômicas e leituras totalmente consistentes
• Replicação mestre-escravo com failover automatizado
(conjuntos de réplicas)
• Escala horizontal integrada por meio de escala
automatizada baseada em faixa
particionamento de dados (sharding)
• Sem junções nem transações
Sharding é um método para distribuir dados em várias máquinas. O
MongoDB usa sharding para oferecer suporte a implantações com
MBA em CIência de Dados
conjuntos de dados muito grandes e operações de alto rendimento.
PyMongo
Os sistemas de banco de dados com grandes conjuntos de dados ou
aplicativos de alto rendimento podem desafiar a capacidade de um
único servidor. Por exemplo, altas taxas de consulta podem esgotar
a capacidade da CPU do servidor. Tamanhos de conjuntos de
trabalho maiores que a RAM do sistema aumentam a capacidade de
E/S das unidades de disco.
MBA em CIência de Dados
PyMongo
MBA em CIência de Dados
PyMongo
MBA em CIência de Dados A escala vertical envolve aumentar a capacidade de um único
servidor, como usar uma CPU mais poderosa, adicionar mais
PyMongo
RAM ou aumentar a quantidade de espaço de
armazenamento. Limitações na tecnologia disponível podem
impedir que uma única máquina seja suficientemente
poderosa para uma determinada carga de trabalho. Além
disso, os provedores baseados em nuvem têm tetos rígidos
com base nas configurações de hardware disponíveis. Como
resultado, há um máximo prático para escala vertical.
O dimensionamento horizontal envolve a divisão do
conjunto de dados do sistema e a carga em vários
servidores, adicionando servidores adicionais para
MBA em CIência de Dados aumentar a capacidade conforme necessário. Embora a
velocidade ou capacidade geral de uma única máquina
PyMongo possa não ser alta, cada máquina lida com um subconjunto
da carga de trabalho geral, oferecendo potencialmente
melhor eficiência do que um único servidor de alta
capacidade e alta velocidade. A expansão da capacidade da
implantação requer apenas a adição de servidores
adicionais conforme necessário, o que pode ser um custo
geral menor do que o hardware de ponta para uma única
máquina. A desvantagem é o aumento da complexidade na
infraestrutura e na manutenção da implantação.
MBA em CIência de Dados
PyMongo
MBA em CIência de Dados
PyMongo
MBA em CIência de Dados
PyMongo
MBA em CIência de Dados
PyMongo Exercício 1 de PyMongo
[Link]
MBA em CIência de Dados
PyMongo
[Link]
[Link]
cursor = [Link]({})
MBA em CIência de Dados
PyMongo
SELECT * FROM inventory
[Link]
cursor = [Link]({"status": "D"})
MBA em CIência de Dados
PyMongo
SELECT * FROM inventory WHERE status = "D"
[Link]
cursor = [Link]({"status": {"$in": ["A", "D"]}})
MBA em CIência de Dados
PyMongo
SELECT * FROM inventory WHERE status in ("A", "D")
[Link]
cursor = [Link]({"status": "A", "qty": {"$lt": 30}})
MBA em CIência de Dados
PyMongo
SELECT * FROM inventory WHERE status = "A" AND qty < 30
[Link]
cursor = [Link]({"$or": [{"status": "A"}, {"qty": {"$lt": 30}}]})
MBA em CIência de Dados
PyMongo
SELECT * FROM inventory WHERE status = "A" OR qty < 30
[Link]
cursor = [Link](
{"status": "A", "$or": [{"qty": {"$lt": 30}}, {"item": {"$regex": "^p"}}]}
)
MBA em CIência de Dados
PyMongo SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%")
[Link]
Query on Embedded/Nested Documents
MBA em CIência de Dados
PyMongo
[Link]
Query an Array
MBA em CIência de Dados
PyMongo
cursor = [Link]({"tags": ["red", "blank"]})
[Link]
MBA em CIência de Dados [Link].update_one(
PyMongo {"item": "paper"},
{"$set": {"[Link]": "cm", "status": "P"},
"$currentDate": {"lastModified": True}},
)
[Link]
MBA em CIência de Dados
PyMongo
MBA em CIência de Dados
PyMongo
O que é um Replica Set?
MBA em CIência de Dados Replication no mongoDB é chamado de Replica Set
e corresponde a um conjunto de processos que
PyMongo
mantém o conjunto de dados (dataset) em
diferentes servidores
Um conjunto de réplicas é um grupo de dois ou
mais nós (o ideal é ter no mínimo 3 nós com as
mesmas configurações).
MBA em CIência de Dados
PyMongo
MBA em CIência de Dados
PyMongo
MBA em CIência de Dados
PyMongo
MBA em CIência de Dados
PyMongo
MBA em CIência de Dados
PyMongo Exercício 2 de PyMongo
[Link]
MBA em CIência de Dados
PyMongo
[Link]
MBA em CIência de Dados
PyMongo
[Link]
MBA em CIência de Dados
PyMongo
Agregacao
[Link]
VAMOS
PRATICAR
MBA em CIência de Dados
PyMongo
TUDO
JUNTO
[Link]
MBA em CIência de Dados
PyMongo
Agregacao
MBA em CIência de Dados
PyMongo
Agregacao
[Link]
MBA em CIência de Dados
PyMongo
Exercício
[Link]
MBA em CIência de Dados
PyMongo
Exercício
[Link]
[Link]
[Link]
MBA em CIência de Dados
Cassandra
MySQL > 50 GB Data
Writes Average : ~300 ms
Reads Average : ~350 ms
Cassandra > 50 GB Data
Writes Average : 0.12 ms
Reads Average : 15 ms
MBA em CIência de Dados
Cassandra vs Mongo DB
O MongoDB tem um único mestre direcionando vários nós escravos. Se
o nó mestre ficar inativo, um dos nós escravos assume seu papel.
Embora a estratégia de failover automático garanta a recuperação,
pode levar até um minuto para que o escravo se torne o mestre.
Durante esse tempo, o banco de dados não pode responder às
solicitações.
Cassandra, por outro lado, usa um modelo diferente. Em vez de ter um
nó mestre, ele usa vários mestres dentro de um cluster. Com vários
mestres presentes, não há medo de qualquer tempo de inatividade. O
modelo redundante garante alta disponibilidade em todos os
momentos.
MBA em CIência de Dados
Cassandra vs Mongo DB
O modelo de dados do MongoDB é categorizado como orientado a
objetos e documentos. Isso significa que ele pode representar
qualquer tipo de estrutura de objeto que pode ter propriedades ou
até mesmo ser aninhado para vários níveis.
Quando se trata de Cassandra, existe um modelo mais tradicional.
Cassandra tem uma estrutura de tabela usando linhas e colunas.
Ainda assim, é mais flexível que os bancos de dados relacionais, pois
não é necessário que cada linha tenha as mesmas colunas. Após a
criação, essas colunas recebem um dos tipos de dados disponíveis do
Cassandra, dependendo mais da estrutura de dados.
MBA em CIência de Dados
Cassandra vs Mongo DB
O MongoDB usa consultas estruturadas em fragmentos JSON e ainda
não possui suporte a linguagem de consulta. Se você ou sua equipe
estão acostumados com SQL, isso será algo para se acostumar. No
entanto, é bastante fácil de gerenciar.
Ao contrário do MongoDB, o Cassandra possui sua própria linguagem de
consulta chamada CQL (Cassandra Query Language). Sua sintaxe é
semelhante ao SQL, mas ainda possui algumas limitações.
Essencialmente, o banco de dados possui uma maneira diferente de
armazenar e recuperar dados por ser não relacional.
MBA em CIência de Dados
Cassandra vs Mongo DB
MBA em CIência de Dados
Cassandra vs Mongo DB
MBA em CIência de Dados
Cassandra vs Mongo DB
Keyspace no Cassandra é um objeto que é uma
coleção de um ou mais esquemas de famílias de
colunas (tabelas). Um keyspace é o contêiner de
dados mais externo. No Cassandra, o keyspace é
um pouco análogo a um banco de dados no RDBS.
Os nós são estruturados logicamente na topologia em
anel.
O valor com hash da chave associada à partição de dados é
usado para atribuí-la a um nó no anel.
MBA em CIência de Dados
O hash é arredondado após determinado valor para
Cassandra vs Mongo DB suportar a estrutura do anel.
Nós levemente carregados movem a posição para aliviar
nós altamente carregados.
MBA em CIência de Dados
Cassandra
[Link]
VELOCIDADE
MBA em CIência de Dados
Cassandra vs Redis
O Cassandra está mais focado em fornecer estabilidade
e, portanto, como o SQL, você pode armazenar grandes
conjuntos de dados. Mas, é mais lento em velocidade do
que o Redis.
O Redis é muito mais rápido que o Cassandra, mas fica
mais lento se você o usar para grandes conjuntos de
dados e é ideal para conjuntos de dados que mudam
rapidamente.
Exercício 1
[Link]
MBA em CIência de Dados
Cassandra vs Redis
Exercício 2
[Link]
Exercício 3
[Link]
MBA em CIência de Dados
Cassandra Configuração
[Link]
[Link]
MBA em CIência de Dados Redis é um armazenamento de estrutura de dados na
Cassandra vs Redis memória de código aberto (licenciado BSD), usado como
banco de dados, cache, agente de mensagens e
mecanismo de streaming.
[Link]
MBA em CIência de Dados
Redis
MBA em CIência de Dados
Redis
Exercício 2
[Link]
MBA em CIência de Dados
Neo4j
O que é um grafo?
...um conjunto de objetos discretos, cada um dos quais tem
algum conjunto de relacionamentos com os outros objetos
MBA em CIência
de Dados
Neo4j
MBA em CIência
de Dados
Neo4j
[Link]
Facilmente escalável: Neo4j é um banco de dados gráfico atraente. Ele pode
ser facilmente dimensionado verticalmente à medida que as
leituras/gravações no banco de dados aumentam.
Sem esquema: Neo4j é um banco de dados sem SQL, permitindo inserir os
dados com esquema variável.
Alta disponibilidade: Neo4j é um banco de dados corporativo que fornece
recursos como replicação, levando à alta disponibilidade de dados.
Tempo real: Neo4j pode ser usado para análises em tempo real.
· Tanto o Neo4j quanto o MongoDB são bancos de dados NoSQL. No entanto,
Neo4J é um banco de dados de grafos (Membrey, Hows, & Plugge, 2014).
· O MongoDB não tem esquema e fornece uma visão holística dos dados com
eventual consistência com o princípio de atualização de informações no local
(Membrey, Hows e Plugge, 2014).
· MongoDB possui framework agregado, e Neo4J não possui framework
agregado (Membrey, Hows, & Plugge, 2014).
· O banco de dados de gráficos como o Neo4J está em conformidade com a
estrutura ACID com atomicidade completa e refinada das transações
(Membrey, Hows e Plugge, 2014).
[Link]
MATCH
A palavra-chave MATCH no Cypher é o que procura um nó,
relacionamento, rótulo, propriedade ou padrão existente no banco de
dados. Se você estiver familiarizado com SQL, MATCH funciona de
forma muito parecida com SELECT em SQL.
Você pode encontrar todos os rótulos de nós no banco de dados,
pesquisar um nó específico, encontrar todos os nós com um
relacionamento específico, procurar padrões de nós e
relacionamentos e muito mais usando MATCH.
vaex
[Link]
MBA em CIência de Dados
MBA em CIência de Dados
[Link]
MBA em CIência de Dados
Kafka
Evolução da arquitetura
de Software
Documentação:
[Link]
MBA em CIência de Dados
Kafka
Evolução da arquitetura
de Software
MBA em CIência de Dados
Kafka
Evolução da arquitetura
de Software
MBA em CIência de Dados
Kafka
Evolução da arquitetura
de Software
MBA em CIência de Dados
Kafka
Porque o Apache Kafka?
MBA em CIência de Dados
Kafka
Enviando uma Mensagem
MBA em CIência de Dados
Kafka
Enviando uma Mensagem
MBA em CIência de Dados
Kafka
Enviando uma Mensagem
MBA em CIência de Dados
Kafka
Recebendo uma Mensagem
MBA em CIência de Dados
Kafka
Documentação:
[Link]
[Link]
MBA em CIência de Dados
Kafka
MBA em CIência de Dados
Kafka e Zookeper
[Link]
MBA em CIência de Dados
MBA em CIência de Dados
MBA em CIência de Dados
Projeto de
Banco de
MBA em CIência
Dados
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
[Link]
[Link]
[Link]
Word Count
[Link]
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
MBA em CIência
de Dados
Exercício
[Link]
MBA em CIência
de Dados