Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Migração de um Esquema Relacional para o banco de dados Cassandra

4,260 views

Published on

A computação em nuvem tem tornado-se uma das tendências dos próximos anos, pois existem várias vantagens na sua adoção. A partir da computação em nuvem, passou a ser possível gerenciar os dados de forma distribuída. Esta técnica requer vários pontos de atenção. Nesse contexto, surge um tipo de serviço importante que é o banco de dados como serviço (DBaaS). O banco de dados Cassandra será estudado no que diz respeito aos bancos de dados considerados NoSQL (Not Only SQL). Os bancos de dados NoSQL são uma nova proposta de tecnologia para suportar grande quantidade de dados e uma grande quantidade de usuários. Cassandra foi desenvolvido pelo Facebook e utiliza um modelo baseado em colunas, o que proporciona alto desempenho e alta disponibilidade. O modelo de dados e sua arquitetura são apresentados, sendo explicitadas as principais diferenças com relação ao modelo relacional. Através de um estudo de caso será possível analisar as implicações da migração de um modelo relacional para um novo paradigma, que é a modelagem em colunas, bem como ressaltar as vantagens e desvantagens da utilização de banco de dados nas nuvens.

Palavras-chave: Computação na nuvem, Gerenciamento de dados distribuídos, banco de dados Cassandra, migração de modelo, NoSQL.

Published in: Education
  • Be the first to comment

Migração de um Esquema Relacional para o banco de dados Cassandra

  1. 1. COMPUTAÇÃO NA NUVEM MIGRAÇÃO DE UM ESQUEMA RELACIONAL PARA O BANCO DE DADOS CASSANDRAEspecialização em Tecnologia da Informação com Ênfase em Desenvolvimento Web Jonatan Silva dos Santos MAR/2012
  2. 2. CONTEÚDO• Motivação• Objetivos• Banco de Dados Cassandra• Migração de um esquema relacional para o Cassandra• Conclusão Migração de um Esquema Relacional para o Cassandra
  3. 3. MOTIVAÇÃO• Área de estudo recente• Novas tecnologias• Tendência dos próximos anos• Possibilidade de processamento de grande quantidade de dados• Soluções mais robustas para a resolução de problemas Migração de um Esquema Relacional para o Cassandra
  4. 4. OBJETIVOS• Entender o funcionamento do banco de dados Cassandra• Analisar questões relacionadas à migração de um modelo relacional para o modelo em colunas do Cassandra• Avaliar vantagens e desvantagens Migração de um Esquema Relacional para o Cassandra
  5. 5. BANCO DE DADOS CASSANDRA• Projeto Apache Foundation• SGBD livre, open-source• Escrito em JAVA• Armazenamento distribuído de dados• Desenvolvido pelo Facebook em 2007.• Empresas que utilizam: Facebook, Twitter, Cisco, etc. Migração de um Esquema Relacional para o Cassandra
  6. 6. BANCO DE DADOS CASSANDRA• Características: – Elasticidade e escalabilidade – Confiabilidade – Durabilidade – Desempenho• Modelo de dados: – Orientado a colunas Migração de um Esquema Relacional para o Cassandra
  7. 7. BANCO DE DADOS CASSANDRA• Conceitos: – Keyspace (similar ao database do modelo relacional) – Família de colunas (similar a uma tabela do modelo relacional) – Super família de colunas – Chave de linha (chave primária)• Limitações – Não há chave estrangeira – Impossível realizar junções Migração de um Esquema Relacional para o Cassandra
  8. 8. BANCO DE DADOS CASSANDRA• Família de colunas dinâmicas: Migração de um Esquema Relacional para o Cassandra
  9. 9. BANCO DE DADOS CASSANDRA• Família de colunas estáticas: Migração de um Esquema Relacional para o Cassandra
  10. 10. BANCO DE DADOS CASSANDRA• Coluna: – Nome – Valor (opcional) – Timestamp• Super Coluna – Forma de agrupamento de dados com base em um valor de pesquisa comum Migração de um Esquema Relacional para o Cassandra
  11. 11. BANCO DE DADOS CASSANDRA• Tipos de dados: – Validadores (valor de chave de linha e valor de coluna) – Comparadores (nome de coluna)• Blob, Ascii, Text, Varchar, int, bigint, timestamp, boolean, float, double, decimal, counter Migração de um Esquema Relacional para o Cassandra
  12. 12. BANCO DE DADOS CASSANDRA• Arquitetura: – Nós independentes participantes de um cluster – Não há gestão centralizada – Nós semeadores: contém informações do cluster para associação de novos nós – Protocolo Gossip: descobrir localização e estado dos outros nós Migração de um Esquema Relacional para o Cassandra
  13. 13. BANCO DE DADOS CASSANDRA• Particionamento dos dados: – Métodos de particionamento – Representação lógica em forma de anel – Divisão do anel em intervalos de dados iguais ao número de nós – Token determina posição do nó no anel – Famílias de colunas particionadas no cluster pelo valor da chave de linha Migração de um Esquema Relacional para o Cassandra
  14. 14. BANCO DE DADOS CASSANDRA• Replicação de dados: – Métodos de replicação – Cópia dos dados pelos nós do cluster – Na criação do Keyspace, definir quantidade de cópias de cada registro (fator de replicação) – Requisição de leitura ou escrita é enviada a qualquer nó – Registro mais atual com base no timestamp Migração de um Esquema Relacional para o Cassandra
  15. 15. BANCO DE DADOS CASSANDRA• Transações e controle de concorrência: – Não oferece completamente ACID (atomicidade, consistência, isolamento e durabilidade) – Não há bloqueio – Não há dependências transacionais – Preza pela alta disponibilidade e alto desempenho na escrita em detrimento de isolamento e atomicidade Migração de um Esquema Relacional para o Cassandra
  16. 16. BANCO DE DADOS CASSANDRA• Consistência dos dados: – Consistência eventual – Vários níveis de consistência para leitura (any, one, quorum, local_quorum, each_quorum, all) – Vários níveis de consistência para escrita (one, quorum, local_quorum, each_quorum, all)• Mecanismos de verificação: – Read repair – Anti-entropy – Hinted handoff Migração de um Esquema Relacional para o Cassandra
  17. 17. BANCO DE DADOS CASSANDRA• APIs: – Thrift (API RPC) – CLI (interface de linha de comando) – CQL (Cassandra Query Language) • Semelhante ao SQL Migração de um Esquema Relacional para o Cassandra
  18. 18. BANCO DE DADOS CASSANDRA• CQL (Cassandra Query Language)CREATE KEYSPACE• Objetivo: criar um keyspace e realizar a configuração do mesmo.• Sintaxe: CREATE KEYSPACE <NOME> WITH strategy_class = <ESTRATÉGIA>AND strategy_options.<OPÇÃO> = <VALOR> [AND strategy_options.<OPÇÃO> = <VALOR>];• Exemplo: CREATE KEYSPACE twissandra WITHstrategy_class = NetworkTopologyStrategyAND strategy_options:replication_factor=3; Migração de um Esquema Relacional para o Cassandra
  19. 19. BANCO DE DADOS CASSANDRA• CQL (Cassandra Query Language)CREATE COLUMNFAMILY• Objetivo: Utilizado para criar uma família de colunas.• Sintaxe: CREATE COLUMNFAMILY <FAMÍLIA DE COLUNAS> (<KEY> <tipo> PRIMARY KEY [, name1 tipo, name2 tipo, ...]);CREATE COLUMNFAMILY <FAMÍLIA DE COLUNAS> (<KEY> <tipo> PRIMARY KEY [, name1 tipo, name2 tipo, ...])[WITH <PARÂMETRO1> = <VALOR1> [AND <PARÂMETRO2> = <VALOR2> [AND ...]]];• Exemplo: CREATE COLUMNFAMILY usuario ( nome_usuario varchar PRIMARY KEY, senha varchar, sexo varchar, estado_civil varchar, ano_nascimento int)WITH comment=’família de colunas de usuário’ AND comparator=UTF8Type; Migração de um Esquema Relacional para o Cassandra
  20. 20. BANCO DE DADOS CASSANDRA• CQL (Cassandra Query Language)SELECT• Objetivo: Utilizado para consulta de um ou mais registros.• Sintaxe: SELECT [FIRST N] [REVERSED] <SELECT EXPR> FROM <FAMÍLIA DE COLUNAS> [USING <CONSISTÊNCIA>] [WHERE <Claúsula>] [LIMIT N];• Exemplo: SELECT * FROM usuario WHERE nome_usuario=joao; Migração de um Esquema Relacional para o Cassandra
  21. 21. BANCO DE DADOS CASSANDRA• CQL (Cassandra Query Language)ALTER TABLE• Objetivo: Comando utilizado para manipular colunas. Permite adicionar novas colunas, alterar colunas e apagar colunas.• Sintaxe: ALTER TABLE <FAMÍLIA DE COLUNAS> ADD <COLUNA> <VALIDADOR>; ALTER TABLE <FAMÍLIA DE COLUNAS> ALTER <COLUNA> TYPE <VALIDADOR>; ALTER TABLE <FAMÍLIA DE COLUNAS> DROP <COLUNA>;• Exemplo: ALTER TABLE usuario ADD cep varchar; ALTER TABLE usuario ALTER cep TYPE int; ALTER TABLE usuario DROP cep; Migração de um Esquema Relacional para o Cassandra
  22. 22. BANCO DE DADOS CASSANDRA• CQL (Cassandra Query Language)INSERT• Objetivo: Comando utilizado para inserir um registro ou alterar colunas. Se o registro não existir, é criado. Se já existir, as colunas são atualizadas.• Sintaxe: INSERT INTO <FAMÍLIA DE COLUNAS> (<KEY>, <col>, <col>, ...) VALUES (<key>, <val>, <val>, ...) [USING CONSISTENCY <NÍVEL> [AND TIMESTAMP <timestamp>] [AND TTL <timeToLive>]];• Exemplo: INSERT INTO usuario (nome_usuario, senha) VALUES (joao, i120939); Migração de um Esquema Relacional para o Cassandra
  23. 23. BANCO DE DADOS CASSANDRA• CQL (Cassandra Query Language)UPDATE• Objetivo: Utilizado para atualizar uma ou mais colunas de uma família de colunas.• Sintaxe: UPDATE <FAMÍLIA DE COLUNAS> [USING <CONSISTÊNCIA> [AND TIMESTAMP <timestamp>] [AND TTL <timeToLive>]]SET nome1 = valor1, nome2 = valor2 WHERE <KEY> = <VALOR>;• Exemplo: UPDATE usuario USING TTL 432000 SET senha = ch@ngem3a WHERE nome_usuario = joao; Migração de um Esquema Relacional para o Cassandra
  24. 24. BANCO DE DADOS CASSANDRA• CQL (Cassandra Query Language)DELETE• Objetivo: Comando utilizado para apagar uma ou mais colunas de uma ou mais linhas ou mesmo para apagar todas as colunas de acordo com a cláusula WHERE.• Sintaxe: DELETE [COLUNAS] FROM <FAMÍLIA DE COLUNAS> [USING <CONSISTÊNCIA>] WHERE KEY = <VALOR>DELETE [COLUNAS] FROM <FAMÍLIA DE COLUNAS> [USING <CONSISTÊNCIA>] WHERE KEY IN (<VALOR1, VALOR2);• Exemplo: DELETE ano_nascimento FROM usuario where nome_usuario = joao;DELETE FROM usuario where nome_usuario = joao; Migração de um Esquema Relacional para o Cassandra
  25. 25. MIGRAÇÃO DE ESQUEMARELACIONAL PARA CASSANDRA• Planejamento – Diferente da modelagem relacional – Depende de quais funcionalidades a aplicação cliente necessita – Identificar as consultas que serão realizadas (famílias de colunas) – Otimização: desnormalização dos dados – Não há violação de integridade (UPSERT) Migração de um Esquema Relacional para o Cassandra
  26. 26. MIGRAÇÃO DE ESQUEMARELACIONAL PARA CASSANDRA• Estudo de caso – Exemplo de uma site de venda de CDs – Apresentar o modelo relacional Migração de um Esquema Relacional para o Cassandra
  27. 27. • Modelo Relacional x Modelo em Coluna Consultas que serão realizadas: 1) Consultar dados de um CD; 2) Pesquisar CDs por título; 3) Pesquisar CDs por gênero musical; 4) Pesquisar músicas de um CD; 5) Pesquisar CDs por artista; 6) Pesquisar artistas de um CD; 7) Pesquisar fornecedores por cidade. Migração de um Esquema Relacional para o Cassandra
  28. 28. • Modelo em Coluna Migração de um Esquema Relacional para o Cassandra
  29. 29. • Modelo em Coluna Migração de um Esquema Relacional para o Cassandra
  30. 30. • Modelo em Coluna Migração de um Esquema Relacional para o Cassandra
  31. 31. CONCLUSÃO• Necessidade de evolução da linguagem CQL• Para cada nova funcionalidade, pode ser necessária uma família de coluna nova• Elasticidade dos recursos. Adição de novos nós• Alta escalabilidade• Utilização de Cassandra para dados não críticos (consistência eventual)• Utilização por grandes organizações (Twitter, Facebook, Digg)• Analisar possibilidade de os dados estarem parte em SGBD relacional e parte em outro SGBD como Cassandra Migração de um Esquema Relacional para o Cassandra
  32. 32. TRABALHOS FUTUROS• Criação de ferramenta CASE para modelagem de dados para Cassandra• Realização de benchmark para comparar SGBDs NoSql. Migração de um Esquema Relacional para o Cassandra
  33. 33. Obrigado!Jonatan Silva

×