Base de datos compatible con Cassandra - Base de datos distribuida serverless con Amazon Keyspaces

Aprenda a diseñar y operar bases de datos distribuidas utilizando Amazon Keyspaces (para Apache Cassandra) y DynamoDB.

Apache Cassandra y Amazon Keyspaces

Apache Cassandra es una base de datos NoSQL conocida por su alto rendimiento de escritura, escalabilidad lineal y replicación multirregión como base de datos distribuida a gran escala. Es utilizada por servicios importantes como Netflix, Apple e Instagram, pero operarla en las instalaciones requiere experiencia profunda. Las tareas operativas son extensas, incluyendo el rebalanceo de datos durante la adición y eliminación de nodos, optimización de estrategias de compactación, gestión de tombstones y ajuste de JVM. Amazon Keyspaces es un servicio de base de datos completamente administrado compatible con Apache Cassandra que permite usar CQL (Cassandra Query Language) tal cual. Puede usar los controladores y herramientas de aplicaciones Cassandra existentes con modificaciones mínimas, reduciendo drásticamente la carga operativa mientras preserva el modelo de datos y los patrones de consulta de Cassandra. Con su arquitectura serverless, puede comenzar a leer y escribir datos inmediatamente después de crear una tabla, sin necesidad de aprovisionar capacidad previamente.

Características y arquitectura de Amazon Keyspaces

Amazon Keyspaces opera de manera serverless, escalando automáticamente el rendimiento de las tablas según el tráfico. En modo bajo demanda, paga por solicitud de lectura/escritura, minimizando costos durante períodos de bajo tráfico. El modo aprovisionado ofrece precios eficientes para cargas de trabajo predecibles. El almacenamiento se expande automáticamente y los datos se replican en tres zonas de disponibilidad, proporcionando un SLA de disponibilidad del 99.999%. El cifrado está habilitado por defecto tanto para datos en reposo como en tránsito, con la opción de usar claves administradas por el cliente a través de AWS KMS. Keyspaces soporta las principales características de CQL 3.x, y las definiciones de tablas, tipos de datos y sintaxis de consultas son compatibles con Cassandra. Sin embargo, algunas características como las transacciones ligeras (LWT) y los tipos counter tienen limitaciones. La recuperación a un punto en el tiempo (PITR) permite restaurar una tabla a cualquier punto dentro de los últimos 35 días, facilitando la recuperación de operaciones accidentales o corrupción de datos. A continuación se muestra un ejemplo de creación de tabla en Keyspaces usando CQL: CREATE TABLE my_keyspace.orders ( customer_id text, order_id timeuuid, product_name text, quantity int, total_amount decimal, PRIMARY KEY (customer_id, order_id) ) WITH CLUSTERING ORDER BY (order_id DESC) AND CUSTOM_PROPERTIES = {'capacity_mode': {'throughput_mode': 'PAY_PER_REQUEST'}};

Estrategia de migración de Cassandra a Keyspaces

Se recomienda un enfoque por fases para migrar de un clúster Cassandra existente a Keyspaces. Primero, verifique la conectividad a Keyspaces usando cqlsh o controladores DataStax y confirme la compatibilidad del esquema. Para la migración de datos, hay dos enfoques: migración por lotes usando AWS Glue, y migración gradual usando escrituras duales (escribiendo en ambas bases de datos simultáneamente). Al usar Glue, configure un trabajo ETL que lea datos de Cassandra y los escriba en Keyspaces. Para migraciones de conjuntos de datos grandes, es eficiente asegurar suficiente capacidad de escritura en modo aprovisionado de Keyspaces y cambiar a modo bajo demanda después de completar la migración. Los cambios del lado de la aplicación son mínimos. Los principales cambios son actualizar el endpoint de conexión y configurar TLS (que es obligatorio para Keyspaces). Durante las pruebas de rendimiento de migración, es importante verificar de antemano la consistencia de lectura de Keyspaces (LOCAL_QUORUM por defecto) y las características de latencia. Para una comprensión sistemática del diseño de bases de datos distribuidas desde los fundamentos hasta temas avanzados, libros en Amazon pueden ser útiles.

Elección entre Keyspaces y DynamoDB

Al seleccionar una base de datos distribuida en AWS, tanto Keyspaces como DynamoDB son candidatos. Keyspaces es ideal como destino de migración para aplicaciones Cassandra existentes, permitiendo aprovechar directamente sus conocimientos y habilidades en CQL. Puede mantener patrones de modelado de datos específicos de Cassandra como claves de partición compuestas, columnas de agrupamiento para modelado de datos flexible, TTL (Time to Live) para expiración automática de datos y columnas estáticas para datos compartidos a nivel de partición. Por otro lado, DynamoDB, como servicio nativo de AWS, proporciona integración perfecta con Lambda, AppSync, API Gateway y más. Sus fortalezas residen en la integración con el ecosistema AWS, incluyendo DynamoDB Streams para arquitecturas dirigidas por eventos, tablas globales para replicación multirregión y DAX (DynamoDB Accelerator) para caché a nivel de microsegundos. Para desarrollo nuevo por equipos sin experiencia en Cassandra, se recomienda DynamoDB; para migrar cargas de trabajo Cassandra existentes, Keyspaces es la mejor opción. Ambos servicios soportan autenticación IAM, endpoints VPC y cifrado, cumpliendo requisitos de seguridad de nivel empresarial.

Precios de Keyspaces

En modo bajo demanda, las lecturas cuestan aproximadamente $0.297 por millón de unidades de solicitud de lectura, y las escrituras cuestan aproximadamente $1.4846 por millón de unidades de solicitud de escritura. En modo aprovisionado, las RCU cuestan aproximadamente $0.000742 por mes y las WCU cuestan aproximadamente $0.000371 por mes. El almacenamiento cuesta aproximadamente $0.25 por GB por mes. La estructura de precios es casi idéntica a DynamoDB, pero la ventaja son los menores costos de migración para cargas de trabajo Cassandra existentes ya que puede acceder a los datos mediante CQL.

Resumen - Elección de la base de datos compatible con Cassandra adecuada

Al elegir entre Keyspaces como destino de migración de Cassandra y DynamoDB como opción nativa de AWS según las características de su carga de trabajo y activos existentes, puede construir una estrategia óptima de base de datos distribuida. Si se requiere compatibilidad con CQL, Keyspaces es la elección correcta; si prioriza la flexibilidad serverless, DynamoDB es la mejor opción.