Database design dynamoDB中可查询的表

Database design dynamoDB中可查询的表,database-design,nosql,amazon-dynamodb,Database Design,Nosql,Amazon Dynamodb,我一直在尝试在dynamoDB中作为一个私有项目实现一个post/回复场景,比如google+。这是我第一次尝试实现一个nosql表,并试图对这个概念进行总结。我知道相关的表列可以嵌入到原始表中,如下所示 Post { userid:1, postdata: "hello",Comment[ {userid: 2, postdata: "howdy", date: some-date},

我一直在尝试在dynamoDB中作为一个私有项目实现一个post/回复场景,比如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}

现在,如果这是编写带注释表的方法,那么就可以很容易地通过userid检索一次对话中的所有帖子和评论并注明日期。但是,如果我们需要找到一个特定的注释并对其进行更新,我们是否有可能或者必须“扫描”一个表?我读过关于扫描导致结果突破大数据吞吐量限制的文章,我不想使用它。查询似乎仅限于用于比较和检索的运算符。那么,我用这种方式创建表的方法正确吗?我可能需要在表格中嵌入其他数据,如每个“对话”的音频、视频文档和图片。感谢您的任何意见。

在DynamoDB中,您的整个实体不能超过64kB,因此您不希望将您的评论直接嵌入帖子中,除非您知道它们非常小

在帖子中有一个注释ID列表,以及您需要知道要检索哪些注释ID的元数据,可能会更好。DynamoDB的低延迟意味着,只要数量固定,每个页面加载都可以有几个周期的请求->检索->请求


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

非常感谢您指出这些限制。我计划只使用DynamoDB来存储用户ID及其元数据。我计划只在S3中存储文件。请求->检索->请求周期是否会影响吞吐量,因为吞吐量的定义单位是单位/秒,而不是毫秒?很难估计吞吐量需求。如果查询超过吞吐量要求,是否根本不会执行查询?如果超过吞吐量,您将返回一个
provisionedthroughputeExceedexception
错误。在生产级系统中,如果发生这种情况,您需要有回退+重试或错误处理。