NoSQL究竟是什么?了解为什么NoSQL数据库不是传统数据库的对手数据库

来源:互联网 / 作者:SKY / 2019-09-11 20:12 / 点击:
近年来,我们目睹了NoSQL的兴起,并观察它在各种应用中的应用。本文旨在对SQL和NoSQL技术进行客观比较,并尝试澄清一些不明确的方面,以帮助人们熟悉地选择后端

近年来,我们目睹了NoSQL的兴起,并观察它在各种应用中的应用。本文旨在对SQLNoSQL技术进行客观比较,并尝试澄清一些不明确的方面,以帮助人们熟悉地选择后端。

我对NoSQL的态度

一切都有时间,2014年我开始使用NoSQL。也许我迟到了,但我之前的项目需求完全被传统数据库所满足,所以我没有被迫学习NoSQL。

NoSQL技术被神秘的光环所包围。我第一次发现开发人员有一件名为“NoSQL”的东西,他穿着一件带有“向我询问MongoDB”标记的T恤。我当时没有问过。我被答案吓到了,我画得很长很复杂。然后我看到两个不同的方面:谁是NoSQL的重要推动者,他们讨厌旧数据库,而传统开发人员则拒绝NoSQL的所有好处。

当我意识到这种情况时,我确信我会发现并学习。这让我进入了一个小项目,我将这两个解决方案与基准进行比较,以显示NoSQL的所有优点和限制。最后,我理解NoSQL和SQL只是为不同项目设计的不同工具(即使在某些情况下你需要两者)。五年后,我无法确定文化差距是否已经填补。这就是为什么我刷新文章,切割无聊的部分,我在这里重新发表。

NoSQL究竟是什么?了解为什么NoSQL数据库不是传统数据库的对手

什么是NoSQL

简单来说,NoSQL是一个不遵循关系数据库模型的新数据存储后端。这意味着我们所说的“容器”与传统的基于SQL的后端的工作方式不同。

NoSQL技术的诞生是为了满足传统数据库已经成熟时出现的一系列新需求。当然,在最近几年,应用程序需求发生了变化,变得更加挑剔(大数据,集群,文件存储库),因此这个新的存储系统的设计考虑到了这些新的需求。

但是,我的意思是“要求”?这里有一组NoSQL旨在支持的案例。

该应用程序使用大量数据(大数据)

该应用程序使用快速更改关系和数据类型(半结构化,非结构化和多态数据)的数据。

开发人员使用敏捷方法在一个小团队中工作:针对长期瀑布迭代的许多小冲刺

作为服务的应用程序可以在Web上发布

为数千名用户而非公司内部的少数人提供的应用程序

对应用程序的未来负载一定不确定:需要具有可扩展性和动态性,需要轻松地在后端集群上使用基础软件

市场上提供了许多NoSQL解决方案,无论是开源还是非开源。它们中的每一个都有所不同,可能专门针对某些特定需求,但基本思想和共同特征是提供更好的可扩展性和性能。为此,他们放弃了通用RDBMS的一些功能,引入了新功能,但保留了足够的功能。

NoSQL实现

SQL DB的一个重大变化是SQL后端是一个通用存储系统,NoSQL分发专注于特定类型的数据。这允许DB在其范围内更有效,并允许我们拥有更高性能的系统。在本节中,我们将讨论NoSQL数据库的应用程序。请注意,它们可以一起使用(也可以与传统的SQL系统一起使用),以便从不同的技术中获得最佳效果。

文档导向

这种类型的数据库不需要具有一致的数据结构,因此当您必须处理多态数据或数据结构不断变化时,它们非常有用。这种后端可以将标准化实体(如键值数据集或EAV模型)转换为简单的文档集。

目标:存储非类型的“记录”集,称为“文档”

示例: MongoDB,CouchDB

目标:异构数据,面向工作,敏捷开发

图数据库

我们被告知NoSQL数据库已经删除了关系的概念以实现更好的性能。在这种DB中,这不是真的。相反,图形数据库强制执行关系概念。

他们的目标是通过与其他数据的关系来定义数据。当大多数数据结构被设计为保持与实体的关系时(即,当存在大多数外键列时,如果有很多表),这种数据库可能很有用。

目标:描述数据关系

示例: Neo4j,GiraffeDB。

目标:数据挖掘

键值商店

这是一种用于存储大量键值对数据的DB。当数据库用于存储属性,转换或缓存目的时,这可能很有用。

目标:以键值形式存储数据

示例: Redis,Cassandra,MemcacheDB

目标:键值存储

NoSQL的优点

我们知道NoSQL DB有一些有趣的优点,它们可以解决传统RDMS无法解决的问题。如今,他们在关键系统中的大量工作,如大型云系统和一些大型SaaS产品,确认它们已经成熟且有用。但问题是,为什么我应该转向他们?在这种情况下,何时移动有利可图?我们不能只根据我们的印象做出这样的决定,并阅读一些供应商宣传册,其中NoSQL非常酷是不够的。而且,我们不能因为害怕变化而停留在不充分的平台上。

在本节中,我将尝试解释为什么这个解决方案可以很好地转移到哪个用例使其更有利可图。

正如我们所说,NoSQL数据库的创建是为了响应传统关系数据库技术的局限性。这意味着我们会发现一些改进,或者更好的是,传统RDBMS中的某些功能不存在且无法添加,即使生产者会实现它们。

NoSQL的优点包括易于处理的功能:

大数据:使用这个术语,我们描述了包含大量数据的数据集。

可变数据:数据也可以是结构化的,半结构化的和非结构化的。NoSQL还可以管理数据转换。

动态开发:在我们需要敏捷冲刺,快速迭代,频繁代码推送以及总结以响应变化的环境中,拥有一个包含动态的数据库是非常有帮助的。

面向对象:易于使用且灵活的编程

可扩展:我们可以轻松实现高效,可扩展的架构,而不是昂贵的单片架构。即使在传统的数据库中,我们也能做到这一点,但它更难,更有限。

开源:大多数解决方案都是开源的,因此无需许可证

综上所述:

NoSQL数据库更具可扩展性并提供更好的性能,并且它们的数据模型更接近应用程序内部使用的域模型。基于NoSQL数据库启动项目的公司数量正在增长。NoSQL数据库也往往是开源的,这意味着开发,实现和共享软件的成本相对较低。

NoSQL的限制
阅读延展

1
3