Top Banner
NoSQL: onde, NoSQL: onde, como e por quê? como e por quê? Rodrigo Hjort [email protected]
40

NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Nov 09, 2018

Download

Documents

haphuc
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

NoSQL: onde,NoSQL: onde,como e por quê?como e por quê?

Rodrigo [email protected]

Page 2: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Quem aqui usabanco de dados?

Page 3: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Por que precisamos de SQL?

Page 4: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Onde usamos SQL (i.e. ACID)?

Page 5: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

MAS...

Page 6: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Universo digital em expansão

Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Page 7: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Aplicações web modernas

Page 8: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Escalabilidade vertical écomplicada e/ou cara!

Page 9: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Os modelos transacionais

● ACIDpessimista, forçando consistência ao final de cada operação

● BASEotimista, aceitando que a consistência esteja em um “estado de fluxo”

Possibilita aescalabilidade

horizontal...

http://queue.acm.org/detail.cfm?id=1394128

Page 10: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

distribuídosdistribuídos

NoSQL = Not Only SQLNoSQL = Not Only SQL

não relacionaisnão relacionais

horizontalmentehorizontalmenteescaláveisescaláveis

esquemasesquemasflexíveisflexíveis

replicáveisreplicáveis APIs simplesAPIs simples

http://nosql-database.org/

Page 11: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Key-Value Store

Zoologia dos bancos NoSQLZoologia dos bancos NoSQL

Wide Column Store / Column Families

Document Store

NoSQL Database

Page 12: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

MAS...

Page 13: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Você precisa escolher 2!

Teorema de Brewer: CAP

● Consistência: visão única para os clientes

● Disponibilidade:toda operação temuma resposta

● Partição: sistema continua operante mesmo enfrentando partições na rede

ConsistênciaConsistency

DisponibilidadeAvailability

PartiçãoPartition

Tolerance

Page 14: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

I. Consistência e Disponibilidade

● Limitações na escalabilidade (leitura e escrita)

C A

Page 15: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

II. Consistência e Partição

● Completamente inacessível se qualquerum dos nós estiver fora!

CP

Page 16: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

III. Disponibilidade e Partição

● Nem sempre lê a informação mais recente: futuramente consistente

A

P

Page 17: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

“A high performance, scalable,distributed storage and processing system

for structured and unstructured data.”

Page 18: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Cassandra: um breve histórico

Bigtable Dynamo

Page 19: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Um novo modelo de dados

Row

schema-less

schema-optional

Page 20: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Exemplo: modelagem do Twitter

john name: John Doe pass: swordfish joined: 20091115

paul name: Paul Lane pass: thepass joined: 20091129

john paul: 20091204 brigitte: 20100815

paul john: 20091205 debora: 20100729 brigitte: 20100822

john tom: 20091128 paul: 20091205

brigitte john: 20100815 paul: 20100822

Users

Following

Followers

@paul segue @brigitte desde

22/08/2010

Page 21: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

tweet

Exemplo: modelagem do Twitter

12345 user: john body: Nuvem privada do @serpro! retweets: 123

12346 user: brigitte

john 20100116083155: 12346

paul 20100116083002: 12345 20100116083155: 12346

john 20100116083002: 12345 20100118235914: 23457

brigitte 20100116083155: 12346

Statuses (Tweets)

Timeline

Userline

Tweets do @john

tweet body: Acabei de #acordar. tags acordar: 1

Tweets dos usuários que o @paul segue

data/hora

Page 22: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

CQL (Query Language)CQL (Query Language)

CREATE COLUMNFAMILY users (KEY varchar PRIMARY KEY,name varchar, pass varchar, joined bigint);

INSERT INTO users (KEY, name, pass)VALUES ('jsmith', 'John Smith', 'changeme')USING CONSISTENCY QUORUM;

SELECT * FROM users WHERE KEY = 'jsmith';u'jsmith' | u'pass',u'changeme'

SELECT name..pass FROM users WHERE KEY >= 'h' LIMIT 10;

CREATE INDEX users_joined_idx ON users (joined);

DELETE joined FROM users where KEY = 'jsmith';

Page 23: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

“It took two weeks to perform ALTER TABLE on the statuses [tweets] table.”

– Twitter

Page 24: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

01

1/2

F

E

D

C

B

A N=3

h(key2)

h(key1)

Particionamento e replicação

Fixed CircularSpace (Ring)

Virtual NodesConsistentHashing (MD5)

Page 25: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Ajuste de parâmetros (N, R, W)

● Consistência versus Escalabilidade● Ajuste por requisição (R, W)

● Zero● One● Quorum: N / 2 + 1● All

● N: réplicas● R + W > N● Read repair

réplica réplica réplica

coordenador

ack

cliente

Page 26: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Comunicação entre os nós

Gossip-Based Protocol

Page 27: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Relacional versus NoSQL

Dados do benchmark● Base com 50 GB de dados

MySQL● leitura: ~350 ms● escrita: ~300 ms

Cassandra● leitura: ~15 ms● escrita: ~0,12 ms

Leitura 23x

mais rápida!

Escrita 2500x

mais rápida!

Page 28: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

“MongoDB (from "humongous") is a scalable,high-performance, open source, powerful,

document-oriented database written in C++.”

Page 29: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

O modelo de dados

Relacional (Tabular) Orientado a Documentos

Page 30: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Modelo Modelo RelacionalRelacional

Page 31: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Modelo Modelo Orientado a Orientado a DocumentosDocumentos

Page 32: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

{ _id : ObjectId("5ebf5e0fec5fab7db2b9b40e"), title : "Introdução ao MongoDB", slug : "introducao-ao-mongodb", body : "Este é o texto do post...", published : true, created : "Jun 28 2011 13:48:22 AMT", updated : "Jun 28 2011 17:01:15 AMT", comments : [ { author : "john", email : "[email protected]", body : "Caramba!", created : "Jun 28 2011 15:01:30 BRST" } ], tags : [ "databases", "MongoDB", "nosql" ]}

Array

Object ID

EmbeddedDocument

Um documento JSONUm documento JSON

Page 33: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Linguagem de ConsultaLinguagem de Consulta

SELECT * FROM usuarios> db.usuarios.find()

SELECT nome FROM usuarios> db.usuarios.find({}, {“nome”: 1})

SELECT * FROM usuarios WHERE idade = 29> db.usuarios.find({“idade”: 29})

SELECT * FROM usuarios WHERE idade = 29 AND ativo = true> db.usuarios.find({“idade”: 29, “ativo”: true})

SELECT * FROM usuarios WHERE idade >= 18 AND idade <= 30> db.usuarios.find({“idade”: {“$gte”: 18, “$lte”: 30}})

SELECT * FROM usuarios WHERE nome LIKE “%admin%”> db.usuarios.find({“nome”: /admin/i})

Page 34: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Linguagem de ConsultaLinguagem de Consulta

SELECT * FROM usuarios ORDER BY nome> db.usuarios.find().sort({“nome”: 1})

SELECT * FROM usuarios ORDER BY idade DESC, nome> db.usuarios.find().sort({“idade”: -1, “nome”: 1})

SELECT * FROM usuarios LIMIT 3> db.usuarios.find().limit(3)

SELECT * FROM usuarios OFFSET 5> db.usuarios.find().skip(5)

SELECT * FROM usuarios LIMIT 3 OFFSET 5> db.usuarios.find().limit(3).skip(5)

SELECT * FROM usuarios ORDER BY nome LIMIT 3> db.usuarios.find().sort({“nome”: 1}).limit(3)

Page 35: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Map ReduceMap Reduceíndicesíndices

cappedcappedcollectionscollections

Server-SideServer-SideScriptingScripting

GridFSGridFS ad hoc queriesad hoc queries

Page 36: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Sharding

Page 37: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

Auto-Sharding + Replicação

Page 38: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

A grande ruptura

Page 39: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

A segunda ruptura

Page 40: NoSQL: onde, como e por quê? - prodam.am.gov.br · Universo digital em expansão Fonte: IDC White Paper, "The Diverse and Exploding Digital Universe", 2008.

“NoSQL adoption is inevitable because,just as in every other walk of life, there are different tools for different jobs” – Stephen

O'Graddy (RedMonk)

Rodrigo [email protected]

http://www.hjort.co