Cassandra-driver: guía para trabajar con Apache Cassandra en Python

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción

Apache Cassandra es una base de datos NoSQL de alto rendimiento, escalable y tolerante a fallos, diseñada para procesar enormes volúmenes de datos con latencias mínimas. Es utilizada por empresas como Netflix, Apple, eBay e Instagram para manejar petabytes de datos en tiempo real.

Para Python existe el controlador oficial cassandra-driver, que brinda acceso completo a las capacidades de Cassandra desde programas Python. Soporta consultas síncronas y asíncronas, sentencias preparadas, manejo de UUID, TTL y mucho más.

¿Qué es cassandra-driver?

Cassandra-driver es el cliente oficial de Python para Apache Cassandra, desarrollado por el equipo de DataStax. Es un controlador de alto rendimiento que garantiza una integración completa entre aplicaciones Python y un clúster de Cassandra.

Características principales del controlador

  • Operaciones síncronas y asíncronas
  • Consultas preparadas para mejorar el rendimiento
  • Enrutamiento automático de consultas a los nodos óptimos
  • Soporte para todos los tipos de datos de Cassandra
  • Manejo integrado de errores y reintentos
  • Soporte para autenticación y cifrado SSL
  • Balanceo de carga entre nodos del clúster

Instalación y configuración

Instalación del controlador

pip install cassandra-driver

Para algunas funciones pueden ser necesarias dependencias adicionales:

pip install cassandra-driver[cqlengine]  # para ORM
pip install cassandra-driver[graph]      # para trabajar con grafos

Conexión al clúster

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

# Conexión simple
cluster = Cluster(['127.0.0.1'])
session = cluster.connect()

# Conexión con autenticación
auth_provider = PlainTextAuthProvider(username='cassandra', password='cassandra')
cluster = Cluster(['127.0.0.1'], auth_provider=auth_provider)
session = cluster.connect()

# Conexión con 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': '/ruta/al/ca.pem'
                  })
session = cluster.connect()

Conexión a un keyspace específico

session.set_keyspace('mi_keyspace')
# o
session = cluster.connect('mi_keyspace')

Conceptos clave de Cassandra

Arquitectura de datos

  • Keyspace — análogo a una base de datos en SQL, contiene configuraciones de replicación
  • Tabla — contiene filas y columnas, pero con una estructura interna diferente
  • Partition key — determina en qué nodo se almacena el registro
  • Clustering key — afecta el orden de almacenamiento dentro de la partición
  • Primary key — compuesta por partition key y clustering key

Particularidades del modelo de datos

Cassandra no soporta JOIN ni agregaciones como en SQL, pero escala horizontalmente y garantiza alta disponibilidad de los datos. El diseño del esquema debe basarse en los patrones de acceso a los datos.

Creación de Keyspace y tablas

Creación de Keyspace

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

# Para producción se recomienda NetworkTopologyStrategy
session.execute("""
    CREATE KEYSPACE IF NOT EXISTS mi_keyspace
    WITH replication = {                    

Recommendations