SQL与noSQL(速度)

jan*_*o-m 64 sql nosql

当人们比较SQL和noSQL,并总结每个人的优点和缺点时,我从未听过任何人谈论的是速度.

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

我的意思是,对我而言,这将是一个非常明显的结论,因为如果您了解数据库的结构,那么您应该始终能够找到更快的结果.

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

Ric*_*iwi 74

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

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

  • 虽然Twitter确实使用NoSQL(Hadoop用于数据集群和图形nosql数据库用于社交媒体--FlockDB)所以我们要清楚一点,Twitter非常依赖MySQL(关系型).Google正在使用内部制作的解决方案,它是关系型和nosql的混合体,可以实现两全其美("F1"http://research.google.com/pubs/pub41344.html) (4认同)

Car*_*ten 50

noSQL系统的定义非常广泛 - 不使用SQL /的数据库不是RDBMS.因此,对你的问题的答案简而言之:"它取决于".

一些noSQL系统基本上只是持久的键/值存储(如Project Voldemort).如果您的查询类型为"查找给定键的值",则此类系统将(或至少应该)比RDBMS更快,因为它只需要具有更小的功能集.

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


Cro*_*oss 7

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

如果您需要存储主/详细简单应用程序(如购物车),则需要在SQL应用程序中执行多个Insert语句,当您进行查询以获取购买时,您还将获得一组数据信息,如果您正在使用NoSQL,并且您正在使用它,那么您将在一个简单的"记录"中获得单个订单的所有数据(如果您使用像djondb这样的NoSQL数据库的条款,则为文档).

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

为了说明我的观点,让我链接一个我之前写过的关于NoSQL和SQL数据模型方法之间差异的例子:http://djondb.com/blog/?p = 4,我知道这是一个自我参考,但基本上我写的它解决了这个问题,我发现这是RDBMS人员可能遇到的最具挑战性的问题,它总是一个很好的方法来解释为什么NoSQL与SQL世界如此不同,以及为什么它会随时实现更好的性能,而不是因为我们使用"nasa" "技术,这是因为NoSQL会让开发人员做得更少......并获得更多,更少的代码=更高的性能.