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