最近有人问我:
为什么NoSQL比SQL快?
我不同意这个问题的前提...对于我个人而言这只是胡说八道。通过使用NoSQL而不是SQL,我看不到任何性能提升。也许SQL优于NoSQL,是的,但不是那样。
我是否缺少有关NoSQL的内容?
最近有人问我:
为什么NoSQL比SQL快?
我不同意这个问题的前提...对于我个人而言这只是胡说八道。通过使用NoSQL而不是SQL,我看不到任何性能提升。也许SQL优于NoSQL,是的,但不是那样。
我是否缺少有关NoSQL的内容?
Answers:
周围有许多NoSQL解决方案,每个解决方案都有其优点和缺点,因此,必须认真考虑以下内容。
但是从本质上讲,许多NoSQL数据库所做的就是依靠非规范化并尝试针对非规范化情况进行优化。例如,假设您正在阅读博客文章及其在面向文档的数据库中的评论。通常,评论会与帖子本身一起保存。这意味着将它们一起存储在一起的速度更快,因为它们存储在同一位置,您不必执行联接。
当然,您可以在SQL中执行相同的操作,当需要性能时,反规范化是一种常见的做法。只是从一开始就设计了许多NoSQL解决方案,以使其始终以这种方式使用。然后您将获得通常的权衡:例如,在上面的示例中添加注释会比较慢,因为您必须将整个文档保存在一起。并且,一旦进行了非规范化,就必须注意在应用程序中保持数据完整性。
而且,在许多NoSQL解决方案中,不可能进行任意联接,因此无法进行任意查询。某些数据库(例如CouchDB)要求您先考虑所需的查询,然后在数据库中进行准备。
总而言之,它归结为期望使用非规范化的架构并针对这种情况优化读取,这对于关系不是很强并且需要比写入更多的读取的数据非常有用。
“ NoSQL”(或更准确地说:非关系)数据库为了提高速度而放弃了传统数据库的某些功能,但更重要的是为了实现水平可伸缩性。
缺少的功能取决于具体的产品,通常不支持完整的ACID属性,甚至不支持连接操作。这就是提高性能的代价。
通常只有在围绕数据库设计数据时,NoSQL数据库才有意义。
如果您打算将它们简单地用作RDBMS的替代品,那么性能可能会降低,而不是更高,尤其是如果您没有足够的预算来购买具有大量RAM的服务器时。
请看这篇比较MySQL磁盘空间使用情况和MongoDB磁盘使用情况的文章:http : //blog.trackerbird.com/content/mysql-vs-mongodb-disk-space-usage
哪个NoSQL数据库?哪个SQL数据库?如果有人告诉您NoSQL比SQL快,那么您应该走开。或者更好地观看此视频:
http://www.youtube.com/watch?v=b2F-DItXtZs
我不会说关于NoSQL的说法有一半是错误的,但是我会说,实际上对它不是很了解的人有很多NoSQL狂热分子。
SQL有其局限性(当然),但它也是一项非常成熟的技术,已广为人知,并且有大量的开发人员了解如何很好地使用它。我不能对所有形式的NoSQL说相同的话。
面向列的数据库支持NoSql,其中RDBMS是面向行的数据库...例如说我们有一个Employee表,其中包含Name,Age,Salry,Address,EmployeeId等...我们将同一表放在MySql中(RDBMS支持)和HBase (NoSQL支持)。如果客户/客户编写查询以从1Lakh员工记录中获取平均年龄或Salery详细信息...会发生什么?
在RDBMS中,它将遍历每一行并收集值,并对结果求和与除。对于Columnar数据库,无需担心所有十万行的迭代。但是只处理一个计算速度更快的行。因此,有时候NoSQL比SQL快。这种情况下NoSQL不在乎ACID的投诉是值得的!
忘记数据库的理论...。这一点一旦您理解了查询,就可以按照在应用程序中实际使用的确切方式将数据保存在nosql数据库中。
例如,您有一个客户模型,其中包含许多订单以及与每个订单相关的许多商品,那么他们也有许多保存的商品供以后购买...如果您是一家大型电子商务商店,假设有1000万客户和50万个订单。然后该客户登录到显示该确切数据的仪表板,查找该客户,加入订单以及每个订单项和保存的项目所需的sql数据库工作量是多少。在sql数据库中,所有这些数据可能都需要以某种方式进行连接...或者您可以在您的数据库中创建一个名为usercache的集合,并完全按照实际使用方式保存这些数据。因此,这确实可以是对单个字段[id]的单个查询,以获取所有这些数据。最重要的是,nosql数据库没有
那么,如果不是比nosql快,那么sql db可以查询单个Id字段吗?是的,但是sql数据库可以通过查询一个表和一个字段来返回您需要的所有数据吗?不,除非您执行类似将数据保存在大文本字段内的Json中的操作。但是现在数据不可查询,以备将来使用。