migração de um esquema relacional para o banco de dados cassandra

33
COMPUTAÇÃO COMPUTAÇÃO NA NUVEM NA NUVEM MIGRAÇÃO DE UM ESQUEMA MIGRAÇÃO DE UM ESQUEMA RELACIONAL PARA O BANCO DE RELACIONAL PARA O BANCO DE DADOS CASSANDRA DADOS CASSANDRA Especialização em Tecnologia da Informação com Ênfase em Desenvolvimento Web Jonatan Silva dos Santos MAR/2012

Upload: jonatanss

Post on 25-Apr-2015

2.126 views

Category:

Education


4 download

DESCRIPTION

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.

TRANSCRIPT

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

COMPUTAÇÃO COMPUTAÇÃO NA NUVEMNA NUVEM

MIGRAÇÃO DE UM ESQUEMA MIGRAÇÃO DE UM ESQUEMA RELACIONAL PARA O BANCO RELACIONAL PARA O BANCO

DE DADOS CASSANDRADE DADOS CASSANDRA

Especialização em Tecnologia da Informação com Ênfase em Desenvolvimento Web

Jonatan Silva dos Santos

MAR/2012

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

CONTEÚDOCONTEÚ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

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

MOTIVAÇÃOMOTIVAÇÃ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

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

OBJETIVOSOBJETIVOS• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• Características:– Elasticidade e escalabilidade– Confiabilidade– Durabilidade– Desempenho

• Modelo de dados:– Orientado a colunas

Migração de um Esquema Relacional para o Cassandra

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• Família de colunas dinâmicas:

Migração de um Esquema Relacional para o Cassandra

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• Família de colunas estáticas:

Migração de um Esquema Relacional para o Cassandra

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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 = 'NetworkTopologyStrategy'AND strategy_options:replication_factor=3;

Migração de um Esquema Relacional para o Cassandra

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

BANCO DE DADOS BANCO DE DADOS CASSANDRACASSANDRA

• 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

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

MIGRAÇÃO DE ESQUEMA MIGRAÇÃO DE ESQUEMA RELACIONAL PARA CASSANDRARELACIONAL 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

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

MIGRAÇÃO DE ESQUEMA MIGRAÇÃO DE ESQUEMA RELACIONAL PARA CASSANDRARELACIONAL 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

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

Migração de um Esquema Relacional para o Cassandra

• 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.

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

Migração de um Esquema Relacional para o Cassandra

• Modelo em Coluna

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

Migração de um Esquema Relacional para o Cassandra

• Modelo em Coluna

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

Migração de um Esquema Relacional para o Cassandra

• Modelo em Coluna

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

CONCLUSÃOCONCLUSÃ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

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

TRABALHOS FUTUROSTRABALHOS 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

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

Obrigado!Jonatan Silva