存取模式 - AWS 規定指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

存取模式

如本指南先前所述,您可以從三種存取模式中進行選擇,以便在 DynamoDB 表上執行建立、讀取、更新和刪除 (CRUD) 作業:物件持續性介面、文件介面和低階 API 介面。以下幾節說明每個界面。對於 SQL Server 到 DynamoDB 的使用案例,我們選擇了物件持續性介面,以提供簡化、可讀性和易於維護。

物件持久性界面

物件持續性介面提供了一種高階的抽象存取機制,可以使用類似於實體架構實體的 .NET 模型,在 DynamoDB 項目上執行 CRUD 作業。介面屬性會對應至 DynamoDB 項目屬性。AWSSDK for .NET 支援此模型中的自訂內容屬性,以自訂個別屬性的序列化和還原序列化、處理 null 值和類型轉換。

應用程序中使用的示例模型:

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

項目存取:

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

如需詳細資訊,請參閱 DynamoDB 文件中的物件持續性界面

文件界面

文件介面模型為 DynamoDB 項目提供以文件為基礎的存取 (類似於 .NETXMLDocument 中)。這個模型提供了一個更高級別的編程接口,但轉換其調用到低級別的 API 來執行操作。

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

如需詳細資訊,請參閱 DynamoDB 文件中的文件界面

低階 API

適用於 DynamoDB 的AWS開發套件也提供低階 API 存取權,以便使用PutItemGetItemUpdateItem、和DeleteItem方法執行 CRUD 作業。此模型提供對屬性對應和類型轉換的完整控制權。對於這些調用的響應是鍵值對的字典。

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

如需詳細資訊,請參閱 DynamoDB 文件中的低階界面