tcc_cassandra.docx

Embed Size (px)

Citation preview

102S. Sandri, J. Stolfi, L.Velho

1. Introduo

Grandes corporaes como Google e Amazon, foram as primeiras a descobrir a no adequao dos bancos de dados relacionais s necessidades de armazenamento de dados em larga escala levando-os ao enfrentamento destes novos desafios, com solues alternativas como: Big-Table e Dynamo, nos quais foram diminudas as garantias de maior consistncia dos dados, por exemplo, oferecidas pelo modelo relacional.

Baseado nos modelos Big-Table desenvolvido pela Google e Dynamo da Amazon, a empresa Facebook desenvolveu a sua prpria soluo, e mais tarde abriu o seu cdigo-fonte para comunidade, e atualmente o Cassandra mantido pela Apache Foundation.

O Apache Cassandra um das primeiras solues dos sistemas NoSQL, e oferece escalabilidade e alta disponibilidade, sem ponto nico de falha. Alm de seu rendimento de gravao considerado muito alto e bom rendimento de leitura, o modelo de dados do Cassandra tambm oferece consistncia ajustvel e suporte de replicao.

2. Anlise

Cassandra um sistema de banco de dados distribudo para gerenciamento e armazenamento de grandes quantidades de dados estruturados espalhados em servidores de rplicas, enquanto a oferece alta disponibilidade e escalabilidade sem ponto nico de falha. Em uma implementao de famlias de colunas NoSQL que suporta o modelo de dados Big-Table, e usa aspectos da arquitetura do Amazon Dynamo, esta soluo atende positivamente a quesitos muito importantes como: alta escalabilidade e disponibilidade sem ponto nico de falha, implementaes da famlia de colunas NoSQL, rendimento de gravao muito alto e bom rendimento de leitura, linguagem de consulta semelhante a SQL (desde 0.8), suporte para procura por ndices secundrios e consistncia ajustvel e suporte para replicao.

2.1. O modelo de dados do Cassandra

Uma tabela do Cassandra um mapa multidimensional distribudo e indexado por uma chave. O valor um objeto altamente estruturado. A linha de uma tabela uma string sem restries de tamanho, apesar de tipicamente ter de 16 a 36 bytes. Cada operao em uma nica chave de linha atmica por rplica, no importando quantas colunas esto sendo lidos ou escritos. O modelo de dados consiste em colunas, linhas, famlias de colunas e keyspaces, onde:Coluna a unidade mais bsica do modelo de dados do Cassandra, contendo um nome, um valor e um registro de data e hora.Linhas uma coleo de colunas rotuladas com um nome.O Cassandra consiste em muitos ns de armazenamento e armazena cada linha em um nico n. Em cada linha, Cassandra sempre armazena as colunas classificadas por seus nomes. Usando esta ordem de classificao, o Cassandra permite consultas por fatia, nas quais, dada uma linha, os usurios podem recuperar um subconjunto de suas colunas que estejam em um dado intervalo de nomes de coluna. As colunas so agrupadas em conjuntos, chamados de famlias de colunas muito semelhante ao que acontece no Big-Table.Famlias de Colunas uma coleo de linhas rotuladas com um nome.Keyspace um grupo de vrias famlias de colunas juntas. um agrupamento lgico de famlias de colunas e fornece um escopo isolado para nomes.Um exemplo de coluna. Conforme a figura:

Figura 1. Estrutura de uma coluna. Fonte: Cassandra: The Definitive Guide

2.2. ArquiteturaO Cassandra um sistema distribudo. Ele consiste em vrios ns e distribui os dados entre eles, ou divide-os em shards, na terminologia de bancos de dados. O Cassandra usa um algoritmo de hash para calcular o hash das chaves de cada item de dados armazenados nele, como por exemplo, nome da coluna, ID da linha. O intervalo de hash, ou todos os valores de hash possveis (tambm chamados de keyspace), dividido entre os ns no cluster do Cassandra. Em seguida o Cassandra designa cada item de dados ao n, e esse n responsvel por armazenar e gerenciar o item de dados.

3. Poltica de Segurana

Os administradores podem criar usurios que podem ser autenticados aos clusters de banco de dados Cassandra usando o comando CREATE USER. Internamente, Cassandra gerencia contas de usurios e acesso ao cluster de banco de dados usando senhas. As contas de usurio podem ser gerenciadas usando o Cassandra Query Language (CQL). Da mesma forma os administradores de banco de dados podem gerenciar as permisses dos usurios ao acesso de objetos, este gerenciamento feito por um paradigma familiar GRANT/REVOKE.

3.1. Encriptao SSL

3.1.1. Criptografia Cliente Para N

A Criptografia Cliente-para- n protege os dados em vo de mquinas do cliente para um cluster de banco de dados usando SSL (Secure Sockets Layer). Ele estabelece um canal seguro entre o cliente e o n coordenador. Todos os ns devem ter todos os certificados SSL relevantes em todos os ns. Para ativar o SSL de cliente para n, ser necessrio definir a configurao de encritptao no client_encryption_optionsnocassandra.yaml.

3.1.2. Criptografia N Para N

Este de tipo de criptografia usa o padro TLS / SSL para autenticar e criptografar mensagens entre os ns em cluster do Cassandra, para proteo dos dados em trnsito entre os ns, e para evitar o acesso no autorizado ao controle de ns. A criptografia pode ser aplicada a todas as mensagens entre os ns, a apenas as mensagens que passam de um rack para outro, ou apenas as mensagens que passam de um datacenter para outro.

4. Tipo de Armazenamento

O Cassandra sempre armazena dados de forma que as colunas sejam classificadas de acordo com seus nomes. Isso facilita a procura de dados em uma coluna usando consultas de fatia, mas mais difcil procurar dados em uma linha, a menos que o usurio use um particionador que preserve a ordem. Ao contrrio da maioria dos sistemas, no Cassandra as operaes de escritas so mais rpidas do que as operaes de leitura, transferindo dados a cerca de 80-360 MB/s por n. Para isso, ele usa duas tcnicas. O Cassandra mantm a maior parte dos dados na memria do n responsvel. As atualizaes so feitas na memria e gravadas no armazenamento persistente (sistema de arquivos) de forma lenta. No entanto, para evitar a perda de dados, ele grava todas as transaes em um log de confirmao no disco. Ao contrrio da atualizao de itens de dados no disco, as gravaes em logs de confirmao envolvem apenas anexao e, portanto, evitam o atraso de rotao ao gravar no disco. A menos que a gravao tenha solicitado consistncia total, o Cassandra grava dados em ns suficientes sem resolver inconsistncias de dados, resolvendo-as apenas na primeira leitura. Esse processo chamado de reparo na leitura.

5. Poltica de Replicao

Cassandra usa a replicao para garantir alta disponibilidade e durabilidade. Cada item de dados replicado em Host N, onde N o fator de replicao configurado "por-instncia". Cada chave k, atribuda a um n coordenador. O coordenador responsvel pela replicao dos itens de dados que se enquadram dentro do seu alcance. Para armazenamento local cada chave dentro de seu alcance, o coordenador replica essas chaves em N-1 ns no anel. Cassandra fornece ao cliente diversas opes para a forma de como os dados precisam ser replicados, alm de fornecer vrias polticas de replicao como "Rack Unaware", "Rack Aware" (dentro de um datacenter) e "Datacenter Aware". As Rplicas so escolhidas com base na poltica de replicao escolhida pela aplicao. Se determinada aplicao opta pela poltica de replicao "Rack Unaware" como estratgia de replicao, em seguida as rplicas no-coordenadoras so escolhidas por seleo N-1 como sucessores do coordenador dentro do anel. Para estratgias como "Rack Aware" e "Datacenter Aware " o algoritmo mais envolvido ligeiramente. Sistema Cassandra elege um lder entre os seus ns utilizando um sistema chamado Zookeeper. Todos os ns ligados ao cluster contatam um lder, que informa aos outros ns em uma determinada faixa que eles so rplicas, e o lder faz um esforo centralizado para manter invariavelmente que nenhum outro n seja responsvel por uma faixa maior que N-1 no anel. O metadados sobre a faixa de um n responsvel por armazenar em cache local em cada n e de uma forma tolerante a falhas no interior do Zookeeper - desta forma um n que fica offline e volta a subir sabe o que aconteceu e pelo o que era responsvel. Cada n est ciente de todos os outros ns do sistema e, portanto, a gama de que so responsveis. Cassandra d garantias de durabilidade em a presena de falhas de ns e particionamento de rede e relaxamento dos requisitos de Quorum. Falhas em datacenters podem ocorrer devido falta de energia, falhas no sistema de refrigerao, falhas de rede, e desastres naturais. O Cassandra est configurado de tal forma que cada linha replicada em vrios centros de dados. Essencialmente, a lista de preferncia de uma chave construda de tal forma que os ns de armazenamento esto espalhados por mltiplos datacenters. Estes datacenters so conectados atravs links de rede de alta velocidade. Este esquema de replicao atravs de vrios datacenters permite lidar com datacenters completamente em falhas sem nenhuma paralizao total do sistema.

5.1 Nveis de Consistncia das Rplicas

O sistema de replicao proposto pelo gerenciador Cassandra inclui diversos nveis de consistncia, que variam de zero (conhecido como dedos cruzados, quando no h verificao de consistncia) a todos, controlando o valor de todas as rplicas para serem sempre consistentes.O nmero de rplicas padro do Cassandra trs, para permitir a identificao mnima de um valor inserido incorretamente (dois valores corretos e um incorreto), mas esse valor pode ser alterado facilmente nos arquivos de configurao. A estrutura que recebe os dados gravados o commit log, que o primeiro local por onde passam os dados e, posteriormente, os dados so encaminhados para uma estrutura de tabela em memria, denominada memory table. Para qualquer dada operao de escrita e de leitura, o cliente da aplicao decide quais dos nveis de consistncia listados a seguir a operao deve ter.ONE (1) - Na escrita garante que o dado foi escrito em um commit log e uma tabela de memria de ao menos uma rplica antes de responder ao cliente. Na leitura, o dado ser retornado a partir do primeiro n onde a chave buscada foi encontrada. Essa prtica pode resultar em dados antigos sendo retornados, porm, como cada leitura gera uma verificao de consistncia em background, consultas subsequentes retornaro o valor correto do dado;

QUORUM (Q) - Na escrita garante que o dado foi escrito em fator_replicao/2+1, que determinado pelo arredondamento para baixo do valor do fator de replicao escolhido dividido por dois e acrescido de uma unidade. Na leitura retorna o valor mais recente lido de fator replicao/2 + 1 rplicas. As rplicas restantes so sincronizadas em background;

ALL (N) - Garante que operaes de leitura e escrita envolvero todas as rplicas. Assim, qualquer n que no responda s consultas far as operaes falharem.

Vale ressaltar tambm outros dois nveis de consistncia que no foram mencionados previamente, os quais so:

Local Quorum e Each Quorum. Eles so nveis de consistncia nas operaes que so reservadas para data centers. No Local Quorum, a escrita deve ser efetivamente concluda no commitlog e na memory table no valor de quorum nos ns de replicao do mesmo data center do coordenador da operao, evitando o tempo de latncia da comunicao entre os diferentes data centers. J no nvel Each Quorum cada um dos data centers deve ter a quantidade mnima do quorum para que a operao seja concluda com sucesso, garantindo maior consistncia aos dados.

6. Poltica de Disponibilidade

Um controlador de tablet identifica a falha numa rplica quando esta noresponde a uma requisio Quando a falha identificada o sistema toma uma dasduas providencias [3, 5]:

1. Caso a rplica falha no seja uma rplica mestre, o sistema cria mais uma rplica no datacenter onde a falha ocorreu, os dados da nova replica so copiados de outro centro de dados. Enquanto o processo de copia executado, as requisies que seriam feitas rplica falha, so encaminhadas para uma sadia. Assim, no h prejuzo para o aspecto de disponibilidade.

2. Caso a rplica falha seja uma rplica mestre, as requisies de escrita so bloqueadas para aquele objeto (afetando a disponibilidade), o sistema elege uma nova rplica para ser a rplica mestre, o sistema requisita o YMB para aplicar as atualizaes necessrias na replica eleita. Ao finalizaras operaes de atualizao, o sistema desbloqueia as requisies de escrita.

7. Deteco de Falhas

Deteco de falhas um mecanismo pelo qual um n pode localmente determinar se qualquer outro n do sistema est para online ou offline. Na deteco de falhas do sistema Cassandra, tambm utilizada para evitar tentativas de comunicao com os ns inacessveis durante vrias operaes. Cassandra usa uma verso modificada do Accrual Failure Detector. A ideia de um acumulador de deteco falhas que o mdulo de deteco de falhas no emita um valor booleano indicando que um n est online ou offline. Ao invs vez disto, o mdulo de deteco de falhas emite um valor que representa um nvel de suspeita para cada um dos ns monitorados. Este valor definido como (phi). A idia bsica a de expressar o valor de em uma escala dinamicamente ajustada para retratar a rede e carregar as condies nos ns monitorados. O nmero tem o seguinte significado: Dado algum limite , e assumindo que decidimos suspeitar de um n A, quando = 1, ento a probabilidade de que vamos cometer um erro (ou seja, a deciso ser contrria no futuro pela recepo de um heartbeat mais tarde) cerca de 10 %.

A probabilidade de cerca de 1 % com = 2, 0,1 % de = 3, e assim por diante. Cada n no sistema mantm uma janela deslizante de vezes entre chegadas de mensagens de respostas de outros ns do cluster. A distribuio destes tempos entre chegadas determinado e calculado. Embora o papel inicial sugira que a distribuio aproximada pela distribuio Gaussiana, encontramos a distribuio Exponencial para ter uma melhor aproximao, por causa da natureza do canal respostas e seu impacto na latncia. Para o nosso conhecimento nossa implementao da deteco de falhas de acrscimo de uma resposta baseada configurao a RST de sua espcie. Detectores de falhas Proviso so muito bons, tanto a sua preciso e a sua velocidade e eles tambm se ajustam bem s condies da rede e carga do servidor condies.

8. Websites / Empresas que Utilizam

Cassandra est em uso por empresas que possuem grande necessidade de escalabilidade de armazenamento como: Adobe, Aol, Barracuda Networks, Best-Buy, Cisco, Cloudkick, Constant Contact, Digg, eBay, , Reddit, OpenX, Ooyala, Urban Airship, Urbisoft, Twitter

Referncias

Avinash Lakshman and Prashant Malik (2009) Cassandra - A Decentralized Structured Storage System, http://www.cs.cornell.edu/Projects/ladis2009/papers/Lakshman-ladis2009.PDF

Srinath Perera (2012), "Consideraes sobre o Banco de Dados Apache Cassandra", https://www.ibm.com/developerworks/br/library/os-apache-cassandra/#resources

Xavier Dfago, Peter Urban, Naohiro Hayashibara, Takuya Katayama, "The accrual failure detector.", RR IS-RR-2004-010, Japan Advanced Institute of Science and Technology, pginas 66 - 78, 2004.

The Apache Cassandra Project, http://cassandra.apache.org/

DataStax Corpotarion (2013), White Paper, http://www.datastax.com/what-we-offer/products-services/datastax-enterprise/apache-cassandra Drio Saraiva de Melo Pinheiro (2013), ANANLISE COMPARATIVA SOBRE A CONSISTNCIA DE BANCO DE DADOS NAS NUVENS, pgina 16Proceedings of the XII SIBGRAPI (October 1999) 101-104Proceedings of the XII SIBGRAPI (October 1999)2