1) O documento discute bancos de dados relacionais e alternativas NoSQL, como MongoDB e Neo4j.
2) É apresentada a arquitetura de uma rede social usando bancos NoSQL para melhor escalabilidade e performance.
3) Conversão de bancos SQL para NoSQL é abordada, assim como como escolher o banco certo para cada caso.
3. Papo de hoje
- Bancos de dados relacionais
- Bancos de dados NoSQL
- MongoDb
- Neo4j
- Arquitetura de uma rede social com NoSQL
- Convertendo um banco em SQL para NoSQL
6. Limitações do modelo relacional
- Wallmart
Trabalha com mais de 1 milhão de transações de clientes por hora,
alimentando bancos de dados estimados em mais de 2,5 petabytes.
- Facebook
Possui em seu banco cerca de 40 bilhões de fotos;
A cada 20 minutos...
1 milhão de links são enviados
2 milhões de pedidos de amizade são solicitados
3 milhões de mensagens são enviadas
11. História do NoSQL
- NoSQL (Not Only SQL) foi utilizado em 1998 para o nome de um banco de
dados relacional de código aberto que não possuía interface SQL.
- Em 2009 foi reintroduzido por Eric Evans (da Rackspace) para os novos
bancos que surgiam e não tinham preocupação em dar garantias ACID
(Atomicidade, Consistência, Isolamento e Durabilidade).
- O nome fazia referência à bancos de dados populares na época, como
MySQL, MS SQL e PostgreSQL, então por isso, usaram o NoSQL.
12. Quando e porque usar?
- Escalabilidade sob demanda
- Performance em escrita massiva
- Esquema flexível e tipos de dados flexíveis
- Facilidade de uso para o programador
- Sincronização de dados online e offline (CouchDB)
- Evitar joins pesados quando o carregamento
das querys se tornam muito grandes para
os bancos relacionais
14. Qual banco devo escolher?
- Alta disponibilidade e escolabilidade
- Gravação de dados muito rápida
- Linguagem de consulta semelhante ao SQL
- Esquema flexível
15. Qual banco devo escolher?
- Alta disponibilidade e escolabilidade
- Leitura muito rápida em cache
- Schema de dados simples (key-value)
- Fácil integração com qualquer linguagem
24. Operações - Create e Show
CREATE (NoSQL: palestra {title: 'NoSQL Soluções alternativas para bancos de
dados'})
CREATE (Nicolas: palestrante {nome: 'Nicolas Ibanheiz', idade: 21})
CREATE (Nicolas)-[:PALESTROU_EM {roles: ['Nico']}]->(NoSQL)
WITH Nicolas as a
MATCH(a)-[:PALESTROU_EM]->(m) return a,m
25. Pensando numa Rede Social
1 - Leitura mais
rápida de dados
Replicação de dados
Replicação de dados
2 - Repositório central
3 - Leitura rápida em
cache
4 - Conectar e descobrir
relacionamentos