Amazon dynamodb 围绕DynamoDB中表的常规创建/删除构建体系结构可以吗?

Amazon dynamodb 围绕DynamoDB中表的常规创建/删除构建体系结构可以吗?,amazon-dynamodb,Amazon Dynamodb,我有一个消息应用程序,所有消息都按创建时间按季节排列。每一季可能有数十亿条信息。我的任务是删除旧季节的邮件。我想到了一个解决方案,其中包括创建/删除DynamoDB表,如下所示: 每个表只包含一个季节的消息 当季节变为“旧”且不再需要邮件时,表将被删除 这是一种好模式吗?亚马逊是否鼓励这种模式 ps:我这么问是因为我害怕在不同的亚马逊服务中遇到的两件事- 在AmazonS3中,您必须先删除每个项目,然后才能完全删除bucket。当你有数以十亿计的物品时,它会成为一种真正的痛苦 在Amazon S

我有一个消息应用程序,所有消息都按创建时间按季节排列。每一季可能有数十亿条信息。我的任务是删除旧季节的邮件。我想到了一个解决方案,其中包括创建/删除DynamoDB表,如下所示:

  • 每个表只包含一个季节的消息
  • 当季节变为“旧”且不再需要邮件时,表将被删除
  • 这是一种好模式吗?亚马逊是否鼓励这种模式

    ps:我这么问是因为我害怕在不同的亚马逊服务中遇到的两件事-

  • 在AmazonS3中,您必须先删除每个项目,然后才能完全删除bucket。当你有数以十亿计的物品时,它会成为一种真正的痛苦
  • 在Amazon SQS中有一个“不想要的行为”的概念。当使用SQSAPI时,您可能会在SQS基础设施方面表现不佳(例如,不轮询消息),因此可能会因此受到惩罚

  • 按照您描述的方式分割数据是完全可以接受的。您可以删除DynamoDB表,而不管它包含多少项

    据我所知,对于删除或创建表所需的时间没有明确的SLA(这意味着无法知道是需要2秒、2分钟还是20分钟),但只要您的解决方案不依赖于这种时间,您就可以了


    事实上,基于年龄对数据进行分片的想法有可能显著提高应用程序的性能,并且肯定会帮助您控制成本

    按照您描述的方式分割数据是完全可以接受的。您可以删除DynamoDB表,而不管它包含多少项

    据我所知,对于删除或创建表所需的时间没有明确的SLA(这意味着无法知道是需要2秒、2分钟还是20分钟),但只要您的解决方案不依赖于这种时间,您就可以了


    事实上,基于年龄对数据进行分片的想法有可能显著提高应用程序的性能,并且肯定会帮助您控制成本
    • AWS限制每个区域有256个表,但这可以提高。如果您希望需要多个数量级,您可能需要重新评估
    • 您可以删除仍然包含记录的表DynamoDB表,如果您有大量记录,则必须定期删除。这实际上是使用滚动表集的最佳做法
    • 创建和删除表是一个异步操作,因此您不希望应用程序依赖于完成这些操作所需的时间。确保在需要表格之前创建表格。在正常情况下,表格创建只需几秒钟到几分钟,但在非常非常罕见的停机情况下,我看到它需要几个小时
    DynamoDB最佳实践文档关于

    通过将“热”项存储在一个表中,可以节省资源 更高的吞吐量设置,以及另一个具有 较低的吞吐量设置。只需删除即可删除旧项目 桌子。您可以选择将这些表备份到其他存储 选项,例如Amazon简单存储服务(Amazon S3)。删除 整个表的效率明显高于删除项 一个接一个,这实际上使写入吞吐量增加了一倍 删除操作的数量与放置操作的数量相同


    是的,这是一个可接受的设计模式,它实际上遵循了AWS团队提出的最佳实践,但是对于您的特定用例,有一些事情要考虑。

    • AWS限制每个区域有256个表,但这可以提高。如果您希望需要多个数量级,您可能需要重新评估
    • 您可以删除仍然包含记录的表DynamoDB表,如果您有大量记录,则必须定期删除。这实际上是使用滚动表集的最佳做法
    • 创建和删除表是一个异步操作,因此您不希望应用程序依赖于完成这些操作所需的时间。确保在需要表格之前创建表格。在正常情况下,表格创建只需几秒钟到几分钟,但在非常非常罕见的停机情况下,我看到它需要几个小时
    DynamoDB最佳实践文档关于

    通过将“热”项存储在一个表中,可以节省资源 更高的吞吐量设置,以及另一个具有 较低的吞吐量设置。只需删除即可删除旧项目 桌子。您可以选择将这些表备份到其他存储 选项,例如Amazon简单存储服务(Amazon S3)。删除 整个表的效率明显高于删除项 一个接一个,这实际上使写入吞吐量增加了一倍 删除操作的数量与放置操作的数量相同