人们在比较SQL和noSQL并总结每个方面的优缺点时,我从没听到有人在谈论速度。
通常,执行SQL查询是否比执行noSQL查询要快?
我的意思是,对我来说,这将是一个非常明显的结论,因为如果您知道数据库的结构,那么总会比不知道的更快。
但是人们似乎从来没有提到这一点,所以我想知道我的结论是对还是错。
Answers:
noSQL系统的定义非常广泛-不使用SQL的数据库不是RDBMS。因此,简而言之,您的问题的答案是:“取决于”。
某些noSQL系统基本上只是持久性键/值存储(例如Project Voldemort)。如果您的查询类型是“查找给定键的值”,那么这样的系统将(或至少应比RDBMS更快),因为它只需要一个更小的功能集即可。
另一种流行的noSQL系统类型是文档数据库(如CouchDB)。这些数据库没有预定义的数据结构。它们的速度优势在很大程度上依赖于非规范化和创建适合您将在其上运行的查询的数据布局。例如,对于博客,您可以将博客文章及其注释一起保存在文档中。这样可以减少对联接和查找的需求,从而使查询速度更快,但同时也可能降低查询的灵活性。
倾向于使用noSQL的人专门使用它,因为它适合他们的用例。与常规的RDBMS表关系和约束以及数据的ACID属性不同,可以很轻松地使其运行更快。
考虑使用NoSQL的Twitter,因为用户只在网站上做非常有限的事情,或者恰好是一条推文。并发可以被认为是不存在的,因为(1)没有其他人可以修改您的推文,(2)您通常不会同时从多个设备发推文。
正如爱因斯坦所说,速度是相对的。
如果您需要存储主/详细的简单应用程序(例如购物车),则需要在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为什么与SQL世界如此不同的好方法,以及为什么它随时都能实现更好的性能,不是因为我们使用了“ nasa”技术,而是因为NoSQL可以让开发人员做更少的事情……而获得更多,更少的代码=更高的性能。