【问题标题】:tables in dynamoDB that are queriabledynamoDB 中可查询的表
【发布时间】:2012-02-29 00:19:32
【问题描述】:

我一直在尝试将 dynamoDB 中的 google+ 之类的帖子/回复场景作为私人项目实施。这是我第一次尝试实现 nosql 表,并试图围绕这个概念展开思考。我了解相关表格列可以嵌入到原始表格中,如下所示...

Post { userid:1, 
       postdata: "hello",Comment[
                                  {userid: 2, postdata: "howdy", date: some-date},
                                  {userid: 3, postdata: "higuys", date: some-other-date}
                                ], 
       date: today}

现在,如果这是对带注释的表进行编码的方式,则很容易通过用户 ID 检索一次对话的所有帖子和 cmets。但是如果我们需要找到一个特定的评论并更新它,是否有可能或者我们必须“扫描”一个表?我已阅读有关扫描导致结果打破大数据中的吞吐量限制并且不想使用它的信息。查询似乎仅限于比较和检索的运算符。那么,我以这种方式创建表格是否正确?我可能必须在每个“对话”中将其他数据嵌入到表格中,例如音频、视频文档和图片。任何意见表示赞赏。

【问题讨论】:

    标签: database-design nosql amazon-dynamodb


    【解决方案1】:

    在 DynamoDB 中,您的整个实体不能大于 64kB,因此您不想直接在帖子中嵌入您的 cmets,除非您知道它们会非常小。

    在帖子中包含评论 ID 列表以及您需要知道要检索哪些元数据的任何元数据可能会更好。 DynamoDB 的低延迟意味着您可以为每个页面加载执行多个请求->检索->请求周期,只要数量固定即可。

    大型嵌入式内容(甚至更大的文本,如博客文章)不适合 DynamoDB,您可能需要 S3 或 CloudFront 之类的东西。

    【讨论】:

    • 非常感谢您指出限制。我计划仅使用 DynamoDB 来存储用户 ID 及其元数据。我计划仅将文件存储在 S3 中。请求->检索->请求周期是否会影响吞吐量,因为吞吐量是以单位/秒的数量定义的,而不是毫秒?估计吞吐量要求将很困难。如果超过吞吐量要求,查询会不会被执行,还是会受到限制?
    • 如果您超出吞吐量,您将收到 ProvisionedThroughputExceededException 错误。在生产级系统中,您需要进行退避+重试或错误处理,以防发生这种情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多