Modelli di accesso - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Modelli di accesso

Come indicato in precedenza in questa guida, puoi scegliere tra tre modelli di accesso per eseguire operazioni di creazione, lettura, aggiornamento ed eliminazione (CRUD) sulle tabelle DynamoDB: interfaccia di persistenza degli oggetti, interfacce per documenti e interfaccia API di basso livello. Nelle sezioni seguenti viene descritta ogni interfaccia. Per il nostro use case da SQL Server a DynamoDB, abbiamo scelto l'interfaccia di persistenza degli oggetti per semplicità, leggibilità e facilità di manutenzione.

Interfaccia di persistenza degli oggetti

L'interfaccia di persistenza degli oggetti fornisce un meccanismo di accesso astratto di alto livello per eseguire operazioni CRUD sugli elementi DynamoDB utilizzando modelli .NET, simili alle entità di Entity Framework. Le proprietà dell'interfaccia sono mappate agli attributi degli elementi DynamoDB. L'AWSSDK for .NET supporta attributi di proprietà personalizzati in questo modello per personalizzare la serializzazione e la deserializzazione di singole proprietà, per gestire valori nulli e per le conversioni di tipi.

Modello di esempio utilizzato nell'applicazione:

[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; } }

Accesso agli elementi:

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); }

Per ulteriori informazioni, consulta Interfaccia di persistenza degli oggetti nella documentazione DynamoDB.

Interfaccia del documento

Il modello di interfacce documentali fornisce un accesso basato su documenti (simile a quelloXMLDocument in .NET) a un elemento DynamoDB. Questo modello fornisce un'interfaccia di programmazione di livello superiore, ma traduce le chiamate in API di basso livello per eseguire l'operazione.

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; }

Per ulteriori informazioni, consulta Interfacce documentali nella documentazione DynamoDB.

API di basso livello

L'AWSSDK per DynamoDB fornisce anche un accesso API di basso livello per eseguire operazioni CRUD utilizzando iDeleteItem metodiPutItemGetItemUpdateItem,, e. Questo modello offre il controllo completo sulla mappatura degli attributi e sulle conversioni di tipi. La risposta a queste chiamate è un dizionario di coppie chiave-valore.

[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; }

Per ulteriori informazioni, consulta Interfacce di basso livello nella documentazione DynamoDB.