与关系数据库相比,使RavenDb(作为Nosql文档数据库的一个例子)更有效的因素有哪些?
我知道两个因素:
>所有查询都在索引上执行.但是你可以在RDBMS中完成它
>索引在后台线程上更新(导致
missynchronization).是的,这是一个好点,但我怀疑它是非常的
重大.
实际上我认为最大的性能提升是缺少连接,但看起来像Multi Maps / Reduce Index非常类似于join.
那么哪些因素会使RavenDb更有效率呢?
IDSA,
有几个原因导致您通常会看到RavenDB应用程序比Relational DB应用程序快得多.
有几个原因导致您通常会看到RavenDB应用程序比Relational DB应用程序快得多.
a)正如Daniel所说,数据建模的差异很大.这意味着您可以以更便宜的方式加载数据.
b)您总是查询索引.这很重要,因为这意味着RavenDB的查询计划始终是INDEX_SEEK.当然,你可以尝试使用RDBMS,但在许多情况下,你并不总是命中索引.特别是,你通常需要做更多的工作才能到达那里,然后你必须使用连接和其他东西来获取数据,这再次使查询计划复杂化.
c)RavenDB将在幕后工作,以代表您进行优化.您使用它越多,它就会越多地根据您的使用模式进行优化.
d)在查询期间,您永远不会进行任何计算.这很关键,因为它意味着像聚合查询这样的东西已经预先计算好了,所以它们真的很便宜.