SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Globalcode –
Cassandra
Primeiros passos com o Cassandra
Otávio Santana
@otaviojava
Globalcode –
Cassandra Brasil
Planeta Cassandra
Cassandra Brasil Google Groups
Cassandra Brasil Linkedin
Cassandra Meetup
Globalcode –
Cassandra
O Cassandra é um banco de dados NOSQL orientado à
família de coluna que nasceu para resolver problemas com
aplicações que precisam operar com gigantescas cargas
de dados além de poder escalar com grande facilidade. Ele
nasceu no facebook e hoje vem sendo usado intensamente
por empresas dos mais variados portes, tais como Netflix,
Twitter, Instagram, HP, IBM, dentre muitas outras. Um fator
importante que vale ser citado é a sua adoção crescente
inclusive em mercados mais conversadores tais como,
instituições financeiras e agências governamentais como a
NASA.
Globalcode –
Data Science
●
Terra
●
Ouro
●
Petróleo
●
Informação
●
Big Data
●
Empirical
●
Theoretical
●
Computational
●
eScience
Globalcode –
Data Science
Globalcode –
Data Science
Preparing to run a model
Running the model
Communicating the
results
Globalcode –
Globalcode –
Flu trends
Redes Sociais
Globalcode –
Eleições
Globalcode –
Negócios
E-commerce
Marketing
Cerveja e Fraldas
Tail Target
Globalcode –
Big Data
•
3 Vs (Velocidade, variedade e
volume)
•
Sem definição
Globalcode –
Big Data
Cache
Data Grid
Algoritmo
Globalcode –
Hadoop
Hadoop Common
Hadoop Distributed File System (HDFS™)
Hadoop YARN
Hadoop MapReduce
Ambari™
Avro™
Cassandra™
Chukwa™
HBase™
Hive™
Mahout™
Pig™
ZooKeeper™
Globalcode –
NOSQL
Não apenas SQL
Conhecer o melhor
dos dois mundos
Uso específico
Globalcode –
A.C.I.D. vs B.A.S.E
Atomicidade
Consistência
Isolamento
Durabilidade
Basicamente Avaliado
Soft-state
Eventualmente persistente
Globalcode –
SQL vs NOSQL
Driver
SQL ANSI
Transação
Alto custo de IO
Fácil troca de Banco
Relacionamento
API
Não padronizado
Não Transação
Busca por chave
Difícil troca de Banco
Não relacionamento
Globalcode –
Classificação
Arquitetura Armazenamento Estrutura Dados
Chave-Valor
Documentos
Grafo
Família
de Colunas
Globalcode –
Arquitetura Distribuída
Mestre Escravo P2P
A B C
mestre
Globalcode –
Arquitetura Distribuída
Fragmentação Réplica
A
BD
C
ABCD
ABCD
ABCD
ABCD
Servidor com informações diferentes Servidor com as mesmas informações
Globalcode –
Estrutura de Dados
Chave-valor
SQL Riak
Banco de Dados Cluster Riak
Tabela Bucket
Linha chave-valor
Chave Primária chave
Informações da sessão
Perfis de usuário
Carrinho de compras
Relacionamento
Transações complexas
Consulta por dados
(não chave)
Globalcode –
Estrutura de Dados
Documentos
SQL MongoDB
Banco de Dados Instância
Tabela Coleção
Linha Documento
Chave Primária _id
CMS
Análise Web
Leitura em larga escala
Transações complexas
Globalcode –
Estrutura de Dados
Grafos
Redes sociais (Dados conectados)
Mecanimos de recomendação
Transações complexas
Não Grafos
Globalcode –
Estrutura de Dados
Família de Colunas
SQL Cassandra
Banco de Dados KeySpace
Tabela Família de Colunas
Linha Linha
Chave Primária chave
Registrado de Evento (log)
CMS
Contadores (categorizar)
Escrita Complexa
Transações
ACID
Relação
Leitura complexa
(SUM, AVG, etc.)
Globalcode –
CAP
Consistência
Disponibilidade
Partição (tolerância)
CA: Banco de dados Tradicionais
CP: BigTable, HBase, MongoDB
AP: Dynamo, Cassandra, Riak
Porcentagem
Globalcode –
Outras formas
Sistema de Arquivos
Banco XML
Banco de Dados OO
solução
problema
Globalcode –
Cassandra
Distribuída
Configurável
Família de Colunas
Globalcode –
Cassandra
Gossip
Nível de consistência
Leitura e Escrita
ANY
ONE
LOCAL_QUORUM
EACH_QOURUM
ALL
Disponibilidade
Consistência
Globalcode –
Cassandra
Commit log
Memtable
SSTable
request
Commit logMemtable
SSTable
escrever (k1, c1:v1)
escrever (k2, c1:v1 C2:v2)
escrever (k1, c1:v4 c3:v3 c2:v2)
k1 c1:v4 c2:v2 c3:v3
k2 c1:v1 c2:v2 k1, c1:v1
k2, c1:v1 C2:v2
k1, c1:v4 c3:v3 c2:v2
k1 c1:v4 c2:v2 c3:v3
k2 c1:v1 c2:v2
Globalcode –
Cassandra
Gossip: Protocolo de comunicação P2P entre os nós
Partitioner: determina como será distribuido as informações através
dos nós.
Snitch: define a topologia e as informações físicas.
Replica placement strategy: define como será realiza as cópias
(réplicas da informação).
Cassandra.yaml: arquivo onde contém as principais configurações do
Cassandra
Globalcode –
Gossip
Gossip: Protocolo de comunicação P2P entre os nós
Roda a cada segundo
Descobrir outros nós
Nó semente
Sobre eles e sobre os outros
Tem versão de tempo
Nodes Seed
Globalcode –
Distribuição e réplica
Distribuição e réplica:
Ocorrem ao mesmo tempo
A primeira inserção é baseado na chave
Particionador Define
Segunda cópia réplica
Jim Carro: Camaro Idade: 32
carol Cor: rosa
Suzy Time: Bahia
Jim 1
carol 3
Suzy 15
rowkey
rowkey Partitioner
A[0-3]
B[4-8]
C[9-13]
D[14-18]
Globalcode –
Partitioner
Partitioner: determina como será distribuído as informações através
dos nós.
Hash da Chave
Murmur3Partitioner(default)
RandomPartitioner (MD5)
ByteOrderedPartitioner (não recomendado)
Jim -2245462676723223822
carol 7723358927203680754
Suzy 1168604627387940318
rowkey Murmur3 Partitioner
Globalcode –
Replica placement strategy
Replica placement strategy: define como será realiza as cópias
(réplicas da informação)
Fator de réplica: Define a unidade de nós que serão
copiados
SimpleStrategy: usa apenas um único datacenter.
NetworkTopologyStrategy: para mais de um datacenter,
recomendados para uma tendência de crescimento futura.
Globalcode –
Snitch
Snitch: define a topologia e as informações físicas.
Dynamic snitching: Escolhe as melhores réplicas baseado
no histórico.
SimpleSnitch: Não reconhece, informações do data center
timezone (default).
EC2Snitch: Utiliza um simples cluster na Amazon
EC2MultiRegionSnitch: data centers em múltiplas regiões
Globalcode –
Escrita
O primeiro nó funciona como coordenador
Retorna sucesso quando o nível informado sucesso
Cada Data center possui um coordenador
Globalcode –
Leitura
O primeiro nó funciona como coordenador
Cada Data center possui um coordenador
Sincroniza e verifica qual á versão mais recente (timestamp)
BackGround read repair
Globalcode –
Leitura
Verifica se a chave existe no Bloom filter
Procura a informação no key cache
Caso encontre vai para o compressor offsets para pegar a
informação no disco
Caso não encontre vai para o sumário, partição index para em
seguida ir no compressor offsets map
Compressor offsets map funciona como i-node que contém a localização da informação
no disco
Globalcode –
Cassandra.yaml
Cassandra.yaml: arquivo onde contém as principais configurações do
Cassandra
cluster_name: Nome do cluster, ele deve ser o mesmo
nome para todos nós no cluster
listen_address: O ip or host que o cassandra usa para
conectar nesse nó, este deve ter o endereço público.
seed_provider: A lista de nós sementes (separados os ips
por vírgulas), esses nós o gossip usará para aprender sobre a
topologia. Em multiplos data center deve ter nós de cada um
deles.
storage_port: Porta de comunicação
Caminhos: informar os caminhos de commit log, ssd tables
Globalcode –
CQL
Cassandra Query Language
Semelhante ao SQL
Não existe JOIN
Se pode criar estruturas
Realizar Consultas
Para saber mais:
http://cassandra.apache.org/doc/cql3/CQL.html
Globalcode –
CQL
KeySpace
CREATE KEYSPACE Excelsior
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};
CREATE KEYSPACE Excalibur
WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' :
3};
ALTER KEYSPACE Excelsior
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 4};
USE Excalibur;
DROP KEYSPACE Excalibur;
Globalcode –
CQL
Column Family
CREATE TABLE monkeySpecies (
species text PRIMARY KEY,
common_name text,
population varint,
average_size int
) WITH comment='Important biological records'
ALTER TABLE monkeySpecies ALTER average_size TYPE varint;
ALTER TABLE monkeySpecies ADD gravesite varchar;
DROP TABLE monkeySpecies;
TRUNCATE monkeySpecies;
Globalcode –
CQL
Index
CREATE INDEX userIndex ON NerdMovies (user);
CREATE INDEX ON Mutants (abilityId);
DROP INDEX userIndex;
Globalcode –
CQL
Manipulação de dados
INSERT INTO NerdMovies (movie, director, main_actor, year)
VALUES ('Serenity', 'Joss Whedon', 'Nathan Fillion', 2005);
UPDATE NerdMovies SET director = 'Joss Whedon', main_actor = 'Nathan
Fillion', year = 2005 WHERE movie = 'Serenity';
DELETE FROM NerdMovies USING TIMESTAMP 1240003134 WHERE movie =
'Serenity';
Globalcode –
CQL
Manipulação de dados
BEGIN BATCH
INSERT INTO users (userid, password, name) VALUES ('user2', 'ch@ngem3b',
'second user');
UPDATE users SET password = 'ps22dhds' WHERE userid = 'user3';
INSERT INTO users (userid, password) VALUES ('user4', 'ch@ngem3c');
DELETE name FROM users WHERE userid = 'user1';
APPLY BATCH;
Globalcode –
CQL
Select
SELECT name, occupation FROM users WHERE userid IN (199, 200, 207);
SELECT name AS user_name, occupation AS user_occupation FROM users;
SELECT time, value FROM events WHERE event_type = 'myEvent'
AND time > '2011-02-03' AND time <= '2012-01-01'
SELECT COUNT(*) FROM users;
SELECT COUNT(*) AS user_count FROM users;
Globalcode –
Variáveis
ascii strings
bigint integers
blob blobs
boolean booleans
counter integers
decimal integers, floats
double integers
float integers, floats
Globalcode –
Variáveis
inet strings
int integers
text strings
timestamp integers, strings
timeuuid uuids
uuid uuids
varchar strings
varint integers
Globalcode –
Variáveis
Coleções
map Dicionário de dados (chave valor)
set Coleção de unico valor
list coleção
Globalcode –
Variáveis
Map
CREATE TABLE users (
id text PRIMARY KEY,
given text,
surname text,
favs map<text, text>
);
INSERT INTO users (id, given, surname, favs)
VALUES ('jsmith', 'John', 'Smith', { 'fruit' : 'apple', 'band' : 'Beatles' });
UPDATE users SET favs['author'] = 'Ed Poe' WHERE id = 'jsmith'
UPDATE users SET favs = favs + { 'movie' : 'Cassablanca' } WHERE id = 'jsmith'
Globalcode –
Variáveis
Set
CREATE TABLE images (
name text PRIMARY KEY,
owner text,
date timestamp,
tags set<text>
);
INSERT INTO images (name, owner, date, tags)
VALUES ('cat.jpg', 'jsmith', 'now', { 'kitten', 'cat', 'pet' });
UPDATE images SET tags = tags + { 'cute', 'cuddly' } WHERE name = 'cat.jpg';
UPDATE images SET tags = tags - { 'lame' } WHERE name = 'cat.jpg';
Globalcode –
Variáveis
List
CREATE TABLE plays (
id text PRIMARY KEY,
game text,
players int,
scores list<int>
)
INSERT INTO plays (id, game, players, scores)
VALUES ('123-afde', 'quake', 3, [17, 4, 2]);
UPDATE plays SET players = 5, scores = scores + [ 14, 21 ] WHERE id =
'123-afde';
UPDATE plays SET players = 5, scores = [ 12 ] + scores WHERE id = '123-afde';
UPDATE plays SET scores[1] = 7 WHERE id = '123-afde';
DELETE scores[1] FROM plays WHERE id = '123-afde';
UPDATE plays SET scores = scores - [ 12, 21 ] WHERE id = '123-afde';
Globalcode –
Modelagem
TwittSandra
Usuários Seguidores Seguidos
User Line TimeLine Tweets
Globalcode –
Cassandra
DEMO
Globalcode –
Obrigado
Cassandra
Otávio Santana
http://www.slideshare.net/otagonsan/
@otaviojava

Mais conteúdo relacionado

Mais procurados

Apresentacao Cassandra
Apresentacao CassandraApresentacao Cassandra
Apresentacao Cassandra
PeslPinguim
 
Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQL
pichiliani
 

Mais procurados (20)

DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
DBA Brasil 2.0   NOSql Apache Cassandra para DBAsDBA Brasil 2.0   NOSql Apache Cassandra para DBAs
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
 
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto Desempenho
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto DesempenhoTDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto Desempenho
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto Desempenho
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência Poliglota
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
 
Banco de Dados - NoSQL
Banco de Dados - NoSQLBanco de Dados - NoSQL
Banco de Dados - NoSQL
 
Apresentacao Cassandra
Apresentacao CassandraApresentacao Cassandra
Apresentacao Cassandra
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introdução
 
NoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas MonografiaNoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas Monografia
 
Bancos de dados NoSQL
Bancos de dados NoSQLBancos de dados NoSQL
Bancos de dados NoSQL
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Sistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosSistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplos
 
Seminário - NoSQL
Seminário - NoSQLSeminário - NoSQL
Seminário - NoSQL
 
Comparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQLComparação de desempenho entre SQL e NoSQL
Comparação de desempenho entre SQL e NoSQL
 
No sql Orientado a documento
No sql Orientado a documentoNo sql Orientado a documento
No sql Orientado a documento
 
Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15Persistência Poliglota, Big Data e NoSQL FISL 15
Persistência Poliglota, Big Data e NoSQL FISL 15
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQLEstudo comparativo entr bancos RDBMS, NoSQL e NewSQL
Estudo comparativo entr bancos RDBMS, NoSQL e NewSQL
 
Big Data
Big DataBig Data
Big Data
 
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
[TDC2016] Apache SparkMLlib:  Machine Learning na Prática[TDC2016] Apache SparkMLlib:  Machine Learning na Prática
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
 
Algumas das principais características do NoSQL
Algumas das principais características do NoSQLAlgumas das principais características do NoSQL
Algumas das principais características do NoSQL
 

Destaque

Destaque (20)

De dev para data scientist 3 coisas que aprendi
De dev para data scientist  3 coisas que aprendiDe dev para data scientist  3 coisas que aprendi
De dev para data scientist 3 coisas que aprendi
 
Big Data, Analytics e o Cientista de Dados – um novo campo de trabalho se abre
Big Data, Analytics e o Cientista de Dados – um novo campo de trabalho se abreBig Data, Analytics e o Cientista de Dados – um novo campo de trabalho se abre
Big Data, Analytics e o Cientista de Dados – um novo campo de trabalho se abre
 
O queo facebook faz com minhas fotos??? E o que o BigData tem haver com isso ???
O queo facebook faz com minhas fotos??? E o que o BigData tem haver com isso ???O queo facebook faz com minhas fotos??? E o que o BigData tem haver com isso ???
O queo facebook faz com minhas fotos??? E o que o BigData tem haver com isso ???
 
MinerAll: Uma ferramenta para extração e mineração de dados de repositórios d...
MinerAll: Uma ferramenta para extração e mineração de dados de repositórios d...MinerAll: Uma ferramenta para extração e mineração de dados de repositórios d...
MinerAll: Uma ferramenta para extração e mineração de dados de repositórios d...
 
Usabilidade de interface para busca e recuperação de informação na web
Usabilidade de interface para busca e recuperação de informação na webUsabilidade de interface para busca e recuperação de informação na web
Usabilidade de interface para busca e recuperação de informação na web
 
Palestra MVP living lab ms
Palestra MVP   living lab msPalestra MVP   living lab ms
Palestra MVP living lab ms
 
Mantendo seu Tempo a salvo com Python e Git
Mantendo seu Tempo a salvo com Python e GitMantendo seu Tempo a salvo com Python e Git
Mantendo seu Tempo a salvo com Python e Git
 
Mineração de dados na prática com RapidMiner e Weka
Mineração de dados na prática com RapidMiner e WekaMineração de dados na prática com RapidMiner e Weka
Mineração de dados na prática com RapidMiner e Weka
 
Mineração de dados e novas oportunidades de análise para sistemas de informação
Mineração de dados e novas oportunidades de análise para sistemas de informaçãoMineração de dados e novas oportunidades de análise para sistemas de informação
Mineração de dados e novas oportunidades de análise para sistemas de informação
 
Análise de Redes Sociais com Python
Análise de Redes Sociais com PythonAnálise de Redes Sociais com Python
Análise de Redes Sociais com Python
 
Bigadata casese opotunidades
Bigadata casese opotunidadesBigadata casese opotunidades
Bigadata casese opotunidades
 
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
Mineração de Dados com RapidMiner - Um Estudo de caso sobre o Churn Rate em...
 
Cases big data
Cases big dataCases big data
Cases big data
 
Criando soluções de BI com Pentaho e Dados Abertos @ Pentaho Day 2013
Criando soluções de BI com Pentaho e Dados Abertos @ Pentaho Day 2013Criando soluções de BI com Pentaho e Dados Abertos @ Pentaho Day 2013
Criando soluções de BI com Pentaho e Dados Abertos @ Pentaho Day 2013
 
Governança de Dados e Big Data_v02
Governança de Dados e Big Data_v02Governança de Dados e Big Data_v02
Governança de Dados e Big Data_v02
 
Modelos analiticos crm
Modelos analiticos crmModelos analiticos crm
Modelos analiticos crm
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
 
Contexto de Big Data, Ciência de Dados e KDD - Pós Graduação em Big Data
Contexto de Big Data, Ciência de Dados e KDD - Pós Graduação em Big DataContexto de Big Data, Ciência de Dados e KDD - Pós Graduação em Big Data
Contexto de Big Data, Ciência de Dados e KDD - Pós Graduação em Big Data
 
Relatório Utilização da Ferramenta Weka
Relatório Utilização da Ferramenta WekaRelatório Utilização da Ferramenta Weka
Relatório Utilização da Ferramenta Weka
 
Análise de Problemas Big Data
Análise de Problemas Big DataAnálise de Problemas Big Data
Análise de Problemas Big Data
 

Semelhante a Primeiros passos com o Cassandra

Semelhante a Primeiros passos com o Cassandra (20)

TDC 2014 - Hadoop Hands ON
TDC 2014 - Hadoop Hands ONTDC 2014 - Hadoop Hands ON
TDC 2014 - Hadoop Hands ON
 
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBRAvaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR
 
No sql std
No sql stdNo sql std
No sql std
 
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionais
 
NoSQL Livre
NoSQL LivreNoSQL Livre
NoSQL Livre
 
Introdução a Big Data e Apache Solr
Introdução a Big Data e Apache SolrIntrodução a Big Data e Apache Solr
Introdução a Big Data e Apache Solr
 
MAC5855 - NoSQL
MAC5855 - NoSQLMAC5855 - NoSQL
MAC5855 - NoSQL
 
Nosql4java
Nosql4javaNosql4java
Nosql4java
 
Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014Hadoop - Mãos à massa! Qcon2014
Hadoop - Mãos à massa! Qcon2014
 
Big Data e seu fiel companheiro Spark
Big Data e seu fiel companheiro SparkBig Data e seu fiel companheiro Spark
Big Data e seu fiel companheiro Spark
 
Bancos de Dados Relacionais e NoSQL na Nuvem da AWS
Bancos de Dados Relacionais e NoSQL na Nuvem da AWSBancos de Dados Relacionais e NoSQL na Nuvem da AWS
Bancos de Dados Relacionais e NoSQL na Nuvem da AWS
 
[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho
[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho
[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho
 
Data science
Data scienceData science
Data science
 
Introdução a Ciência de Dados
Introdução a Ciência de DadosIntrodução a Ciência de Dados
Introdução a Ciência de Dados
 
Migrando seu banco de dados para a AWS - Deep Dive em Amazon RDS e AWS Databa...
Migrando seu banco de dados para a AWS - Deep Dive em Amazon RDS e AWS Databa...Migrando seu banco de dados para a AWS - Deep Dive em Amazon RDS e AWS Databa...
Migrando seu banco de dados para a AWS - Deep Dive em Amazon RDS e AWS Databa...
 
Aula8.pptx
Aula8.pptxAula8.pptx
Aula8.pptx
 
Copa do mundo no brasil interagindo com os torcedores em tempo real
Copa do mundo no brasil   interagindo com os torcedores em tempo realCopa do mundo no brasil   interagindo com os torcedores em tempo real
Copa do mundo no brasil interagindo com os torcedores em tempo real
 
MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento
 

Mais de Otávio Santana

Mais de Otávio Santana (20)

NoSQL design pitfalls with Java
NoSQL design pitfalls with JavaNoSQL design pitfalls with Java
NoSQL design pitfalls with Java
 
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
 
Architecting Cloud Computing Solutions with Java [1.1]
Architecting Cloud Computing Solutions with Java [1.1]Architecting Cloud Computing Solutions with Java [1.1]
Architecting Cloud Computing Solutions with Java [1.1]
 
Arquitetando soluções de computação em nuvem com Java
Arquitetando soluções de computação em nuvem com JavaArquitetando soluções de computação em nuvem com Java
Arquitetando soluções de computação em nuvem com Java
 
Build, run, and scale your Java applications end to end
Build, run, and scale your Java applications end to endBuild, run, and scale your Java applications end to end
Build, run, and scale your Java applications end to end
 
Jakarta NoSQL: Meet the first Jakarta EE specification in the Cloud
Jakarta NoSQL: Meet the first Jakarta EE specification in the CloudJakarta NoSQL: Meet the first Jakarta EE specification in the Cloud
Jakarta NoSQL: Meet the first Jakarta EE specification in the Cloud
 
ORMs: Heroes or Villains Inside the Architecture?
ORMs: Heroes or Villains Inside the Architecture?ORMs: Heroes or Villains Inside the Architecture?
ORMs: Heroes or Villains Inside the Architecture?
 
Jakarta EE Meets NoSQL at the Cloud Age
Jakarta EE Meets NoSQL at the Cloud AgeJakarta EE Meets NoSQL at the Cloud Age
Jakarta EE Meets NoSQL at the Cloud Age
 
Boost your APIs with GraphQL 1.0
Boost your APIs with GraphQL 1.0Boost your APIs with GraphQL 1.0
Boost your APIs with GraphQL 1.0
 
Jakarta EE Meets NoSQL in the Cloud Age [DEV6109]
Jakarta EE Meets NoSQL in the Cloud Age [DEV6109]Jakarta EE Meets NoSQL in the Cloud Age [DEV6109]
Jakarta EE Meets NoSQL in the Cloud Age [DEV6109]
 
Let’s Make Graph Databases Fun Again with Java [DEV6043]
Let’s Make Graph Databases Fun Again with Java [DEV6043]Let’s Make Graph Databases Fun Again with Java [DEV6043]
Let’s Make Graph Databases Fun Again with Java [DEV6043]
 
Eclipse JNoSQL: One API to Many NoSQL Databases - BYOL [HOL5998]
Eclipse JNoSQL: One API to Many NoSQL Databases - BYOL [HOL5998]Eclipse JNoSQL: One API to Many NoSQL Databases - BYOL [HOL5998]
Eclipse JNoSQL: One API to Many NoSQL Databases - BYOL [HOL5998]
 
The new generation of data persistence with graph
The new generation of data persistence with graphThe new generation of data persistence with graph
The new generation of data persistence with graph
 
Eclipse JNoSQL updates from JCP September 11
Eclipse JNoSQL updates from JCP September 11Eclipse JNoSQL updates from JCP September 11
Eclipse JNoSQL updates from JCP September 11
 
Stateless Microservice Security via JWT and MicroProfile - Guatemala
Stateless Microservice Security via JWT and MicroProfile - GuatemalaStateless Microservice Security via JWT and MicroProfile - Guatemala
Stateless Microservice Security via JWT and MicroProfile - Guatemala
 
Stateless Microservice Security via JWT and MicroProfile - Mexico
Stateless Microservice Security via JWT and MicroProfile - MexicoStateless Microservice Security via JWT and MicroProfile - Mexico
Stateless Microservice Security via JWT and MicroProfile - Mexico
 
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Database
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL DatabaseEclipse JNoSQL: The Definitive Solution for Java and NoSQL Database
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Database
 
Polyglot persistence
Polyglot persistencePolyglot persistence
Polyglot persistence
 
Management 3.0 and open source
Management 3.0 and open sourceManagement 3.0 and open source
Management 3.0 and open source
 
Building a Recommendation Engine with Java EE
Building a Recommendation Engine with Java EEBuilding a Recommendation Engine with Java EE
Building a Recommendation Engine with Java EE
 

Último

Último (8)

COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdfAula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 

Primeiros passos com o Cassandra

  • 1. Globalcode – Cassandra Primeiros passos com o Cassandra Otávio Santana @otaviojava
  • 2. Globalcode – Cassandra Brasil Planeta Cassandra Cassandra Brasil Google Groups Cassandra Brasil Linkedin Cassandra Meetup
  • 3. Globalcode – Cassandra O Cassandra é um banco de dados NOSQL orientado à família de coluna que nasceu para resolver problemas com aplicações que precisam operar com gigantescas cargas de dados além de poder escalar com grande facilidade. Ele nasceu no facebook e hoje vem sendo usado intensamente por empresas dos mais variados portes, tais como Netflix, Twitter, Instagram, HP, IBM, dentre muitas outras. Um fator importante que vale ser citado é a sua adoção crescente inclusive em mercados mais conversadores tais como, instituições financeiras e agências governamentais como a NASA.
  • 4. Globalcode – Data Science ● Terra ● Ouro ● Petróleo ● Informação ● Big Data ● Empirical ● Theoretical ● Computational ● eScience
  • 6. Globalcode – Data Science Preparing to run a model Running the model Communicating the results
  • 11. Globalcode – Big Data • 3 Vs (Velocidade, variedade e volume) • Sem definição
  • 13. Globalcode – Hadoop Hadoop Common Hadoop Distributed File System (HDFS™) Hadoop YARN Hadoop MapReduce Ambari™ Avro™ Cassandra™ Chukwa™ HBase™ Hive™ Mahout™ Pig™ ZooKeeper™
  • 14. Globalcode – NOSQL Não apenas SQL Conhecer o melhor dos dois mundos Uso específico
  • 15. Globalcode – A.C.I.D. vs B.A.S.E Atomicidade Consistência Isolamento Durabilidade Basicamente Avaliado Soft-state Eventualmente persistente
  • 16. Globalcode – SQL vs NOSQL Driver SQL ANSI Transação Alto custo de IO Fácil troca de Banco Relacionamento API Não padronizado Não Transação Busca por chave Difícil troca de Banco Não relacionamento
  • 17. Globalcode – Classificação Arquitetura Armazenamento Estrutura Dados Chave-Valor Documentos Grafo Família de Colunas
  • 19. Globalcode – Arquitetura Distribuída Fragmentação Réplica A BD C ABCD ABCD ABCD ABCD Servidor com informações diferentes Servidor com as mesmas informações
  • 20. Globalcode – Estrutura de Dados Chave-valor SQL Riak Banco de Dados Cluster Riak Tabela Bucket Linha chave-valor Chave Primária chave Informações da sessão Perfis de usuário Carrinho de compras Relacionamento Transações complexas Consulta por dados (não chave)
  • 21. Globalcode – Estrutura de Dados Documentos SQL MongoDB Banco de Dados Instância Tabela Coleção Linha Documento Chave Primária _id CMS Análise Web Leitura em larga escala Transações complexas
  • 22. Globalcode – Estrutura de Dados Grafos Redes sociais (Dados conectados) Mecanimos de recomendação Transações complexas Não Grafos
  • 23. Globalcode – Estrutura de Dados Família de Colunas SQL Cassandra Banco de Dados KeySpace Tabela Família de Colunas Linha Linha Chave Primária chave Registrado de Evento (log) CMS Contadores (categorizar) Escrita Complexa Transações ACID Relação Leitura complexa (SUM, AVG, etc.)
  • 24. Globalcode – CAP Consistência Disponibilidade Partição (tolerância) CA: Banco de dados Tradicionais CP: BigTable, HBase, MongoDB AP: Dynamo, Cassandra, Riak Porcentagem
  • 25. Globalcode – Outras formas Sistema de Arquivos Banco XML Banco de Dados OO solução problema
  • 27. Globalcode – Cassandra Gossip Nível de consistência Leitura e Escrita ANY ONE LOCAL_QUORUM EACH_QOURUM ALL Disponibilidade Consistência
  • 28. Globalcode – Cassandra Commit log Memtable SSTable request Commit logMemtable SSTable escrever (k1, c1:v1) escrever (k2, c1:v1 C2:v2) escrever (k1, c1:v4 c3:v3 c2:v2) k1 c1:v4 c2:v2 c3:v3 k2 c1:v1 c2:v2 k1, c1:v1 k2, c1:v1 C2:v2 k1, c1:v4 c3:v3 c2:v2 k1 c1:v4 c2:v2 c3:v3 k2 c1:v1 c2:v2
  • 29. Globalcode – Cassandra Gossip: Protocolo de comunicação P2P entre os nós Partitioner: determina como será distribuido as informações através dos nós. Snitch: define a topologia e as informações físicas. Replica placement strategy: define como será realiza as cópias (réplicas da informação). Cassandra.yaml: arquivo onde contém as principais configurações do Cassandra
  • 30. Globalcode – Gossip Gossip: Protocolo de comunicação P2P entre os nós Roda a cada segundo Descobrir outros nós Nó semente Sobre eles e sobre os outros Tem versão de tempo Nodes Seed
  • 31. Globalcode – Distribuição e réplica Distribuição e réplica: Ocorrem ao mesmo tempo A primeira inserção é baseado na chave Particionador Define Segunda cópia réplica Jim Carro: Camaro Idade: 32 carol Cor: rosa Suzy Time: Bahia Jim 1 carol 3 Suzy 15 rowkey rowkey Partitioner A[0-3] B[4-8] C[9-13] D[14-18]
  • 32. Globalcode – Partitioner Partitioner: determina como será distribuído as informações através dos nós. Hash da Chave Murmur3Partitioner(default) RandomPartitioner (MD5) ByteOrderedPartitioner (não recomendado) Jim -2245462676723223822 carol 7723358927203680754 Suzy 1168604627387940318 rowkey Murmur3 Partitioner
  • 33. Globalcode – Replica placement strategy Replica placement strategy: define como será realiza as cópias (réplicas da informação) Fator de réplica: Define a unidade de nós que serão copiados SimpleStrategy: usa apenas um único datacenter. NetworkTopologyStrategy: para mais de um datacenter, recomendados para uma tendência de crescimento futura.
  • 34. Globalcode – Snitch Snitch: define a topologia e as informações físicas. Dynamic snitching: Escolhe as melhores réplicas baseado no histórico. SimpleSnitch: Não reconhece, informações do data center timezone (default). EC2Snitch: Utiliza um simples cluster na Amazon EC2MultiRegionSnitch: data centers em múltiplas regiões
  • 35. Globalcode – Escrita O primeiro nó funciona como coordenador Retorna sucesso quando o nível informado sucesso Cada Data center possui um coordenador
  • 36. Globalcode – Leitura O primeiro nó funciona como coordenador Cada Data center possui um coordenador Sincroniza e verifica qual á versão mais recente (timestamp) BackGround read repair
  • 37. Globalcode – Leitura Verifica se a chave existe no Bloom filter Procura a informação no key cache Caso encontre vai para o compressor offsets para pegar a informação no disco Caso não encontre vai para o sumário, partição index para em seguida ir no compressor offsets map Compressor offsets map funciona como i-node que contém a localização da informação no disco
  • 38. Globalcode – Cassandra.yaml Cassandra.yaml: arquivo onde contém as principais configurações do Cassandra cluster_name: Nome do cluster, ele deve ser o mesmo nome para todos nós no cluster listen_address: O ip or host que o cassandra usa para conectar nesse nó, este deve ter o endereço público. seed_provider: A lista de nós sementes (separados os ips por vírgulas), esses nós o gossip usará para aprender sobre a topologia. Em multiplos data center deve ter nós de cada um deles. storage_port: Porta de comunicação Caminhos: informar os caminhos de commit log, ssd tables
  • 39. Globalcode – CQL Cassandra Query Language Semelhante ao SQL Não existe JOIN Se pode criar estruturas Realizar Consultas Para saber mais: http://cassandra.apache.org/doc/cql3/CQL.html
  • 40. Globalcode – CQL KeySpace CREATE KEYSPACE Excelsior WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3}; CREATE KEYSPACE Excalibur WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 3}; ALTER KEYSPACE Excelsior WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 4}; USE Excalibur; DROP KEYSPACE Excalibur;
  • 41. Globalcode – CQL Column Family CREATE TABLE monkeySpecies ( species text PRIMARY KEY, common_name text, population varint, average_size int ) WITH comment='Important biological records' ALTER TABLE monkeySpecies ALTER average_size TYPE varint; ALTER TABLE monkeySpecies ADD gravesite varchar; DROP TABLE monkeySpecies; TRUNCATE monkeySpecies;
  • 42. Globalcode – CQL Index CREATE INDEX userIndex ON NerdMovies (user); CREATE INDEX ON Mutants (abilityId); DROP INDEX userIndex;
  • 43. Globalcode – CQL Manipulação de dados INSERT INTO NerdMovies (movie, director, main_actor, year) VALUES ('Serenity', 'Joss Whedon', 'Nathan Fillion', 2005); UPDATE NerdMovies SET director = 'Joss Whedon', main_actor = 'Nathan Fillion', year = 2005 WHERE movie = 'Serenity'; DELETE FROM NerdMovies USING TIMESTAMP 1240003134 WHERE movie = 'Serenity';
  • 44. Globalcode – CQL Manipulação de dados BEGIN BATCH INSERT INTO users (userid, password, name) VALUES ('user2', 'ch@ngem3b', 'second user'); UPDATE users SET password = 'ps22dhds' WHERE userid = 'user3'; INSERT INTO users (userid, password) VALUES ('user4', 'ch@ngem3c'); DELETE name FROM users WHERE userid = 'user1'; APPLY BATCH;
  • 45. Globalcode – CQL Select SELECT name, occupation FROM users WHERE userid IN (199, 200, 207); SELECT name AS user_name, occupation AS user_occupation FROM users; SELECT time, value FROM events WHERE event_type = 'myEvent' AND time > '2011-02-03' AND time <= '2012-01-01' SELECT COUNT(*) FROM users; SELECT COUNT(*) AS user_count FROM users;
  • 46. Globalcode – Variáveis ascii strings bigint integers blob blobs boolean booleans counter integers decimal integers, floats double integers float integers, floats
  • 47. Globalcode – Variáveis inet strings int integers text strings timestamp integers, strings timeuuid uuids uuid uuids varchar strings varint integers
  • 48. Globalcode – Variáveis Coleções map Dicionário de dados (chave valor) set Coleção de unico valor list coleção
  • 49. Globalcode – Variáveis Map CREATE TABLE users ( id text PRIMARY KEY, given text, surname text, favs map<text, text> ); INSERT INTO users (id, given, surname, favs) VALUES ('jsmith', 'John', 'Smith', { 'fruit' : 'apple', 'band' : 'Beatles' }); UPDATE users SET favs['author'] = 'Ed Poe' WHERE id = 'jsmith' UPDATE users SET favs = favs + { 'movie' : 'Cassablanca' } WHERE id = 'jsmith'
  • 50. Globalcode – Variáveis Set CREATE TABLE images ( name text PRIMARY KEY, owner text, date timestamp, tags set<text> ); INSERT INTO images (name, owner, date, tags) VALUES ('cat.jpg', 'jsmith', 'now', { 'kitten', 'cat', 'pet' }); UPDATE images SET tags = tags + { 'cute', 'cuddly' } WHERE name = 'cat.jpg'; UPDATE images SET tags = tags - { 'lame' } WHERE name = 'cat.jpg';
  • 51. Globalcode – Variáveis List CREATE TABLE plays ( id text PRIMARY KEY, game text, players int, scores list<int> ) INSERT INTO plays (id, game, players, scores) VALUES ('123-afde', 'quake', 3, [17, 4, 2]); UPDATE plays SET players = 5, scores = scores + [ 14, 21 ] WHERE id = '123-afde'; UPDATE plays SET players = 5, scores = [ 12 ] + scores WHERE id = '123-afde'; UPDATE plays SET scores[1] = 7 WHERE id = '123-afde'; DELETE scores[1] FROM plays WHERE id = '123-afde'; UPDATE plays SET scores = scores - [ 12, 21 ] WHERE id = '123-afde';
  • 52. Globalcode – Modelagem TwittSandra Usuários Seguidores Seguidos User Line TimeLine Tweets