Compreendendo o Modelo de dados       Apache Cassandra
Sistemas DistribuídosAlunos:     ARCANJO GABRIEL          096096     PEDRO BRAGANICK          096123     RICHIELY BATISTA ...
Roteiro:  - O modelo de dados  - Keyspaces  - Column families  - Indexes  - Técnicas conceituais  - Alguns comandos CQL  -...
O modelo de dadosNoSQL - Not only SQL  CQL - Cassandra Query Language - Usado  para distribuir dados em larga escala.     ...
Devemos exaltar o NoSQL e minimizar o Modelo de dados Relacional?R.: De forma alguma !"Cassandra thinks about data the way...
Modelo Relacional vs NoSQL-Escalonamento-Consistência-Disponibilidade• Acesso rápido a dados (desde que você possa manter ...
Esquema de RDBM x Keyspace      Repositório dos dados
Column FamilyEm JavaScript Object Notacion (JSON):Musican:                     ColumnFamily 1   carlos:                   ...
Column FamilyAnálogo as tabelas no modelo relacional?
Super Column (1.2 não suporta - usacomposite column)Quando uma linha de uma família de colunas contém umacoleção de pares ...
Row  Podem possuir diferentes colunas;  Não precisam ser congruentes: podempossuir quantidades diferentes de instâncias.
Indexação   Um índice é uma estrutura de dados que permite aconsulta rápida e eficiente de dados correspondentes auma dete...
Índice PrimárioEm Cassandra, o índice primário, para uma família decoluna, é o índice de suas chaves de linhas. (Row Key)U...
Índice SecundárioÍndices secundários em Cassandra referem-se a índicesem valores de coluna (para distingui-los a partir do...
Você realmente precisa do SQL?
•   Select       Suponha que exista Column Family departamentose funcionários com relações um-para-muitos,respectivamente....
•   Select      Solução:       Adicionar uma Column Family DataNasc_emps emque a chave é uma data e o nome das colunas são...
•   JoinComo fazer a consulta:select * from Emps e, d Deps onde e.dep_id = d.dep_id   ???
•   Join       Solução:      Basta criarmos uma Column Family Dept_empsonde as chaves serão os IDs de departamento e ascol...
•   Group by    select count(*) from Emps group by cidade   ????
•   Group by      Solução:    Basicamente será feito a mesma coisa do Select,criando uma nova Column Family Cidade_emps te...
•   Order by      Os registros podem ser ordenados pela chaveusando oOrderPreservingPartitioner. Para manter os dadosorden...
Mais sobre o que há de novo no Cassandra-                   1.2?               *Collections*
Colletions - SetUm Set armazena um grupo de elementos que sãoretornados na ordem de classificação, quando consultada.A col...
Colletions - SetInsertionINSERT INTO users (user_id, first_name, last_name,emails) VALUES(user, User, User, {u@user.com,us...
Colletions - SetRemoveUPDATE users  SET emails = emails - {uu1@uu1.org} WHERE user_id =user;RetrievalSELECT user_id, email...
Colletions - ListQuando a ordem dos elementos é considerada, o quepode não ser a ordem natural ditada pelo tipo deelemento...
Colletions - ListAdditionUPDATE users SET top_cidades = [ sao paulo ] + top_cidades WHEREuser_id = user;DeleteUPDATE users...
Colletions - MapComo o seu nome indica, um mapa mapeia uma coisa aoutra. Um mapa é um par de chaves únicas chave evalores....
Colletions - MapModification and replacementUPDATE users SET todo = { 2012-9-24 : entrou em goiania, 2012-10-2 12:00 : sai...
Colletions - MapUsando TTLUPDATE users USING TTL <computed_ttl> SET todo[2012-10-1] = precisa sair WHERE user_id =user;Del...
Comandos CQL - Cassandra
Técnicas conceituaisDenormalizaçãoAgregaçãoAgregação atômicaChaves enumeráveis
Denormalização   Cópia do mesmo dado em múltiplas tabelas.   Otimizar/simplificar as consultas.      Conseguir os resultad...
Agragação-Composição   Representação do tipo todo-parte.   Se usado junto com a denormalização podeter um grande impacto e...
Agragação Atômica  Permite armazenar uma entidade inteira emum documento, e atualizar de forma atômica.  Minimizar o compo...
Agregação Atômica
Chaves enumeráveis  Apesar de ser dispendiosa uma ordenação,seu uso é de grande benefício.Ex.: E-mail •Ordem das mensagens...
Uma modelagem, itte                      r (Twissandra)!             https://github.com/twissandra/twissandraUsuáriosTweet...
Pesquisando Dados no Twissandra:      Quem esta seguindo um usuário? ›     A quem segue um usuário? ›     Mostrar os meus ...
Quem segue alice?
Quem é seguido por alice?
UserLine
TimeLine
Um novo tweet de bob        Atualização nas     CFs de User/TimeLine.Você como desenvolvedor tem que           fazer isso.
Disposição e Consulta de tweets
ConclusãoModelar bem o esquema para se obterconsultas otimizadas;Não se perder durante o projeto;Atender as necessidades: ...
Apresentação cassandra
Apresentação cassandra
Apresentação cassandra
Apresentação cassandra
Apresentação cassandra
Apresentação cassandra
Apresentação cassandra
Upcoming SlideShare
Loading in...5
×

Apresentação cassandra

2,140

Published on

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

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

No notes for slide

Apresentação cassandra

  1. 1. Compreendendo o Modelo de dados Apache Cassandra
  2. 2. Sistemas DistribuídosAlunos: ARCANJO GABRIEL 096096 PEDRO BRAGANICK 096123 RICHIELY BATISTA 100930
  3. 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. 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. 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. 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. 7. Esquema de RDBM x Keyspace Repositório dos dados
  8. 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. 9. Column FamilyAnálogo as tabelas no modelo relacional?
  10. 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. 11. Row Podem possuir diferentes colunas; Não precisam ser congruentes: podempossuir quantidades diferentes de instâncias.
  12. 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. 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. 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. 15. Você realmente precisa do SQL?
  16. 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. 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. 18. • JoinComo fazer a consulta:select * from Emps e, d Deps onde e.dep_id = d.dep_id ???
  19. 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. 20. • Group by select count(*) from Emps group by cidade ????
  21. 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. 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. 23. Mais sobre o que há de novo no Cassandra- 1.2? *Collections*
  24. 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. 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. 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. 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. 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. 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. 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. 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. 32. Comandos CQL - Cassandra
  33. 33. Técnicas conceituaisDenormalizaçãoAgregaçãoAgregação atômicaChaves enumeráveis
  34. 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. 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. 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. 37. Agregação Atômica
  38. 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. 39. Uma modelagem, itte r (Twissandra)! https://github.com/twissandra/twissandraUsuáriosTweetsFollowingsFollowersUserLineTimeLine
  40. 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. 41. Quem segue alice?
  42. 42. Quem é seguido por alice?
  43. 43. UserLine
  44. 44. TimeLine
  45. 45. Um novo tweet de bob Atualização nas CFs de User/TimeLine.Você como desenvolvedor tem que fazer isso.
  46. 46. Disposição e Consulta de tweets
  47. 47. ConclusãoModelar bem o esquema para se obterconsultas otimizadas;Não se perder durante o projeto;Atender as necessidades: Escalabilidade Disponibilidade Alto desempenho
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×