cassandra nosql jug vale 2012

46
Cassandra NoSQL [email protected] 17 de março de 2012 slideshare.net/fmasanori

Upload: fernando-masanori

Post on 11-Jun-2015

1.814 views

Category:

Education


2 download

DESCRIPTION

Apache Cassandra é um banco de dados distribuído, tolerante à falhas, escalável e orientado à colunas.

TRANSCRIPT

Page 2: Cassandra NoSQL JUG Vale 2012

• Eu, vocês e Java

• Motivação

• Big Data e NoSQL

• Cassandra

• Hello World: Cassandra

• Pentaho

• Hello World: Pentaho + Cassandra

• Perguntas e sugestões

Page 3: Cassandra NoSQL JUG Vale 2012

• Computação IME-USP e Mestrado ITA

• ed e lint Cobra Tecnologia

• Credicard Mastercard – sistema autorização

• PriceWaterhouseCoopers

• Itaú BankBoston

• Docente FATEC: algoritmos, estrutura de dados, data warehouse, tópicos avançados em bancos de dados

• Interesses: Python, Data Warehouse, NoSQL, Pentaho, Google Technology, Facebook

Page 4: Cassandra NoSQL JUG Vale 2012

Vocês • Estudantes

• Professores

• Desenvolvedores Java

• Sabe quem é Sang Shin

• Sun Tech Days/ Java One

• NoSQL

• Cassandra

• Pentaho

Page 5: Cassandra NoSQL JUG Vale 2012

Job Trends (indeed.com)

Page 6: Cassandra NoSQL JUG Vale 2012

Job Trends (indeed.com)

Page 7: Cassandra NoSQL JUG Vale 2012

Big Data

Page 9: Cassandra NoSQL JUG Vale 2012

Novas arquiteturas são necessárias

Page 10: Cassandra NoSQL JUG Vale 2012

Escalabilidade vertical

• Escalabilidade para leituras num banco relacional é trabalhoso

• Escalabilidade para escritas num banco relacional é virtualmente impossível

(e caso você consiga ele deixou de ser relacional...)

Page 11: Cassandra NoSQL JUG Vale 2012

Escalabilidade vertical

Page 12: Cassandra NoSQL JUG Vale 2012

Escalabilidade horizontal

Page 13: Cassandra NoSQL JUG Vale 2012

Escalabilidade horizontal

Page 14: Cassandra NoSQL JUG Vale 2012

Dois artigos famosos

• Bigtable: A distributed storage system for structured data, 2006

• Dynamo: Amazon’s highly available key-value store, 2007

Page 15: Cassandra NoSQL JUG Vale 2012

Apache Hadoop

Page 16: Cassandra NoSQL JUG Vale 2012
Page 17: Cassandra NoSQL JUG Vale 2012

Not Only SQL

Mas BDs não relacionais são antigos...

Page 18: Cassandra NoSQL JUG Vale 2012

“If I had asked people what they wanted, they would have said faster horses”.

Henry Ford.

Qual o problema com bancos de dados relacionais?

Page 19: Cassandra NoSQL JUG Vale 2012

Escalabilidade + ACID = digestão difícil

Page 20: Cassandra NoSQL JUG Vale 2012

BASE = ajuda na digestão

Basically Available Soft State Eventually Consistent

Page 21: Cassandra NoSQL JUG Vale 2012

Eventually Consistent

“Eventual” pt-br: pode não ocorrer

“Eventual” inglês: irá ocorrer em breve

Page 22: Cassandra NoSQL JUG Vale 2012

Teorema CAP

• Consistency:

– Todos os clientes enxergam os mesmos dados

– Consistência tradicional (ACID)

– Consistência eventual (BASE)

• Availability

• Partition tolerance

• Não mais que 2 dos 3 requisitos (E. Brewer, S. Gilbert, N. Lynch)

Page 23: Cassandra NoSQL JUG Vale 2012

Not Only SQL

Page 24: Cassandra NoSQL JUG Vale 2012

Difíceis de comparar

Page 25: Cassandra NoSQL JUG Vale 2012
Page 26: Cassandra NoSQL JUG Vale 2012

Cassandra: • Distribuído • Tolerante à falhas • Escalável • Orientado a colunas

Page 27: Cassandra NoSQL JUG Vale 2012

Bigtable, 2006 Dynamo, 2007

Open Source, 2008

Apache, 2009 Cassandra, 2010

Page 28: Cassandra NoSQL JUG Vale 2012
Page 29: Cassandra NoSQL JUG Vale 2012

Cassandra vs MySQL (50GB)

MySQL:

~300ms write

~350ms read

Cassandra:

~0.12ms write

~15ms read

Page 30: Cassandra NoSQL JUG Vale 2012
Page 31: Cassandra NoSQL JUG Vale 2012

Hello World

Page 32: Cassandra NoSQL JUG Vale 2012

Hello World Cassandra Download DataStax Community Edition ou Download Apache Cassandra ./cassandra ./cassandra-cli –h localhost –p 9160 Conflitos: cassandra.bat (windows) /etc/cassandra/cassandra-env.sh (ubuntu) Obs.: necessário Oracle Sun Java

Page 33: Cassandra NoSQL JUG Vale 2012

Hello World Cassandra

create keyspace jugvale;

use jugvale;

create column family demo;

set demo[0][0] = utf8(‘fernando’);

set demo[0][1] = utf8(‘masanori’);

get demo[0];

del demo[0];

exit;

Page 34: Cassandra NoSQL JUG Vale 2012

Hello World Cassandra

• Clientes Cassandra: Java, PHP, Python, Ruby...

• CQL (Cassandra Query Language)

• Pentaho Data Integration

Page 35: Cassandra NoSQL JUG Vale 2012
Page 36: Cassandra NoSQL JUG Vale 2012

• Analytics no mercado mundial, Gartner:

• 2009: +3.8 %

• 2010: +13.4%

• América Latina:

• 2010: +19.5%

Page 37: Cassandra NoSQL JUG Vale 2012

Operacional x Analítico

Operacional Analítico

Propósito Executar um processo Avaliar um processo

Estilo interação Insert, update, delete, query Query (read-only)

Escopo interação Transação individual Agregação

Padrão query Previsível e estável Imprevisível

Foco temporal Atual Histórico e atual

Otimização Update concorrente Query (agregação)

Projeto ER na 3FN Star Schema ou Cubo

(Adamson, 2010)

Page 38: Cassandra NoSQL JUG Vale 2012

Banco Relacional Tradicional

(Timo Elliott, SAP)

Page 39: Cassandra NoSQL JUG Vale 2012

Banco Colunar

(Timo Elliott, SAP)

Page 40: Cassandra NoSQL JUG Vale 2012

Hello World: Pentaho + Cassandra

Page 42: Cassandra NoSQL JUG Vale 2012
Page 43: Cassandra NoSQL JUG Vale 2012
Page 44: Cassandra NoSQL JUG Vale 2012

Créditos

• Jonathan Ellis (DataStax), vários slides

• Timo Elliott (SAP), tetris colunar

• ADAMSON, C., Star Schema, The Complete Reference, McGrawHill, 2010.