Operaciones básicas en tablas de DynamoDB - Amazon DynamoDB

Operaciones básicas en tablas de DynamoDB

Al igual que otros sistemas de base de datos, Amazon DynamoDB almacena datos en tablas. Puede administrar las tablas con una pocas operaciones básicas.

Creación de una tabla

Use la operación CreateTable para crear una tabla en Amazon DynamoDB. Para crear la tabla, debe proporcionar la siguiente información:

  • Nombre de la tabla. El nombre debe cumplir las reglas de nomenclatura de DynamoDB y debe ser único para la región y cuenta de AWS actuales. Por ejemplo, puede crear una tabla People en EE. UU. Este (Norte de Virginia) y otra tabla People en Europa (Irlanda). Sin embargo, estas dos tablas serían totalmente distintas entre sí. Para obtener más información, consulte Tipos de datos y reglas de nomenclatura admitidos en Amazon DynamoDB.

  • Clave principal. La clave principal puede constar de un atributo (clave de partición) o dos (clave de partición y clave de ordenación). Debe proporcionar el nombre, el tipo de datos y el rol de cada atributo: HASH (para una clave de partición) y RANGE (para una clave de ordenación). Para obtener más información, consulte Clave principal.

  • Ajustes de rendimiento (de las tablas aprovisionadas). Si utiliza el modo aprovisionado, debe especificar los ajustes iniciales de rendimiento de lectura y escritura de la tabla. Puede modificar esta configuración en otro momento o habilitar la función Auto Scaling de DynamoDB para administrarlos automáticamente. Para obtener más información, consulte Modo de capacidad aprovisionada y Administración automática de la capacidad de rendimiento con la función Auto Scaling de DynamoDB.

Ejemplo 1: creación de una tabla aprovisionada

En el ejemplo siguiente de la AWS CLI se muestra cómo crear una tabla (Music). La clave principal consta de Artist (clave de partición) y SongTitle (clave de ordenación), ambas de tipo String. El desempeño máximo de esta tabla es de 10 unidades de capacidad de lectura y 5 unidades de capacidad de escritura.

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5

La operación CreateTable devuelve metadatos de la tabla, como se muestra a continuación:

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 5, "ReadCapacityUnits": 10 }, "TableSizeBytes": 0, "TableName": "Music", "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397215.37 } }

El componente TableStatus indica el estado actual de la tabla (CREATING). Puede que la tabla tarde un tiempo en crearse, según los valores especificados para ReadCapacityUnits y WriteCapacityUnits. Cuanto mayores sean estos valores, más recursos tendrá que asignar DynamoDB a la tabla.

Ejemplo 2: creación de una tabla bajo demanda

Para crear la misma tabla Music utilizando el modo bajo demanda:

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --billing-mode=PAY_PER_REQUEST

La operación CreateTable devuelve metadatos de la tabla, como se muestra a continuación:

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 0, "ReadCapacityUnits": 0 }, "TableSizeBytes": 0, "TableName": "Music", "BillingModeSummary": { "BillingMode": "PAY_PER_REQUEST" }, "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397468.348 } }
importante

Al llamar a DescribeTable en una tabla bajo demanda, las unidades de capacidad de lectura y de escritura se establecen en 0.

Ejemplo 3: creación de una tabla mediante la clase de tabla de acceso poco frecuente estándar de DynamoDB

Para crear lo misma tabla Music utilizando la clase de tabla de acceso DynamoDB Estándar - Acceso poco frecuente.

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5 \ --table-class STANDARD_INFREQUENT_ACCESS

La operación CreateTable devuelve metadatos de la tabla, como se muestra a continuación:

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 5, "ReadCapacityUnits": 10 }, "TableClassSummary": { "LastUpdateDateTime": 1542397215.37, "TableClass": "STANDARD_INFREQUENT_ACCESS" }, "TableSizeBytes": 0, "TableName": "Music", "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397215.37 } }

Descripción de una tabla

Para ver información detallada sobre una tabla, utilice la operación DescribeTable. Debe proporcionar el nombre de la tabla. El resultado de DescribeTable tiene el mismo formato que el de CreateTable; Incluye la marca temporal del momento de creación de la tabla, su esquema de claves, su configuración de rendimiento aprovisionado, su tamaño aproximado y los índices secundarios (si los hay).

importante

Al llamar a DescribeTable en una tabla bajo demanda, las unidades de capacidad de lectura y de escritura se establecen en 0.

ejemplo
aws dynamodb describe-table --table-name Music

La tabla está lista para usarla cuando el valor de TableStatus cambia de CREATING a ACTIVE.

nota

Si emite una solicitud DescribeTable inmediatamente después de una solicitud CreateTable, DynamoDB podría devolver un error (ResourceNotFoundException). El motivo es que DescribeTable usa una consulta con consistencia final, aunque los metadatos de la tabla podrían no estar disponibles todavía. Espere unos segundos y repita la solicitud DescribeTable.

A efectos de facturación, los costes de almacenamiento de DynamoDB incluyen un importe por elemento de 100 bytes en concepto de gastos generales. (Para obtener más información, consulte los precios de DynamoDB). Este importe adicional de 100 bytes por elemento no se utiliza al calcular las unidades de capacidad ni en la operación DescribeTable.

Actualización de una tabla

La operación UpdateTable permite realizar una de las acciones siguientes:

ejemplo

En el siguiente ejemplo de la AWS CLI se muestra cómo modificar los ajustes de desempeño provisionado de una tabla:

aws dynamodb update-table --table-name Music \ --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10
nota

Cuando se emite una solicitud UpdateTable, el estado de la tabla cambia de AVAILABLE a UPDATING. La tabla permanece plenamente disponible para su uso mientras se encuentra en el estado UPDATING. Cuando este proceso finaliza, el estado de la tabla cambia de UPDATING a AVAILABLE.

ejemplo

En el siguiente ejemplo de la AWS CLI se muestra cómo modificar el modo de capacidad de lectura/escritura de una tabla al modo bajo demanda:

aws dynamodb update-table --table-name Music \ --billing-mode PAY_PER_REQUEST

Eliminación de una tabla

Puede eliminar las tablas que no utilice con la operación DeleteTable. La eliminación de una tabla es una operación irrecuperable.

ejemplo

En el ejemplo siguiente de AWS CLI, se muestra cómo se elimina una tabla.

aws dynamodb delete-table --table-name Music

Cuando se emite una solicitud DeleteTable, el estado de la tabla cambia de ACTIVE a DELETING. Puede que la tabla tarde un tiempo en eliminarse, según los recursos que utilice; por ejemplo, los datos almacenados en la tabla y las secuencias o índices que contenga.

Cuando la operación DeleteTable concluya, la tabla ya no existirá en DynamoDB.

Uso de la protección contra eliminación

Puede proteger una tabla contra la eliminación accidental con la propiedad de protección contra la eliminación. Activar esta propiedad para las tablas contribuye a garantizar que las tablas no se eliminen accidentalmente durante las operaciones habituales de administración de tablas por parte de sus administradores. De este modo evitará que se interrumpan las operaciones de negocio normales.

El propietario de la tabla o un administrador autorizado controla la propiedad de protección contra la eliminación de cada tabla. La propiedad de protección contra eliminación para cada tabla está desactivada de forma predeterminada. Se incluyen las réplicas globales y las tablas restauradas a partir de copias de seguridad. Cuando la protección contra el borrado está desactivada para una tabla, ésta puede ser eliminada por cualquier usuario autorizado por una política de Identity and Access Management (IAM). Cuando la protección contra la eliminación está activada para una tabla, nadie puede eliminarla.

Para cambiar esta configuración, vaya a la configuración adicional de la tabla, navegue al panel Protección contra eliminación y seleccione Habilitar protección contra eliminaciones.

La propiedad de protección contra eliminación se admite en la consola de DynamoDB, API, CLI/SDK y AWS CloudFormation. La API CreateTable admite la propiedad de protección contra eliminación en el momento de creación de la tabla y la API UpdateTable admite el cambio de la propiedad de protección contra eliminación para las tablas existentes.

nota
  • Si se elimina una cuenta de AWS, todos los datos de esa cuenta, incluidas las tablas, se eliminan igualmente en un plazo de 90 días.

  • Si DynamoDB pierde el acceso a una clave administrada por el cliente que se utilizó para cifrar una tabla, seguirá archivando la tabla. Archivar implica hacer una copia de seguridad de la tabla y eliminar el original.

Enumeración de nombres de tablas

La operación ListTables devuelve los nombres de las tablas de DynamoDB de la región y cuenta de AWS actuales.

ejemplo

En el siguiente ejemplo de la AWS CLI se muestra cómo enumerar los nombres de las tablas de DynamoDB.

aws dynamodb list-tables

Descripción de las cuotas de rendimiento aprovisionado

La operación DescribeLimits devuelve las cuotas vigentes de capacidad de lectura y escritura de la región y cuenta de AWS actuales.

ejemplo

En el siguiente ejemplo de la AWS CLI se muestra cómo describir las cuotas de rendimiento aprovisionado actuales.

aws dynamodb describe-limits

El resultado muestra las cuotas superiores de unidades de capacidad de lectura y escritura de la región y cuenta de AWS actuales.

Para obtener más información acerca de estas cuotas y cómo solicitar un aumento de cuotas, consulte Cuotas de rendimiento predeterminadas.