什么是非sql,它是如何工作的,有什么好处,它是否提供?[关闭]

StackOverflow https://stackoverflow.com/questions/1145726

  •  16-09-2019
  •  | 
  •  

我已经听到的事情,关于非sql,它最终可能成为替代SQL数据库储存的方法,由于这样的事实,DB相互作用往往是一个瓶颈的速度上网。

所以我只是有几个问题:

  1. 到底是什么?

  2. 它是如何工作的?

  3. 为什么会是更好的比使用SQL数据库?以及如何更好的是吗?

  4. 是的技术太新开始执行但还是值得考虑一下?

有帮助吗?

解决方案

  1. 到底是什么?

    在一方面, 具体系统, 但它也已成为通用词 各种新的数据储存的后台 不遵循关系DB模型。

  2. 它是如何工作的?

    每个系统的标的的通用名称的工作方式不同,但基本思想是提供更好的可扩展性和性能通过使用DB模型,不支持所有功能的一个通用的数据库,但是仍有足够的功能是有用的。在一样这就像MySQL,这一时缺乏支持交易但是,究竟 那,设法优于其他DB系统。如果你可以写你的应用方式,并不需要交易,这是伟大的。

  3. 为什么会是更好的比使用SQL数据库?以及如何更好的是吗?

    它会更好,当您的网站需要为规模如此大规模,最好的关系数据库上运行的更好的硬件可以负担得起和优化尽可能只是不能跟上的负荷。如何更是取决于具体使用情况(大量的更新活动的结合大量的加入,是很辛苦的"传统"关系数据库管理系统那样)-很可能是一个因素的1000在极端的情况下。

  4. 是的技术太新开始执行但还是值得考虑一下?

    主要取决于什么你要试图来实现。这肯定足够成熟的使用。但很少应用的真正需要的规模大规模。对于大多数传统RDBMS是足够的。然而,与互联网的使用变得越来越普遍存在的所有时间,这是相当可能的应用将变得更加普遍(尽管可能不占优势).

其他提示

没有这样的东西作为非sql!

非sql是一个时髦词。

几十年来,当人们谈论的数据库,它们是关系数据库。而当人们谈论的是关系数据库,它们意味着那些你控制与埃德加*F*科德的结构化查询语言。数据存储在一些其他的方式?疯狂!其他任何东西仅仅是flatfiles.

但在过去几年来,人们开始怀疑这个教条。人们想知道,如果表行和列是真的唯一方式表示的数据。人们开始思考和编码,并提出了许多新的概念如何的数据可能进行组织。他们开始以创造新的数据库系统设计对于这些新的工作方法与数据。

该理念的所有这些数据库是不同的。但有一件事所有这些数据库的共同点是,结构化查询语言不再适合使用它们。所以每个数据库替换成SQL与他们自己的查询语言。等术语非sql诞生,作为一个标签的所有数据库的技术而无视经典的关系数据库的模式。

那么非sql数据库中有什么共同点?

实际上,没有多少。

你经常听到这样的短语:

  • 非sql是可扩缩的!
  • 非sql是用于大数据!
  • 非sql违反酸!
  • 非sql是一个荣耀的密钥/价值。

是真的吗?好吧,这些声明可能是真实的,对于一些数据库,通常称为非sql,但每一个也是假的至少一个其他。实际上,唯一的非sql数据库有共同之处,是它们的数据库,其不使用SQL。就是这样。唯一的定义是什么,它们彼此分开。

所以什么样的集非sql数据库的数据分开?

所以我们做了清楚的是,所有这些数据库通常称为非sql是太不同的评估他们在一起。他们每个人需要分别进行评估来决定,如果他们是一个很好的配合,以解决特定的问题。但我们从哪里开始呢?值得庆幸的是,非sql数据库可以分为某些类别,这是适用于不同的使用情况:

面向文件

实例:也CouchDB

优势:异种数据,工作面向对象的、敏捷的发展

他们的优点是,它们不需要一个一致的数据的结构。它们是有用的时候你的要求,因此数据库的布局不断变化,或者当你正在处理的数据集中在一起,但仍然看起来非常不同。当你有很多的表二列称为"关键的"和"价值",则这些可能是值得的期待。

图数据库

实例:Neo4j,GiraffeDB.

优势:数据挖掘

虽然大多数非sql数据库放弃的概念管理数据的关系,这些数据库拥抱它甚至超过了那些所谓的关系数据库。

他们的重点是在确定数据由其相对于其他数据。当你有很多的表与主键是主要钥匙的其他两个表(也许一些数据描述它们之间的关系),那么这些可能是你的东西。

关键价值的商店

实例:穿红衣,Cassandra,MemcacheDB

优势:快速查阅的数值通过已知的钥匙

他们都很简单,但是这使得它们快速和易于使用。当你有没有需要储存程序、限制因素、触发器和所有那些先进的数据库的功能和你只是想快速存储和检索的数据,那么这些是给你的。

不幸的是,他们假设你知道你在找什么。你需要的轮廓User157641?没问题,将只需要微秒。但是,当你想要的名字的所有用户都是年龄在16和24、已经"松饼"作为他们最喜爱的食品,并记录在过去24小时?艰难的运气。当你没有一个明确和独特的关键,对一个具体的结果,你不能得到它了你的K-V储存,很容易。

是SQL过时了吗?

一些非sql支持者声称,他们最喜欢的非sql数据库的新方式做事,并SQL是过去的事情。

是他们的权利?

不,当然他们不是。虽然有的问题SQL不适合,则仍然有其长处。大量的数据模型是简单的最好的表示作为一个集合表其参考。特别是因为大多数数据库的程序员进行了培训,数十年来为数据在关系的方式,并试图按这种思维模式到一个新的技术,这不是由于它很少。

非sql数据库不能代替SQL-他们是一种替代方法。

大多数软件生态系统周围的不同的非sql数据库不成熟。虽然有进步,你还没有拿到补充工具,作为成熟和强大,因为那些可用于流行SQL数据库。

此外,还有更多的知识如何用于SQL周围。代计算机科学家们已经花了几十年他们的职业生涯成的研究侧重于关系数据库,它显示:文献编写的关于SQL数据库和关系数据模型、实践和理论,可以填补多个图书馆全面的书籍。如何建立一个关系数据库的数据是一个主题,以便研究它的很难找到一个角落的情况下,没有一个普遍接受书的最佳做法。

大多数非sql数据库,另一方面,仍然处于起步阶段。我们还是找出最好的方式来使用它们。

由于有人说,我以前的职位是题外话,我会尽力弥补:-)非sql不是,不是,拟被替换为更多的主流SQL数据库,但几个字是为了获得事情的正确的观点。

在非常的心脏 非sql哲学 谎言的考虑,可能用于商业和可移植性的原因,SQL引擎倾向于忽视的巨大力量的UNIX操作系统及其衍生物。

与文件系统数据库,可以立即采取优点的不断增加的能力和力量基础的操作系统,该系统已在稳步增加,为许多年,现在根据摩尔的法律。这种方法,许多操作系统指令成为自动还"数据库的经营者"(认为"ls""排序","找到"和其他无数的UNIX壳公用事业).

铭记这一点,有点创造力,你确实可以制定一个文件系统数据库,是能够克服的局限性很多共同SQL发动机,至少对于特定使用模式,这是整点背后的非sql的理念,我看到它。

我运行数百个网站和他们所使用的非sql以或大或小的程度。事实上,他们不主持大量的数据,但即使如果他们中的一些有没有我能想到的一个创造性地使用非sql和文件系统,以克服任何障碍。这将有可能更加难以用传统的SQL"监狱"。我敦促你谷歌"unix","马尼斯"和"shaffer"懂我的意思。

如果我记忆正确的,它指的类型的数据库,不必遵循关系的形式。文件数据库来记住,数据库没有具体结构,而不使用SQL作为一个特定的查询语言。

它通常更适合于网络的应用程序的依靠性能的数据库,并不需要更多的先进功能的关系数据库引擎。例如,一个关键->的价值储存提供一个简单的查询通过id口可能是10-100倍的速度比对应的SQL服务器实现,较低的开发维护的成本。

一个例子是这个 对于一个 只读 Tuple储存,牺牲了交易的单程处理(没有并发问题,因为没有允许并发),并保留所有数据存储器中;实现10-100更好的绩效作为比较相似 RDBMS 驱动的系统。基本上,它的行动从'一刀切'的看SQL和数据库系统。

在实践中,非sql数据库系统,该系统支持快速进入大型的二进制的对象(docs,jpg格式等)使用的一个关键基于访问的战略。这是偏离传统的SQL访问这是唯一的好足够的字母数字的价值观。不仅内部存储和访问策略,但也语法和限制的显示格式的限制传统SQL。BLOB实现的传统的关系数据库也遭受这些限制。

幕后它是一种间接承认失败的SQL模型,以支持任何形式的只读或支持新的dataformats."支持"意味着不仅仅是商店,但完整的访问能力的方案和querywise使用标准模式。

关系的爱好者们迅速修改的defnition的非sql从不-SQL不仅-SQL保持SQL仍在图片!这不是良好的,尤其是当我们看到,大多数Java程序今天度假村为对象的映射的潜在关系的模型。一个新的概念必须有一个明确的定义。否则它最终会像SOA。

根据非sql系统的谎言,在随机的关键价值对。但是,这并不是新的。传统的数据库系统,如IMS和IDMS没有支持哈希键机确定(而不使用任何指数),它们仍然这样做。事实上IDMS已经有一个关键词NONSQL在那里他们支持SQL访问他们的旧的网络数据库,其中他们被称为NONSQL.

这就像按摩浴缸:这两个品牌和一个通用名称。这不仅仅是一个特定技术,而是一个具体 类型 技术,在这种情况下参照大规模的(往往是疏)"数据库"如谷歌的大表或CouchDB.

非sql 实际程序看来是一个关系数据库的实施awk使用平面上的文件的后台。虽然他们信奉,"非sql基本上没有任何限制,并且可以在那里工作的其他产品不能。例如,没有限制关于数据领域的大小,列的数量或文件的尺寸",我不认为它是大规模数据库的未来。

作为乔说,大规模扩展的数据库喜欢 大表HBase, 更有趣的。GQL是查询语言与大表和应用程序的发动机。它的主要SQL调整,以避免特征的谷歌认为瓶颈(如加入).但是,我没有听到这个称为"非sql"之前。

非sql数据库系统,该系统不使用基于字符串SQL查询来获取数据。

而不是你建立查询使用他们将提供,例如亚马逊DynamoDB是一个很好的例子的一个非sql数据库。

非sql数据库更为大型的应用可扩展性是重要的。

并非sql意味着非关系的数据库?

是的,非sql不同数据库和OLAP.它采用更宽松的一致性模型比传统的关系数据库。

一致性模型被用于分布式系统,如分布式共享存储器系统或分布式数据存储。

它是如何工作的内部?

非sql数据库系统常常是高度优化用于检索和追加的业务和往往提供很少的功能超越记录存储(例如key-value店)。减少运行时的灵活性相比,全SQL系统是通过补偿标记的收益在可扩展性和性能为某些数据模型。

它可以工作在结构化和非结构化数据。它采用集合,而不是表

你如何查询这种"数据库"?

SQL vs非sql:战斗的后台;它解释了这一切。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top