Padrões de acesso - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Padrões de acesso

Conforme mencionado anteriormente neste guia, você pode escolher entre três padrões de acesso para realizar operações de criação, leitura, atualização e exclusão (CRUD) em tabelas do DynamoDB: interface de persistência de objetos, interfaces de documentos e interface de API de baixo nível. As seções a seguir descrevem cada interface. Para nosso caso de uso do SQL Server para o DynamoDB, escolhemos a interface de persistência de objetos para simplicidade, legibilidade e facilidade de manutenção.

Interface de persistência de objetos

A interface de persistência de objetos fornece um mecanismo de acesso abstraído de alto nível para realizar operações CRUD em itens do DynamoDB usando modelos .NET, semelhantes às entidades do Entity Framework. As propriedades da interface são mapeadas para os atributos do item do DynamoDB. OAWS SDK for .NET oferece suporte a atributos de propriedade personalizados nesse modelo para personalizar a serialização e a desserialização de propriedades individuais, para lidar com valores nulos e para conversões de tipos.

Modelo de amostra usado no aplicativo:

[DynamoDBTable(“AppLibrary")] public class ProdApp { [DynamoDBHashKey] public string PK { get; set; } //Partition key [DynamoDBRangeKey] public string SK { get; set; } //Sort key [DynamoDBGlobalSecondaryIndexRangeKey(“Version-index")] [DynamoDBProperty] public int Version { get; set; } . . . [DynamoDBProperty] public Int64 TTL { get; set; } }

Acesso ao item:

var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials); var _context = new DynamoDBContext(_dynamoDbClient); public ProdApp GetProdAppById (Guid id, int version) { var pk = $”{id}-{version}”; return _context.Load<ProdApp>(pk, ItemType.ProductionApplication); }

Para obter mais informações, consulte Interface de persistência de objetos na documentação do DynamoDB.

Interface de documentos

O modelo de interfaces de documentos fornece acesso baseado em documentos (semelhante aoXMLDocument no.NET) a um item do DynamoDB. Esse modelo fornece uma interface de programação de nível superior, mas traduz suas chamadas em APIs de baixo nível para realizar a operação.

var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials); var _table = Table.LoadTable(_dynamoDbClient, “AppLibrary”); public ProdApp GetProdAppById (Guid id, int version) { var pk = $”{id}-{version}”; var doc = _table.GetItem(pk, ItemType.ProductionApplication); var app = new ProdApp { PK = doc[“PK”], SK = doc[“SK”], Version = doc[“Version”], . . . }; return app; }

Para obter mais informações, consulte Interfaces de documentos na documentação do DynamoDB.

API de baixo nível

OAWS SDK para DynamoDB também fornece acesso à API de baixo nível para realizar operações CRUD usando osDeleteItem métodosPutItemGetItemUpdateItem,, e e. Esse modelo fornece controle completo sobre o mapeamento de atributos e as conversões de tipos. A resposta a essas chamadas é um dicionário de pares chave-valor.

[DynamoDBTable(“AppLibrary")] public class ProdApp { [DynamoDBHashKey] public string PK { get; set; } //Partition key [DynamoDBRangeKey] public string SK { get; set; } //Sort key [DynamoDBGlobalSecondaryIndexRangeKey(“Version-index")] [DynamoDBProperty] public int Version { get; set; } . . . [DynamoDBProperty] public ProdConfig Config { get; set; } } var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials); public ProdApp GetProdAppById (Guid id, int version) { var pk = $”{id}-{version}”; var resp = _dynamoDbClient.Query(queryRequest); var item = resp.Items[0]; var app = new ProdApp { PK = item[“PK”].S, SK = item[“SK”].S, Version = Convert.ToInt32(item[“Version”].S), . . . Config = new ProdConfig { Name = item[“Config”].M[“Name”].S, Id = Conver.ToInt32(item[“Config”].M[“Id”].S) } }; return app; }

Para obter mais informações, consulte Interfaces de baixo nível na documentação do DynamoDB.