29
NoSQL Soluções alternativas para bancos de dados

NoSQL - Soluções alternativas para bancos de dados

Embed Size (px)

Citation preview

Page 1: NoSQL - Soluções alternativas para bancos de dados

NoSQLSoluções alternativas para bancos

de dados

Page 2: NoSQL - Soluções alternativas para bancos de dados

Nicolas Ibanheiz

Desenvolvedor Java

Entusiasta de Node.js e NoSql

Formado pela Etec de Itaquera õ/

github.com/ibanheiz

Page 3: NoSQL - Soluções alternativas para bancos de dados

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

Page 4: NoSQL - Soluções alternativas para bancos de dados

Relacionamento

Normalização

Integridade

Page 5: NoSQL - Soluções alternativas para bancos de dados

Relacionamnto Interidade

Page 6: NoSQL - Soluções alternativas para bancos de dados

Limitações do modelo relacional

- WallmartTrabalha com mais de 1 milhão de transações de clientes por hora, alimentando bancos de dados estimados em mais de 2,5 petabytes.

- FacebookPossui 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

Page 7: NoSQL - Soluções alternativas para bancos de dados

Dificuldade com escabailidade

Page 8: NoSQL - Soluções alternativas para bancos de dados

Dificuldade com performance

Page 9: NoSQL - Soluções alternativas para bancos de dados

E agora ???

Page 10: NoSQL - Soluções alternativas para bancos de dados

E agora ???

Page 11: NoSQL - Soluções alternativas para bancos de dados

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.

Page 12: NoSQL - Soluções alternativas para bancos de dados

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

Page 13: NoSQL - Soluções alternativas para bancos de dados

Bancos NoSQL populares

Page 14: NoSQL - Soluções alternativas para bancos de dados

Qual banco devo escolher?

- Alta disponibilidade e escolabilidade

- Gravação de dados muito rápida

- Linguagem de consulta semelhante ao SQL

- Esquema flexível

Page 15: NoSQL - Soluções alternativas para bancos de dados

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

Page 16: NoSQL - Soluções alternativas para bancos de dados

Não comparem bancos SQL e NoSQL

x

x

Page 17: NoSQL - Soluções alternativas para bancos de dados

Comparem bancos de mesma arquitetura para as mesmas soluções

x

x

Page 18: NoSQL - Soluções alternativas para bancos de dados

- C++

- Schemaless

- JSON/BSON

- Replica

- Harding

- GridFS

Visão geral

Page 19: NoSQL - Soluções alternativas para bancos de dados

DATABASE

TABLE

ROWS

QUERY

Terminologia

DATABASE

COLLECTION

DOCUMENT JSON

QUERY

Page 20: NoSQL - Soluções alternativas para bancos de dados

> var product = {"name": "Cachaça", "description": "Mé brasileiro", "price": 12.00}

> db.products.insert(product);

Operações - Insert

Page 21: NoSQL - Soluções alternativas para bancos de dados

> var product = db.products.find();

> {

"name": "Cachaça", "description": "Mé brasileiro", "price": 12.00

}

Operações - Find

Page 22: NoSQL - Soluções alternativas para bancos de dados

Visão Geral

- Java

- Schemaless

- Cypher

- Teoria de grafos

- Transaction

Page 23: NoSQL - Soluções alternativas para bancos de dados

Grafos

Conjunto finito de vértices e arestas

Page 24: NoSQL - Soluções alternativas para bancos de dados

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

Page 25: NoSQL - Soluções alternativas para bancos de dados

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

Page 26: NoSQL - Soluções alternativas para bancos de dados

Mudando seu jeito de pensar

Page 27: NoSQL - Soluções alternativas para bancos de dados

Mudando seu jeito de pensar

Page 28: NoSQL - Soluções alternativas para bancos de dados

Dica - Livro NoSQL Essencial

Page 29: NoSQL - Soluções alternativas para bancos de dados