Nosql 与关系数据库相比,RavenDb的性能更好吗?

Nosql 与关系数据库相比,RavenDb的性能更好吗?,nosql,relational-database,ravendb,Nosql,Relational Database,Ravendb,与关系数据库相比,哪些因素使RavenDb(作为NoSQL文档数据库的一个示例)更高效 我知道两个因素: 所有查询都在索引上执行。但您可以在RDBMS中实现 在后台线程上更新索引(导致 误同步)。是的,这是一个很好的观点,但我怀疑它是否非常重要 意义重大 实际上,我认为最大的性能提升是缺少连接,但看起来Multi-Maps/Reduce-Index与连接非常相似 那么,是什么因素使RavenDb更高效呢?我认为,与关系数据库相比,RavenDb通常速度更快。这当然取决于您希望在应用程序中执行何种

与关系数据库相比,哪些因素使RavenDb(作为NoSQL文档数据库的一个示例)更高效

我知道两个因素:

  • 所有查询都在索引上执行。但您可以在RDBMS中实现
  • 在后台线程上更新索引(导致 误同步)。是的,这是一个很好的观点,但我怀疑它是否非常重要 意义重大
  • 实际上,我认为最大的性能提升是缺少连接,但看起来Multi-Maps/Reduce-Index与连接非常相似


    那么,是什么因素使RavenDb更高效呢?

    我认为,与关系数据库相比,RavenDb通常速度更快。这当然取决于您希望在应用程序中执行何种数据操作

    大多数应用程序速度更快的一个原因是RavenDB在读写端都同样快,因为索引是异步更新的。然而,这需要付出最终一致性的代价。虽然这对大多数应用程序来说是可以的,但它并不是无价的

    另一个重要的原因是关于文档数据库。RavenDB中的单个文档(以及其他文档)可以包含完整的对象图和非规范化引用,从而消除对数据库的许多请求。在大多数情况下,不是数据库本身导致应用程序运行缓慢,而是发送到数据库服务器的请求数量过多(考虑网络延迟+开销)。文档数据库非常适合无状态应用程序,如web应用程序,其中单个视图显示整个对象图的信息(考虑订单以及所有项目、客户信息、账单信息等)。

    Idsa, 您通常会看到RavenDB应用程序比关系数据库应用程序快得多,这有几个原因

    a) 正如Daniel提到的,数据建模方面的差异非常显著。这意味着您可以以更便宜的方式加载数据

    b) 您总是查询索引。这很重要,因为这意味着RavenDB的查询计划始终是索引搜索。当然,您可以尝试使用RDBMS来实现这一点,但在许多情况下,您并不总能找到索引。特别是,您通常需要做更多的工作才能到达那里,然后您必须使用连接和其他东西来获取数据,这再次使查询计划复杂化

    c) RavenDB将在幕后为您优化自身。您使用它的次数越多,它就越能根据您的使用模式进行优化


    d) 在查询过程中,您从不进行任何计算。这一点很关键,因为这意味着聚合查询之类的东西已经预先计算好了,所以它们非常便宜。

    RavenDB做的事情与RDBMS不同。你无法将文档数据库与关系数据库进行比较。@Oded,许多人使用RavenDb和关系数据库来解决非常类似的任务。因此,在我看来,我们可以而且应该对它们进行比较,那么为什么不问问CoucheDB呢?还是MongoDB?卡桑德拉?@Oded,因为他们有很多不同之处,我现在正在和RavenDb一起玩。谢谢你,回答得很好!只是想澄清多映射/减少索引对RavenDb性能的影响。如果我没弄错的话,它们与关系joinsissa非常相似,这里没有值得讨论的性能差异。