Cassandra

- Cassandra é uma plataforma open source de banco de dados NoSQL mantida pela Apache
- Foi projetada para trabalhar com grandes cargas de dados por meio de sistemas distribuídos
- Os dados são distribuídos em vários servidores, ou nós, que formam um aglomerado
- Os nós comunicam-se entre si a todo o momento
Arquitetura
- Cassandra é capaz de evitar problemas causados por falha em algum dos servidores, por usar um sistema homogeneamente distribuído. Os nós trocam informação a todo momento por meio de um protocolo gossip a fim de obter e compartilhar informações sobre a localização e o estado de outros nós no aglomerado.
- Um arquivo de commit log é sequencialmente escrito para rastrear as atividades de entrada de dados, garantindo assim sua durabilidade, logo então os dados são armazenados em uma estrutura na memória que, quando cheia, os escreve no disco. As escritas são então particionadas e replicadas pelo aglomerado.
- Essa estrutura permite que qualquer usuário autorizado conecte-se a qualquer nó e acesse os dados usando a linguagem CQL (Cassandra Query Language).
Características
- 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.