Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Zugriffsmuster
Wie bereits in diesem Handbuch erwähnt, können Sie aus drei Zugriffsmustern für DynamoDB-Tabellen wählen: Objektpersistenzschnittstelle, Dokument und API-Schnittstelle für DynamoDB-Tabellen ausführen: Objektpersistenzschnittstelle, Dokumentschnittstellen und Low-Level-API-Schnittstelle. In den folgenden Abschnitten wird jede Schnittstelle beschrieben. Für unseren Anwendungsfall SQL Server to DynamoDB haben wir aus Gründen der Einfachheit, Lesbarkeit und Wartungsfreundlichkeit die Object Persistence-Schnittstelle gewählt.
Objektpersistenzschnittstelle
Die Objektpersistenzschnittstelle bietet einen abstrakten Zugriffsmechanismus auf hoher Ebene für die Ausführung von CRUD-Operationen an DynamoDB-Elementen unter Verwendung von .NET-Modellen, ähnlich Entity Framework-Entitäten. Die Schnittstelleneigenschaften sind den Attributen von DynamoDB-Elementen zugeordnet. DasAWS SDK for .NET unterstützt benutzerdefinierte Eigenschaftsattribute in diesem Modell, um die Serialisierung und Deserialisierung einzelner Eigenschaften anzupassen, Nullwerte zu verarbeiten und Typkonvertierungen vorzunehmen.
In der Anwendung verwendetes Beispielmodell:
[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; } }
Zugriff auf Artikel:
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); }
Weitere Informationen finden Sie unter Object Persistence Interface in der DynamoDB-Dokumentation.
Schnittstelle für Dokumente
Das Dokumentenschnittstellenmodell bietet dokumentenbasierten Zugriff (ähnlich wieXMLDocument
in .NET) auf ein DynamoDB-Element. Dieses Modell bietet eine übergeordnete Programmierschnittstelle, übersetzt seine Aufrufe jedoch an APIs auf niedriger Ebene, um den Vorgang auszuführen.
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; }
Weitere Informationen finden Sie unter Document Interfaces in der DynamoDB-Dokumentation.
Low-Level-API
DasAWS SDK für DynamoDB bietet auch API-Zugriff auf niedriger Ebene, um CRUD-Operationen mithilfe derDeleteItem
MethodenPutItem
GetItem
,UpdateItem
, und auszuführen. Dieses Modell bietet die vollständige Kontrolle über die Attributzuordnung und die Typkonvertierung. Die Antwort für diese Aufrufe ist ein Wörterbuch von Schlüssel-Wert-Paaren.
[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; }
Weitere Informationen finden Sie unter Low-Level-Schnittstellen in der DynamoDB-Dokumentation.