86

当人们比较 SQL 和 noSQL 并总结各自的优缺点时,我从来没有听到任何人谈论的是速度。

执行 SQL 查询通常不比执行 noSQL 查询更快吗?

我的意思是,对我来说,这将是一个非常明显的结论,因为如果您知道数据库的结构,那么您应该总是能够比不知道的情况下更快地找到一些东西。

但是人们似乎从来没有提到这一点,所以我想知道我的结论是对还是错。

4

5 回答 5

91

倾向于使用 noSQL 的人专门使用它,因为它适合他们的用例。脱离了正常的 RDBMS 表关系和约束,以及数据的 ACID-ity,很容易让它运行得更快。

考虑使用 NoSQL 的 Twitter,因为用户只在网站上做非常有限的事情,或者确切地说是一件事 - 推文。并发可以被认为是不存在的,因为(1)没有其他人可以修改您的推文,并且(2)您通常不会同时从多个设备发推文。

于 2012-11-15T13:07:58.923 回答
61

noSQL 系统的定义非常广泛——不使用 SQL / 的数据库不是 RDBMS。因此,简而言之,您的问题的答案是:“这取决于”。

一些 noSQL 系统基本上只是持久的键/值存储(例如Project Voldemort)。如果您的查询属于“查找给定键的值”的类型,那么这样的系统将(或至少应该)比 RDBMS 更快,因为它只需要具有更小的功能集。

另一种流行的 noSQL 系统类型是文档数据库(如CouchDB)。这些数据库没有预定义的数据结构。它们的速度优势在很大程度上依赖于非规范化和创建适合您将在其上运行的查询的数据布局。例如,对于博客,您可以将博客文章连同其评论一起保存在文档中。这减少了连接和查找的需求,使您的查询更快,但它也可能降低您在查询方面的灵活性。

于 2012-11-15T13:13:01.827 回答
11

正如爱因斯坦所说,速度是相对的。

如果您需要存储一个主/从简单应用程序(如购物车),您需要在您的 SQL 应用程序中执行多个插入语句,当您执行查询以获取购买时,您将获得一个数据集信息,如果您使用的是 NoSQL,并且使用得很好,那么您将在一个简单的“记录”中获得单个订单的所有数据(如果您使用 djondb 等 NoSQL 数据库的术语,请记录)。

所以,我真的认为一个应用程序的性能可以通过它需要做的事情来实现一个单一的需求来衡量,如果你需要做几个插入来存储一个订单,你只需要一个简单的插入到数据库中就像 djondb 一样,那么在 NoSQL 世界中性能将提高 10 倍,这仅仅是因为您对数据库层的调用减少了 10 倍,仅此而已。

为了说明我的观点,让我链接一个我之前写的关于 NoSQL 和 SQL 数据模型方法之间差异的示例:https ://web.archive.org/web/20160510045647/http://djondb.com/blog/nosql- masterdetail-sample/,我知道这是一个自我参考,但基本上我写它是为了解决这个问题,以及为什么它会随时获得更好的性能,不是因为我们使用“nasa”技术,而是因为 NoSQL 会让开发人员做的更少……得到更多、更少的代码 = 更好的性能。

于 2012-11-15T15:13:15.983 回答
3

答案是:视情况而定。一般来说,NoSQL DATABASES(没有“查询”)的目标是可扩展性。RDBMS 通常在某些时候有一些硬性限制(我说的是数以百万计的行),您无法通过传统方式(复制、集群、分区)进行更多扩展,并且您需要更多的东西,因为您的需求不断增长。或者即使您设法扩展,整体设置也相当复杂。或者您可以扩展读取,但不能扩展写入。

查询取决于您的服务器的特定实现、您正在执行的查询类型、表中的列等等……请记住,查询只是 RDBMS 的一部分。

于 2012-11-15T13:08:35.220 回答
-15

1000人数据的SQL等关系数据库的查询时间为2000毫秒,neo4j等图形数据库的查询时间为2毫秒。如果您创建更多节点1000000速度稳定2毫秒

于 2014-08-04T11:37:13.637 回答