Amazon 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.

Amazon DynamoDB

¿Qué es Amazon DynamoDB?

Amazon DynamoDB es un servicio de bases de datos no relacionales rápido y con un alto grado de 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.

Conceptos clave

El modelo de datos de DynamoDB incluye conceptos como las tablas, los elementos y los atributos.

Tablas

En Amazon DynamoDB, una base de datos es una colección de tablas. Una tabla es una colección de elementos y cada elemento es una colección de atributos.

En una base de datos relacional, una tabla tiene un esquema predefinido como, por ejemplo, el nombre de la tabla, la clave principal, la lista de los nombres de columnas y los tipos de datos de estas. Todos los registros almacenados en la tabla deben tener el mismo conjunto de columnas. En cambio, DynamoDB solo requiere que una tabla tenga una clave principal, pero no es necesario que se definan todos los nombres de atributos y los tipos de datos de antemano.

Para obtener más información acerca del procedimiento para trabajar con tablas, consulte Uso de tablas en DynamoDB.

Elementos y atributos

Cada elemento de una tabla de DynamoDB puede tener cualquier número de atributos, aunque existe un límite de 400 KB para el tamaño del elemento. El tamaño de un elemento es la suma de las longitudes de los nombres y los valores de sus atributos (longitudes binarias y UTF-8).

Cada atributo de un elemento es un par nombre-valor. Un atributo puede tener un valor único o un conjunto de varios valores (atributo multivalor). Por ejemplo, un elemento de libro puede tener atributos de título y autores. Cada libro tiene un título, pero puede tener muchos autores. El atributo multivalor es un conjunto. No se admiten los valores duplicados.

Por ejemplo, imagine que desea almacenar un catálogo de productos en DynamoDB. Puede crear una tabla, ProductCatalog, en la que el atributo ID sea la clave principal. La clave principal identifica de forma única a cada elemento, de forma que en la tabla no puede haber dos productos con el mismo ID.

Para obtener más información acerca del trabajo con elementos, consulte Uso de elementos en DynamoDB.

Tipos de datos

Amazon DynamoDB admite los siguientes tipos de datos:

  • Tipos escalares: número, cadena, binario, booleano y nulo.

  • Tipos multivalor: conjunto de cadenas, conjunto de números y conjunto binario.

  • Tipos de documentos: lista y mapa.

Para obtener más información acerca de los tipos de datos escalares, los tipos de datos multivalor y los tipos de datos de documentos, consulte Tipos de datos de DynamoDB.

Clave principal

Al crear una tabla, además de asignarle un nombre, debe especificar su clave principal. La clave principal identifica de forma única a cada elemento de la tabla, de manera que no puede haber dos elementos con la misma clave. DynamoDB admite los dos tipos siguientes de claves principales:

  • Clave hash: la clave principal se compone de un atributo hash. DynamoDB genera un índice hash desordenado basado en este atributo de la clave principal. Cada elemento de la tabla se identifica de forma única por medio de su valor de clave hash.

  • Clave hash y de rango: la clave principal se compone de dos atributos. El primer atributo es el atributo hash y el segundo es el atributo de rango. DynamoDB crea un índice hash sin ordenar basado en el atributo hash de la clave principal y un índice de rango ordenado basado en el atributo de rango de la clave principal. Cada elemento de la tabla se identifica de forma única por medio de la combinación de sus valores de clave hash y de rango. Dos elementos pueden tener el mismo valor de clave hash, pero deben tener diferentes valores de clave de rango.

Índices secundarios

Cuando cree una tabla con una clave hash y de rango, puede definir uno o varios índices secundarios en dicha tabla. Un índice secundario le permite consultar los datos de la tabla usando una clave alternativa, además de realizar consultas basadas en la clave principal.

DynamoDB admite dos tipos de índices secundarios: los índices secundarios locales y los índices secundarios globales.

  • Índice secundario local: un índice que tiene la misma clave hash que la tabla, pero una clave de rango diferente.

  • Índice secundario global: un índice con una clave hash y de rango que puede diferir de las claves de la tabla.

Puede definir un máximo de 5 índices secundarios globales y 5 índices secundarios locales por cada tabla. Para obtener más información, consulte Uso de índices secundarios para mejorar el acceso a los datos en DynamoDB en la Guía para desarrolladores de DynamoDB.

Consulta y examen

Además de utilizar las claves principales para obtener acceso a los elementos, Amazon DynamoDB proporciona dos API para realizar búsquedas en los datos: consulta y examen. Es recomendable que lea Guidelines for Query and Scan en la Guía para desarrolladores de DynamoDB para familiarizarse con algunas prácticas recomendadas.

Consulta

Una operación de consulta (Query) encuentra los elementos de una tabla o un índice secundario usando únicamente los valores de los atributos de la clave principal. Debe proporcionar un nombre de atributo de clave hash y un valor para la búsqueda. Si lo desea, puede proporcionar un nombre y un valor de atributo de clave de rango y utilizar un operador de comparación para limitar los resultados de búsqueda.

Para ver las consultas de muestra, lea:

Para obtener más información acerca de las consultas, vea Consulta en la Guía para desarrolladores de DynamoDB.

Examen

Una operación de examen (Scan) lee todos los elementos de una tabla o de un índice secundario. De manera predeterminada, una operación de examen devuelve todos los atributos de datos de todos los elementos de la tabla o el índice. Puede utilizar el parámetro ProjectionExpression para que Scan solo devuelva algunos de los atributos, en lugar de todos ellos.

Para ver los exámenes de muestra, lea:

Para obtener más información acerca de las operaciones de análisis, consulte Análisis en la Guía para desarrolladores de DynamoDB.

Configuración del proyecto

Requisitos previos

Para utilizar DynamoDB en su aplicación, tendrá que añadir el SDK al proyecto. Para ello, siga las instrucciones que se describen en Setting Up the AWS Mobile SDK for .NET and Xamarin.

Creación de una tabla de DynamoDB

Para crear una tabla, vaya a la consola de DynamoDB y siga estos pasos:

  1. Haga clic en Create Table (Crear tabla).

  2. Escriba el nombre de la tabla.

  3. Seleccione Hash (Hash) como tipo de clave principal.

  4. Seleccione un tipo y escriba un valor para el nombre del atributo hash. Haga clic en Continue (Continuar).

  5. En la página Add Indexes (Añadir índices), si tiene previsto usar índices secundarios globales, defina Index Type (Tipo de índice) como "Global Secondary Index" y en Index Hash Key (Clave hash de índice), escriba un valor para el índice secundario. Esto le permitirá realizar consultas y exámenes usando el índice principal y el índice secundario. Haga clic en Add Index To Table (Añadir índice a tabla) y, a continuación, haga clic en Continue (Continuar). Para omitir la utilización de los índices secundarios globales, haga clic en Continue (Continuar).

  6. Establezca la capacidad de lectura y escritura en los niveles deseados. Para obtener más información acerca de la configuración de la capacidad, consulte Provisioned Throughput in Amazon DynamoDB. Haga clic en Continue (Continuar).

  7. En la siguiente pantalla, escriba un correo electrónico de notificación para crear alarmas de rendimiento si lo desea. Haga clic en Continue (Continuar).

  8. En la página de resumen, haga clic en Create (Crear). DynamoDB creará la base de datos.

Definición de permisos para DynamoDB

Para utilizar DynamoDB en una aplicación, debe definir los permisos correctos. La siguiente política de IAM permite al usuario eliminar, obtener, colocar, consultar, examinar y actualizar elementos en una tabla de DynamoDB, que se identifica mediante un ARN:

{ "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/MyTable" } ] }

Puede modificar las políticas en la consola de IAM. Debe añadir o eliminar acciones permitidas en función de las necesidades de su aplicación.

Para obtener más información acerca de las políticas de IAM, consulte cómo usar IAM.

Para obtener más información acerca de las políticas específicas de DynamoDB, consulte Cómo usar IAM para controlar el acceso a los recursos de DynamoDB en la Guía para desarrolladores de DynamoDB.

Integración de DynamoDB en una aplicación

AWS Mobile SDK para .NET y Xamarin proporciona una biblioteca de alto nivel para trabajar con DynamoDB. También se pueden realizar solicitudes directamente en la API de DynamoDB de bajo nivel, pero para la mayoría de los casos de uso se recomienda trabajar con la biblioteca de alto nivel. AmazonDynamoDBClient es una parte especialmente útil de la biblioteca de alto nivel. Con esta clase, puede realizar varias operaciones de creación, lectura, actualización y eliminación (CRUD, Create, Read, Update and Delete) y ejecutar consultas.

AWS Mobile SDK para .NET y Xamarin le permite realizar llamadas a través de las API de AWS SDK para .NET para trabajar con DynamoDB. Todas las API están disponibles en AWSSDK.dll. Para obtener información acerca de la descarga de AWS SDK para .NET, consulte AWS SDK para .NET.

Existen tres formas de interactuar con DynamoDB en una aplicación de Xamarin:

  • Modelo de documentos: esta API proporciona clases contenedoras basadas en la API de bajo nivel de DynamoDB para simplificar las tareas de programación. Table y Document son las clases contenedoras principales. Puede utilizar el modelo de documentos para operaciones de datos como, por ejemplo, crear, recuperar, actualizar y eliminar elementos. La API está disponible en el espacio de nombres Amazon.DynamoDB.DocumentModel.

  • Modelo de persistencia de objetos: la API de persistencia de objetos permite asignar las clases del lado del cliente a las tablas de DynamoDB. A continuación, cada instancia de objeto se mapea a un elemento en las tablas correspondientes. La clase DynamoDBContext de esta API proporciona métodos para guardar los objetos del lado del cliente en una tabla, recuperar elementos como objetos y realizar operaciones de consulta y examen. Puede utilizar el modelo de persistencia de objetos para operaciones de datos como, por ejemplo, crear, recuperar, actualizar y eliminar elementos. En primer lugar, debe crear sus tablas con la API de cliente de servicio y, a continuación, utilizar el modelo de persistencia de objetos para asignar las clases a las tablas. La API está disponible en el espacio de nombres Amazon.DynamoDB.DataModel.

  • API de cliente de servicio: esta es la API de nivel de protocolo que más se ajusta a la API de DynamoDB. Puede utilizar esta API de bajo nivel para todas las operaciones de tablas y elementos como, por ejemplo, crear, actualizar y eliminar tablas y elementos. También puede consultar y examinar sus tablas. Esta API está disponible en el espacio de nombres Amazon.DynamoDB.

Estos tres modelos se exploran de manera detallada en los siguientes temas:

Temas