Objetivos - O Apache Cassandra é um banco de dados NoSQL distribuído, altamente escalável, orientado a colunas, projetado para gerenciar grandes quantidades de dados. - Escalabilidade horizontal: foi projetado para crescer facilmente conforme a necessidade, adicionando nós ao cluster. - Alta disponibilidade: é capaz de replicar dados em vários nós, garantindo que os dados estejam sempre disponíveis, mesmo se um ou mais nós falharem. - Desempenho: Suporta cargas de trabalho pesadas, mantendo um desempenho rápido e consistente. Aplicações - IoT - Análise em tempo real - Redes sociais - Transações eletrônicas Aplicações - A Cisco Systems utiliza o Apache Cassandra em sua plataforma de gerenciamento de dispositivos IoT, o Cisco Kinetic. Arquitetura Arquitetura É composta por nós, datacenters e clusters:
- Nó: é um servidor ou virtual responsável por armazenar e gerenciar um
subconjunto de dados do cluster. - Datacenter: Grupo de nós conectados por uma rede. A depender da estrutura, dentro do datacenter podemos ter os nós separados em subconjuntos denominados de Rack. - Cluster: conjunto de nós que trabalham juntos no armazenamento e gerência dos dados. O cluster pode ter vários datacenters. Arquitetura - Modelo de dados de coluna: O Cassandra usa um modelo de dados de coluna para armazenar dados, permitindo que os dados sejam armazenados e acessados com base nas colunas em vez de linhas. - Particionamento: O Cassandra divide os dados em partições para permitir que eles sejam distribuídos pelos nós do cluster. Cada partição é atribuída a um único nó no cluster. - Compactação: É o processo de mesclar arquivos de dados no disco para reduzir o número de arquivos e melhorar o desempenho do Cassandra. - CQL (Cassandra Query Language): O CQL é uma linguagem de consulta semelhante ao SQL, usada para consultar dados no Cassandra. Column Oriented 3 V’s do Big Data 3 V’s do Big Data - Volume: Altamente escalável e pode lidar com grandes volumes de dados. Ele é projetado para executar em vários nós de servidor, e os dados são distribuídos uniformemente entre os nós para garantir que o desempenho seja escalável horizontalmente. - Velocidade: Capaz de fornecer alta taxa de transferência de leitura e gravação de dados. Ele é projetado para ser altamente responsivo e tolerante a falhas, garantindo que os dados estejam sempre disponíveis. - Variedade: Adequado para lidar com uma variedade de tipos de dados, incluindo dados não estruturados e semiestruturados. Ele permite que os usuários armazenem e processem dados em diferentes formatos, incluindo JSON, XML e AVRO. Cassandra x MongoDB Cassandra MongoDB Vantagens: Vantagens: - Facilidade de uso e gerenciamento - Escalabilidade horizontal - Flexibilidade no esquema de dados - Alta disponibilidade - Suporte a consultas complexas - Desempenho rápido de leitura/gravação - Escalabilidade horizontal - Suporte a grandes volumes de dados - Tolerante a falhas Desvantagens: - Limitações de escalabilidade vertical Desvantagens: - Pode sofrer latência em clusters distribuídos - Dificuldade de gerenciamento em - Menor desempenho de leitura/gravação ambientes complexos em comparação ao Cassandra - Não oferece recursos avançados de - Não oferece recursos avançados de consulta análise de dados Limitações Limitações - Consultas complexas: O Apache Cassandra não possui suporte para join e group by, o que pode dificultar algumas operações de consultas. - Ausência de recursos de gerenciamento de transações: O Cassandra não suporta transações ACID (Atomicidade, Consistência, Isolamento, Durabilidade), o que pode ser um desafio para aplicativos que requerem consistência estrita dos dados. - Falhas rede: Como o Cassandra distribui os dados em vários nós de servidor, até em outros data centers, a rede é uma parte crítica da arquitetura. A limitação da rede pode afetar o desempenho e a latência da replicação dos dados. Exemplos de utilização ● https://github.com/marcio-henrique/cassandra-bigdata