O que é o Apache Cassandra?

Janelas iluminadas em um grande edifício com cenas distintas em cada praça

Autores

Tom Krantz

Staff Writer

IBM Think

Alexandra Jonker

Staff Editor

IBM Think

O que é o Apache Cassandra?

O Apache Cassandra (Cassandra) é um banco de dados NoSQL de código aberto criado para gerenciar grandes quantidades de dados em vários data centers.

 

Projetado como um sistema de gerenciamento de banco de dados distribuído (DBMS), o Cassandra depende de arquitetura ponto a ponto. Todos os nós ou servidores individuais que armazenam parte dos dados em um cluster do Cassandra são iguais, sem depender de um nó principal.

Os dados são particionados entre pares e não armazenados em um local centralizado, eliminando o ponto único de falha (em que um mau funcionamento rapidamente se transforma em vários). Esse design possibilita a replicação, a distribuição eficiente dos dados e o serviço contínuo, mesmo durante downtime planejado ou mudanças repentinas. 

O Cassandra oferece automação, backup de dados e métricas integradas para casos de uso, como o gerenciamento de dispositivos conectados da Internet das coisas (IoT). Mais especificamente, oferece escalabilidade linear, alta disponibilidade e tolerância a falhas, tornando-o uma escolha popular para aplicações de big data e cargas de trabalho em tempo real. Em setembro de 2024, o Cassandra era usado por mais de 30 mil organizações em todo o mundo.

As mais recentes notícias de tecnologia, corroboradas por insights de especialistas.

Mantenha-se atualizado sobre as tendências mais importantes (e intrigantes) do setor em IA, automação, dados e muito mais com o boletim informativo Think. Consulte a Declaração de privacidade da IBM.

Agradecemos sua inscrição!

Sua assinatura será entregue em inglês. Você pode encontrar um link para cancelar a assinatura em todos os boletins informativos. Você pode gerenciar suas inscrições ou cancelar a inscrição aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.

A história do Cassandra

A história de Cassandra começou em 2007 no Facebook, onde engenheiros buscaram um sistema que pudesse armazenar dados para a crescente plataforma de mensagens da empresa. Combinando modelos de banco de dados NoSQL estabelecidos (Amazon Dynamo e Google Bigtable), eles criaram um sistema com estruturas de dados eficientes e consistência eventual, em que as atualizações se propagam até que todas as réplicas correspondam com o passar do tempo.

Em 2008, o Cassandra foi lançado como um projeto de código aberto, ganhando força rapidamente entre os desenvolvedores que buscavam uma alternativa para os bancos de dados relacionais tradicionais. A Apache Software Foundation assumiu a  administração em 2009, formalizando sua governança e acelerando a adoção pela comunidade.

O ímpeto do Cassandra cresceu à medida que os primeiros adotantes como eBay, Spotify e Instagram o implementaram para lidar com big data. O aumento da IoT e da personalização em tempo real consolidou ainda mais o papel do Cassandra como um banco de dados de referência para escala e disponibilidade.

O suporte comercial do DataStax adicionou ferramentas, tutoriais e serviços de nível empresarial, enquanto a comunidade aberta desenvolveu ferramentas e documentação expandida. Atualmente, o Cassandra ainda é fundamental para muitos sistemas distribuídos, prosperando tanto no ecossistema de código aberto quanto nas implementações corporativas.

AI Academy

O gerenciamento de dados é o segredo para a IA generativa?

Explore por que é essencial ter dados de alta qualidade para utilizar a IA generativa com qualidade.

Por que o Cassandra é importante?

Desde serviços de streaming e redes sociais até compras online, os clientes esperam experiências digitais sempre ativas. Para as empresas, o tempo de atividade não é mais uma meta de TI, mas uma métrica de negócios. O custo de ficar aquém do esperado é alto: as principais empresas do mundo perdem cerca de US$ 400 bilhões anualmente devido a paralisações não planejadas.

Ao mesmo tempo, uma onda de dados não estruturados de logs de eventos, telemetria e fluxos de dados está tornando as operações mais complexas em todas as regiões e ambientes de nuvem, aumentando a probabilidade de falhas no sistema. As organizações precisam de um banco de dados confiável capaz de lidar com diversos tipos de dados e escalar com a demanda em infraestruturas globais. O Cassandra foi projetado para atender a essas demandas.

Os setores contam com o alto desempenho do Cassandra para processar bilhões de operações de escrita (inserção, atualização e exclusão) enquanto atendem aos usuários com precisão em tempo real. Sua resiliência vem da replicação de dados em servidores comuns ou máquinas padrão prontas para uso, minimizando o risco de interrupções e garantindo durabilidade mesmo quando o hardware falha.

A capacidade do Cassandra de gerenciar cargas de trabalho em múltiplos data centers proporciona consistência e disponibilidade para empresas em todo o mundo. Organizações como Netflix e Amazon usam o Cassandra para proporcionar experiências personalizadas, protegendo contra downtime e perda de dados. Na verdade, a equipe da plataforma de gerenciamento de ativos da Netflix usa o Cassandra para gerenciar cerca de 1,9 bilhão de anotações (aproximadamente 2,6 TB), tendo dobrado seu cluster de 12 para 24 nós.

Cassandra vs. bancos de dados relacionais tradicionais

Ao contrário dos bancos de dados relacionais, que dependem de definições de esquema rígidas e controle centralizado, o Cassandra foi criado para escala distribuída. Em sistemas relacionais, uma chave primária está vinculada à modelagem de dados estrita e à escalabilidade limitada. O Cassandra, por outro lado, usa uma chave de partição e um fator de replicação para determinar como os conjuntos de dados são armazenados em nós e data centers.

Embora os sistemas de linguagem de consulta estruturada (Structured Query Language, SQL) sejam excelentes em uniões e agregações complexas, geralmente apresentam gargalos e o risco de um único ponto de falha. O Cassandra evita isso adotando a arquitetura distribuída e a consistência eventual. Em comparação com o MongoDB, o banco de dados Cassandra favorece cargas de trabalho escaláveis linearmente em vários data centers.

Para organizações que gerenciam grandes quantidades de dados, o Cassandra oferece vantagens claras: alta taxa de transferência, baixa latência e tolerância a interrupções. No entanto, o Cassandra não oferece o mesmo nível de consultas ad hoc que alguns bancos de dados relacionais oferecem. Os desenvolvedores que usam o Cassandra devem projetar estratégias de modelagem de dados com cautela para otimizar operações de gravação, réplicas e integridade de dados.

Características principais do Cassandra

O design do Cassandra combina inovações em sistemas distribuídos com ferramentas para gerenciamento de dados de nível empresarial. Os principais recursos são:

  • Software livre
  • Alto desempenho
  • Disponibilidade ajustada
  • Escalabilidade linear
  • Replicação sem dificuldades
  • Interface familiar

Código aberto

O Cassandra é código aberto sob a Apache Software Foundation, ajudando as organizações a evitar o lock-in com fornecedor e personalizar o banco de dados para atender às suas necessidades. Quando a ajuda de nível empresarial é necessária, as equipes podem usar os recursos da comunidade ou escolher suporte comercial e serviços gerenciados.

Alto desempenho

O mecanismo de armazenamento do Cassandra usa um fluxo passo a passo (ou caminho de gravação) que consiste em um log de confirmação, uma tabela na memória (memtable) e arquivos de tabela de strings classificadas (SSTable). Esse fluxo aceita operações de gravação rapidamente e as protege. Os dados acessados com frequência são mantidos no cache para consultas de baixa latência, enquanto a compactação, uma função de manutenção automática, ajuda a garantir um armazenamento de dados eficiente a longo prazo.

Disponibilidade ajustada

De acordo com o teorema CAP, quando ocorre uma partição de rede, um sistema distribuído pode oferecer apenas duas das três características desejadas: consistência, disponibilidade e tolerância de partição (CAP). O Cassandra lida com essa desvantagem por meio de níveis de consistência ajustáveis, permitindo que os usuários priorizem a disponibilidade ou a consistência, dependendo do caso de uso.

Escalabilidade linear

O Cassandra aumenta a capacidade adicionando novos nós sem interrupção do serviço, oferecendo escalabilidade linear em servidores comuns em vez de atualizações verticais caras. À medida que os nós são adicionados, o Cassandra redistribui automaticamente os dados e o tráfego pelo cluster para que as cargas de trabalho se expandam e a taxa de transferência aumente proporcionalmente.

Replicação sem dificuldades

O Cassandra replica dados em nós e data centers para que os usuários locais tenham baixa latência enquanto evitam um único ponto de falha. Ele também se integra ao Kubernetes, às estruturas de interface de programação de aplicativos (API) e aos ambientes Amazon Web Services (AWS). É programado em Java e executado na Máquina Virtual Java (JVM).

Interface familiar

As equipes usam o Cassandra Query Language (CQL) — que espelha o SQL — para definir rapidamente as construções de chaves, como keyspace, tabelas e chaves primárias. Ferramentas interativas como o CQL shell (cqlsh) e tutoriais oficiais também podem ajudar a reduzir o tempo de integração de novos desenvolvedores.

Conheça a linguagem de consulta do Cassandra

O Cassandra interage com as aplicações por meio do CQL, uma linguagem específica de domínio inspirada no SQL. A sintaxe do CQL é familiar para os desenvolvedores de banco de dados, possibilitando que definam o keyspace, o esquema, os tipos de dados e as chaves primárias e de partição.

Por exemplo, durante o lançamento global de um jogo, um desenvolvedor pode criar um keyspace, o equivalente do banco de dados de nível superior do Cassandra que define as configurações de replicação. Depois disso, eles podem criar tabelas em que a chave de partição (como ID do jogador ou região) mantém dados relacionados nos mesmos nós para uma distribuição eficiente dos dados. Usando o cqlsh, a equipe pode executar tutoriais, validar consultas e gerenciar o cluster enquanto adicionam novos nós para lidar com o aumento no volume de jogadores.

Como o Cassandra enfatiza operações de gravação e taxa de transferência, sua sintaxe evita funcionalidades que podem diminuir o desempenho, como junções complexas. Em vez disso, os desenvolvedores contam com índices secundários, agregados e modelagem de dados otimizada para obter flexibilidade.

CQL vs. SQL

Embora o CQL seja parecido com o SQL, as duas linguagens refletem abordagens diferentes para o gerenciamento de dados.

Estruturas de dados

O SQL opera em tabelas normalizadas, enquanto o CQL é projetado para dados desnormalizados do Cassandra alinhados com chaves de partição.

Consistência

O SQL pressupõe a integridade rigorosa dos dados, enquanto o Cassandra equilibra a consistência eventual com níveis de consistência configuráveis.

Escalabilidade

Os sistemas SQL normalmente dependem de escala vertical, enquanto o Cassandra possibilita a escalabilidade linear adicionando novos nós a um cluster.

Operações

O SQL é otimizado para transações, enquanto o CQL é projetado para consultas em tempo real e operações de gravação de alto volume.

Os desenvolvedores que migram do SQL podem se adaptar rapidamente à sintaxe do CQL, mas devem repensar as estratégias de modelagem de dados para aproveitar a abordagem de sistemas distribuídos do Cassandra.

Casos de uso do Cassandra

O Cassandra potencializa cargas de trabalho de missão crítica em setores que exigem alto desempenho, baixa latência e resiliência. Alguns exemplos:

  • Comércio eletrônico: os varejistas usam o Cassandra para armazenar dados em carrinhos de compras, personalizar recomendações e processar pagamentos com tolerância a falhas.
  • IoT: o Cassandra gerencia fluxos de sensores e conjuntos de dados de milhões de dispositivos, garantindo insights em tempo real com durabilidade.
  • Implementações na nuvem: O Cassandra integra-se ao AWS e a outros serviços de nuvem. Pode também ser orquestrado no Kubernetes para ambientes conteinerizados.
  • Streaming e entretenimento: os serviços de streaming utilizam o Cassandra para lidar com a atividade global dos usuários, oferecendo experiência personalizada sem correr riscos de downtime.

Além dessas verticais, o Cassandra apoia organizações que criam sistemas distribuídos para big data e armazenamento de dados escalável. Com uma combinação de suporte de API, ferramentas corporativas e tutoriais comunitários abertos, o Cassandra continua sendo a base dos sistemas modernos de gerenciamento de bancos de dados.

Soluções relacionadas
IBM StreamSets

Crie e gerencie pipelines de dados de streaming inteligentes por meio de uma interface gráfica intuitiva, facilitando a integração sem dificuldades dos dados em ambientes híbridos e de multinuvem.

Explore o StreamSets
IBM watsonx.data™

O watsonx.data permite escalar a análise de dados e a IA com todos os seus dados, onde quer que estejam, por meio de um armazenamento de dados aberto, híbrido e governado.

Conheça o watsonx.data
Serviços de consultoria de dados e análise de dados

Libere o valor dos dados empresariais com a IBM Consulting, construindo uma organização baseada em insights, que traz vantagem para os negócios.

Conheça os serviços de análise de dados
Dê o próximo passo

Crie uma estratégia de dados que elimine silos de dados, reduza a complexidade e melhore a qualidade de dados para proporcionar experiências excepcionais para clientes e funcionários.

Explore soluções de gerenciamento de dados Conheça o watsonx.data

Apache Cassandra e Cassandra são marcas registradas da Apache Software Foundation.