SlideShare uma empresa Scribd logo
1 de 62
Baixar para ler offline
1
Conhecendo
Apache Cassandra
@Movile
Eiti Kimura 2015
2
Quem sou eu… Cassandra MVP
3
Mais de 20 milhões de pessoas usando nossos
serviços todo mês.
A Movile é líder em desenvolvimento de
plataformas de comércio e conteúdo móvel na
América Latina. Com produtos para celulares,
smartphones e tablets, nosso trabalho deixa a
vida das pessoas melhor e mais divertida
Movile
4
A Movile cria apps para todas as
plataformas móveis.
5
Playkids
6
IFood
7
Apache Cassandra
O que é?
Um pouco de História (NoSQL)
Arquitetura
Princípio de Funcionamento
Fluxo de Leitura e Escrita
Modelo de Distribuição de Dados, Geo distribuição
Modelo de dados, Demonstração CQL
Um programa para acesso a dados em Java
Aplicação do Cassandra
Requisitos do serviço
Arquitetura da Plataforma
Dicas de Uso
Sumário
8
O que é?
“Apache Cassandra é um banco de dados não
relacional (nosql) orientado a colunas,
distribuído, escalável, de alta disponibilidade,
tolerante a falhas”
[The Definitive Guide, Eben Hewitt, 2010]
9
NoSQL
NoSQL "Not Only SQL" são bancos de dados não relacionais que
não se baseiam diretamente no SQL, a linguagem mais comum
dos bancos de dados relacionais.
Em geral não suportam operações de junções de dados (joins)
NoSQL armazenam os dados com técnicas que visam atender a
requisitos de escalabilidade.
É importante entender que o intuito não é eliminar bancos de
dados relacionais, mas oferecer uma alternativa.
10
História
11
Herança do BigTable
● Modelo de dados colunar
● Armazenamento em SSTable
● MemTable (buffer e ordenação)
● Arquivos SSTable imutáveis
● Compactação de dados
http://pt.slideshare.net/geminimobile/bigtable-4820829
12
Herança do Dynamo
● Consistent Hash
● Protocolo Gossip
● Vector Clock
● Hinted Handoff
● Read repair
http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
13
Arquitetura e Funcionamento Teorema CAP
Cassandra tem
maior foco em
disponibilidade e
particionamento.
O teorema indica que é possível obter somente duas dessas propriedades
14
Cuidado!
Não é SQL
Características Principais
15
Descentralizado
Tolerante a falhas, sem ponto único central de controle,
não existe um nó “master”
Utiliza o Protocolo Peer-to-Peer (ao invés do modelo
master/slave)
16
Escalabilidade Elástica
A taxa de transferência (throughput) de operações de
leitura e escrita aumenta linearmente a medida que
novas máquinas são adicionadas
17
Modelo Transacional
A C I D
t
o
m
i
c
i
d
a
d
e
o
n
c
i
s
t
ê
n
c
i
a
s
o
l
a
m
e
n
t
o
u
r
a
b
i
l
i
d
a
d
e
Cassandra não usa
transações ACID com nos
RDBMS com rollback ou
mecanismos de lock.
Oference controle de
atomicidade e isolamento
no contexto de linha (row-
level)
18
Cassandra: Atomicidade
Escrita é atômica no contexto da partição (row).
Atualização ou Inserção de colunas são tratadas como
uma operação de write.
Utiliza timestamps para determinar o valor mais
atualizado de uma coluna (Last Wins)
19
Cassandra: Consistência
A consistência e disponibilidade podem ser ajustadas
(tunable) e podem ser fortes, conforme o teorema CAP.
Não há lock ou consistência transacional quando
múltiplas linhas ou tabelas são alteradas
concorrentemente. O ajuste da consistência e
disponibilidade oferece a possibilidade de tolerância a
partição.
Cassandra >= 2.0, micro transações (lighweight
transactions) use em menos de 1% de suas transações
20
Controle de Consistência
Escrita
Leitura
21
Cassandra: Isolamento
Full row-level isolation: Escrita a uma linha é totalmente
isolada ao cliente que está executando a escrita e não é
visível a nenhum outro cliente até que a operação
complete
22
Cassandra: Durabilidade
As escritas são duráveis: Todas as escritas aos nós são
registrados em memória e em disco antes de retornar
como uma operação completa (acknowledge)
23
Consistência Eventual
● Consistência Eventual: a
consistência ocorrerá ao
longo do tempo, e
eventualmente todos os
clientes acessarão a mesma
informação em um dado
instante.
● Forma de consistência
propagada. Ex.: DNS
24
Fluxo de Escrita (Write)
25
Distribuição dos dados (Consistent Hash)
Consistent Hash permite distribuir a informação pelos nós do
cluster minimizando a reorganização caso um nó seja adicionado
ou removido.
Cassandra atribui um valor hash para cada chave de partição
26
27
Fluxo de Leitura (Read)
28
O que é um cluster Cassandra?
Conjunto Ponto-a-Ponto de Nós
● Node: uma instância de Cassandra
● Rack: conjunto lógico de nós
● Datacenter: conjunto lógico de racks
● Cluster: conjunto total de nós que mapeiam um token-ring completo
29
Arquitetura e Funcionamento
Fluxo de Dados
1. A escrita/leitura pode
ocorrer em qualquer nó
2. O coordenador
replica/obtém a
informação para/de
diferentes nós e zonas
3. Coordenador retorna
o ACK para o cliente
4. Cliente pode escolher
por esperar a
confirmação de um nó,
um grupo de nós
(quorum) ou todos os
nós do cluster antes de
receber o ACK
30
Sem Distribuição Geográfica de Informação
31
Com Distribuição Geográfica de Informação
32
INTRODUÇÃO AO MODELO DE DADOS
33
Cassandra: Modelagem de Dados
Modelagem de dados é um processo que envolve a
identificação de entidades, ou itens para serem armazenados,
assim como o relacionamento entre essas entidades.
Adicionalmente envolve a identificação de padrões de acesso
aos dados e consultas que serão realizadas.
No Cassandra as consultas são a chave para organização dos
dados (query-driven). Por ser um banco distribuído, eficiência
de escrita e leitura é obtida quando os dados estão agrupados
em um mesmo nó (partição).
34
Introdução: Modelo de Dados
Modelo Relacional
Dados
APLICAÇÃO
MODELO
DADOS
35
Modelo de Dados: Cassandra
Dados
MODELOS
DADOS
APLICAÇÃO
36
37
Introdução ao Modelo de Dados
38
Exemplo: Serviço de Música
39
Exemplo: Serviço de Música
Identificar Padrões de Acesso
40
Exemplo: Serviço de Música
Atenção: Diferentemente dos banco de dados relacionais, onde
a modelagem está baseada no relacionamento entre as
entidades, no Cassandra, temos uma tabela por consulta,
replicando os dados ao longo das tabelas envolvidas, processo
conhecido como desnormalização!
41
CQL
● Cassandra Query Language, é a linguagem de acesso aos
dados do Cassandra.
● CQL v3 oferece um modelo muito próximo ao SQL no tocante
ao armazenamento de dados em forma de tabelas que
contém linhas e colunas.
● Não existe operações de junção (joins) entre tabelas, não
existe integridade referencial, não existe chave estrangeira,
não possui locks ou transações como nos bancos de dados
relacionais.
42
CQL
● Particionamento de dados por chave
● Tipos de dados complexos (objeto do usuário)
● Tipo de dados multi-valorados
○ Set
○ List
○ Map
● Colunas do tipo contador
43
CQL: Estrutura de armazenamento de dados
Column
Name
... Column
Name
Column Value ... Column Value
Timestamp ... Timestamp
TTL ... TTL
Row Key
2 billhões
● Modelo trazido do Bigtable do Google *
● Uma chave (row key) e muitas colunas
● Colunas de controle: Timestamp, TTL
● Nome da coluna ordenado (UTF8, Int, Timestamp, etc...)
* http://research.google.com/archive/bigtable.html
44
CQL Exemplo
CREATE TABLE emp (
empID int,
deptID int,
first_name varchar,
last_name varchar,
PRIMARY KEY (empID, deptID)
);
Definição do
nome da tabela
Definição do
nome e tipo da
coluna
Campos que
compõe a chave
primária e
particionamento
45
CQL DEMO
46
http://planetcassandra.org/tente-cassandra/
47
http://planetcassandra.org/client-drivers-tools/
DataStax C# / .NET Client Driver for Apache Cassandra
A C# client driver for Apache Cassandra
DataStax Java Client Driver for Apache Cassandra
A Java client driver for Apache Cassandra. This driver
works exclusively with CQL3
DataStax C++ Client Driver for Apache Cassandra
DataStax Python Driver for Apache Cassandra
DataStax Node.js Client Driver for Apache Cassandra
DataStax Ruby Client Driver for Apache Cassandra
DataStax PHP Client Driver for Apache Cassandra (Alpha)
48
https://github.com/pcmanus/ccm
Cassandra Cluster Manager: bilbioteca/script para criar,
implantar e remover um cluster de Apache Cassandra em sua
máquina local.
# ccm create -v 2.0.14 --nodes 3 --start clusterName
# ccm status
Cluster: 'clusterName'
--------------
node1: UP
node3: UP
node2: UP
# ccm node1 status
# ccm node1 stop
# ccm node2 start
#ccm stop
#ccm start
49
https://github.com/eiti-kimura-
movile/CassandraMusicService.git
Aplicação de Exemplo usando Java
JAVA DRIVER DEMO
50
Modelagem de dados com Cassandra: Resumo
• Não tenha medo da desnormalização
• Desnormalizar: escritas são baratas, leituras mais
custosas, modele e organize seus dados no melhor
formato para recuperá-los
• Há várias formas de modelar uma solução, não
existe forma certa ou errada
• Modelagem guiada por consultas (Query)
51
Caso de Uso Movile
52
Subscription & Billing Platform a.k.a SBS
• API de serviço REST
• Responsável por gerenciar as assinaturas
dos usuários
• Efetua a cobrança dos usuários nas operadoras
• Renova as assinaturas dos usuários periodicamente
• Nunca pode parar
• Deve ter alto desempenho
53
60,2 milhões de
assinaturas
50 request/s
★ subscribe
★ cancel
★ profile
Plataforma em números
95,5 milhões
transações com as
operadoras
54
Arquitetura básica de serviço
55
Arquitetura básica de serviço com alto uso
● Instâncias de serviços escaláveis
● Alta disponibilidade
56
Arquitetura básica de serviço com carga Intensa
● Tempo de resposta
muito alto
● Capacidade de
processamento
(throughput) reduzida
● Baixa disponibilidade,
ponto único de falha
● Pior que parar é
funcionar algumas
vezes
57
• Problemas de
desempenho
resolvidos
• Melhora de
disponibilidade
• Não existe mais
ponto único de falha
•Aumento da
capacidade de
processamento de
transações
C*
Solução Distribuída
58
Total de Operações por dia
tempo
num.operações
> 1,3 Billhões de Operações ao dia
59
http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html
60
# Dicas
Dica 1#: usar quando a disponibilidade é um fator
importante, onde exista um alto volume de dados, com
número grande de operações de escrita.
Dica 2#: entenda os requisitos da aplicação, identifique os
padrões de acesso a informação.
Dica #3: pense em desnormalização de dados, mas com
cuidado…
Dica #4: usar quando desempenho é um fator importante
para a aplicação
61
● Bom desempenho de leitura
● Excelente desempenho em escrita
● Throughput de leitura e escrita altamente escalável
● Suporta geo-distribuição de informação
● Tolerante a falhas
● Controle fino do nível de consistência por cliente
● Integridade de dados com checks e repairs
● Queremos: FOSS (Free and Open Source Software) +
Suporte
Porque Cassandra?
62
eiti.kimura@movile.com
@eitikimura
facebook.com/eiti.kimura
flickr.com/eitikimura
Perguntas
talentos@movile.com
http://www.movile.com/pt/carreiras
eiti-kimura-movile
eitikimura

Mais conteúdo relacionado

Mais procurados

Modularized ETL Writing with Apache Spark
Modularized ETL Writing with Apache SparkModularized ETL Writing with Apache Spark
Modularized ETL Writing with Apache SparkDatabricks
 
Introduction to Cassandra Architecture
Introduction to Cassandra ArchitectureIntroduction to Cassandra Architecture
Introduction to Cassandra Architecturenickmbailey
 
Understanding Data Partitioning and Replication in Apache Cassandra
Understanding Data Partitioning and Replication in Apache CassandraUnderstanding Data Partitioning and Replication in Apache Cassandra
Understanding Data Partitioning and Replication in Apache CassandraDataStax
 
Redis cluster
Redis clusterRedis cluster
Redis clusteriammutex
 
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )SANG WON PARK
 
Apache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinApache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinChristian Johannsen
 
Ceph Performance and Sizing Guide
Ceph Performance and Sizing GuideCeph Performance and Sizing Guide
Ceph Performance and Sizing GuideJose De La Rosa
 
Redis Introduction
Redis IntroductionRedis Introduction
Redis IntroductionAlex Su
 
Ms sql server architecture
Ms sql server architectureMs sql server architecture
Ms sql server architectureAjeet Singh
 
An Introduction to Redis for Developers.pdf
An Introduction to Redis for Developers.pdfAn Introduction to Redis for Developers.pdf
An Introduction to Redis for Developers.pdfStephen Lorello
 
Cassandra an overview
Cassandra an overviewCassandra an overview
Cassandra an overviewPritamKathar
 
Delta lake and the delta architecture
Delta lake and the delta architectureDelta lake and the delta architecture
Delta lake and the delta architectureAdam Doyle
 
data platform on kubernetes
data platform on kubernetesdata platform on kubernetes
data platform on kubernetes창언 정
 
Hive Tutorial | Hive Architecture | Hive Tutorial For Beginners | Hive In Had...
Hive Tutorial | Hive Architecture | Hive Tutorial For Beginners | Hive In Had...Hive Tutorial | Hive Architecture | Hive Tutorial For Beginners | Hive In Had...
Hive Tutorial | Hive Architecture | Hive Tutorial For Beginners | Hive In Had...Simplilearn
 
Spark SQL Deep Dive @ Melbourne Spark Meetup
Spark SQL Deep Dive @ Melbourne Spark MeetupSpark SQL Deep Dive @ Melbourne Spark Meetup
Spark SQL Deep Dive @ Melbourne Spark MeetupDatabricks
 
Cassandra background-and-architecture
Cassandra background-and-architectureCassandra background-and-architecture
Cassandra background-and-architectureMarkus Klems
 

Mais procurados (20)

Redis introduction
Redis introductionRedis introduction
Redis introduction
 
Modularized ETL Writing with Apache Spark
Modularized ETL Writing with Apache SparkModularized ETL Writing with Apache Spark
Modularized ETL Writing with Apache Spark
 
Introduction to Cassandra Architecture
Introduction to Cassandra ArchitectureIntroduction to Cassandra Architecture
Introduction to Cassandra Architecture
 
Masterclass - Redshift
Masterclass - RedshiftMasterclass - Redshift
Masterclass - Redshift
 
Understanding Data Partitioning and Replication in Apache Cassandra
Understanding Data Partitioning and Replication in Apache CassandraUnderstanding Data Partitioning and Replication in Apache Cassandra
Understanding Data Partitioning and Replication in Apache Cassandra
 
Redis cluster
Redis clusterRedis cluster
Redis cluster
 
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
 
Apache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek BerlinApache Cassandra at the Geek2Geek Berlin
Apache Cassandra at the Geek2Geek Berlin
 
Ceph Performance and Sizing Guide
Ceph Performance and Sizing GuideCeph Performance and Sizing Guide
Ceph Performance and Sizing Guide
 
Redis Introduction
Redis IntroductionRedis Introduction
Redis Introduction
 
Ms sql server architecture
Ms sql server architectureMs sql server architecture
Ms sql server architecture
 
An Introduction to Redis for Developers.pdf
An Introduction to Redis for Developers.pdfAn Introduction to Redis for Developers.pdf
An Introduction to Redis for Developers.pdf
 
Cassandra an overview
Cassandra an overviewCassandra an overview
Cassandra an overview
 
Delta lake and the delta architecture
Delta lake and the delta architectureDelta lake and the delta architecture
Delta lake and the delta architecture
 
Introdução ao Hive
Introdução ao HiveIntrodução ao Hive
Introdução ao Hive
 
data platform on kubernetes
data platform on kubernetesdata platform on kubernetes
data platform on kubernetes
 
Hive Tutorial | Hive Architecture | Hive Tutorial For Beginners | Hive In Had...
Hive Tutorial | Hive Architecture | Hive Tutorial For Beginners | Hive In Had...Hive Tutorial | Hive Architecture | Hive Tutorial For Beginners | Hive In Had...
Hive Tutorial | Hive Architecture | Hive Tutorial For Beginners | Hive In Had...
 
Spark SQL Deep Dive @ Melbourne Spark Meetup
Spark SQL Deep Dive @ Melbourne Spark MeetupSpark SQL Deep Dive @ Melbourne Spark Meetup
Spark SQL Deep Dive @ Melbourne Spark Meetup
 
MS-SQL SERVER ARCHITECTURE
MS-SQL SERVER ARCHITECTUREMS-SQL SERVER ARCHITECTURE
MS-SQL SERVER ARCHITECTURE
 
Cassandra background-and-architecture
Cassandra background-and-architectureCassandra background-and-architecture
Cassandra background-and-architecture
 

Destaque

Cassandra overview: Um Caso Prático
Cassandra overview:  Um Caso PráticoCassandra overview:  Um Caso Prático
Cassandra overview: Um Caso PráticoEiti Kimura
 
NoSQL com Cassandra
NoSQL com CassandraNoSQL com Cassandra
NoSQL com CassandraJugVale
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberChristiano Anderson
 
Revisao Geral
Revisao GeralRevisao Geral
Revisao GeralOscar
 
Instalação Apache Tomcat
Instalação Apache TomcatInstalação Apache Tomcat
Instalação Apache TomcatOscar
 
Apresentação cassandra
Apresentação cassandraApresentação cassandra
Apresentação cassandraRichiely Paiva
 
Apache Wicket @ JustJava 2008
Apache Wicket @ JustJava 2008Apache Wicket @ JustJava 2008
Apache Wicket @ JustJava 2008Bruno Borges
 
Apache solr: como, quando e onde
Apache solr: como, quando e ondeApache solr: como, quando e onde
Apache solr: como, quando e ondePedro Rocha
 
Gestão da informação com apache solr e drupal
Gestão da informação com apache solr e drupalGestão da informação com apache solr e drupal
Gestão da informação com apache solr e drupalPedro Rocha
 
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 15Christiano Anderson
 
DataStax: Rigorous Cassandra Data Modeling for the Relational Data Architect
DataStax: Rigorous Cassandra Data Modeling for the Relational Data ArchitectDataStax: Rigorous Cassandra Data Modeling for the Relational Data Architect
DataStax: Rigorous Cassandra Data Modeling for the Relational Data ArchitectDataStax Academy
 
AULA classificação facetada
AULA classificação facetadaAULA classificação facetada
AULA classificação facetadaHumberto Silva
 
Data warehouse & Data mining
Data warehouse & Data miningData warehouse & Data mining
Data warehouse & Data miningCassius Busemeyer
 
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 PoliglotaGlaucio Scheibel
 

Destaque (20)

Cassandra overview: Um Caso Prático
Cassandra overview:  Um Caso PráticoCassandra overview:  Um Caso Prático
Cassandra overview: Um Caso Prático
 
Hello NoSQL World
Hello NoSQL WorldHello NoSQL World
Hello NoSQL World
 
datawarehouse2
datawarehouse2datawarehouse2
datawarehouse2
 
NoSQL com Cassandra
NoSQL com CassandraNoSQL com Cassandra
NoSQL com Cassandra
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saber
 
Apresentacao de Introdução ao Apache Maven
Apresentacao de Introdução ao Apache MavenApresentacao de Introdução ao Apache Maven
Apresentacao de Introdução ao Apache Maven
 
Revisao Geral
Revisao GeralRevisao Geral
Revisao Geral
 
Instalação Apache Tomcat
Instalação Apache TomcatInstalação Apache Tomcat
Instalação Apache Tomcat
 
Apresentação cassandra
Apresentação cassandraApresentação cassandra
Apresentação cassandra
 
Introdução Wicket
Introdução WicketIntrodução Wicket
Introdução Wicket
 
Apache Wicket @ JustJava 2008
Apache Wicket @ JustJava 2008Apache Wicket @ JustJava 2008
Apache Wicket @ JustJava 2008
 
Apache solr: como, quando e onde
Apache solr: como, quando e ondeApache solr: como, quando e onde
Apache solr: como, quando e onde
 
Introdução ao NoSql
Introdução ao NoSqlIntrodução ao NoSql
Introdução ao NoSql
 
Gestão da informação com apache solr e drupal
Gestão da informação com apache solr e drupalGestão da informação com apache solr e drupal
Gestão da informação com apache solr e drupal
 
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
 
DataStax: Rigorous Cassandra Data Modeling for the Relational Data Architect
DataStax: Rigorous Cassandra Data Modeling for the Relational Data ArchitectDataStax: Rigorous Cassandra Data Modeling for the Relational Data Architect
DataStax: Rigorous Cassandra Data Modeling for the Relational Data Architect
 
AULA classificação facetada
AULA classificação facetadaAULA classificação facetada
AULA classificação facetada
 
Linux - Servidor Web Apache
Linux - Servidor Web ApacheLinux - Servidor Web Apache
Linux - Servidor Web Apache
 
Data warehouse & Data mining
Data warehouse & Data miningData warehouse & Data mining
Data warehouse & Data mining
 
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
 

Semelhante a Conhecendo Apache Cassandra e sua aplicação na Movile

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 DBAsRonaldo Leite Martins
 
Lighting Talk - Apache Cassandra
Lighting Talk - Apache CassandraLighting Talk - Apache Cassandra
Lighting Talk - Apache CassandraRafael Domingues
 
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 CAPAricelio Souza
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Ambiente Livre
 
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ídosEiti Kimura
 
Introdução ao Nosql
Introdução ao NosqlIntrodução ao Nosql
Introdução ao NosqlJosé Silva
 
Particionamento cassandra
Particionamento   cassandraParticionamento   cassandra
Particionamento cassandraserdg
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - IntroduçãoMarco Pinheiro
 
Palestra Google Cloud Spanner
Palestra Google Cloud SpannerPalestra Google Cloud Spanner
Palestra Google Cloud SpannerFelipe Santos
 
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços MóveisQConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços MóveisEiti Kimura
 
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços MóveisQConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços MóveisDataStax Academy
 

Semelhante a Conhecendo Apache Cassandra e sua aplicação na Movile (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
 
Lighting Talk - Apache Cassandra
Lighting Talk - Apache CassandraLighting Talk - Apache Cassandra
Lighting Talk - Apache Cassandra
 
No sql std
No sql stdNo sql std
No sql std
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário 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
 
Cassandra - O básico
Cassandra - O básicoCassandra - O básico
Cassandra - O básico
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
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
 
Introdução ao Nosql
Introdução ao NosqlIntrodução ao Nosql
Introdução ao Nosql
 
Particionamento cassandra
Particionamento   cassandraParticionamento   cassandra
Particionamento cassandra
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
 
C-Store 7 years later
C-Store 7 years laterC-Store 7 years later
C-Store 7 years later
 
No sql o_que_e_isso.key
No sql o_que_e_isso.keyNo sql o_que_e_isso.key
No sql o_que_e_isso.key
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
Palestra Google Cloud Spanner
Palestra Google Cloud SpannerPalestra Google Cloud Spanner
Palestra Google Cloud Spanner
 
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços MóveisQConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
 
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços MóveisQConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
 
NoSQL
NoSQLNoSQL
NoSQL
 

Mais de Eiti Kimura

[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...Eiti Kimura
 
[Redis conf18] The Versatility of Redis
[Redis conf18] The Versatility of Redis[Redis conf18] The Versatility of Redis
[Redis conf18] The Versatility of RedisEiti Kimura
 
[DEVFEST] Apache Spark Casos de Uso e Escalabilidade
[DEVFEST] Apache Spark  Casos de Uso e Escalabilidade[DEVFEST] Apache Spark  Casos de Uso e Escalabilidade
[DEVFEST] Apache Spark Casos de Uso e EscalabilidadeEiti Kimura
 
[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 DesempenhoEiti Kimura
 
[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áticaEiti Kimura
 
SP Big Data Meetup - Conhecendo Apache Cassandra @Movile
SP Big Data Meetup - Conhecendo Apache Cassandra @MovileSP Big Data Meetup - Conhecendo Apache Cassandra @Movile
SP Big Data Meetup - Conhecendo Apache Cassandra @MovileEiti Kimura
 
Cassandra Summit 2015 - A Change of Seasons
Cassandra Summit 2015 - A Change of SeasonsCassandra Summit 2015 - A Change of Seasons
Cassandra Summit 2015 - A Change of SeasonsEiti Kimura
 
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 DesempenhoEiti Kimura
 

Mais de Eiti Kimura (8)

[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
 
[Redis conf18] The Versatility of Redis
[Redis conf18] The Versatility of Redis[Redis conf18] The Versatility of Redis
[Redis conf18] The Versatility of Redis
 
[DEVFEST] Apache Spark Casos de Uso e Escalabilidade
[DEVFEST] Apache Spark  Casos de Uso e Escalabilidade[DEVFEST] Apache Spark  Casos de Uso e Escalabilidade
[DEVFEST] Apache Spark Casos de Uso e Escalabilidade
 
[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
 
[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
 
SP Big Data Meetup - Conhecendo Apache Cassandra @Movile
SP Big Data Meetup - Conhecendo Apache Cassandra @MovileSP Big Data Meetup - Conhecendo Apache Cassandra @Movile
SP Big Data Meetup - Conhecendo Apache Cassandra @Movile
 
Cassandra Summit 2015 - A Change of Seasons
Cassandra Summit 2015 - A Change of SeasonsCassandra Summit 2015 - A Change of Seasons
Cassandra Summit 2015 - A Change of Seasons
 
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
 

Conhecendo Apache Cassandra e sua aplicação na Movile

  • 2. 2 Quem sou eu… Cassandra MVP
  • 3. 3 Mais de 20 milhões de pessoas usando nossos serviços todo mês. A Movile é líder em desenvolvimento de plataformas de comércio e conteúdo móvel na América Latina. Com produtos para celulares, smartphones e tablets, nosso trabalho deixa a vida das pessoas melhor e mais divertida Movile
  • 4. 4 A Movile cria apps para todas as plataformas móveis.
  • 7. 7 Apache Cassandra O que é? Um pouco de História (NoSQL) Arquitetura Princípio de Funcionamento Fluxo de Leitura e Escrita Modelo de Distribuição de Dados, Geo distribuição Modelo de dados, Demonstração CQL Um programa para acesso a dados em Java Aplicação do Cassandra Requisitos do serviço Arquitetura da Plataforma Dicas de Uso Sumário
  • 8. 8 O que é? “Apache Cassandra é um banco de dados não relacional (nosql) orientado a colunas, distribuído, escalável, de alta disponibilidade, tolerante a falhas” [The Definitive Guide, Eben Hewitt, 2010]
  • 9. 9 NoSQL NoSQL "Not Only SQL" são bancos de dados não relacionais que não se baseiam diretamente no SQL, a linguagem mais comum dos bancos de dados relacionais. Em geral não suportam operações de junções de dados (joins) NoSQL armazenam os dados com técnicas que visam atender a requisitos de escalabilidade. É importante entender que o intuito não é eliminar bancos de dados relacionais, mas oferecer uma alternativa.
  • 11. 11 Herança do BigTable ● Modelo de dados colunar ● Armazenamento em SSTable ● MemTable (buffer e ordenação) ● Arquivos SSTable imutáveis ● Compactação de dados http://pt.slideshare.net/geminimobile/bigtable-4820829
  • 12. 12 Herança do Dynamo ● Consistent Hash ● Protocolo Gossip ● Vector Clock ● Hinted Handoff ● Read repair http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
  • 13. 13 Arquitetura e Funcionamento Teorema CAP Cassandra tem maior foco em disponibilidade e particionamento. O teorema indica que é possível obter somente duas dessas propriedades
  • 15. 15 Descentralizado Tolerante a falhas, sem ponto único central de controle, não existe um nó “master” Utiliza o Protocolo Peer-to-Peer (ao invés do modelo master/slave)
  • 16. 16 Escalabilidade Elástica A taxa de transferência (throughput) de operações de leitura e escrita aumenta linearmente a medida que novas máquinas são adicionadas
  • 17. 17 Modelo Transacional A C I D t o m i c i d a d e o n c i s t ê n c i a s o l a m e n t o u r a b i l i d a d e Cassandra não usa transações ACID com nos RDBMS com rollback ou mecanismos de lock. Oference controle de atomicidade e isolamento no contexto de linha (row- level)
  • 18. 18 Cassandra: Atomicidade Escrita é atômica no contexto da partição (row). Atualização ou Inserção de colunas são tratadas como uma operação de write. Utiliza timestamps para determinar o valor mais atualizado de uma coluna (Last Wins)
  • 19. 19 Cassandra: Consistência A consistência e disponibilidade podem ser ajustadas (tunable) e podem ser fortes, conforme o teorema CAP. Não há lock ou consistência transacional quando múltiplas linhas ou tabelas são alteradas concorrentemente. O ajuste da consistência e disponibilidade oferece a possibilidade de tolerância a partição. Cassandra >= 2.0, micro transações (lighweight transactions) use em menos de 1% de suas transações
  • 21. 21 Cassandra: Isolamento Full row-level isolation: Escrita a uma linha é totalmente isolada ao cliente que está executando a escrita e não é visível a nenhum outro cliente até que a operação complete
  • 22. 22 Cassandra: Durabilidade As escritas são duráveis: Todas as escritas aos nós são registrados em memória e em disco antes de retornar como uma operação completa (acknowledge)
  • 23. 23 Consistência Eventual ● Consistência Eventual: a consistência ocorrerá ao longo do tempo, e eventualmente todos os clientes acessarão a mesma informação em um dado instante. ● Forma de consistência propagada. Ex.: DNS
  • 25. 25 Distribuição dos dados (Consistent Hash) Consistent Hash permite distribuir a informação pelos nós do cluster minimizando a reorganização caso um nó seja adicionado ou removido. Cassandra atribui um valor hash para cada chave de partição
  • 26. 26
  • 28. 28 O que é um cluster Cassandra? Conjunto Ponto-a-Ponto de Nós ● Node: uma instância de Cassandra ● Rack: conjunto lógico de nós ● Datacenter: conjunto lógico de racks ● Cluster: conjunto total de nós que mapeiam um token-ring completo
  • 29. 29 Arquitetura e Funcionamento Fluxo de Dados 1. A escrita/leitura pode ocorrer em qualquer nó 2. O coordenador replica/obtém a informação para/de diferentes nós e zonas 3. Coordenador retorna o ACK para o cliente 4. Cliente pode escolher por esperar a confirmação de um nó, um grupo de nós (quorum) ou todos os nós do cluster antes de receber o ACK
  • 33. 33 Cassandra: Modelagem de Dados Modelagem de dados é um processo que envolve a identificação de entidades, ou itens para serem armazenados, assim como o relacionamento entre essas entidades. Adicionalmente envolve a identificação de padrões de acesso aos dados e consultas que serão realizadas. No Cassandra as consultas são a chave para organização dos dados (query-driven). Por ser um banco distribuído, eficiência de escrita e leitura é obtida quando os dados estão agrupados em um mesmo nó (partição).
  • 34. 34 Introdução: Modelo de Dados Modelo Relacional Dados APLICAÇÃO MODELO DADOS
  • 35. 35 Modelo de Dados: Cassandra Dados MODELOS DADOS APLICAÇÃO
  • 36. 36
  • 39. 39 Exemplo: Serviço de Música Identificar Padrões de Acesso
  • 40. 40 Exemplo: Serviço de Música Atenção: Diferentemente dos banco de dados relacionais, onde a modelagem está baseada no relacionamento entre as entidades, no Cassandra, temos uma tabela por consulta, replicando os dados ao longo das tabelas envolvidas, processo conhecido como desnormalização!
  • 41. 41 CQL ● Cassandra Query Language, é a linguagem de acesso aos dados do Cassandra. ● CQL v3 oferece um modelo muito próximo ao SQL no tocante ao armazenamento de dados em forma de tabelas que contém linhas e colunas. ● Não existe operações de junção (joins) entre tabelas, não existe integridade referencial, não existe chave estrangeira, não possui locks ou transações como nos bancos de dados relacionais.
  • 42. 42 CQL ● Particionamento de dados por chave ● Tipos de dados complexos (objeto do usuário) ● Tipo de dados multi-valorados ○ Set ○ List ○ Map ● Colunas do tipo contador
  • 43. 43 CQL: Estrutura de armazenamento de dados Column Name ... Column Name Column Value ... Column Value Timestamp ... Timestamp TTL ... TTL Row Key 2 billhões ● Modelo trazido do Bigtable do Google * ● Uma chave (row key) e muitas colunas ● Colunas de controle: Timestamp, TTL ● Nome da coluna ordenado (UTF8, Int, Timestamp, etc...) * http://research.google.com/archive/bigtable.html
  • 44. 44 CQL Exemplo CREATE TABLE emp ( empID int, deptID int, first_name varchar, last_name varchar, PRIMARY KEY (empID, deptID) ); Definição do nome da tabela Definição do nome e tipo da coluna Campos que compõe a chave primária e particionamento
  • 47. 47 http://planetcassandra.org/client-drivers-tools/ DataStax C# / .NET Client Driver for Apache Cassandra A C# client driver for Apache Cassandra DataStax Java Client Driver for Apache Cassandra A Java client driver for Apache Cassandra. This driver works exclusively with CQL3 DataStax C++ Client Driver for Apache Cassandra DataStax Python Driver for Apache Cassandra DataStax Node.js Client Driver for Apache Cassandra DataStax Ruby Client Driver for Apache Cassandra DataStax PHP Client Driver for Apache Cassandra (Alpha)
  • 48. 48 https://github.com/pcmanus/ccm Cassandra Cluster Manager: bilbioteca/script para criar, implantar e remover um cluster de Apache Cassandra em sua máquina local. # ccm create -v 2.0.14 --nodes 3 --start clusterName # ccm status Cluster: 'clusterName' -------------- node1: UP node3: UP node2: UP # ccm node1 status # ccm node1 stop # ccm node2 start #ccm stop #ccm start
  • 50. 50 Modelagem de dados com Cassandra: Resumo • Não tenha medo da desnormalização • Desnormalizar: escritas são baratas, leituras mais custosas, modele e organize seus dados no melhor formato para recuperá-los • Há várias formas de modelar uma solução, não existe forma certa ou errada • Modelagem guiada por consultas (Query)
  • 51. 51 Caso de Uso Movile
  • 52. 52 Subscription & Billing Platform a.k.a SBS • API de serviço REST • Responsável por gerenciar as assinaturas dos usuários • Efetua a cobrança dos usuários nas operadoras • Renova as assinaturas dos usuários periodicamente • Nunca pode parar • Deve ter alto desempenho
  • 53. 53 60,2 milhões de assinaturas 50 request/s ★ subscribe ★ cancel ★ profile Plataforma em números 95,5 milhões transações com as operadoras
  • 55. 55 Arquitetura básica de serviço com alto uso ● Instâncias de serviços escaláveis ● Alta disponibilidade
  • 56. 56 Arquitetura básica de serviço com carga Intensa ● Tempo de resposta muito alto ● Capacidade de processamento (throughput) reduzida ● Baixa disponibilidade, ponto único de falha ● Pior que parar é funcionar algumas vezes
  • 57. 57 • Problemas de desempenho resolvidos • Melhora de disponibilidade • Não existe mais ponto único de falha •Aumento da capacidade de processamento de transações C* Solução Distribuída
  • 58. 58 Total de Operações por dia tempo num.operações > 1,3 Billhões de Operações ao dia
  • 60. 60 # Dicas Dica 1#: usar quando a disponibilidade é um fator importante, onde exista um alto volume de dados, com número grande de operações de escrita. Dica 2#: entenda os requisitos da aplicação, identifique os padrões de acesso a informação. Dica #3: pense em desnormalização de dados, mas com cuidado… Dica #4: usar quando desempenho é um fator importante para a aplicação
  • 61. 61 ● Bom desempenho de leitura ● Excelente desempenho em escrita ● Throughput de leitura e escrita altamente escalável ● Suporta geo-distribuição de informação ● Tolerante a falhas ● Controle fino do nível de consistência por cliente ● Integridade de dados com checks e repairs ● Queremos: FOSS (Free and Open Source Software) + Suporte Porque Cassandra?