Cassandra
Historia
- Cassandra foi criado para resolver o problema de pesquisa inbox no Facebook
- Combinou ideias do Dynamo da Amazon com o modelo de dados BigTable do Google
- Em 2008, o Facebook disponibilizou como open-source e tornou-se um projeto incubado da Apache
- Recentemente, em 2010, o Cassandra tornou-se um projeto Top Level da Apache.
Forcas
- Cassandra é ...
- Escalável:
- Cassandra é incrementalmente e linearmente escalável
- Capacidade pode ser adicionada sem downtime
- O modelo de dados sem esquema aumenta a agilidade no desenvolvimento, aliviando a necessidade de atualizações
- Confiável:
- A falha de múltiplos nós pode ser tolerada
- Nós com falha podem ser trocados sem downtime
- Replicaçao de dados através de data centers é bem suportado
- Falhas de nós dentro do cluster sao monitoradas com um Accrual Style Failure Detector
- Como todos os nós sao simétricos e já que nao possuem nós master, nao existe nenhum SPOF
- Durável:
- Durabilidade é a propriedade que grava os dados, uma vez completados, irao sobreviver permanentemente mesmo face a uma falha de hardware
- Cassandra fornece durabilidade configurável pela adiçao de registros para um commitlog primeiro (que obviamente mantem a necessidade para pesquisa em disco já que esta é uma operaçao sequencial), usando entao a chamada do sistema fsync para nivelar os dados para o disco.
- Analítico sem ETL:
- Trabalhos Hadoop podem ser executados diretamente contra seu cluster
- Tunável:
- Consistencia é tunável por operaçao, permitindo níveis de consistencia para ser nbegociado para resposta rápida quando necessário
- Náo existem leituras ou pesquisas no caminho de gravaçao
- Opçoes de tuning de múltiplos cache permitem otimizaçao relativa a cargas de trabalho e modelos de dados específicos.
Pontos relevantes
- Massivamente escalável
- Armazenamento particionado em linhas
- Arquitetura sem mestre
- Desempenho escalarmente linear
- Sem SPOF
- Suporte de gravaçao-leitura através de múltiplos datacenters e zonas disponiveis em nuvens
- Métodos de acesso via API e queries
- CQL e Thrift
- Replicaçao
- Ponto a ponto
- Escrito em Java
- Consistencia: consistencia tunavel
- Compressao de dados interna
- Suporte a MapReduce
- Indices primários e secundários
- Aspectos de segurança
MapReduce
- Wikipedia
- MapReduce é um modelo de programação desenhado para processar grandes volumes de dados em paralelo, dividindo o trabalho em um conjunto de tarefas independentes.
- Programas MapReduce são escritas em um determinado estilo influenciado por construções de programação funcionais, especificamente expressões idiomáticas para listas de processamento de dados
- Este módulo explica a natureza do presente modelo de programação e como ela pode ser usada para escrever programas que são executados no ambiente Hadoop.
Ultimas funcionalidades
- Cassandra 1.2 introduziu muitas melhorias, descritas abaixo:
- Suporte a implementação de CQL3-based envolvendo autenticação e autorização para uso com aspectos de segurança.
- Autenticação interna baseada em controles de contas e senhas
- Gerenciamento de permissões de objetos usando autorização interna para garantir ou revogar direitos para a acessar dados do Cassandra por meio do paradigma relacional
- Encriptação Cliente-para-nó que protege os dados em "voo" das máquinas clientes para o cluster do banco de dados
- Nós Virtuais
- Permitem que cada nó gerencie um grande número de pequenos intervalos distribuidos através do anel
- Particionador:
- Fornece hashing e desempenho melhorado
- Tempo de inicialização mais rápido
- Provê inicialização e boots at[e 80% rápidos para cada nó dentro do cluster. Atua nos índices primários.
- Melhoria na manipulação das falhas de disco
- Nas versões anteriores, um único disco indisponível tinha a possibilidade de gerar um nó não responsivo (tecnicamente ativo e parte do cluster). Utilização do RAID 10 que usava 50% mais espaço em disco. Novo arranjo de disco resolveu este problema e eliminou a necessidade do RAID.
- Suporte para alterações de esquemas concorrentes
- Não suportava criação e exclusão de tabelas concorrentemente (permanentes ou temporárias).
Wiki

