使用Java对象持久性模型的DynamoDB中的一对多

时间:2012-11-19 23:59:11

标签: java nosql amazon amazon-dynamodb

是否可以使用DynamoDB Java持久模型在两个表之间创建关系?

我有以下关系:One Post to Many Comments

@DynamoDBTable(tableName="Post_MyApp")
public class Post {

private String id;
private String title;
private Set <Comment> comments;
//... Getters and setters and dynamo annotations
}

我有一个单独的评论表,该评论是另一个发电机表/实体。 我的想法是在SQL中创建一个post_comments表,其中包含帖子的所有注释。这是使用Dynamo执行此操作的正确方法,还是有其他方法可以更好地完成此操作?

2 个答案:

答案 0 :(得分:4)

一个帖子到很多评论。您只需要以下表格: 1.帖子表:post-id(哈希键), 2.评论表:post-id(哈希键),comment-id(范围键)

要获取帖子的所有评论,只需提供HashKey(post-id)即可查询评论表。

在Java方面,您将使用Dynamo DB Mapper映射2个类(Post,Comments)。

DynamoDBMapper(适用于Java的AWS开发工具包 - 1.7.1):http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodb/datamodeling/DynamoDBMapper.html

答案 1 :(得分:0)

我根本不了解Java SDK,但从设计的角度来看,我可以建议您采用“DynamoDBier”方法吗?

Post_MyApp

  • article_id为hash_key
  • 标题
  • ...

Comments_MyApp

  • article_id为hash_key
  • datetime为range_key
  • 文本
  • ...

这样,您就可以在一个Query中获取文章的所有评论,甚至可以使用limitExclusiveStartKey

分页。

顺便说一句,我在DynamoDb文档的附录中找到了很好的例子:http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/SampleTablesAndData.html