通过 Amplify CLI 初始化新的 GraphQL 后端时,示例模式定义了多个带有 @model 注释的类型。例如...
type Blog @model {
id: ID!
name: String!
posts: [Post] @connection(name: "BlogPosts")
}
type Post @model {
id: ID!
title: String!
blog: Blog @connection(name: "BlogPosts")
comments: [Comment] @connection(name: "PostComments")
}
type Comment @model {
id: ID!
content: String
post: Post @connection(name: "PostComments")
}
当触发时,这将导致创建多个DynamoDB表(每个模型一个)。因此,在此示例中,创建了三个单独的DynamoDB表(Blogs、Posts和Comments)。
在我们的情况下,我们有一个“Users”模型,我们将与用户关联二十个左右的小集合。当这些小集合感觉都属于单个表中的用户对象时,我对不得不管理二十个不同的DynamoDB表感到不安。
从我所阅读的所有内容来看,似乎AppSync鼓励使用多个表。例如,来自AWS AppSync文档的下面截图中的注意事项明确指出,博客评论应该在生产环境中放入单独的表中。 这与DynamoDB文档中规定的最佳实践相矛盾:
使用AppSync时,每种类型都应该放在单独的DynamoDB表中吗?在DynamoDB应用程序中,您应该尽可能少地维护表。大多数设计良好的应用程序只需要一个表。