Amazon DynamoDB - AWS Mobile SDK

O AWS Mobile SDK for Xamarin agora está incluído no AWS SDK for .NET. Este guia faz referência à versão arquivada do Mobile SDK para Xamarin.

Amazon DynamoDB

O que é o Amazon DynamoDB?

O Amazon DynamoDB é um serviço de banco de dados não relacional rápido e altamente dimensionável. O DynamoDB remove limitações de escalabilidade tradicionais sobre armazenamento de dados, mantendo, ao mesmo tempo, a baixa latência e o desempenho previsível.

Principais conceitos

Os conceitos do modelo de dados do DynamoDB incluem tabelas, itens e atributos.

Tabelas

No Amazon DynamoDB, um banco de dados é uma coleção de tabelas. Uma tabela é uma coleção de itens, e cada item é uma coleção de atributos.

Em um banco de dados relacional, uma tabela tem um schema predefinido, como nome da tabela, chave primária, lista de seus nomes de coluna e seus tipos de dados. Todos os registros armazenados na tabela devem ter o mesmo conjunto de colunas. Por outro lado, o DynamoDB só requer que uma tabela tenha uma chave primária, mas não requer que você defina todos os nomes de atributo e tipos de dados com antecedência.

Para saber mais sobre como trabalhar com tabelas, consulte Trabalhar com tabelas no DynamoDB.

Itens e atributos

Os itens individuais em uma tabela do DynamoDB pode ter qualquer número de atributos, embora haja um limite de 400 KB para o tamanho do item. Um tamanho de item é a soma dos tamanhos de seus nomes e valores de atributo (tamanhos binários e UTF-8).

Cada atributo em um item é um par de nome-valor. Um atributo pode ser um conjunto de valor único ou multivalor. Por exemplo, um item de livro pode ter os atributos title e authors. Cada livro tem um título, mas pode ter vários autores. O atributo multivalor é um conjunto; não são permitidos valores duplicados.

Por exemplo, é recomendável armazenar um catálogo de produtos no DynamoDB. Você pode criar uma tabela, ProductCatalog, com o atributo Id como chave primária. A chave primária identifica exclusivamente cada item, para que não haja dois produtos na tabela com o mesmo ID.

Para saber mais sobre como trabalhar com itens, consulte Trabalhar com itens no DynamoDB.

Tipos de dados

O Amazon DynamoDB é compatível com os seguintes tipos de dados:

  • Tipos escalares – Número, string, binário, booleano e nulo.

  • Tipos de vários valores – Conjunto de strings, conjunto de números e conjunto binário.

  • Tipos de documento – Lista e mapa.

Para obter mais informações sobre tipos de dados escalares, tipos de dados de vários valores e tipos de dados de documento, consulte Tipos de dados do DynamoDB.

Chave primária

Ao criar uma tabela, além do nome dela, você deve especificar a chave primária da tabela. A chave primária identifica exclusivamente cada item na tabela, de modo que não possa haver dois itens com a mesma chave. O DynamoDB é compatível com os seguintes tipos de chaves primárias:

  • Chave hash: a chave primária é composta por um atributo, um atributo de hash. O DynamoDB cria um índice de hash não ordenado neste atributo de chave primária. Cada item da tabela é identificado exclusivamente por seu valor de chave de hash.

  • Chave hash e chave de intervalo: a chave primária é composta por dois atributos. O primeiro atributo é o atributo de hash; o segundo atributo é o atributo de intervalo. O DynamoDB cria um índice de hash não ordenado no atributo de chave primária de hash e um índice de intervalo classificado no atributo de chave primária de intervalo. Cada item da tabela é identificado exclusivamente pela combinação de seus valores de chave de hash e de intervalo. Dois itens podem ter o mesmo valor de chave de hash, mas eles devem ter valores de chave de intervalo diferentes.

Índices secundários

Quando você criar uma tabela com uma chave de hash e uma chave de intervalo, poderá definir um ou mais índices secundários nessa tabela, se desejar. Um índice secundário permite consultar os dados na tabela usando uma chave alternativa, além de consultas com base na chave primária.

O DynamoDB oferece suporte a dois tipos de índices secundários: índices secundários locais e índices secundários globais.

  • Índice secundário local: um índice que possui a mesma chave hash que a tabela, mas uma chave de intervalo diferente.

  • Índice secundário global: um índice com uma chave hash e uma chave de intervalo que podem ser diferentes das contidas na tabela.

Você pode definir até cinco índices secundários globais e cinco índices secundários locais por tabela. Para obter mais informações, consulte Como melhorar o acesso a dados com índices secundários no DynamoDB no Guia do desenvolvedor do DynamoDB.

Consulta e verificação

Além de usar chaves primárias para acessar itens, o Amazon DynamoDB também fornece duas APIs para pesquisar os dados: Query e Scan. É recomendável que você leia Orientações para consulta e verificação no Guia do desenvolvedor do DynamoDB Developer Guide para se familiarizar com algumas práticas recomendadas.

Consulta

A operação Query localiza os itens em uma tabela ou um índice secundário usando somente valores de atributo de chave primária. Você deve fornecer um nome de atributo de chave de hash e um valor distinto a serem procurados. Se desejar, você pode fornecer um nome de atributo de chave de intervalo e um valor, e usar um operador de comparação para refinar os resultados da pesquisa.

Para consultas de exemplo, consulte:

Para obter mais informações sobre consultas, consulte Consulta no Guia do desenvolvedor do DynamoDB.

Verificar

Uma operação Scan lê cada item de uma tabela ou de um índice secundário. Por padrão, uma operação Scan retorna todos os atributos de dados de cada item na tabela ou no índice. Você pode usar o parâmetro ProjectionExpression para que a operação Scan retorne apenas alguns atributos, e não todos eles.

Para verificações de exemplo, consulte:

Para obter mais informações sobre verificações, consulte Verificação no Guia do desenvolvedor do DynamoDB.

Configuração do projeto

Pré-requisitos

Para usar o DynamoDB em seu aplicativo, você precisará adicionar o SDK ao projeto. Para fazer isso, siga as instruções em Configuração do AWS Mobile SDK para .NET e Xamarin.

Criação de uma tabela do DynamoDB

Para criar uma tabela, acesse o console do DynamoDB e siga estas etapas:

  1. Clique em Create Table (Criar tabela).

  2. Informe o nome da tabela.

  3. Selecione Hash como tipo de chave primária.

  4. Selecione um tipo e insira um valor para o nome do atributo de hash. Clique em Continue.

  5. Na página Add Indexes (Adicionar índices), se você pretende usar os índices secundários globais, defina Index Type (Tipo de índice) como "Global Secondary Index" (Índice secundário global) e, em Index Hash Key (Chave hash do índice), insira uma valor para o índice secundário. Isso permitirá que você faça operações de consulta e verificação usando os índices primário e secundário. Clique em Add Index To Table (Adicionar índice à tabela) e em Continue (Continuar). Para ignorar o uso de índices secundários globais, clique em Continue (Continuar).

  6. Defina a capacidade de leitura e gravação para os níveis desejados. Para obter mais informações sobre como configurar a capacidade, consulte Throughput provisionado no Amazon DynamoDB. Clique em Continue.

  7. Na próxima tela, insira um e-mail de notificação para criar alarmes de taxa de transferência, se desejado. Clique em Continue.

  8. Na página de resumo, clique em Create (Criar). O DynamoDB criará seu banco de dados.

Definição de permissões para DynamoDB

Para usar o DynamoDB em um aplicativo, defina as permissões corretas. A seguinte política do IAM permite que o usuário exclua, obtenha, insira, consulte, verifique e atualize itens em uma tabela específica do DynamoDB, que é identificada pelo 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" } ] }

Você pode modificar as políticas no console do IAM. Você deve adicionar ou remover ações permitidas com base nas necessidades do seu aplicativo.

Para saber mais sobre as políticas do IAM, consulte Usar o IAM.

Para saber mais sobre as políticas específicas do DynamoDB, consulte Usar o IAM para controlar o acesso a recursos do DynamoDB no Guia do desenvolvedor do DynamoDB.

Integração do DynamoDB ao aplicativo

O AWS Mobile SDK para .NET e Xamarin fornece uma biblioteca de alto nível para trabalhar com o DynamoDB. Você também pode fazer solicitações diretamente com base na API de nível inferior do DynamoDB, mas, na maioria dos casos de uso, é recomendável o uso da biblioteca de nível superior. O AmazonDynamoDBClient é uma parte muito útil da biblioteca de nível superior. Usando essa classe, você pode realizar várias operações de criação, leitura, atualização e exclusão (CRUD) e executar consultas.

O AWS Mobile SDK para .NET e Xamarin permite fazer chamadas usando as APIs do AWS SDK para .NET para trabalhar com o DynamoDB. Todas as APIs estão disponíveis no AWSSDK.dll. Para obter mais informações sobre como fazer download do AWS SDK para .NET, consulte AWS SDK para .NET.

Há três formas de interagir com o DynamoDB no aplicativo Xamarin:

  • Modelo de documento: esta API oferece classes wrapper sobre a API de nível inferior do DynamoDB para simplificar ainda mais as tarefas de programação. Table e Document são as principais classes wrapper. Você pode usar o modelo de documento nas operações de dados, como criar, recuperar, atualizar e excluir itens. A API está disponível no namespace Amazon.DynamoDB.DocumentModel.

  • Modelo de persistência de objeto: a API Object Persistence permite mapear classes do lado do cliente para as tabelas do DynamoDB. Em seguida, cada instância de objeto é mapeada para um item nas tabelas correspondentes. A classe DynamoDBContext nessa API fornece métodos para você salvar objetos do lado do cliente em uma tabela, recuperar itens como objetos e executar operações de consulta e verificação. Você pode usar o modelo de persistência de objeto nas operações de dados, como criar, recuperar, atualizar e excluir itens. Primeiro, crie as tabelas usando a API Service Client e, em seguida, use o modelo de persistência de objeto para mapear as classes para as tabelas. A API está disponível no namespace Amazon.DynamoDB.DataModel.

  • API Service Client: esta é a API de nível de protocolo que é mapeada estreitamente para a API do DynamoDB. Você pode usar essa API de nível inferior em todas as operações de tabela e item, como criar, atualizar e excluir tabela e itens. Você também pode consultar e verificar as tabelas. Esta API está disponível no namespace Amazon.DynamoDB.

Esses três modelos são descritos detalhadamente nos tópicos a seguir:

Tópicos