访问模式 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

访问模式

如本指南前面所述,您可以选择三种访问模式对 DynamoDB 表执行创建、读取、更新和删除 (CRUD) 操作:对象持久化接口、文档接口和低级别 API 接口。以下部分介绍每个接口。对于我们的 SQL Server to DynamoDB 用例,我们选择了对象持久化接口,以实现简单性、可读性和易于维护。

对象持久化接口

对象持久化接口提供了一种高级抽象访问机制,用于使用.NET 模型对 DynamoDB 项目执行 CRUD 操作,类似于实体框架实体。接口属性映射到 DynamoDB 项目属性。SAWS DK for .NET 支持此模型中的自定义属性属性,以自定义单个属性的序列化和反序列化、处理空值和进行类型转换。

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

[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 项目的基于文档XMLDocument的访问(类似于.NET 中)。该模型提供了更高级别的编程接口,但将其调用转换为低级 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

AWS适用于 DynamoDB 的开发工具包还提供低级别 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 文档中的低级接口