View a markdown version of this page

Estimación del tamaño 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.

Estimación 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 este tema se proporciona información sobre cómo calcular el tamaño codificado de las filas en Amazon Keyspaces. El tamaño codificado de fila se utiliza al calcular su factura y el uso de cuotas. También puede usar el tamaño de fila codificado al estimar los requisitos de capacidad de rendimiento aprovisionados para las tablas.

Para calcular el tamaño codificado de fila en Amazon Keyspaces, puede utilizar las siguientes pautas.

Calcule el tamaño codificado de las columnas

En esta sección se muestra cómo estimar el tamaño codificado de las columnas en Amazon Keyspaces.

  • Columnas normales: en el caso de las columnas normales, que son columnas que no son claves principales, columnas agrupadas o STATIC columnas, utilice el tamaño original de los datos de las celdas en función del tipo de datos y añada los metadatos necesarios. Los tipos de datos y algunas diferencias clave en la forma en que Amazon Keyspaces almacena los valores de los tipos de datos y los metadatos se detallan en la siguiente sección.

  • Columnas de claves de partición: 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.

  • Columnas de agrupamiento: las columnas de agrupamiento 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.

    nota

    Para facilitar las consultas eficientes y la indexación integrada, Amazon Keyspaces almacena dos veces el valor de los datos de cada clave de partición y columna de clave de agrupamiento.

  • Nombres de columna: el espacio necesario para cada nombre de columna se almacena mediante 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.

Calcule el tamaño codificado de los valores de datos en función del tipo de datos

En esta sección se muestra cómo estimar el tamaño codificado de distintos tipos de datos en Amazon Keyspaces.

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

  • Tipos numéricos: CassandraINT,BIGINT, SMALLINTTINYINT, y VARINT los tipos de datos se almacenan en Amazon Keyspaces como valores de datos con 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.

  • Tipo de blob: A BLOB en Amazon Keyspaces se almacena con la longitud bruta en bytes del valor.

  • Tipo booleano: el tamaño de un Boolean valor o un Null valor es de 1 byte.

  • Tipos de recopilación: columna que almacena tipos de datos de recopilación, como metadatos LIST o que MAP requiere 3 bytes, 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.

  • User-defined tipos: un tipo definido por el usuario (UDT) requiere 3 bytes para los metadatos, independientemente de su contenido. Para cada elemento UDT, Amazon Keyspaces requiere 1 byte adicional de metadatos.

    Para calcular el tamaño codificado de una UDT, comience con los field name y field value para los campos de una UDT:

    • nombre de campo: cada nombre de campo de la UDT de nivel superior se almacena mediante un identificador. El valor de almacenamiento del identificador depende del número total de campos de la UDT de nivel superior y puede variar entre 1 y 3 bytes:

      • De 1 a 62 campos: 1 byte

      • 63 a 124 campos: 2 bytes

      • 125 campos como máximo: 3 bytes

    • valor de campo: los bytes necesarios para almacenar los valores de campo de la UDT de nivel superior dependen del tipo de datos almacenados:

      • Tipo de datos escalares: los bytes necesarios para el almacenamiento son los mismos que para el mismo tipo de datos almacenado en una columna normal.

      • UDT congelado: para cada UDT anidado congelado, el UDT anidado tiene el mismo tamaño que tendría en el protocolo binario CQL. En el caso de una UDT anidada, se almacenan 4 bytes para cada campo (incluidos los campos vacíos) y el valor del campo almacenado es el formato de serialización del valor del campo mediante el protocolo binario CQL.

      • Colecciones congeladas:

        • LIST y SET: en el caso de una LIST o más congeladas anidadasSET, se almacenan 4 bytes para cada elemento de la colección más el formato de serialización del protocolo binario CQL del valor de la colección.

        • MAPA: en el caso de una congelación anidadaMAP, cada par clave-valor tiene los siguientes requisitos de almacenamiento:

          • Para cada clave, asigne 4 bytes y, a continuación, añada el formato de serialización del protocolo binario CQL de la clave.

          • Para cada valor, asigne 4 bytes y, a continuación, añada el formato de serialización del protocolo binario CQL del valor.

  • Palabra clave CONGELADA: en el caso de las colecciones congeladas anidadas dentro de colecciones congeladas, Amazon Keyspaces no requiere bytes adicionales para los metadatos.

  • Palabra clave estática: los datos de las STATIC columnas no se tienen en cuenta 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.

Tenga en cuenta el impacto de las funciones de Amazon Keyspaces en el tamaño de las filas

En esta sección se muestra cómo las Client-side marcas de tiempo y las funciones Time to Live (TTL) de Amazon Keyspaces afectan al tamaño codificado de una fila.

Cuando se activan las marcas de tiempo del lado del cliente o se utiliza el TTL (mediante la USING TTL cláusula), se almacenan metadatos adicionales para cada columna de cada fila de la tabla. Además, los metadatos también se pueden almacenar para cada elemento en el caso de determinados tipos de datos de recopilación. La siguiente tabla muestra la sobrecarga de metadatos para cada tipo de datos.

Column/Data Escriba Client-side marcas de tiempo habilitadas TTL sin marcas de tiempo del lado del cliente Client-side marcas de tiempo habilitadas con TTL
Tipos escalares 18 bytes/column 16 bytes/column 27 bytes/column
Colección Frozen, Frozen UDT, Tuple 18 bytes/column 16 bytes/column 27 bytes/column
Non-frozen Lista 30 bytes/element + 19 bytes/column 15 bytes/element 39 bytes/element + 19 bytes/column
Non-frozen Set 14 bytes/element + 26 bytes/column 12 bytes/element + 7 bytes/column 23 bytes/element + 26 bytes/column
Non-frozen Mapa/ Non-frozen UDT 17 bytes/element + 26 bytes/column 15 bytes/element + 7 bytes/column 26 bytes/element + 26 bytes/column
Contador (región única) 51 bytes/column N/A (sin soporte TTL) N/A (sin soporte TTL)
Contador (multirregional) 25 + (N_Regiones × 26) bytes/column N/A (sin soporte TTL) N/A (sin soporte TTL)

Estos bytes de metadatos se tienen en cuenta para la cuota de 1 MB de tamaño de fila. En la fórmula del contador, N_Regions representa el número de AWS regiones en las que la columna del contador ha recibido al menos una operación de escritura. Los valores generales del contador son aproximados y pueden variar ligeramente. Para obtener más información sobre las marcas horarias del lado del cliente, consulte. Client-side marcas de tiempo en Amazon Keyspaces Para obtener más información sobre TTL, consulte Caducidad de datos con período de vida (TTL) para Amazon Keyspaces (para Apache Cassandra).

Elija la fórmula correcta para calcular el tamaño codificado de una fila

En esta sección se muestran las distintas fórmulas que puede utilizar para estimar los requisitos de almacenamiento o capacidad de procesamiento de una fila de datos en Amazon Keyspaces.

El tamaño total codificado de una fila de datos se puede estimar en función de una de las siguientes fórmulas, en función de su objetivo:

  • Capacidad de rendimiento: para estimar el tamaño codificado de una fila a fin de evaluar las unidades de read/write solicitud (RRUs/WRUs) o las unidades de read/write capacidad (RCUs/WCUs) requeridas:

    total encoded size of row = partition key columns + clustering columns + regular columns
  • Tamaño de almacenamiento: para estimar el tamaño codificado de una fila y predecirloBillableTableSizeInBytes, añada los metadatos necesarios para el almacenamiento de la fila:

    total encoded size of row = partition key columns + clustering columns + regular columns + row metadata (100 bytes)
importante

Todos los metadatos de las columnas (por ejemplo, los identificadores de columna, los metadatos de las claves de partición, los metadatos de las columnas agrupadas en clústeres, así como las marcas de tiempo del cliente, el TTL y los metadatos de las filas) cuentan para el tamaño máximo de fila de 1 MB.

Ejemplo de cálculo del tamaño de fila

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, suma los bytes de todas las columnas. Para calcular el tamaño facturable del almacenamiento, añada los 100 bytes adicionales para los metadatos de las filas:

    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.