Cassandra-driver: Trabalhando com Apache Cassandra em Python

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução

O Apache Cassandra é um banco de dados NoSQL de alto desempenho, escalável e tolerante a falhas, projetado para processar enormes volumes de dados com latência mínima. Ele é utilizado por empresas como Netflix, Apple, eBay e Instagram para processar petabytes de dados em tempo real.

Para Python, existe o driver oficial cassandra-driver, que fornece acesso completo aos recursos do Cassandra por meio de programas Python. Ele suporta consultas síncronas e assíncronas, prepared statements, trabalho com UUID, TTL e muito mais.

O que é o cassandra-driver

O cassandra-driver é o cliente Python oficial para Apache Cassandra, desenvolvido pela equipe DataStax. É um driver de alto desempenho que garante integração total entre aplicações Python e clusters Cassandra.

Principais recursos do driver

  • Operações síncronas e assíncronas
  • Consultas preparadas para melhor desempenho
  • Roteamento automático de consultas para os nós ideais
  • Suporte a todos os tipos de dados do Cassandra
  • Tratamento de erros e tentativas automáticas integrado
  • Suporte a autenticação e criptografia SSL
  • Balanceamento de carga entre os nós do cluster

Instalação e configuração

Instalação do driver

pip install cassandra-driver

Para alguns recursos, podem ser necessárias dependências adicionais:

pip install cassandra-driver[cqlengine]  # para ORM
pip install cassandra-driver[graph]      # para trabalhar com grafos

Conexão ao cluster

from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider

# Conexão simples
cluster = Cluster(['127.0.0.1'])
session = cluster.connect()

# Conexão com autenticação
auth_provider = PlainTextAuthProvider(username='cassandra', password='cassandra')
cluster = Cluster(['127.0.0.1'], auth_provider=auth_provider)
session = cluster.connect()

# Conexão com SSL
from cassandra.cluster import Cluster
from ssl import PROTOCOL_TLSv1_2, CERT_REQUIRED

cluster = Cluster(['127.0.0.1'], 
                  ssl_context={
                      'ssl_version': PROTOCOL_TLSv1_2,
                      'cert_reqs': CERT_REQUIRED,
                      'ca_certs': '/caminho/para/ca.pem'
                  })
session = cluster.connect()

Conexão a um keyspace específico

session.set_keyspace('meu_keyspace')
# ou
session = cluster.connect('meu_keyspace')

Conceitos-chave do Cassandra

Arquitetura de dados

  • Keyspace — análogo a um banco de dados SQL, contém configurações de replicação
  • Tabela — contém linhas e colunas, mas com estrutura interna diferente
  • Partition key — determina em qual nó o registro é armazenado
  • Clustering key — influencia a ordem de armazenamento dentro da partição
  • Primary key — composta pela partition key e clustering key

Particularidades do modelo de dados

O Cassandra não suporta JOINs e agregações como no SQL, mas escala horizontalmente e garante alta disponibilidade dos dados. O design do esquema deve ser baseado nos padrões de acesso aos dados.

Criação de Keyspace e tabelas

Criação de Keyspace

session.execute("""
    CREATE KEYSPACE IF NOT EXISTS meu_keyspace
    WITH replication = {
        'class': 'SimpleStrategy',
        'replication_factor': '3'
    }
""")

# Para produção, recomenda-se NetworkTopologyStrategy
session.execute("""
    CREATE KEYSPACE IF NOT EXISTS meu_keyspace
    WITH replication = {                    

Recommendations