什么是NoSQL,它是如何工作的,它提供了什么好处?

我一直在听NoSQL的事情,它最终可能成为SQL DB存储方法的替代品,因为数据库交互通常是网络速度的瓶颈。

所以我只有几个问题:

  1. 究竟是什么?

  2. 它是如何工作的?

  3. 为什么它比使用SQL数据库更好?它有多好?

  4. 这项技术是否太新,无法开始实施,还是值得研究一下?


至尊宝的传说
浏览 819回答 3
3回答

一只萌萌小番薯

究竟是什么?一方面,一个特定的系统,但它也成为不遵循关系数据库模型的各种新数据存储后端的通用词。它是如何工作的?标有通用名称的每个系统的工作方式不同,但基本思想是通过使用不支持通用RDBMS的所有功能的DB模型来提供更好的可伸缩性和性能,但仍然有足够的功能。在某种程度上,它就像MySQL,它曾一度缺乏对事务的支持,但正因为如此,它成功地超越了其他数据库系统。如果您可以以不需要交易的方式编写应用程序,那就太棒了。为什么它比使用SQL数据库更好?它有多好?如果您的站点需要如此大规模地扩展以使最好的RDBMS运行在您能够承受的最佳硬件上并且尽可能地优化而无法跟上负载,那就更好了。它的好坏取决于具体的用例(大量的更新活动与大量的连接相结合对于“传统的”RDBMS来说非常困难) - 在极端情况下很可能是1000的因素。这项技术是否太新,无法开始实施,还是值得研究一下?主要取决于你想要实现的目标。它当然足够成熟,可以使用。但很少有应用程序确实需要大规模扩展。对于大多数人来说,传统的RDBMS就足够了。然而,随着互联网的使用越来越普遍,很可能应用程序会变得更加普遍(尽管可能不是主导)。

梦里花落0921

NoSQL没有这样的东西!NoSQL是一个流行语。几十年来,当人们谈论数据库时,他们意味着关系数据库。当人们谈论关系数据库时,他们意味着你用Edgar F. Codd的结构化查询语言控制的那些数据库。以其他方式存储数据?疯狂!其他任何东西都只是flatfiles。但在过去的几年里,人们开始质疑这个教条。人们想知道具有行和列的表是否真的是表示数据的唯一方式。人们开始思考和编码,并提出了许多关于如何组织数据的新概念。他们开始创建新的数据库系统,专为这些处理数据的新方法而设计。所有这些数据库的哲学都不同。但是所有这些数据库有一个共同点,就是结构化查询语言不再适合使用它们。因此,每个数据库都用自己的查询语言替换SQL。因此,NoSQL这个术语诞生了,作为所有数据库技术的标签,它违背了传统的关系数据库模型。那么NoSQL数据库有什么共同之处呢?实际上,并不多。你经常听到这样的短语:NoSQL是可扩展的!NoSQL适用于BigData!NoSQL违反了ACID!NoSQL是一个美化的键/值存储!真的吗?好吧,其中一些语句可能适用于一些通常称为NoSQL的数据库,但每一个数据库对于至少一个其他数据库也是假的。实际上,NoSQL数据库唯一的共同点就是它们是不使用SQL的数据库。而已。唯一定义它们的是使它们彼此分开的原因。那么是什么让NoSQL数据库与众不同?因此,我们明确指出,所有通常称为NoSQL的数据库都不同,无法将它们一起评估。需要对它们中的每一个进行单独评估,以确定它们是否适合解决特定问题。但是我们从哪里开始呢?值得庆幸的是,NoSQL数据库可以分为特定类别,适用于不同的用例:文档导向示例:MongoDB,CouchDB优势:异构数据,面向工作对象,敏捷开发它们的优点是它们不需要一致的数据结构。当您的需求和数据库布局不断变化,或者处理属于一起但看起来非常不同的数据集时,它们非常有用。当你有很多表有两列名为“key”和“value”的表时,这些可能值得研究。图数据库示例:Neo4j,GiraffeDB。优势:数据挖掘虽然大多数NoSQL数据库放弃了管理数据关系的概念,但这些数据库比那些所谓的关系数据库更能接受它。他们的重点是通过与其他数据的关系来定义数据。如果你有很多带有主键的表,这些表是另外两个表的主键(也许还有一些描述它们之间关系的数据),那么这些表可能适合你。键值商店示例:Redis,Cassandra,MemcacheDB优点:通过已知密钥快速查找值它们非常简单,但这使它们快速且易于使用。如果您不需要存储过程,约束,触发器和所有这些高级数据库功能,并且只是想快速存储和检索数据,那么这些都适合您。不幸的是,他们认为你确切地知道你在寻找什么。您需要User157641的个人资料吗?没问题,只需几微秒。但是当你想要年龄在16到24岁之间的所有用户的名字时,有什么“华夫饼”作为他们最喜欢的食物并且在过去的24小时内登录了什么?倒霉。当您没有明确且唯一的特定结果密钥时,您无法轻松地将其从KV商店中取出。SQL过时了吗?一些NoSQL支持者声称他们最喜欢的NoSQL数据库是新的做事方式,SQL已经成为过去。他们是对的吗?不,当然不是。虽然SQL不适合存在问题,但它仍然有其优势。许多数据模型最好表示为相互引用的表的集合。特别是因为大多数数据库程序员都经过数十年的训练才能以关系的方式思考数据,并且试图将这种思维方式转变为一种新技术,而这项技术并非为此而设。NoSQL数据库不是SQL的替代品 - 它们是替代品。围绕不同NoSQL数据库的大多数软件生态系统还不够成熟。虽然有了进步,但您仍然没有像流行的SQL数据库那样成熟和强大的补充工具。此外,SQL还有更多的专业知识。几代计算机科学家将他们几十年的职业生涯投入到关注数据库的研究中,它表明:关于SQL数据库和关系数据建模的文献,无论是实践还是理论,都可以填满多个图书馆。如何为您的数据构建关系数据库是一个如此深入研究的主题,很难找到一个没有普遍接受的书本最佳实践的极端情况。另一方面,大多数NoSQL数据库仍然处于起步阶段。我们仍然在找出使用它们的最佳方法。

慕尼黑的夜晚无繁华

既然有人说我以前的帖子是偏离主题的,我会尽力补偿:-) NoSQL不是,而且从来没有打算成为更主流的SQL数据库的替代品,但是为了获得正确的观点。在的非常心脏的NoSQL理念撒谎说,可能是商业性和便携性的原因,SQL引擎往往忽视了UNIX操作系统及其衍生物的巨大力量的考虑。使用基于文件系统的数据库,您可以立即利用底层操作系统不断增强的功能和强大功能,这些操作系统已根据摩尔定律多年来稳步增长。使用这种方法,许多操作系统命令也自动成为“数据库操作员”(想想“ls”“sort”,“find”和其他无数的UNIX shell实用程序)。考虑到这一点,以及一点创造力,您确实可以设计一个基于文件系统的数据库,它能够克服许多常见SQL引擎的限制,至少对于特定的使用模式,这是NoSQL的理念背后的全部要点,我看到它的方式。我运行了数百个网站,他们都或多或少地使用NoSQL。实际上,它们并不存储大量数据,但即使其中一些数据存在,我也可能会想到NoSQL和文件系统的创造性使用以克服任何瓶颈。传统的SQL“jails”可能会更加困难。我敦促你谷歌为“unix”,“manis”和“shaffer”来理解我的意思。
打开App,查看更多内容
随时随地看视频慕课网APP