Uso de tablas en DynamoDB en .NET - Amazon DynamoDB

Uso de tablas en DynamoDB en .NET

Puede utilizar AWS SDK for .NET para crear, actualizar y eliminar tablas, enumerar todas las tablas de la cuenta u obtener información sobre una tabla concreta.

A continuación se indican los pasos comunes para las operaciones con tablas de Amazon DynamoDB mediante AWS SDK for .NET.

  1. Cree una instancia de la clase AmazonDynamoDBClient (el cliente).

  2. Cree los objetos de solicitud correspondientes para proporcionar los parámetros obligatorios y opcionales de la operación.

    Por ejemplo, cree un objeto CreateTableRequest para crear una tabla y un objeto UpdateTableRequest para actualizar una tabla existente.

  3. Ejecute el método apropiado proporcionado por el cliente que ha creado en el paso anterior.

nota

Los ejemplos que aparecen en esta sección no funcionan con .NET Core, ya que no es compatible con los métodos síncronos. Para obtener más información, consulte API Asynchronous para .NET de AWS.

Creación de una tabla

Para crear una tabla, debe proporcionar el nombre de la tabla, su clave principal y los valores de rendimiento aprovisionado.

Para crear una tabla utilizando la API de bajo nivel del AWS SDK for .NET

  1. Cree una instancia de la clase AmazonDynamoDBClient.

  2. Cree una instancia de la clase CreateTableRequest para proporcionar la información de solicitud.

    Debe proporcionar el nombre de la tabla, su clave principal y los valores de rendimiento aprovisionado.

  3. Ejecute el método AmazonDynamoDBClient.CreateTable proporcionando el objeto de solicitud como parámetro.

En el siguiente ejemplo de C# se ponen en práctica los pasos anteriores. En el ejemplo se crea una tabla (ProductCatalog) que utiliza el Id como clave principal y un conjunto de valores de rendimiento aprovisionado. Según los requisitos de aplicación, puede actualizar los valores de rendimiento aprovisionado mediante la API UpdateTable.

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new CreateTableRequest { TableName = tableName, AttributeDefinitions = new List<AttributeDefinition>() { new AttributeDefinition { AttributeName = "Id", AttributeType = "N" } }, KeySchema = new List<KeySchemaElement>() { new KeySchemaElement { AttributeName = "Id", KeyType = "HASH" //Partition key } }, ProvisionedThroughput = new ProvisionedThroughput { ReadCapacityUnits = 10, WriteCapacityUnits = 5 } }; var response = client.CreateTable(request);

Debe esperar hasta que DynamoDB cree la tabla y establezca el estado de esta última en .ACTIVE La respuesta de CreateTable incluye la propiedad TableDescription que proporciona la información necesaria sobre la tabla.

ejemplo

var result = response.CreateTableResult; var tableDescription = result.TableDescription; Console.WriteLine("{1}: {0} \t ReadCapacityUnits: {2} \t WriteCapacityUnits: {3}", tableDescription.TableStatus, tableDescription.TableName, tableDescription.ProvisionedThroughput.ReadCapacityUnits, tableDescription.ProvisionedThroughput.WriteCapacityUnits); string status = tableDescription.TableStatus; Console.WriteLine(tableName + " - " + status);

También puede llamar al método DescribeTable del cliente para obtener información sobre la tabla en cualquier momento.

ejemplo

var res = client.DescribeTable(new DescribeTableRequest{TableName = "ProductCatalog"});

Actualización de una tabla

Solamente se pueden actualizar los valores de rendimiento aprovisionado de una tabla existente. Según los requisitos de su aplicación, es posible que tenga que actualizar estos valores.

nota

Puede aumentar la capacidad de rendimiento con la frecuencia que desee y reducirla con ciertas restricciones. Para obtener más información sobre las reducciones y los incrementos de rendimiento diarios, consulte Cuotas de servicio, cuenta y tabla en Amazon DynamoDB.

Para actualizar una tabla utilizando la API de bajo nivel del AWS SDK for .NET

  1. Cree una instancia de la clase AmazonDynamoDBClient.

  2. Cree una instancia de la clase UpdateTableRequest para proporcionar la información de solicitud.

    Debe proporcionar el nombre de la tabla y los nuevos valores de rendimiento aprovisionado.

  3. Ejecute el método AmazonDynamoDBClient.UpdateTable proporcionando el objeto de solicitud como parámetro.

En el siguiente ejemplo de C# se ponen en práctica los pasos anteriores.

ejemplo

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ExampleTable"; var request = new UpdateTableRequest() { TableName = tableName, ProvisionedThroughput = new ProvisionedThroughput() { // Provide new values. ReadCapacityUnits = 20, WriteCapacityUnits = 10 } }; var response = client.UpdateTable(request);

Eliminación de una tabla

Siga estos pasos para eliminar una tabla mediante la API de bajo nivel de .NET.

Para eliminar una tabla utilizando la API de bajo nivel del AWS SDK for .NET

  1. Cree una instancia de la clase AmazonDynamoDBClient.

  2. Cree una instancia de la clase DeleteTableRequest y proporcione el nombre de la tabla que desea eliminar.

  3. Ejecute el método AmazonDynamoDBClient.DeleteTable proporcionando el objeto de solicitud como parámetro.

En el siguiente ejemplo de código C# se ponen en práctica los pasos anteriores.

ejemplo

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ExampleTable"; var request = new DeleteTableRequest{ TableName = tableName }; var response = client.DeleteTable(request);

Enumeración de tablas

Para enumerar las tablas de la cuenta mediante la API de bajo nivel del AWS SDK for .NET, cree una instancia de AmazonDynamoDBClient y ejecute el método ListTables.

La operación ListTables no requiere parámetros. Sin embargo, puede especificar parámetros opcionales. Por ejemplo, puede establecer el parámetro Limit si desea usar la paginación para limitar el número de nombres de tablas por página. Para ello, debe crear un objeto ListTablesRequest y proporcionar parámetros opcionales, como se muestra en el siguiente ejemplo de C#. Además del tamaño de página, la solicitud establece el parámetro ExclusiveStartTableName. Inicialmente, el valor de ExclusiveStartTableName es null. Sin embargo, para recuperar la siguiente página de resultados después de obtener la primera de ellas, deberá establecer el valor de este parámetro en la propiedad LastEvaluatedTableName del resultado actual.

ejemplo

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); // Initial value for the first page of table names. string lastEvaluatedTableName = null; do { // Create a request object to specify optional parameters. var request = new ListTablesRequest { Limit = 10, // Page size. ExclusiveStartTableName = lastEvaluatedTableName }; var response = client.ListTables(request); ListTablesResult result = response.ListTablesResult; foreach (string name in result.TableNames) Console.WriteLine(name); lastEvaluatedTableName = result.LastEvaluatedTableName; } while (lastEvaluatedTableName != null);