2012-02-26 37 views
3

我一直试图在dynamoDB中像google +一样实施post/reply场景作为私有项目。这是我第一次尝试实现一个nosql表,并试图将我的头围绕这个概念。据我所知,相关的表列可以被嵌入到原始表如下...dynamoDB中可查询的表

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

现在,如果这是编写注释表的方式,很容易通过用户名和日期所有的职位检索和一个对话的评论。但是如果我们需要找到具体的评论并更新它,是否有可能或者我们是否需要'扫描'一张桌子?我已经阅读了关于扫描的结果,这些结果打破了大数据中的吞吐量限制,并且不想使用它。查询似乎在运算符中用于比较和检索是有限的。那么,我是以这种方式创建表的正确途径吗?我可能需要将其他数据嵌入到音频,视频文件和每个“对话”图片等表格中。任何输入赞赏。

回答

4

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

这可能会更好地有一个列表中的评论ID,以及任何元数据,你需要知道哪些检索。 DynamoDB的低延迟意味着只要数量是固定的,就可以有几个周期的request-> retrieve->请求每个页面载入。

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

+0

非常感谢您指出了这些限制。我计划只使用DynamoDB来存储用户标识及其元数据。我打算只在S3中存储文件。请求 - >检索 - >请求周期是否因吞吐量以单位/秒为单位定义,而不是毫秒?估计吞吐量要求将会很困难。如果查询超出吞吐量要求,它们是否会得到执行或是否会被限制? – Ram 2012-03-01 13:43:43

+1

如果您超出吞吐量,则会收到'ProvisionedThroughputExceededException'错误。在生产级系统中,如果发生这种情况,您需要进行退避+重试或错误处理。 – BCoates 2012-03-02 23:29:05