noSQL WTF?! - Citi2010

Preview:

DESCRIPTION

 

Citation preview

noSQL wtf?!

sexta-feira, 12 de novembro de 2010

contexto

sexta-feira, 12 de novembro de 2010

serviços websexta-feira, 12 de novembro de 2010

falta de capitalsexta-feira, 12 de novembro de 2010

mesmo assim...

sexta-feira, 12 de novembro de 2010

“risco” de fazer sucesso

sexta-feira, 12 de novembro de 2010

big data

sexta-feira, 12 de novembro de 2010

história...

sexta-feira, 12 de novembro de 2010

• Hierarchical (IMS): late 1960’s and 1970’s • Directed graph (CODASYL): 1970’s • Relational: 1970’s and early 1980’s • Entity-Relationship: 1970’s • Extended Relational: 1980’s • Semantic: late 1970’s and 1980’s• Object-oriented: late 1980’s and early 1990’s • Object-relational: late 1980’s and early 1990’s • Semi-structured (XML): late 1990’s to late 2000’s• The next big thing: ???

ref: What Goes Around Comes Around por Michael Stonebraker e Joey Hellerstein

modelos

sexta-feira, 12 de novembro de 2010

next big thing?

sexta-feira, 12 de novembro de 2010

abaixo o banco de

dados relacional!

sexta-feira, 12 de novembro de 2010

abaixo ao banco de dados relacional!

como bala de prata!

sexta-feira, 12 de novembro de 2010

momento histórico...

sexta-feira, 12 de novembro de 2010

sexta-feira, 12 de novembro de 2010

resolver problemas específicos

sexta-feira, 12 de novembro de 2010

por partes...sexta-feira, 12 de novembro de 2010

estrutura de dados

sexta-feira, 12 de novembro de 2010

chave-valor

sexta-feira, 12 de novembro de 2010

modelo

sexta-feira, 12 de novembro de 2010

família de colunassexta-feira, 12 de novembro de 2010

modeloKeyspace

Família de Colunas

.

.

.

chavelinha

coluna coluna coluna. . .coluna

chavelinha

coluna coluna coluna. . .coluna coluna coluna

nome valortimestamp

Coluna

sexta-feira, 12 de novembro de 2010

documento

sexta-feira, 12 de novembro de 2010

modelo

sexta-feira, 12 de novembro de 2010

grafo

sexta-feira, 12 de novembro de 2010

visão geral

sexta-feira, 12 de novembro de 2010

sexta-feira, 12 de novembro de 2010

sexta-feira, 12 de novembro de 2010

arquitetura

sexta-feira, 12 de novembro de 2010

ACID

sexta-feira, 12 de novembro de 2010

ACID

tomicityonsitencysolationurability

sexta-feira, 12 de novembro de 2010

para adotar nosql é

importante conhecer os

tradeoffs

sexta-feira, 12 de novembro de 2010

BASE

ref: BASE: an Acid Alternative por Dan Pritchettsexta-feira, 12 de novembro de 2010

BASE

asicallyvailableoft Stateeventually Consistent

sexta-feira, 12 de novembro de 2010

jogo de palavras

relaxamento das regras

sexta-feira, 12 de novembro de 2010

estado de fluxo

sexta-feira, 12 de novembro de 2010

Eventually Consistent

ref: Eventually Consistent por Werner Vogelssexta-feira, 12 de novembro de 2010

eventual em português: pode ou não ocorrer

eventual em inglês: irá ocorrer em algum

momento

sexta-feira, 12 de novembro de 2010

Consistência em Momento

Indeterminado

@mdedianasexta-feira, 12 de novembro de 2010

N, R e W

consistência

sexta-feira, 12 de novembro de 2010

intersecção

W+R > N

sexta-feira, 12 de novembro de 2010

não consistenteW+R = N

1+1 = 2

sexta-feira, 12 de novembro de 2010

consistenteW+R > N

2+2 = 3

sexta-feira, 12 de novembro de 2010

durabilidade

ref: The End of an Architectural Era por Michael Stonebraker & al.sexta-feira, 12 de novembro de 2010

cloud

sexta-feira, 12 de novembro de 2010

ref: The CAP Theorem por Seth Gilbert & Nancy Lynch

CAP

sexta-feira, 12 de novembro de 2010

CAP

onsistencyvailabilityartition Tolerance

sexta-feira, 12 de novembro de 2010

Consistency Availability

Partition Tolerance

CA

CP AP

sexta-feira, 12 de novembro de 2010

sexta-feira, 12 de novembro de 2010

★ latência★ performance★ particionamento★ distribuição★ replicação

ainda tem...

sexta-feira, 12 de novembro de 2010

persitência poliglota

sexta-feira, 12 de novembro de 2010

ferramentassexta-feira, 12 de novembro de 2010

sexta-feira, 12 de novembro de 2010

com tantas definições...com tantos conceitos...com tantos tradeoffs...

com tantos....

sexta-feira, 12 de novembro de 2010

como o nosql se tornou tão

sexy e popular?

sexta-feira, 12 de novembro de 2010

apesar de tudo....

é fácil usar!sexta-feira, 12 de novembro de 2010

public static void main(String[] args) { // Estabelece conexão com o Redis Jedis jedis = new Jedis("localhost"); // Adiciona o par chave-valor jedis.set("nome:da:chave", "novo valor"); // Busca o valor a partir da chave String valor = jedis.get("nome:da:chave"); System.out.println("Valor recuperado: " + valor); }

sexta-feira, 12 de novembro de 2010

public static void main(String args[]) throws UnknownHostException, MongoException { Mongo mongo = new Mongo();

DB db = mongo.getDB("MeuDatabase"); DBCollection coll = db.getCollection("pessoas");

DBObject dados = new BasicDBObject(); dados.put("nome", "Alexandre Porcelli"); dados.put("email", "alexandre.porcelli@gmail.com");

BasicDBObject endereco = new BasicDBObject();

endereco.put("rua", "r. qualquer"); endereco.put("numero", 1022);

dados.put("endereco", endereco);

coll.insert(dados);

mongo.close(); }

sexta-feira, 12 de novembro de 2010

public static void main(String args[]) throws UnknownHostException, MongoException { Mongo mongo = new Mongo();

DB db = mongo.getDB("MeuDatabase"); DBCollection coll = db.getCollection("pessoas");

DBObject busca = new BasicDBObject(); busca.put("nome", "Alexandre Porcelli");

DBObject documentoEncontrado = coll.findOne(busca);

System.out.println(documentoEncontrado);

mongo.close(); }

sexta-feira, 12 de novembro de 2010

public static void main(String[] args) { GraphDatabaseService graphDb = new EmbeddedGraphDatabase("db/matrix"); Transaction tx = graphDb.beginTx(); try { Node thomasAnderson = graphDb.createNode(); Node trinity = graphDb.createNode(); Node morpheus = graphDb.createNode(); Relationship link1 = thomasAnderson.createRelationshipTo(trinity, MeusTiposDeRelacionamento.CONHECE); Relationship link2 = trinity.createRelationshipTo(morpheus, MeusTiposDeRelacionamento.CONHECE); thomasAnderson.setProperty("nome", "Thomas Anderson"); trinity.setProperty("nome", "Trinity"); morpheus.setProperty("nome", "Morpheus"); morpheus.setProperty("cargo", "Capitão"); link1.setProperty("mensagem", "texto 1!"); link2.setProperty("mensagem", "texto 2!");

tx.success(); } finally { tx.finish(); graphDb.shutdown(); } }

sexta-feira, 12 de novembro de 2010

Perguntas?

sexta-feira, 12 de novembro de 2010