使用AWS DynamoDB进行孤儿管理& S3数据分布在多个项目和水桶?

时间:2017-02-25 06:23:19

标签: amazon-web-services amazon-s3 amazon-dynamodb

DynamoDB项目目前限制为最大400KB。当存储超过此限制的项目时,Amazon suggests会有一些选项,包括将长项拆分为多个项目,在表格之间拆分项目和/或在S3中存储大数据。

如果没有失败,听起来不错。但是,建议的方法是在多个DynamoDB项目中处理更新和删除是否一致,另外,为了让事情变得有趣,S3桶也是如此?

有关具体示例,请设想一个电子邮件应用程序:

  • DynamoDB中的EmailHeader表
  • DynamoDB中的EmailBodyChunk表
  • DynamoDB中指向存储在S3存储桶中的电子邮件附件的EmailAttachment表

假设我要删除一封电子邮件。如果在删除操作期间出现问题并且数据仅被部分删除,那么确保孤立数据将被清除的好方法是什么? (理想情况下,它是一种解决方案,不会增加额外的操作复杂性,例如必须临时增加配置的读取限制以运行垃圾收集器脚本。)

2 个答案:

答案 0 :(得分:1)

您可以使用SQS queue that supports exactly-once semantics管理删除事件,并使用该队列启动删除相应标头,正文块和附件的Step workflow。回想起来,队列甚至不需要只有一次,因为你可以在标题不存在的情况下停止工作流程。

答案 1 :(得分:0)

您的用例有几种选择:

  

使得Java开发人员能够在Amazon DynamoDB上构建大规模应用程序时轻松地跨多个项目和表执行原子写入和隔离读取。

重要的是要注意它需要7N + 4次写入,这将是昂贵的。因此,只有在您需要强大的ACID属性时才能使用此路线,例如银行或其他货币应用程序。

  • 如果您对数据库在短时间内不一致感到满意,您可以逐个执行所需的操作,并在最后标记整个完成