我有 Orm 框架的经验,我开始了解 NoSql 数据库解决方案的结构。我将继续使用一些基于对象模型的示例。
我有以下文档模型,我想考虑一些场景处理。
- 用几个标签保存帖子
- 显示带有帖子计数的标签列表
- 更新标签
public class Post
{
public string Title { get; set; }
public List<Tag> Tags { get; set; }
}
public class Tag
{
public string Name { get; set; }
}
关于我的场景,我脑海中几乎没有出现任何问题。
帖子类是一个将使用标签保存的文档。在 RDBMS 中,Tag 和 Post 具有多对多关系,但我知道它在 NoSql 中没有任何关系,因此 post 对象与整个成员一起保存。因此显示带有 post 计数场景的标签列表将导致整个 post 项中的大量查询在每个查询中都付出了一些努力,所以在这种情况下我不会失去 NoSql 功能的所有好处吗?
更新一个标签名会不会造成一些复杂的工作?我必须查询整个帖子项目并发现它具有该标签名称并对其进行更新。顺便说一句,它需要多文档事务和长流程,因此失败会导致我的数据库不一致,因为 NoSql 中不支持多文档事务,所以我该如何处理?
我并不是要展示 NoSql 对 RDBMS(Sql) 系统的缺点。我只是想了解我对这个场景的想法是否正确,可能有些东西我错过了,或者看起来很糟糕的事情并不像我想象的那样糟糕。我需要可扩展性,这就是我对 NoSql 解决方案感兴趣的原因。