我在MongoDB中有很多关系实现的特定问题.
我有歌曲和艺术家的集合(百万文档).歌曲可以由多位艺术家演唱,艺术家可以唱很多歌.所以我在两个集合中都遵循了文档引用的方法.像这样...
1. 歌曲收藏: -
{
_id:ObjectId("dge547567hheheasfw3454dfg"),
title:"xyz",
artists:[ObjectId("xfvdg464654"), ...] //many artists // artists ids
}
Run Code Online (Sandbox Code Playgroud)
2. 艺术家收藏: -
{
_id:ObjectId("dge547567hheheasfw3454dfg"),
title:"xyz",
songs:[ObjectId("xfvdg464654"), ...] //many songs // songs Ids
}
Run Code Online (Sandbox Code Playgroud)
但这里的问题是在对一个集合进行CRUD操作时,我必须对其他集合进行CRUD操作.就像删除艺术家一样,我必须在艺术家的歌曲的所有文档中删除艺术家阵列中的艺术家.这可能会导致原子性问题. 我怎样才能确保这里的原子性?
其次,当数据库将增长并且艺术家演唱的歌曲将增加时,因此结果文档增长的收集和文档大小可以达到16MB或更大(MAX DOC SIZE).
那么在这种情况下可以做些什么呢?
我有带有 Nodejs 后端(REST API)的角度应用程序。我对 S3 和 EC2 感到困惑。哪一个更好,部署到每个的优缺点是什么。考虑平均负载。我们将非常感谢您的帮助。