Cassandra

Cassandra é uma plataforma open source de banco de dados NoSQL mantida pela Apache e baseada no BigTable(Google) e Dynamo(Amazon). Foi criada originalmente pelo Facebook, visando um sistema de banco de dados que pudesse suportar grandes quantidades de informação e que pudesse ser facilmente escalável. Alguns dos aspectos positivos do Cassandra são:
- Altas escalabilidade e disponibilidade, sem um ponto único de falha
- Rendimento de gravação muito alto e bom rendimento de leitura
- Linguagem de consulta semelhante a SQL (desde 0.8) e suporte para procura por índices secundários
- Consistência ajustável e suporte para replicação
- Esquema flexível

Modelo de Dados
Cassandra armazena dados de acordo com o modelo de dados de família de colunas, demonstrado na figura ao lado:
- Coluna - a unidade mais básica do modelo de dados do Cassandra, contendo um nome, um valor e um registro de data e hora.
- Linha - uma coleção de colunas rotuladas com um nome.
- Família de colunas - uma coleção de linhas rotuladas com um nome.
- Keyspace – um grupo de várias famílias de colunas juntas. É apenas um agrupamento lógico de famílias de colunas e fornece um escopo isolado para nomes.
Diferenças quanto ao modelo relacional
- No modelo relacional as colunas são homogêneas, existindo um relacionamento vertical claro entre as linhas, diferente do Cassandra que pode ter diferentes colunas em cada linha
- Com o modelo relacional, o esquema é predefinido e não pode ser mudado enquanto estiver em operação, enquanto o Cassandra permite alterações em tempo de execução
- O modelo relacional suporta consultas sofisticadas, como agrupamento de tabelas e diversas funções, já no Cassandra os tipos de consulta possíveis dependem da estrutura do banco e devem ser implementadas na aplicação
Arquitetura
- O Cassandra foi projetado para trabalhar com grandes cargas de dados por meio de sistemas distribuídos
- Os dados são distribuídos em vários nós. Qualquer nó pode aceitar qualquer solicitação (leitura, gravação ou exclusão) e encaminhá-la ao nó correto, mesmo que os dados não estejam armazenados nesse nó.
- Os nós comunicam-se entre si a todo o momento
- 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).