Uso de las filas en Amazon Keyspaces - 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.

Uso de las filas en Amazon Keyspaces

En esta sección se ofrecen detalles sobre el uso de las filas en Amazon Keyspaces (para Apache Cassandra). Las tablas son las estructuras de datos principales en Amazon Keyspaces y los datos de las tablas se organizan en columnas y filas.

Cálculo del tamaño de las filas en Amazon Keyspaces

Amazon Keyspaces proporciona un almacenamiento totalmente gestionado que ofrece un rendimiento de lectura y escritura en milisegundos de un solo dígito y almacena los datos de forma duradera en varias zonas de disponibilidad. AWS Amazon Keyspaces vincula metadatos a todas las filas y columnas de clave principal para admitir un acceso eficaz a los datos y una alta disponibilidad.

En esta sección se ofrece información detallada sobre cómo calcular el tamaño codificado de fila en Amazon Keyspaces. El tamaño codificado de fila se utiliza al calcular su factura y el uso de cuotas. También debe utilizar el tamaño codificado de fila al calcular los requisitos de capacidad de rendimiento aprovisionada para las tablas. Para calcular el tamaño codificado de fila en Amazon Keyspaces, puede utilizar las siguientes pautas.

  • Para las columnas normales, que son aquellas que no son claves principales, columnas de agrupación ni columnas STATIC, utilice el tamaño bruto de los datos de las celdas en función del tipo de datos y añada los metadatos necesarios. Para obtener más información sobre los tipos de datos admitidos en Amazon Keyspaces, consulte Tipos de datos. A continuación se enumeran algunas diferencias clave en la forma en que Amazon Keyspaces almacena los valores de los tipos de datos y los metadatos.

  • El espacio necesario para cada nombre de columna se almacena utilizando un identificador de columna y se añade a cada valor de datos almacenado en la columna. El valor de almacenamiento del identificador de columna depende del número total de columnas de su tabla:

    • De 1 a 62 columnas: 1 byte

    • De 63 a 124 columnas: 2 bytes

    • De 125 a 186 columnas: 3 bytes

    Por cada 62 columnas adicionales, añada 1 byte. Tenga en cuenta que en Amazon Keyspaces se pueden modificar hasta 225 columnas regulares con una única instrucción INSERT o UPDATE. Para obtener más información, consulte Cuotas de servicio de Amazon Keyspaces.

  • Las claves de partición pueden contener hasta 2048 bytes de datos. Cada columna de clave en la clave de partición requiere hasta 3 bytes de metadatos. Al calcular el tamaño de su fila, debe asumir que cada columna de clave de partición utiliza los 3 bytes completos de metadatos.

  • Las columnas de agrupación pueden almacenar hasta 850 bytes de datos. Además del tamaño del valor de los datos, cada columna de agrupación requiere hasta un 20 % del tamaño del valor de los datos para metadatos. Al calcular el tamaño de su fila, debe añadir 1 byte de metadatos por cada 5 bytes de valor de datos de la columna de agrupación.

  • Amazon Keyspaces almacena dos veces el valor de los datos de cada columna de clave de partición y clave de agrupación. La sobrecarga adicional se utiliza para realizar consultas eficientes y para la indexación integrada.

  • Los tipos de datos de cadena ASCII, TEXT y VARCHAR de Cassandra se almacenan todos en Amazon Keyspaces utilizando Unicode con codificación binaria UTF-8. El tamaño de una cadena en Amazon Keyspaces es igual al número de bytes codificados en UTF-8.

  • Los tipos de datos INT, BIGINT, SMALLINT y TINYINT de Cassandra se almacenan en Amazon Keyspaces como valores de datos de longitud variable, con hasta 38 dígitos significativos. Los ceros iniciales y finales se recortan. El tamaño de cualquiera de estos tipos de datos es de aproximadamente 1 byte por cada dos dígitos significativos + 1 byte.

  • Un valor BLOB en Amazon Keyspaces se almacena con la longitud bruta en bytes del valor.

  • El tamaño de un valor Null o un valor Boolean es de 1 byte.

  • Una columna que almacena tipos de datos de colección como LIST o MAP requiere 3 bytes de metadatos, independientemente de su contenido. El tamaño de una LIST o MAP es (id de columna) + suma (tamaño de los elementos anidados) + (3 bytes). El tamaño de una LIST o MAP vacíos es (id de columna) + (3 bytes). Cada elemento LIST o MAP individual también requiere 1 byte de metadatos.

  • Los datos de las columnas STATIC no cuentan para el tamaño máximo de fila de 1 MB. Para calcular el tamaño de los datos de las columnas estáticas, consulte Cálculo de tamaño de columna estática por partición lógica en Amazon Keyspaces.

  • Las marcas de tiempo del lado del cliente se almacenan para cada columna de cada fila cuando la característica está activada. Estas marcas de tiempo ocupan aproximadamente entre 20 y 40 bytes (dependiendo de sus datos) y contribuyen al costo de almacenamiento y rendimiento de la fila. Para obtener más información, consulte Funcionamiento de las marcas de tiempo del lado del cliente en Amazon Keyspaces.

  • Añada 100 bytes al tamaño de cada fila para metadatos de la fila.

El tamaño total de una fila de datos codificada se basa en la siguiente fórmula:

partition key columns + clustering columns + regular columns + row metadata = total encoded size of row
importante

Todos los metadatos de columna, por ejemplo los id de columna, los metadatos de clave de partición, los metadatos de columna de agrupación, así como las marcas de tiempo del lado del cliente y los metadatos de fila cuentan para el tamaño máximo de fila de 1 MB.

Considere el siguiente ejemplo de una tabla en la que todas las columnas son de tipo entero. La tabla tiene dos columnas de clave de partición, dos columnas de agrupación y una columna normal. Dado que esta tabla tiene cinco columnas, el espacio necesario para el identificador de nombre de columna es de 1 byte.

CREATE TABLE mykeyspace.mytable(pk_col1 int, pk_col2 int, ck_col1 int, ck_col2 int, reg_col1 int, primary key((pk_col1, pk_col2),ck_col1, ck_col2));

En este ejemplo, calculamos el tamaño de los datos cuando escribimos una fila en la tabla como se muestra en la siguiente instrucción:

INSERT INTO mykeyspace.mytable (pk_col1, pk_col2, ck_col1, ck_col2, reg_col1) values(1,2,3,4,5);

Para estimar el total de bytes requeridos por esta operación de escritura, puede seguir los siguientes pasos.

  1. Calcule el tamaño de una columna de clave de partición sumando los bytes correspondientes al tipo de datos almacenados en la columna y los bytes de metadatos. Repita este procedimiento para todas las columnas de clave de partición.

    1. Calcule el tamaño de la primera columna de clave de partición (pk_col1):

      (2 bytes for the integer data type) x 2 + 1 byte for the column id + 3 bytes for partition key metadata = 8 bytes
    2. Calcule el tamaño de la segunda columna de clave de partición (pk_col2):

      (2 bytes for the integer data type) x 2 + 1 byte for the column id + 3 bytes for partition key metadata = 8 bytes
    3. Sume ambas columnas para obtener el tamaño total estimado de las columnas de clave de partición:

      8 bytes + 8 bytes = 16 bytes for the partition key columns
  2. Calcule el tamaño de la columna de agrupación sumando los bytes correspondientes al tipo de datos almacenados en la columna y los bytes de metadatos. Repita este procedimiento para todas las columnas de agrupación.

    1. Calcule el tamaño de la primera columna de la columna de agrupación (ck_col1):

      (2 bytes for the integer data type) x 2 + 20% of the data value (2 bytes) for clustering column metadata + 1 byte for the column id = 6 bytes
    2. Calcule el tamaño de la segunda columna de la columna de agrupación (ck_col2):

      (2 bytes for the integer data type) x 2 + 20% of the data value (2 bytes) for clustering column metadata + 1 byte for the column id = 6 bytes
    3. Sume ambas columnas para obtener el tamaño total estimado de las columnas de agrupación:

      6 bytes + 6 bytes = 12 bytes for the clustering columns
  3. Añada el tamaño de las columnas normales. En este ejemplo solo tenemos una columna que almacena un número entero de un dígito, lo que requiere 2 bytes, con 1 byte para el id de columna.

  4. Por último, para obtener el tamaño total de la fila codificada, sume los bytes de todas las columnas y añada los 100 bytes adicionales para los metadatos de la fila:

    16 bytes for the partition key columns + 12 bytes for clustering columns + 3 bytes for the regular column + 100 bytes for row metadata = 131 bytes.

Para obtener información sobre cómo monitorizar los recursos sin servidor con Amazon CloudWatch, consulteSupervisión de Amazon Keyspaces con Amazon CloudWatch.