我想知道在DynamoDB中使用一对多关系的最佳方法是什么。我们假设我有post
和category
个表。 category
表格包含id
和name
列。 post
表格包含id
,title
和category_id
列。使用关系数据库,我将使用两个表之间的连接。我知道我无法在DynamoDB中加入两个表。当我在页面中提供几个带有类别的文章摘要时,我知道使用RDBMS时,每次我想获取类别名称时都不需要运行查询。
我见过许多将类别名称作为名称而不是ID嵌入的示例,因此我只需阅读该文档,并且我可以通过单个查询获得所有信息。问题是,当我想用DynamoDB更改类别名称时,我需要运行扫描查询来更新列 - 我不想这样做。我考虑使用category_id
并使用缓存,以便在分页时不重复类别名称查询。任何好的建模技术如何用DynamoDB解决这个问题?
答案 0 :(得分:1)
一般来说,人们处理与NoSQL数据库连接的方式是复制数据,以便您可以查询数据并获得所有必需的数据。
如果您的类别列表相当小(10-1000条记录),您可以将类别ID存储在posts表中,并在代码缓存中存储类别的名称,并在找到时转换并在代码中“追加”类别名称特定类别ID。
与SQL数据库相比,NoSQL数据建模是一种非常不同的野兽。通常,您希望数据“平坦”,这样您就可以在单个请求/查询中查询并拥有所有数据。