Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Patrones de acceso
Como se mencionó anteriormente en esta guía, puede elegir entre tres patrones de acceso para realizar operaciones de creación, lectura, actualización y eliminación (CRUD) en las tablas de DynamoDB: interfaz de persistencia de objetos, interfaces de documentos e interfaz API de bajo nivel. En las siguientes secciones se describe cada interfaz. Para nuestro caso de uso de SQL Server a DynamoDB, elegimos la interfaz de persistencia de objetos por su simplicidad, legibilidad y facilidad de mantenimiento.
Interfaz de persistencia de objetos
La interfaz de persistencia de objetos proporciona un mecanismo de acceso abstracto de alto nivel para realizar operaciones CRUD en elementos de DynamoDB mediante modelos de.NET, similares a las entidades de Entity Framework. Las propiedades de la interfaz se asignan a los atributos de los elementos de DynamoDB. El AWS SDK para .NET admite atributos de propiedades personalizados en este modelo para personalizar la serialización y deserialización de propiedades individuales, gestionar valores nulos y realizar conversiones de tipos.
Ejemplo de modelo utilizado en la aplicación:
[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; } }
Acceso al artículo:
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 obtener más información, consulte Interfaz de persistencia de objetos en la documentación de DynamoDB.
Interfaz de documentos
El modelo de interfaces de documentos proporciona acceso basado en documentos (similar al que XMLDocument
en .NET) a un elemento de DynamoDB. Este modelo proporciona una interfaz de programación de nivel superior, pero traduce sus llamadas a un nivel inferior para realizar la operación APIs .
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 obtener más información, consulte Interfaces de documentos en la documentación de DynamoDB.
API de bajo nivel
El AWS SDK para DynamoDB también proporciona acceso a la API de bajo nivel para realizar operaciones CRUD mediante PutItem
los GetItem
métodos,, y. UpdateItem
DeleteItem
Este modelo proporciona un control total sobre la asignación de atributos y las conversiones de tipos. La respuesta a estas llamadas es un diccionario de pares clave-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 obtener más información, consulte Interfaces de bajo nivel en la documentación de DynamoDB.