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.
Temas
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 tablaPeople
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) yRANGE
(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 de DynamoDB 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 DynamoDBDescribeTable
.
Actualización de una tabla
La operación UpdateTable
permite realizar una de las acciones siguientes:
-
Modificar los ajustes de rendimiento aprovisionado de una tabla (para las tablas en modo aprovisionado).
-
Cambiar el modo de capacidad de lectura/escritura de la tabla.
-
Manipular los índices secundarios globales de la tabla (consulte Uso de índices secundarios globales en DynamoDB).
-
Habilite o desactive los DynamoDB Streams en la tabla (consulte Captura de datos de cambios para DynamoDB Streams).
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.