Your SlideShare is downloading. ×
Apresentação cassandra
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Apresentação cassandra

1,758
views

Published on


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,758
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
26
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Compreendendo o Modelo de dados Apache Cassandra
  • 2. Sistemas DistribuídosAlunos: ARCANJO GABRIEL 096096 PEDRO BRAGANICK 096123 RICHIELY BATISTA 100930
  • 3. Roteiro: - O modelo de dados - Keyspaces - Column families - Indexes - Técnicas conceituais - Alguns comandos CQL - Collections – set list map - Estudo de caso - Twissandra
  • 4. O modelo de dadosNoSQL - Not only SQL CQL - Cassandra Query Language - Usado para distribuir dados em larga escala. Escalabilidade; Performance; Consistência.A definição do modelo visa as consultas que sequer otimizar.
  • 5. Devemos exaltar o NoSQL e minimizar o Modelo de dados Relacional?R.: De forma alguma !"Cassandra thinks about data the way we think about data. Most of usthink about data in rows and columns. So does Cassandra."Quais respostas vou obter? - SQLQuais perguntas poderei fazer? - NoSQLConsultas de forma sequencial no tempo em determinados intervalos. "Quantas pessoas estrangeiras passaram pelos aeroportosbrasileiros no período da Copa do Mundo?"
  • 6. Modelo Relacional vs NoSQL-Escalonamento-Consistência-Disponibilidade• Acesso rápido a dados (desde que você possa manter tudo na memória);• Rápida replicação de dados / distribuídos por vários nós;• Esquema flexível (você pode adicionar novas colunas instantaneamente);
  • 7. Esquema de RDBM x Keyspace Repositório dos dados
  • 8. Column FamilyEm JavaScript Object Notacion (JSON):Musican: ColumnFamily 1 carlos: Rowkey email: carlos@inf.com, ColumnName:Value instrument: bass ColumnName:Value george: Rowkey email: george@inf.com ColumnName:ValueBand: ColumnFamily 2 george: Rowkey fone: 1234 - 4567 ColumnName:Value
  • 9. Column FamilyAnálogo as tabelas no modelo relacional?
  • 10. Super Column (1.2 não suporta - usacomposite column)Quando uma linha de uma família de colunas contém umacoleção de pares nome/valor, a família de super colunadetém subcolunas, onde subcolunas são denominadosgrupos de colunas. "Um mapa cujas chaves são os nomes das colunas e os valores são as colunas."
  • 11. Row Podem possuir diferentes colunas; Não precisam ser congruentes: podempossuir quantidades diferentes de instâncias.
  • 12. Indexação Um índice é uma estrutura de dados que permite aconsulta rápida e eficiente de dados correspondentes auma determinada condição. -Índices Primários -Índices Alternativos
  • 13. Índice PrimárioEm Cassandra, o índice primário, para uma família decoluna, é o índice de suas chaves de linhas. (Row Key)Users = { "edanuff" : { Rowkey email: "ed@anuff.com" }}
  • 14. Índice SecundárioÍndices secundários em Cassandra referem-se a índicesem valores de coluna (para distingui-los a partir do índiceprincipal linha de chave para uma família de coluna).Índice Secundário é um índice alternativo pois não utilizade chave de linha (Rowkey).Não é recomendado para valores de alta cardinalidade (ou seja, timestamps,datas de nascimento, keyworlds, etc)Requer pelo menos uma comparação de igualdade em uma consulta - nãoeficiente para: menor que / maior que / intervalo de consultas
  • 15. Você realmente precisa do SQL?
  • 16. • Select Suponha que exista Column Family departamentose funcionários com relações um-para-muitos,respectivamente. São elas Emps e Deps . Em Emps há IDdos empregados utilizados como chaves e há Nome, Datade nascimento e cidade. Em deps chaves são ID dodepartamento e única coluna é Nome.select * from EMPS onde Data de nascimento = 12/10/1990 ???
  • 17. • Select Solução: Adicionar uma Column Family DataNasc_emps emque a chave é uma data e o nome das colunas são IDsdos empregados que nasceram na data, essas colunasnão precisam ser preenchidas podendo ser vaziasrepresentadas por um -. Para responder a consultaprecisamos apenas recuperar todas as colunas para achave 12/10/1990, lembrando que sempre que umempregado for acrescentado ou excluídoDataNasc_emps precisa ser atualizada.
  • 18. • JoinComo fazer a consulta:select * from Emps e, d Deps onde e.dep_id = d.dep_id ???
  • 19. • Join Solução: Basta criarmos uma Column Family Dept_empsonde as chaves serão os IDs de departamento e ascolunas serão os IDs dos empregados. Assim a consultapoderia ser facilmente realizada retornando as colunas decada chave.
  • 20. • Group by select count(*) from Emps group by cidade ????
  • 21. • Group by Solução: Basicamente será feito a mesma coisa do Select,criando uma nova Column Family Cidade_emps tendocomo chave uma cidade e IDs dos empregados comocolunas. Neste caso você vai contar o número deempregados recuperados. Ou pode ter uma coluna countcom o número de empregados pré-calculados.
  • 22. • Order by Os registros podem ser ordenados pela chaveusando oOrderPreservingPartitioner. Para manter os dadosordenados você pode usar o automaticamente ordenaçãopor nomes de coluna.
  • 23. Mais sobre o que há de novo no Cassandra- 1.2? *Collections*
  • 24. Colletions - SetUm Set armazena um grupo de elementos que sãoretornados na ordem de classificação, quando consultada.A coluna de tipo consiste conjunto de desordenado devalores únicos.CREATE TABLE users ( user_id text PRIMARY KEY, first_name text, last_name text, emails set<text>);
  • 25. Colletions - SetInsertionINSERT INTO users (user_id, first_name, last_name,emails) VALUES(user, User, User, {u@user.com,user@gmail.com});UpdateUPDATE users SET emails = emails + {uu1@uu1.org} WHERE user_id= user;
  • 26. Colletions - SetRemoveUPDATE users SET emails = emails - {uu1@uu1.org} WHERE user_id =user;RetrievalSELECT user_id, emails FROM users WHERE user_id =user;
  • 27. Colletions - ListQuando a ordem dos elementos é considerada, o quepode não ser a ordem natural ditada pelo tipo deelementos, usar uma lista. Além disso, use uma listaquando você precisa armazenar mesmo valor váriasvezes. Os valores da lista são retornados de acordo com oíndice, já no Set é retornado em ordem alfabética.InsertionALTER TABLE users ADD top_cidades list<text>;UPDATE users SET top_cidades = [ goiania, recife ]WHERE user_id = user;
  • 28. Colletions - ListAdditionUPDATE users SET top_cidades = [ sao paulo ] + top_cidades WHEREuser_id = user;DeleteUPDATE users SET top_cidades = top_cidades - [recife] WHEREuser_id = user;
  • 29. Colletions - MapComo o seu nome indica, um mapa mapeia uma coisa aoutra. Um mapa é um par de chaves únicas chave evalores. Um caso de uso para o tipo mapa é armazenarinformações timestamp relacionado em perfis de usuários.InsertionALTER TABLE users ADD todo map<timestamp,reminder_text>;
  • 30. Colletions - MapModification and replacementUPDATE users SET todo = { 2012-9-24 : entrou em goiania, 2012-10-2 12:00 : saiu de goiania } WHERE user_id = user;UPDATE users SET todo[2012-10-2 12:00] = ficou emgoiania WHERE user_id = user;
  • 31. Colletions - MapUsando TTLUPDATE users USING TTL <computed_ttl> SET todo[2012-10-1] = precisa sair WHERE user_id =user;DeleteDELETE todo[2012-9-24] FROM users WHERE user_id =user;
  • 32. Comandos CQL - Cassandra
  • 33. Técnicas conceituaisDenormalizaçãoAgregaçãoAgregação atômicaChaves enumeráveis
  • 34. Denormalização Cópia do mesmo dado em múltiplas tabelas. Otimizar/simplificar as consultas. Conseguir os resultados em um só lugar. Dados estão altamente sendo modificados,logo caso você queria fazer uma retenção nosdados que são modificáveis pode perder aintegridade do banco.
  • 35. Agragação-Composição Representação do tipo todo-parte. Se usado junto com a denormalização podeter um grande impacto em performance econsistência.
  • 36. Agragação Atômica Permite armazenar uma entidade inteira emum documento, e atualizar de forma atômica. Minimizar o comportamento transacional: *Grande processamento de dados a todomomento (insert, update, delete).
  • 37. Agregação Atômica
  • 38. Chaves enumeráveis Apesar de ser dispendiosa uma ordenação,seu uso é de grande benefício.Ex.: E-mail •Ordem das mensagens, através de qualquer ID conhecido. Varredura de e-mails - backward ou forward.
  • 39. Uma modelagem, itte r (Twissandra)! https://github.com/twissandra/twissandraUsuáriosTweetsFollowingsFollowersUserLineTimeLine
  • 40. Pesquisando Dados no Twissandra: Quem esta seguindo um usuário? › A quem segue um usuário? › Mostrar os meus tweets. › UserLine. Mostrar os tweets de todos que eu estou seguindo. › TimeLine.
  • 41. Quem segue alice?
  • 42. Quem é seguido por alice?
  • 43. UserLine
  • 44. TimeLine
  • 45. Um novo tweet de bob Atualização nas CFs de User/TimeLine.Você como desenvolvedor tem que fazer isso.
  • 46. Disposição e Consulta de tweets
  • 47. ConclusãoModelar bem o esquema para se obterconsultas otimizadas;Não se perder durante o projeto;Atender as necessidades: Escalabilidade Disponibilidade Alto desempenho