Como trabalhar com linhas no Amazon Keyspaces - Amazon Keyspaces (para Apache Cassandra)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como trabalhar com linhas no Amazon Keyspaces

Esta seção fornece detalhes sobre como trabalhar com linhas no Amazon Keyspaces (para Apache Cassandra). As tabelas são as principais estruturas de dados no Amazon Keyspaces e os dados nas tabelas são organizados em colunas e linhas.

Como calcular o tamanho da linha no Amazon Keyspaces

O Amazon Keyspaces fornece armazenamento totalmente gerenciado que oferece desempenho de leitura e gravação de milissegundos de um dígito e armazena dados de forma durável em várias zonas de disponibilidade. AWS O Amazon Keyspaces anexa metadados a todas as linhas e colunas de chave primária para oferecer suporte ao acesso eficiente aos dados e à alta disponibilidade.

Esta seção fornece detalhes sobre como estimar o tamanho codificado das linhas no Amazon Keyspaces. O tamanho codificado das linhas é usado ao calcular o uso da fatura e da cota. Você também deve usar o tamanho codificado das linhas ao calcular os requisitos de capacidade de throughput provisionada para tabelas. Para calcular o tamanho codificado das linhas no Amazon Keyspaces, é possível usar as diretrizes a seguir.

  • Para colunas regulares, que não são chaves primárias, colunas de clustering ou colunas STATIC, use o tamanho bruto dos dados da célula com base no tipo de dados e adicione os metadados necessários. Para obter mais informações sobre os tipos de dados suportados no Amazon Keyspaces, consulte Tipos de dados. Algumas diferenças importantes na forma como o Amazon Keyspaces armazena valores de tipos de dados e metadados estão listadas abaixo.

  • O espaço necessário para cada nome de coluna é armazenado usando um identificador de coluna e adicionado a cada valor de dados armazenado na coluna. O valor de armazenamento do identificador da coluna depende do número geral de colunas em sua tabela:

    • 1 a 62 colunas: 1 byte

    • 63 a 124 colunas: 2 bytes

    • 125 a 186 colunas: 3 bytes

    Para cada 62 colunas adicionais, adicione 1 byte. Observe que, no Amazon Keyspaces, até 225 colunas regulares podem ser modificadas com uma única instrução INSERT ou UPDATE. Para ter mais informações, consulte Service Quotas do Amazon Keyspaces.

  • As chaves de partição podem conter até 2.048 bytes de dados. Cada coluna de chave na chave de partição requer até 3 bytes de metadados. Ao calcular o tamanho da sua linha, você deve assumir que cada coluna de chave de partição usa os 3 bytes completos de metadados.

  • As colunas de clustering podem armazenar até 850 bytes de dados. Além do tamanho do valor dos dados, cada coluna de clustering exige até 20% do tamanho do valor dos dados para metadados. Ao calcular o tamanho da sua linha, você deve adicionar 1 byte de metadados para cada 5 bytes do valor dos dados da coluna de clustering.

  • O Amazon Keyspaces armazena o valor dos dados de cada chave de partição e coluna de chave de clustering duas vezes. A sobrecarga extra é usada para consultas eficientes e indexação integrada.

  • Os tipos de dados string Cassandra ASCII, TEXT e VARCHAR são todos armazenados no Amazon Keyspaces usando Unicode com codificação binária UTF-8. O tamanho de uma string no Amazon Keyspaces é igual ao número de bytes codificados em UTF-8.

  • Os tipos de dados Cassandra INT, BIGINT, SMALLINT e TINYINT são armazenados no Amazon Keyspaces como valores de dados com comprimento variável, com até 38 dígitos significativos. Zeros iniciais e finais são cortados. O tamanho de qualquer um desses tipos de dados é de aproximadamente 1 byte por dois dígitos significativos + 1 byte.

  • Um BLOB no Amazon Keyspaces é armazenado com o comprimento bruto do byte do valor.

  • O tamanho de um valor Null ou valor Boolean é de 1 byte.

  • Uma coluna que armazena tipos de dados de coleção como LIST ou MAP exige 3 bytes de metadados, independentemente de seu conteúdo. O tamanho de um LIST ou MAP é (id da coluna) + soma (tamanho dos elementos aninhados) + (3 bytes). O tamanho de um LIST ou MAP vazio é (id da coluna) + (3 bytes). Cada elemento individual LIST ou MAP também exige 1 byte de metadados.

  • Os dados da coluna STATIC não contam para o tamanho máximo da linha de 1 MB. Para calcular o tamanho dos dados das colunas estáticas, consulte Como calcular o tamanho estático da coluna por partição lógica no Amazon Keyspaces.

  • Os registros de data/hora do lado do cliente são armazenados para cada coluna em cada linha quando o atributo é ativado. Esses carimbos de data/hora ocupam aproximadamente 20 a 40 bytes (dependendo dos seus dados) e contribuem para o custo de armazenamento e throughput da linha. Para ter mais informações, consulte Como trabalhar com carimbos de data/hora do lado do cliente no Amazon Keyspaces.

  • Adicione 100 bytes ao tamanho de cada linha para os metadados da linha.

O tamanho total de uma linha de dados codificada é baseado na seguinte fórmula:

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

Todos os metadados da coluna, por exemplo, ids de coluna, metadados de chave de partição, metadados de colunas de agrupamento, bem como registros de data/hora do lado do cliente e metadados de linha, contam para o tamanho máximo de linha de 1 MB.

Considere o exemplo a seguir de uma tabela em que todas as colunas são do tipo inteiro. A tabela tem duas colunas de chave de partição, duas colunas de clustering e uma coluna regular. Como essa tabela tem cinco colunas, o espaço necessário para o identificador do nome da coluna é 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));

Neste exemplo, calculamos o tamanho dos dados quando escrevemos uma linha na tabela, conforme mostrado na instrução a seguir:

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

Para estimar o total de bytes exigidos por essa operação de gravação, você pode usar as etapas a seguir.

  1. Calcule o tamanho de uma coluna de chave de partição adicionando os bytes do tipo de dados armazenado na coluna e os bytes de metadados. Repita isso para todas as colunas da chave de partição.

    1. Calcule o tamanho da primeira coluna da chave de partição (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 o tamanho da segunda coluna da chave de partição (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. Adicione as duas colunas para obter o tamanho total estimado das colunas da chave de partição:

      8 bytes + 8 bytes = 16 bytes for the partition key columns
  2. Calcule o tamanho de uma coluna de clustering adicionando os bytes do tipo de dados armazenado na coluna e os bytes de metadados. Repita isso para todas as colunas de clustering.

    1. Calcule o tamanho da primeira coluna de clustering (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 o tamanho da segunda coluna de clustering (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. Adicione as duas colunas para obter o tamanho total estimado das colunas de clustering:

      6 bytes + 6 bytes = 12 bytes for the clustering columns
  3. Adicione o tamanho das colunas regulares. Neste exemplo, temos apenas uma coluna que armazena um número inteiro de um único dígito, o que requer 2 bytes com 1 byte para o id da coluna.

  4. Por fim, para obter o tamanho total da linha codificada, some os bytes para todas as colunas e adicione os 100 bytes adicionais para os metadados da linha:

    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 saber como monitorar recursos sem servidor com a Amazon CloudWatch, consulte. Monitorando o Amazon Keyspaces com a Amazon CloudWatch