NoSQL究竟是什么?了解为什么NoSQL数据库不是传统数据库的对手
为什么NoSQL会比使用SQL数据库更好?阅读完本文后,我确信您会理解NoSQL不是SQL数据库的替代品,而是具有不同功能的不同存储系统,并且在某些特定领域中非常有用。所以答案不能与“它取决于”有所不同。因为它取决于项目的许多特征。 说实话,谨慎,当以下所有陈述都成立时,NoSQL是最佳解决方案:
在某些情况下,NoSQL可能是一个很好的选择,但对于构建耐用的基础架构并不是必不可少的。当然,如果在您的应用程序中,NoSQL系统覆盖了99%的所有需求,则没有理由将其与RDBMS结合使用。但是,如果您需要标准RDBMS的关系,事务和其他功能,可能最好将它们用作主存储系统,并使用NoSQL仅覆盖关键部分(可能源自数据的大小)。 在上面的情况下,表现有多好? 这取决于具体的用例。从一方面来说,我们在大型表或大量使用方面有很多好处,但从另一方面来说,我们使用查找而不是加入小型数据集会有一些性能损失。一个现实的估计,如果有使用NoSQL DB的基础,我们可以将性能从10提高到100。当然,这种估计考虑了应用程序的所有方面,并且与最终用户体验有关。这意味着您可以在数据库层上测量更好的加速,但最终用户体验会因许多减少差距的因素(缓存,网络延迟,页面呈现)而失真。 只是为了解释我所说的内容,当有一个页面进行查询并返回数据时,请参考示例中的极限情况。假设此页面使用传统数据库获取结果为500毫秒,使用NoSQL为50毫秒,渲染页面为200毫秒,通过互联网传输数据为1秒。DB层的性能提升为-90%,但对于最终用户,1700只增加了450ms,因此只有26%。通过这个例子,我会解释说很难衡量复杂系统的改进,在很多情况下,NoSQL还不足以解决性能问题。更直接的是,如果您考虑解决因迁移到NoSQL的应用程序中的设计不良而导致的性能问题,那么您就没有走上正确的道路。 但最大的问题是:为了获得这种表现,我失去了什么?因为在某些情况下,不可能放弃某些功能,如交易或关系。在移动之前理解这一点非常重要。 NoSQL系统在生产环境中应用是否成熟? 这主要取决于您的需求,或更好地取决于项目要求。我们可以说NoSQL肯定足够成熟。所以,如果你需要它,你可以毫无顾虑地使用它。但并非所有应用程序都需要处理大数据或大规模扩展。大多数Saas产品确实如此,在企业环境中也有很多关键应用程序,但现在大多数应用程序仍然非常简单。 根据我的经验,很难在数据库中找到超过10万行的表。想想你的数据库,排除你上面的2-3个更大的表并查看行数。它们有多大?DB应用程序上的常用DB结构计数很多“小”表(小于10万行)相关。对于这种类型的应用程序,传统的RDBMS就足够了,它将永远存在。重要的是,而不是开始使用它,就是要了解在您的案例需要时准备好的利益和发展模式。 SQL过时了吗? 当男人发明飞机时,汽车已经过时了?不,当然。如果飞机比汽车快。它们只是两种不同的系统来移动人,具有不同的特征。根据您的旅行类型,您在旅行和预算上花费的时间,您将决定什么是最适合您的选择。同样,NoSQL即将推出过时的SQL。它们只是两种不同的存储数据的方式,具有不同的特征。您将根据自己的需求决定什么是最适合您的。 SQL不适合存在问题,因此您不必使用它来启动大数据项目。这将是试图用汽车而不是飞机到达岛屿。但SQL仍然有其优势。许多数据模型最好表示为相互引用的表的集合。这就像试图用飞机去买牛奶一样。NoSQL数据库不是SQL的替代品,但它们是替代品。 市场是否为NoSQL做好准备? 回答这个问题的关键点是更接近开发人员实现的经验。大多数数据库程序员都接受了一年的培训,以便相关地思考数据。他们如何在这么短的时间内改变思维方式?它并不容易,特别是当开发人员必须在许多项目中工作时,其中一些是SQL和其他NoSQL。将SQL上的相同模式复制到NoSQL系统的诱惑很难被击败,并且经常会导致糟糕的结果。 实际上,有更多的SQL专有技术,RDBMS上的开发人员比NoSQL更多。同时,DBA花费大部分时间专注于关系数据库,我们不能指望在不到十年前出生的技术上找到相同的东西。在学校和大学都达到了SQL,NoSQL正在开始。 在第一点之后,第二点是,因为这些系统较新,开发工具较少,或者它们不像其他系统那么先进,但我确信这不是一个真正的问题。有一些“企业就绪”的解决方案,它提供了管理所有基本需求的工具,我们希望这些工具随着平台的发展而增长。 什么是最好的解决方案?没有涵盖任何案例的最佳解决方案。答案很简单,但仍然相同:“这取决于”。通过本文,我希望能够概述这些系统的所有功能以及了解它们何时有用的一些基础知识。 【编辑推荐】
点赞 0 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |