Database 我可以使用RavenDB(NoSQL)还是应该只使用MySQL(RDBMS)?

Database 我可以使用RavenDB(NoSQL)还是应该只使用MySQL(RDBMS)?,database,database-design,nosql,ravendb,Database,Database Design,Nosql,Ravendb,我开始使用ASP.NET MVC 3通用管理系统(项目管理是第一个组件)。现在我读了一些关于RavenDB的文章,听起来很有趣。我最喜欢它的一点是,我不需要ORM上的任何类型来处理来自DB的数据。这将使我的代码更干净、更快。然而,在过去6年多的时间里,我的背景是专门使用MySQL,我倾向于与我的数据进行非常密切的联系。有几件事似乎是NoSQL不适合的。我想把这些东西扔出去,也许这些问题可以在NoSQL解决方案中处理,我只是想得太过相关了(再说一遍,也许这个项目应该用MySQL完成)。以下是我正在

我开始使用ASP.NET MVC 3通用管理系统(项目管理是第一个组件)。现在我读了一些关于RavenDB的文章,听起来很有趣。我最喜欢它的一点是,我不需要ORM上的任何类型来处理来自DB的数据。这将使我的代码更干净、更快。然而,在过去6年多的时间里,我的背景是专门使用MySQL,我倾向于与我的数据进行非常密切的联系。有几件事似乎是NoSQL不适合的。我想把这些东西扔出去,也许这些问题可以在NoSQL解决方案中处理,我只是想得太过相关了(再说一遍,也许这个项目应该用MySQL完成)。以下是我正在思考的问题:

  • 唯一标识符:我希望能够为很多事情提供唯一标识符。对于像项目这样的东西,名称应该是唯一的,并且可以使用它,但是当涉及到项目下的任务时,标题可能不是唯一的,这就是我将使用quto增量字段的地方,但我可以在RavenDB中这样做(据我所知)

  • 链接:用于像status和type这样的字段,我只会使用带有外键的链接。现在对于一对多关系,我可以只使用文本,而不是尝试链接外键(NoSQL中没有),而是使用多对多链接,因为这是一个问题。例如,我打算建立一个标签系统(如上图所示),其中大多数项目可以附加1到多个标签,然后我可以在这些标签上搜索项目。在NoSQL中有这样做的方法吗

  • RDBMS真的是这项工作的最佳工具吗?还是我只是没有正确地思考“NoSQL”方法,我可以用NoSQL(RavenDB)来完成这项工作?

    Ayende写了一篇文章,回答了你在重新链接时提出的一些问题。您将拥有参考文档和其他文档之间的数据副本,对于文档数据库来说,冗余是“确定的”。您仍然可以基于存储的Id或文本构建索引或查询

    我倾向于将SQL应用于事务系统,例如需要执行特殊查询的应收账款应用程序。使用文档数据库,您确实需要考虑如何获取数据并提前建立索引来回答这些问题。RavenDB还有一个动态索引功能,可以从数据库中触发的查询中学习并缓存这些查询


    对于大多数项目都是任务的项目管理,我认为RavenDB适合您的需要

    我知道这是一篇老文章。也许这些文档在最初编写时没有那么好。但是,如果其他人在这里遇到困难,请参考:

  • Raven在默认情况下具有HiLo文档id生成策略。在不指定id的情况下存储新文档将获得一个自动递增的id,如“projects/1”、“projects/2”等。阅读更多信息

  • 关于处理文档关系的不同方法的最佳指导是在文档中。对于您描述的情况,实际上根本不需要单独的文档。您可以简单地将标记名的字符串数组嵌入到每个项中。文档不是扁平的,它们可以结构化。是的,你仍然可以查询它们

  • 希望你从最初的帖子中就发现了这一点