Almacenar y recuperar datos con DynamoDB - SDK para móviles de AWS

El AWS SDK para móviles de Xamarin ahora está incluido en AWS SDK for .NET. Esta guía hace referencia a la versión archivada del SDK para móviles para Xamarin.

Almacenar y recuperar datos con DynamoDB

Amazon DynamoDB es un servicio de base de datos no relacional rentable y rápido, de alta disponibilidad y de alta escalabilidad. DynamoDB elimina las limitaciones tradicionales de escalabilidad del almacenamiento de datos y, al mismo tiempo, mantiene una baja latencia y un desempeño previsible.

En el tutorial siguiente se explica cómo integrar el modelo de persistencia de objetos de DynamoDB con su aplicación, que almacena objetos en DynamoDB.

Configuración del proyecto

Requisitos previos

Debe seguir las instrucciones en Setting Up the AWS Mobile SDK for .NET and Xamarin antes de comenzar este tutorial.

Creación de una tabla de DynamoDB

Antes de leer y escribir datos en una base de datos de DynamoDB, debe crear una tabla. Al crear una tabla, debe especificar la clave principal. La clave principal se compone de un atributo de hash y un atributo de rango opcional. Para obtener más información sobre cómo se usan los atributos principales y de rango, consulte Uso de las tablas.

  1. Vaya a la consola de DynamoDB y, a continuación, haga clic en Create Table (Crear tabla). Aparece el asistente para crear tablas.

  2. Especifique el nombre de la tabla, el tipo de clave principal (Hash) y el nombre de atributo de ("Id"), tal como se muestra más abajo, y, a continuación, haga clic en Continue (Continuar):

    DynamoDB table creation interface showing table name, primary key type, and hash attribute configuration.
  3. Deje vacíos los campos de edición en la siguiente pantalla y haga clic en Continue (Continuar).

  4. Acepte los valores predeterminados de Read Capacity Units (Unidades de capacidad de lectura) y Write Capacity Units (Unidades de capacidad de escritura). Haga clic en Continue (Continuar).

  5. En la pantalla siguiente escriba su dirección de correo electrónico en el cuadro de texto Send notification to: (Enviar notificación a:) y haga clic en Continue (Continuar). Aparece la pantalla de revisión.

  6. Haga clic en Create (Crear). La tabla puede tardar unos minutos en crearse.

Definición de permisos para DynamoDB

Para que el grupo de identidades obtenga acceso a Amazon DynamoDB, debe modificar los roles del grupo de identidades.

  1. Vaya a la consola de Identity and Access Management y haga clic en Roles en el panel izquierdo. Busque el nombre del grupo de identidades; se mostrarán dos roles: uno para los usuarios autenticados y otro para los no autenticados.

  2. Haga clic en el rol de los usuarios no autenticados (el nombre del grupo de identidades tendrá añadido el texto "unauth") y haga clic en Create Role Policy (Crear política de rol).

  3. Seleccione Policy Generator (Generador de políticas) y haga clic en Select (Seleccionar).

  4. En la página Edit Permissions (Editar permisos), escriba la configuración que se muestra en la imagen siguiente. El nombre de recurso de Amazon (ARN) de una tabla de DynamoDB es parecido a arn:aws:dynamodb:us-west-2:123456789012:table/Books y se compone de la región en la que se encuentra la tabla, el número de cuenta de AWS del propietario y el nombre de la tabla con el formato table/Books. Para obtener más información sobre la especificación de ARN, consulte Nombres de recurso de Amazon para DynamoDB.

    Edit Permissions page for Amazon DynamoDB with Allow effect and ARN input field.
  5. Haga clic en Add Statement (Añadir declaración) y, a continuación, en Next Step (Siguiente paso). El asistente le mostrará la configuración generada.

  6. Haga clic en Apply Policy (Aplicar política).

Agregar el paquete NuGet para DynamoDB a su proyecto

Siga el paso 4 de las instrucciones en Configuración del AWS Mobile SDK para .NET y Xamarin para agregar el paquete NuGet de DynamoDB a su proyecto.

Inicializar AmazonDynamoDBClient

Pase el proveedor de credenciales de Amazon Cognito inicializado y la región al constructor AmazonDynamoDB; a continuación, envíe el cliente a DynamoDBContext:

var client = new AmazonDynamoDBClient(credentials,region); DynamoDBContext context = new DynamoDBContext(client);

Crear una clase

Para escribir una fila en la tabla, defina una clase que contenga los datos de fila. La clase también debe contener propiedades que contengan los datos de atributo de la fila y se mapeará a la tabla de DynamoDB creada en la consola. La siguiente declaración de clase ilustra una clase de este tipo:

[DynamoDBTable("Books")] public class Book { [DynamoDBHashKey] // Hash key. public int Id { get; set; } public string Title { get; set; } public string ISBN { get; set; } public int Price { get; set; } public string PageCount { get; set; } public string Author{ get; set; } }

Almacenamiento de un elemento

Para guardar un elemento, primero debe crear un objeto:

Book songOfIceAndFire = new Book() { Id=1, Title="Game Of Thrones", ISBN="978-0553593716", Price=4, PageCount="819", Author="GRRM" };

A continuación, guárdelo:

context.Save(songOfIceAndFire);

Para actualizar una fila, modifique la instancia de la clase DDTableRow y llame a AWSDynamoObjectMapper.save(), tal como se muestra más arriba.

Recuperación de un elemento

Recuperar un elemento con una clave principal:

Book retrievedBook = context.Load<Book>(1);

Actualización de un elemento

Para actualizar un elemento:

Book retrievedBook = context.Load<Book>(1); retrievedBook.ISBN = "978-0553593716"; context.Save(retrievedBook);

Eliminación de un elemento

Para eliminar un elemento:

Book retrievedBook = context.Load<Book>(1); context.Delete(retrievedBook);

Para obtener más información sobre el acceso a DynamoDB desde una aplicación de Xamarin, consulte Amazon DynamoDB.