【问题标题】:AWS DynamoDB or SimpleDB: "SELECT * FROM posts ORDER BY date LIMIT 10"AWS DynamoDB 或 SimpleDB:“SELECT * FROM posts ORDER BY date LIMIT 10”
【发布时间】:2016-07-24 13:26:55
【问题描述】:

我希望使用 AWS 设计一个无服务器后端。我使用 RDS 作为我的主数据存储,但由于对我的 RDS 实例的并发连接数的限制,我想将大量查询的数据(我们将这些记录称为“帖子”)移动到 DynamoDB 或 SimpleDB。

起初,DynamoDB 看起来是一个不错的选择(很多炒作),但后来我开始研究如何从我的 DynamoDB 表中选择最近的 20 个帖子,限制为 10 个,并带有可选的分页偏移量。

看起来没有一个简单的方法可以做到这一点。我已经看到一些建议使用具有相同分区键和排序键的 GSI 用于“post_date”,但似乎这被认为是一种 hack。

SimpleDB 似乎更灵活,设计更适合我的用例,但它与 AWS 似乎支持它的程度有关。

哪种 AWS 服务最适合我的用例?

【问题讨论】:

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


    【解决方案1】:

    我看到一些建议使用具有相同分区键和 "post_date" 的排序键,但似乎这被认为是 hack。

    这怎么算作黑客行为?听起来您将完全按照设计使用的方式使用全局二级索引。

    SimpleDB 似乎更灵活,设计更适合我使用 情况,但它与 AWS 似乎支持它的程度有关。

    此时我不会将 SimpleDB 用于任何新的开发。亚马逊基本上已经用 DynamoDB 取代了它,只是为已经在使用它的人保留了 SimpleDB。

    【讨论】:

    • 关于“黑客”解决方案,请参阅此答案的 cmets:stackoverflow.com/questions/21794945/…。不过,我认为我不需要达到成为缺点的规模
    • 该评论是关于始终在索引字段中存储单个值的建议。基本上在“标志”上设置索引。您将在索引字段中存储不同的值(日期),因此这对您来说不是问题。换句话说,您将正确使用 GSI。
    • 好的,所以你是说如果我有 500,000 个项目都具有相同的分区键“1”并且具有不同的日期值(但不一定不同)排序键?
    • 不是所有记录的分区键都为“1”吗?会有多个分区键值,您将查询分区键为“1”的记录,并按排序键排序,对吗?如果没有更准确的信息,我无法告诉您您的分区键是否是最好的,但我认为一般来说您会在这里正确使用 GSI。我建议在做出任何进一步的设计决定之前阅读整个页面:docs.aws.amazon.com/amazondynamodb/latest/developerguide/…
    • 为简单起见,我希望所有记录都可以具有与分区键相同的值“1”,但是......嗯,也许我应该使用 ymd 日期作为分区键,例如“2016-07-24”,以及更精确的 ISO 8601 时间戳作为排序键?客户端需要更复杂的代码来查询分页的反向计时项目列表,但读/写在 dynamodb 中分布会更均匀。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    相关资源
    最近更新 更多