SQL与NoSQL(速度)


78

人们在比较SQL和noSQL并总结每个方面的优缺点时,我从没听到有人在谈论速度。

通常,执行SQL查询是否比执行noSQL查询要快

我的意思是,对我来说,这将是一个非常明显的结论,因为如果您知道数据库的结构,那么总会比不知道的更快。

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


Answers:


57

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

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

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


84

倾向于使用noSQL的人专门使用它,因为它适合他们的用例。与常规的RDBMS表关系和约束以及数据的ACID属性不同,可以很轻松地使其运行更快。

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


5
尽管Twitter确实在使用NoSQL(Hadoop用于数据集群,而图Nosql数据库用于社交媒体-FlockDB),所以请明确一点,Twitter在很大程度上依赖于MySQL(关系型)。谷歌正在使用内部制造的解决方案,是关系为两全其美的混合和NoSQL(“F1” research.google.com/pubs/pub41344.html
汤姆Stickel

1
是的,将Hadoop与MySQL混合将有利于将“ NoSQL”定义为“ Not Only SQL”。但是话又说回来,许多“ NoSQL”商店都开始将SQL实施为一种语言,这从马克·马德森(Mark Madsen)的数据库历史观点出发,对他的解释是有利的:“不,SQL”
Lukas Eder 2013年

10

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

如果您需要存储主/详细的简单应用程序(例如购物车),则需要在SQL应用程序中执行多个Insert语句,并且在进行查询以获取购买信息时,还将获得数据信息集,如果您使用的是NoSQL,并且使用得很好,那么您将在一个简单的“记录”(如果使用djondb这样的NoSQL数据库的术语,请参见文档)中获得单个订单的所有数据。

因此,我真的认为,如果需要执行多次插入操作来存储订单,而在数据库中只需要一个简单的插入操作,则应用程序的性能可以通过满足单个需求所需执行的操作次数来衡量。就像djondb一样,在NoSQL世界中性能将提高10倍,仅因为您对数据库层的调用减少了10倍,仅此而已。

为了说明我的观点,让我链接一个我之前写的有关NoSQL和SQL数据模型方法之间差异的示例:https : //web.archive.org/web/20160510045647/http : //djondb.com/blog/nosql- masterdetail-sample /,我知道这是一个自我参考,但是基本上我写了它来解决这个问题,我发现它是RDBMS家伙可能遇到的最具挑战性的问题,并且它始终是解释NoSQL为什么与SQ​​L世界如此不同的好方法,以及为什么它随时都能实现更好的性能,不是因为我们使用了“ nasa”技术,而是因为NoSQL可以让开发人员做更少的事情……而获得更多,更少的代码=更高的性能。


看起来该链接不再有效。我们可以用指向Internet存档上该页面的链接替换它吗?
shaunakde

1
谢谢,更新的链接
十字

2

答案是:这取决于。一般而言,NoSQL DATABASES的目标(无“查询”)是可伸缩性。RDBMS通常在某些时候有一些硬性限制(我说的是千分之一毫米),您无法再通过传统方式(复制,群集,分区)进行扩展,并且您还需要更多的东西,因为您的需求不断增长。甚至即使您设法扩展规模,整体设置也相当复杂。或者,您可以扩展读取,但不能扩展写入。

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


-8

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.