Primeiros passos com o Cassandra

2.064 visualizações

Publicada em

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.


Assuntos abordados
- Conceito Data Science
- Conceito BigData
- NOSQL
- Histórico
- Tipos de Bancos
- Comparação com o Modelo relacional
- Cassandra
- Arquitetura Cassandra
- Configurações Básica do Cassandra
- Configuração de multi-nodes no Cassandra
- Conhecendo o DevOpsCenter
- Instalando os Agentes

Publicada em: Tecnologia
0 comentários
5 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.064
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
87
Comentários
0
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Primeiros passos com o Cassandra

  1. 1. Globalcode – Cassandra Primeiros passos com o Cassandra Otávio Santana @otaviojava
  2. 2. Globalcode – Cassandra Brasil Planeta Cassandra Cassandra Brasil Google Groups Cassandra Brasil Linkedin Cassandra Meetup
  3. 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. 4. Globalcode – Data Science ● Terra ● Ouro ● Petróleo ● Informação ● Big Data ● Empirical ● Theoretical ● Computational ● eScience
  5. 5. Globalcode – Data Science
  6. 6. Globalcode – Data Science Preparing to run a model Running the model Communicating the results
  7. 7. Globalcode –
  8. 8. Globalcode – Flu trends Redes Sociais
  9. 9. Globalcode – Eleições
  10. 10. Globalcode – Negócios E-commerce Marketing Cerveja e Fraldas Tail Target
  11. 11. Globalcode – Big Data • 3 Vs (Velocidade, variedade e volume) • Sem definição
  12. 12. Globalcode – Big Data Cache Data Grid Algoritmo
  13. 13. Globalcode – Hadoop Hadoop Common Hadoop Distributed File System (HDFS™) Hadoop YARN Hadoop MapReduce Ambari™ Avro™ Cassandra™ Chukwa™ HBase™ Hive™ Mahout™ Pig™ ZooKeeper™
  14. 14. Globalcode – NOSQL Não apenas SQL Conhecer o melhor dos dois mundos Uso específico
  15. 15. Globalcode – A.C.I.D. vs B.A.S.E Atomicidade Consistência Isolamento Durabilidade Basicamente Avaliado Soft-state Eventualmente persistente
  16. 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. 17. Globalcode – Classificação Arquitetura Armazenamento Estrutura Dados Chave-Valor Documentos Grafo Família de Colunas
  18. 18. Globalcode – Arquitetura Distribuída Mestre Escravo P2P A B C mestre
  19. 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. 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. 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. 22. Globalcode – Estrutura de Dados Grafos Redes sociais (Dados conectados) Mecanimos de recomendação Transações complexas Não Grafos
  23. 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. 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. 25. Globalcode – Outras formas Sistema de Arquivos Banco XML Banco de Dados OO solução problema
  26. 26. Globalcode – Cassandra Distribuída Configurável Família de Colunas
  27. 27. Globalcode – Cassandra Gossip Nível de consistência Leitura e Escrita ANY ONE LOCAL_QUORUM EACH_QOURUM ALL Disponibilidade Consistência
  28. 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. 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. 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. 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. 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. 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. 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. 35. Globalcode – Escrita O primeiro nó funciona como coordenador Retorna sucesso quando o nível informado sucesso Cada Data center possui um coordenador
  36. 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. 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. 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. 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. 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. 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. 42. Globalcode – CQL Index CREATE INDEX userIndex ON NerdMovies (user); CREATE INDEX ON Mutants (abilityId); DROP INDEX userIndex;
  43. 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. 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. 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. 46. Globalcode – Variáveis ascii strings bigint integers blob blobs boolean booleans counter integers decimal integers, floats double integers float integers, floats
  47. 47. Globalcode – Variáveis inet strings int integers text strings timestamp integers, strings timeuuid uuids uuid uuids varchar strings varint integers
  48. 48. Globalcode – Variáveis Coleções map Dicionário de dados (chave valor) set Coleção de unico valor list coleção
  49. 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. 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. 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. 52. Globalcode – Modelagem TwittSandra Usuários Seguidores Seguidos User Line TimeLine Tweets
  53. 53. Globalcode – Cassandra DEMO
  54. 54. Globalcode – Obrigado Cassandra Otávio Santana http://www.slideshare.net/otagonsan/ @otaviojava

×