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 = { Também na biblioteca
Rate Limiting em Java: bibliotecas e ferramentas para controle de requisições (Bucket4j, Resilience4j)
Programação Reativa em Kotlin: Biblioteca RxKotlin e Corrotinas
Trabalhando com arquivos ZIP em TypeScript: guia completo sobre JSZip e adm-zip
Cliente Elasticsearch para C# (.NET): NEST e Elastic.Clients.Elasticsearch
Trabalhando com Excel em C# (.NET): bibliotecas EPPlus, ClosedXML e NPOI