我有兴趣接收位于DynamoDB表中的所有数据,然后最有效地清除表格。
我已经看到如何删除一个项目并在concurrency - DynamoDB - how to retrieve and delete (pop) an item?中同时检索它。我还在database - What is the recommended way to delete a large number of items from DynamoDB?看到了批量删除。
理想情况下,我想同时清除表并检索数据。有一个更好的方法吗?
如果您为表的dynamo db流订阅lambda函数,则可以在删除项目时对其进行处理(从技术上讲,它将在项目删除后立即显示在流中)。
您可以从表中检索所有行,将其放入列表中,然后将列表发送到dynamodbs delete方法。这对我有用:
public async Task DeleteAllReadModelEntitiesInTable()
{
List<ReadModelEntity> readModels;
var conditions = new List<ScanCondition>();
readModels = await _context.ScanAsync<ReadModelEntity>(conditions).GetRemainingAsync();
var batchWork = _context.CreateBatchWrite<ReadModelEntity>();
batchWork.AddDeleteItems(readModels);
await batchWork.ExecuteAsync();
}