Cassandra DB

Cassandra DB [editar]

Realizado por:

Felipe carneiro machado - 14569373
Felipe Volkweis de Oliveira - 14570041
Rafael Brazolin Alves Mansur - 14604020
Christyan Paniago Nantes - 15635906
Vinícius Gutierrez Neves - 14749363
Luiz Fellipe Catuzzi - 11871198
Hélio Márcio Cabral Santos - 14577862
Gabriel Martins Monteiro - 14572099
Murilo Fonseca de Matos - 13719065
Kouki Hayashi - 13672018
Augusto Cavalcante Barbosa Pereira - 14651531

O que é o Apache Cassandra e como funciona sua arquitetura?

O Apache Cassandra é um banco de dados NoSQL de colunas largas concebido para lidar com petabytes de dados em clusters distribuídos, oferecendo latências muito baixas tanto para leitura quanto para escrita. O projeto nasceu no Facebook entre 2007 e 2008 para suportar o sistema de busca de mensagens internas; foi liberado como código aberto em julho de 2008, transferido à Apache Software Foundation em 2009 e promovido a projeto de primeiro nível em março de 2010. Desde então, tornou-se referência para workloads que exigem escalabilidade horizontal praticamente ilimitada, zero downtime e suporte nativo a múltiplos datacenters.

Seu grande diferencial está na arquitetura “masterless”: todos os nós de um cluster Cassandra são iguais (peer-to-peer) e podem atender leituras ou gravações diretamente, eliminando qualquer ponto único de falha. Os dados são particionados através de consistent hashing em um anel lógico de tokens; isso faz com que a adição ou remoção de servidores exija pouquíssimo rebalanceamento e permita escalabilidade linear — adicionar um nó comum equivale, em média, a multiplicar a capacidade agregada disponível. A combinação de design descentralizado e distribuição uniforme de dados sustenta o alto rendimento que tornou Cassandra popular em empresas como Netflix, Uber e Apple.

Para garantir resiliência, o sistema oferece replicação configurável por keyspace: o desenvolvedor escolhe o fator de réplica e quais datacenters devem receber cópias, obtendo tolerância a falhas de rack, zona ou região. O estado do cluster é mantido pelo protocolo Gossip, no qual, a cada segundo, cada nó troca informações de saúde e esquema com alguns pares, propagando rapidamente qualquer mudança. Em caso de indisponibilidade transitória, mecanismos como hinted handoff e reparos anti-entropia recuperam as réplicas divergentes, assegurando consistência eventual sem sacrificar disponibilidade. Essa combinação de replicação elástica, monitoramento distribuído e recuperação automática consolida Cassandra como solução de escolha para serviços que precisam permanecer online mesmo diante de falhas de rede ou equipamentos.

AP (Availability and Partition Tolerance) no Cassandra

O Cassandra é um banco de dados distribuído que prioriza Disponibilidade (A) e Tolerância a Partições (P) no teorema CAP, sacrificando um pouco a Consistência (C) em certos cenários.



1. Alta Disponibilidade (Availability - A)
  • O Cassandra garante que os dados sempre estarão acessíveis, mesmo que alguns nós falhem.
  • Ele replica os dados em múltiplos nós (configurável pelo fator de replicação).
  • Se um nó estiver inativo, as requisições são redirecionadas para outros nós que contenham a réplica dos dados.
2. Tolerância a Partições (Partition Tolerance - P)
  • O Cassandra lida bem com falhas de rede (partições), mantendo a operação mesmo que alguns nós fiquem isolados.
  • Ele usa um modelo peer-to-peer (sem nó mestre), onde todos os nós são iguais, evitando um ponto único de falha.
  • Em caso de partição, o Cassandra permite leituras e escritas em nós disponíveis, resolvendo inconsistências depois (via mecanismos como hinted handoff e read repair).
3. Consistência Eventual (Trade-off de Consistência no CAP)
  • Por padrão, o Cassandra oferece consistência eventual, onde as atualizações se propagam assincronamente entre os nós.
  • Porém, é possível ajustar o nível de consistência por operação (ex: QUORUM, ALL, ONE) para equilibrar entre disponibilidade e consistência.
  • Ferramentas como Read Repair e Anti-Entropy ajudam a sincronizar dados gradualmente após inconsistências temporárias.

Vantagens do Cassandra DB

O Apache Cassandra tem como uma de suas grandes vantagens a sua disponibilidade e tolerância a falhas, pois ele garante que os dados estarão acessíveis mesmo em cenários de possíveis falhas, como falha de hardware ou de rede. Isso é possível pois o Apache Cassandra utiliza uma arquitetura peer-to-peer, onde todos os nós tem a mesma importância. Quando um nó falha, outro nó assume o seu lugar, impedindo que o sistema falhe, ou que haja gargalos na consulta. Como não há um nó central, não há um único ponto de falha, o que garante que o sistema sempre se mantenha disponível.

Outra grande vantagem do Apache Cassandra é que é um sistema open-source. Devido a isso, ele oferece uma grande liberdade, flexibilidade e custo reduzido, já que não é necessário pagar uma licença para utilizá-lo. Sua licença facilita a integração do sistema com outras tecnologias, além de garantir uma maior segurança, já que falhas podem ser identificadas e corrigidas pela própria comunidade

Além disso, o Apache Cassandra tem alta escalabilidade horizontal, em que cada nó adicional aumenta a capacidade de processamento, permitindo manter uma alta taxa de transferência mesmo com volumes muito grandes de informação. Essa escalabilidade é alcançada por meio do uso de uma arquitetura peer-to-peer, particionamento automático de dados e alta elasticidade na adição de novos nós

Não somente isso, mas essa database usa o modelo wide-column e possui um modelo flexível de dados, ou seja, armazena os dados em famílias de colunas, o que permite com uma grande variedade de dados, sejam estruturados, semi-estruturados e até mesmo não estruturados. O Apache Cassandra não exige um esquema fixo, mas oferece a possibilidade de usar uma linguagem própria (Cassandra Query Language - CQL) que se assemelha ao SQL, o que facilita o uso de quem já sabe usar modelos relacionais de banco de dados.

Por fim, semelhante ao mongoDB, essa database, mesmo que siga o teorema CAP, pode ajustar quais características são priorizadas. Por padrão a disponibilidade e tolerância à partição são favorecidas, mas é possível fazer com que dê mais prioridade à consistência, exigindo confirmação de escrita em diferentes nós.

Desvantagens do Cassandra DB

Por outro lado, o Cassandra também tem diversas desvantagens. As principais delas são:

Complexidade de Modelagem de Dados:A modelagem de dados no Cassandra é orientada pela consulta, o que significa que as tabelas devem ser projetadas com base nas queries que serão executadas. Isso pode ser um desafio para quem está acostumado com o modelo relacional.

Consistência Eventual:O Cassandra prioriza a disponibilidade e tolerância aos particionamentos. Portanto, a consistência não pode ser totalmente garantida.

Falta de Transações ACID:O Cassandra não suporta transações multi-operações no estilo ACID (Atomicidade, Consistência, Isolamento, Durabilidade) que são padrão em bancos relacionais. Por exemplo, o Cassandra garante atomicidade apenas para operações em uma única linha. Isso significa que todas as atualizações em uma única linha serão bem-sucedidas ou falharão juntas. No entanto, não há como garantir que duas operações em linhas diferentes ocorram de forma atômica.

Consultas Limitadas:Consultas complexas com JOINs e agregações não são nativamente suportadas. Para relacionar dados, você precisa duplicá-los em diferentes tabelas . A manutenção desses dados duplicados é manual e pode se tornar complexa.

Agregação por partição: As funções de agregação rodam apenas no nível de uma partição. Para agregar dados de todo o banco, seria necessário executar a agregação em cada partição individualmente e depois somar os resultados na aplicação.

Aplicações

Por sua alta escalabilidade e tolerância a falhas, o Cassandra possui diversas usabilidades e foi adotado por grandes empresas, sendo hoje o segundo DB NoSQL, atrás apenas do Mongodb.

Dentre As aplicações e empresas que utilizam o Cassandra temos:

  • Redes sociais: Reddit, Twitter, Instagram
    • Uso: Armazenamento de postagens, comentários, curtidas, seguidores e notificações em tempo real.
  • Séries temporais: Nasa, Accenture, Globo.com, SPC Brasil
    • Uso: Cassandra é eficiente para gravar e consultar dados organizados por tempo, como métricas, logs de servidores, dados de sensores, e dados analíticos.
  • Segurança da informação: Cisco, PagSeguro
    • Uso: Armazenamento de logs de segurança, eventos de rede, alertas de intrusão, e dados de análise comportamental.
  • E-commerces: Ebay, Luiza Labs (Magazine Luiza)
    • Uso: Armazenamento de catálogos de produtos, histórico de compras, e sessões de usuário.
  • Streaming/Sistemas de recomendação: Netflix, Instagram, Twitter, Spotify
    • Uso: Sistemas de recomendação usam Cassandra para armazenar históricos de consumo e preferências dos usuários, permitindo sugestões em tempo real.
  • Bancos/Detecção de fraudes: Goldman Sachs, PagSeguro, SPC Brasil
    • Uso: Processamento de transações financeiras em tempo real, monitoramento de fraudes, e armazenamento de logs de acesso e eventos
  • IOT/Rastreamento em tempo real: Apple, Uber
    • Uso: Armazenamento de grandes volumes de dados de sensores, logs de eventos e localizações em tempo real

Alguns exemplos práticos:

Uber, por exemplo, usa Cassandra para rastrear localização de motoristas e passageiros com alta disponibilidade e baixa latência.

A Netflix utiliza Cassandra para gerenciar catálogos, preferências de usuário, e registros de visualização.

A NASA utiliza Cassandra para armazenar dados contínuos de sondas ou satélites.