使用Java对象持久化模型在DynamoDB中实现一对多。

3

使用DynamoDB Java Persistence Model可以创建两个表之间的关系吗?

我有一个帖子对多个评论的关系如下:

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

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

我有一张分离的评论表,其中评论是另一个 Dynamo 表/实体。我的想法是创建一个 post_comments 表,就像 SQL 中一样,包含帖子的所有评论。这是使用 Dynamo 正确的方法,还是有其他更好的方法?

2个回答

4
一篇文章对应多条评论。你只需要以下两个表格: 1. 文章表格:post-id (哈希键) 2. 评论表格:post-id (哈希键), comment-id (排序键)
要获取一篇文章的所有评论,只需通过给出哈希键(post-id)查询评论表格。
在Java端,您将有两个类(Post, Comments),它们与DynamoDB Mapper进行映射。
DynamoDBMapper (AWS SDK for Java - 1.7.1) : http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodb/datamodeling/DynamoDBMapper.html

0

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

表格Post_MyApp

  • 文章ID作为hash_key
  • 标题
  • ...

表格Comments_MyApp

  • 文章ID作为hash_key
  • 日期时间作为range_key
  • 文本
  • ...

这样可以让您在单个Query中获取所有文章的评论,甚至可以使用limitExclusiveStartKey进行分页。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接