SlideShare uma empresa Scribd logo
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

PDF
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
PPTX
Presentation cassandra
PPTX
An Overview of Apache Cassandra
PPTX
Hadoop Backup and Disaster Recovery
PPTX
Effective administration of IBM Integration Bus - Sanjay Nagchowdhury
PDF
Build real-time streaming data pipelines to AWS with Confluent
PPTX
Microsoft Azure Platform-as-a-Service (PaaS)
PPTX
Moving Beyond Lambda Architectures with Apache Kudu
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
Presentation cassandra
An Overview of Apache Cassandra
Hadoop Backup and Disaster Recovery
Effective administration of IBM Integration Bus - Sanjay Nagchowdhury
Build real-time streaming data pipelines to AWS with Confluent
Microsoft Azure Platform-as-a-Service (PaaS)
Moving Beyond Lambda Architectures with Apache Kudu

Mais procurados (20)

PDF
Bases de données NoSQL
PDF
Azure SQL Database
PDF
ProxySQL Cluster - Percona Live 2022
PDF
Azure SQL Database Managed Instance - technical overview
PDF
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
PPTX
Databricks Fundamentals
PDF
Introduction to Apache Cassandra
PPTX
The Right (and Wrong) Use Cases for MongoDB
PDF
AWS EC2
PDF
The Marriage of the Data Lake and the Data Warehouse and Why You Need Both
PPTX
The Future of Data Warehousing and Data Integration
PDF
Cassandra presentation at NoSQL
PPTX
Presentation of Apache Cassandra
PDF
Fast analytics kudu to druid
PDF
Unified Big Data Processing with Apache Spark (QCON 2014)
PDF
Spark with Delta Lake
PDF
Unlocking the Cloud Operating Model: People, Process, Tools
PPTX
Application Modernization using the Strangler Pattern
PDF
How to Split Your System into Microservices
PDF
Understanding Data Partitioning and Replication in Apache Cassandra
Bases de données NoSQL
Azure SQL Database
ProxySQL Cluster - Percona Live 2022
Azure SQL Database Managed Instance - technical overview
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
Databricks Fundamentals
Introduction to Apache Cassandra
The Right (and Wrong) Use Cases for MongoDB
AWS EC2
The Marriage of the Data Lake and the Data Warehouse and Why You Need Both
The Future of Data Warehousing and Data Integration
Cassandra presentation at NoSQL
Presentation of Apache Cassandra
Fast analytics kudu to druid
Unified Big Data Processing with Apache Spark (QCON 2014)
Spark with Delta Lake
Unlocking the Cloud Operating Model: People, Process, Tools
Application Modernization using the Strangler Pattern
How to Split Your System into Microservices
Understanding Data Partitioning and Replication in Apache Cassandra
Anúncio

Destaque (20)

PDF
Cassandra overview: Um Caso Prático
PDF
Hello NoSQL World
PPT
datawarehouse2
PDF
NoSQL com Cassandra
ODP
MongoDB - Tudo o que você precisa saber
ODP
Apresentacao de Introdução ao Apache Maven
PPT
Revisao Geral
PPT
Instalação Apache Tomcat
PDF
Apresentação cassandra
PPT
Introdução Wicket
PDF
Apache Wicket @ JustJava 2008
PDF
Apache solr: como, quando e onde
PDF
Introdução ao NoSql
PDF
Gestão da informação com apache solr e drupal
ODP
Persistência Poliglota, Big Data e NoSQL FISL 15
PDF
DataStax: Rigorous Cassandra Data Modeling for the Relational Data Architect
PPT
AULA classificação facetada
PDF
Linux - Servidor Web Apache
PPT
Data warehouse & Data mining
PPTX
Modelos NoSQL e a Persistência Poliglota
Cassandra overview: Um Caso Prático
Hello NoSQL World
datawarehouse2
NoSQL com Cassandra
MongoDB - Tudo o que você precisa saber
Apresentacao de Introdução ao Apache Maven
Revisao Geral
Instalação Apache Tomcat
Apresentação cassandra
Introdução Wicket
Apache Wicket @ JustJava 2008
Apache solr: como, quando e onde
Introdução ao NoSql
Gestão da informação com apache solr e drupal
Persistência Poliglota, Big Data e NoSQL FISL 15
DataStax: Rigorous Cassandra Data Modeling for the Relational Data Architect
AULA classificação facetada
Linux - Servidor Web Apache
Data warehouse & Data mining
Modelos NoSQL e a Persistência Poliglota
Anúncio

Semelhante a Conhecendo Apache Cassandra @Movile (20)

PDF
Bancos de dados NoSQL: uma visão geral
PDF
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
PPTX
Lighting Talk - Apache Cassandra
ODP
No sql std
PDF
Material Seminário NoSQL
PPTX
NoSQL, Base VS ACID e Teorema CAP
PDF
Cassandra - O básico
PDF
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
PDF
NoSql e NewSql
DOC
Apostila sql
PDF
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
PPTX
Introdução ao Nosql
PDF
Particionamento cassandra
PDF
Artigo Nosql
PDF
Introducao a base de dados IBD07 NoSQL.pdf
PDF
C-Store 7 years later
PDF
No sql o_que_e_isso.key
PDF
PHPMyadmin - Introdução
PDF
Palestra Google Cloud Spanner
PDF
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis
Bancos de dados NoSQL: uma visão geral
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
Lighting Talk - Apache Cassandra
No sql std
Material Seminário NoSQL
NoSQL, Base VS ACID e Teorema CAP
Cassandra - O básico
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
NoSql e NewSql
Apostila sql
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
Introdução ao Nosql
Particionamento cassandra
Artigo Nosql
Introducao a base de dados IBD07 NoSQL.pdf
C-Store 7 years later
No sql o_que_e_isso.key
PHPMyadmin - Introdução
Palestra Google Cloud Spanner
QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis

Mais de Eiti Kimura (8)

PDF
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
PDF
[Redis conf18] The Versatility of Redis
PDF
[DEVFEST] Apache Spark Casos de Uso e Escalabilidade
PDF
[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho
PDF
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
PPTX
SP Big Data Meetup - Conhecendo Apache Cassandra @Movile
PDF
Cassandra Summit 2015 - A Change of Seasons
PDF
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto Desempenho
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
[Redis conf18] The Versatility of Redis
[DEVFEST] Apache Spark Casos de Uso e Escalabilidade
[DataFest-2017] Apache Cassandra Para Sistemas de Alto Desempenho
[TDC2016] Apache SparkMLlib: Machine Learning na Prática
SP Big Data Meetup - Conhecendo Apache Cassandra @Movile
Cassandra Summit 2015 - A Change of Seasons
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto Desempenho

Último (11)

PDF
Manejo integrado de pragas na cultura do algodão
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Utilizando code blockes por andre backes
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPT
Conceitos básicos de Redes Neurais Artificiais
PPTX
Eng. Software - pontos essenciais para o início
PPTX
Tipos de servidor em redes de computador.pptx
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Jira Software projetos completos com scrum
Manejo integrado de pragas na cultura do algodão
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Utilizando code blockes por andre backes
Viasol Energia Solar -Soluções para geração e economia de energia
Conceitos básicos de Redes Neurais Artificiais
Eng. Software - pontos essenciais para o início
Tipos de servidor em redes de computador.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Jira Software projetos completos com scrum

Conhecendo Apache Cassandra @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?