Amazon Keyspaces: Cómo funciona - Amazon Keyspaces (para Apache Cassandra)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Amazon Keyspaces: Cómo funciona

Amazon Keyspaces elimina la sobrecarga administrativa que supone administrar Cassandra. Para entender por qué, resulta útil comenzar con la arquitectura de Cassandra y luego compararla con la de Amazon Keyspaces.

Arquitectura de alto nivel: Apache Cassandra vs. Amazon Keyspaces

Apache Cassandra tradicional se implementa en un clúster formado por uno o más nodos. Usted es responsable de administrar cada nodo y de añadir y eliminar nodos a medida que su clúster escala.

Un programa cliente accede a Cassandra conectándose a uno de los nodos y emitiendo instrucciones en Cassandra Query Language (CQL). CQL es similar a SQL, el popular lenguaje utilizado en las bases de datos relacionales. Si bien Cassandra no es una base de datos relacional, CQL proporciona una interfaz familiar para consultar y manipular datos en Cassandra.

El siguiente diagrama muestra un clúster simple de Apache Cassandra formado por cuatro nodos.

Diagrama de un cluster de Apache Cassandra que contiene 4 nodos e interactúa con una aplicación cliente.

Una implementación de Cassandra en producción puede constar de cientos de nodos ejecutándose en cientos de ordenadores físicos a través de uno o varios centros de datos físicos. Esto puede suponer una carga operativa para los desarrolladores de aplicaciones que necesitan aprovisionar, parchear y administrar los servidores, además de instalar, mantener y operar el software.

Con Amazon Keyspaces (para Apache Cassandra), no necesita aprovisionar, parchear ni administrar servidores, por lo que puede centrarse en crear mejores aplicaciones. Amazon Keyspaces ofrece dos modos de capacidad de rendimiento para lecturas y escrituras: bajo demanda y aprovisionada. Puede elegir el modo de capacidad de rendimiento de su tabla para optimizar el precio de las lecturas y escrituras en función de la previsibilidad y variabilidad de su carga de trabajo.

Con el modo bajo demanda, paga solo por las lecturas y escrituras que su aplicación realmente realiza. No necesita especificar de antemano la capacidad de rendimiento de su tabla. Amazon Keyspaces acomoda el tráfico de su aplicación casi al instante a medida que aumenta o disminuye, lo que lo convierte en una buena opción para aplicaciones con tráfico impredecible.

El modo de capacidad aprovisionada le ayuda a optimizar el precio del rendimiento si tiene un tráfico de aplicaciones predecible y puede prever con antelación los requisitos de capacidad de su tabla. Con el modo de capacidad aprovisionada, usted especifica el número de lecturas y escrituras por segundo que espera que realice su aplicación. Al habilitar escalado automático, puede aumentar y disminuir automáticamente la capacidad aprovisionada de su tabla.

Puede cambiar el modo de capacidad de su tabla una vez al día a medida que obtenga más información sobre los patrones de tráfico de su carga de trabajo, o si espera tener un gran aumento de tráfico, por ejemplo, debido a un evento importante que prevea que generará mucho tráfico en la tabla. Para obtener más información sobre la capacidad de lectura y escritura aprovisionada, consulte Modos de capacidad de lectura/escritura en Amazon Keyspaces.

Amazon Keyspaces (para Apache Cassandra) almacena tres copias de sus datos en múltiples Zonas de Disponibilidad para garantizar durabilidad y alta disponibilidad. Además, se beneficia de un centro de datos y una arquitectura de red creados para satisfacer los requisitos de las organizaciones más sensibles a la seguridad. El cifrado en reposo se habilita de forma automática al crear una nueva tabla de Amazon Keyspaces y todas las conexiones de cliente requieren Seguridad de la capa de transporte (TLS). Las funciones AWS de seguridad adicionales incluyen la supervisión y los puntos finales de nube privada virtual (VPC). AWS Identity and Access Management Para obtener información general sobre todas las características de seguridad disponibles, consulte Seguridad en Amazon Keyspaces (para Apache Cassandra).

En el siguiente diagrama se muestra la arquitectura de Amazon Keyspaces.

Diagrama de Amazon Keyspaces en interacción con la aplicación cliente.

Un programa cliente accede a Amazon Keyspaces conectándose a un punto de conexión predeterminado (nombre de host y número de puerto) y emitiendo instrucciones CQL. Para obtener una lista de los puntos de conexión disponibles, consulte Puntos de conexión de servicio para Amazon Keyspaces.

Modelo de datos de Cassandra

La forma en que modele los datos para su caso de negocio es fundamental a fin de lograr un rendimiento óptimo de Amazon Keyspaces. Un modelo de datos deficiente puede degradar significativamente el rendimiento.

Si bien CQL tiene un aspecto similar a SQL, los backends de Cassandra y las bases de datos relacionales son muy diferentes y deben abordarse de forma distinta. A continuación se exponen algunas de las cuestiones más significativas a tener en cuenta:

Almacenamiento

Puede visualizar sus datos de Cassandra en tablas, en las que cada fila representa un registro y cada columna un campo dentro de ese registro.

Diseño de tablas: Primero la consulta

En CQL no existen JOIN. Por lo tanto, debería diseñar sus tablas teniendo en cuenta la forma de sus datos y cómo necesita acceder a ellos para sus casos de uso empresarial. Esto podría dar lugar a una desnormalización con datos duplicados. Debería diseñar cada una de sus tablas de forma específica para un patrón de acceso concreto.

Particiones

Sus datos se almacenan en particiones en disco. El número de particiones en las que se almacenan sus datos y cómo se distribuyen entre las particiones viene determinado por su clave de partición. La forma en que defina su clave de partición puede tener un impacto significativo en el rendimiento de sus consultas. Para obtener las prácticas recomendadas, consulte Uso eficaz de las claves de partición en Amazon Keyspaces.

clave principal

En Cassandra, los datos se almacenan como pares clave-valor. Para ello, cada tabla de Cassandra debe tener una clave principal, que es la clave de cada fila de la tabla. La clave principal es el compuesto de una clave de partición requerida y columnas de agrupación opcionales. Los datos que conformen la clave principal deben ser únicos en todos los registros de una tabla.

  • Clave de partición: la parte clave de partición de la clave principal es obligatoria y determina en qué partición de su clúster se almacenan los datos. La clave de partición puede ser una única columna o un valor compuesto formado por dos o más columnas. Utilizaría una clave de partición compuesta si una clave de partición de una única columna diera como resultado que una sola partición o muy pocas particiones tuvieran la mayoría de los datos y, por tanto, soportaran la mayoría de las operaciones de E/S de disco.

  • Columna de agrupación: la parte opcional de la columna de agrupación de su clave principal determina cómo se agrupan y ordenan los datos dentro de cada partición. Si incluye una columna de agrupación en su clave principal, la columna de agrupación puede tener una o más columnas. Si hay múltiples columnas en la columna de agrupación, el orden de clasificación viene determinado por el orden en que aparecen las columnas en la columna de agrupación, de izquierda a derecha.

Para obtener más información sobre el diseño de NoSQL y Amazon Keyspaces, consulte. Diseño NoSQL de Amazon Keyspaces Para obtener más información sobre Amazon Keyspaces y el modelado de datos, consulte. Modelado de datos en Amazon Keyspaces (para Apache Cassandra)

Acceso a Amazon Keyspaces desde una aplicación

Amazon Keyspaces (para Apache Cassandra) implementa la API Apache Cassandra Query Language (CQL), por lo que puede utilizar CQL y los controladores de Cassandra que ya utilice. Actualizar su aplicación es tan sencillo como actualizar su controlador de Cassandra o su configuración de cqlsh para que apunte al punto de conexión del servicio de Amazon Keyspaces. Para obtener más información sobre las credenciales requeridas, consulteCómo crear y configurar AWS credenciales para Amazon Keyspaces.

nota

Para ayudarle a empezar, puede encontrar ejemplos de end-to-end código sobre cómo conectarse a Amazon Keyspaces mediante varios controladores de cliente de Cassandra en el repositorio de ejemplos de código de Amazon Keyspaces en. GitHub

Considere el siguiente programa Python, que se conecta a un clúster de Cassandra y consulta una tabla.

from cassandra.cluster import Cluster #TLS/SSL configuration goes here ksp = 'MyKeyspace' tbl = 'WeatherData' cluster = Cluster(['NNN.NNN.NNN.NNN'], port=NNNN) session = cluster.connect(ksp) session.execute('USE ' + ksp) rows = session.execute('SELECT * FROM ' + tbl) for row in rows: print(row)

Para ejecutar el mismo programa en Amazon Keyspaces, necesita:

  • Añadir el punto de conexión del clúster y el puerto: por ejemplo, el host se puede sustituir por un punto de conexión de servicio, como cassandra.us-east-2.amazonaws.com, y el número de puerto por: 9142.

  • Añadir la configuración TLS/SSL: para obtener más información sobre cómo añadir la configuración TLS/SSL para conectarse a Amazon Keyspaces con un controlador de cliente Python para Cassandra, consulte Uso de un controlador de cliente Python para Cassandra para acceder mediante programación a Amazon Keyspaces.