为什么谷歌的BigTable称为NoSQL数据库?

为什么谷歌的BigTable称为NoSQL数据库?,sql,database,nosql,bigtable,gql,Sql,Database,Nosql,Bigtable,Gql,值得注意的生产实现 [关于NoSQL数据库]包括谷歌的 BigTable、亚马逊的Dynamo和 卡桑德拉 但是Google的BigTable确实有一些SQL的变体,叫做 我遗漏了什么?当人们说NoSQL时,他们通常的意思是非关系的。据我所知,BigTable不具有主键/外键、联接或任何类型的关系演算 BigTable的查询语法包含单词SELECT和WHERE,这并不意味着它遵守关系数据库的原则。让来自关系数据库的程序员更熟悉单个实体类型的匹配更方便,或者说是一个钩子。NoSQL是所有不同于“标

值得注意的生产实现 [关于NoSQL数据库]包括谷歌的 BigTable、亚马逊的Dynamo和 卡桑德拉

但是Google的BigTable确实有一些SQL的变体,叫做


我遗漏了什么?

当人们说NoSQL时,他们通常的意思是非关系的。据我所知,BigTable不具有主键/外键、联接或任何类型的关系演算


BigTable的查询语法包含单词SELECT和WHERE,这并不意味着它遵守关系数据库的原则。让来自关系数据库的程序员更熟悉单个实体类型的匹配更方便,或者说是一个钩子。

NoSQL是所有不同于“标准”SQL数据库的数据库的总称,如MySQL、Microsoft SQL Server和PostgreSQL

这些“标准”SQL数据库都是关系数据库,以SQL查询语言为特征,并遵循标准。这些特性基本上归结为一致性

NoSQL数据库不同,因为它不支持所谓“SQL数据库”的一个或多个关键功能:

一致性 关系数据 SQL语言 这些特性中的大多数是齐头并进的

一致性 一致性是大多数NoSQL数据库不同于SQL数据库的地方。您可以从SQL数据库拔出插头,它将确保您的数据仍然是一致的和未损坏的。NoSQL数据库往往为了更好的可伸缩性而牺牲这种一致性。谷歌的Bigtable也做到了这一点

关系数据 SQL数据库围绕规范化的关系数据运行。数据库确保这些关系保持有效性和一致性,无论您如何处理。NoSQL数据库通常不支持关系,因为它们不支持执行这些关系的一致性。此外,当数据分布在多个服务器上时,关系数据对性能不利

例外情况是。这些数据库被认为是NoSQL数据库,但它们确实具有关系数据。事实上,这就是他们的全部

SQL语言 SQL语言是专门为关系数据库设计的,即所谓的“SQL数据库”。由于大多数NoSQL数据库与关系数据库非常不同,因此它们不需要SQL。此外,一些NoSQL数据库具有无法用SQL表示的特性,因此需要不同的查询语言

最后,但并非最不重要的是,NoSQL只是一个流行词。它基本上意味着“除了阁楼上的旧的、可靠的MySQL服务器之外的任何东西”,其中包括许多替代存储机制。即使是简单的文本文件也可以被视为NoSQL解决方案:

Google的BigTable确实有一些SQL变体,称为GQL

这就是重点。他们有一种不是SQL的语言。只有这一点才足以将其分类

在所有NoSQL数据库中,您唯一应该看到的共同点是图形、文档、大表。。。问题是它们不回答SQL查询


支持SQL对数据的内部组织方式和可使用的算法有很大的限制。NoSQL拒绝这些限制,以实现替代算法来改进那些成为SQL完全遵从性牺牲品的重要功能。

大多数NoSQL语言都有某种查询语言。虽然这可能不是偶然的,但它恰好被称为类似于SQL的东西。Niels,Re:关系数据。我能解释你所写内容的唯一方法是,你不知道什么是关系,什么是关系。图形数据库是非关系数据库,不支持关系数据。“当数据被分发时,关系数据对性能有害的说法是含糊不清的,不可信的。@dportas:我说的是相互关联的实体,例如客户和地址,这种关系由数据库理解的结构表示,例如外键。我不是在说这个。图形数据库确实理解实体之间的关系,否则像“A和B之间的最短路径”这样的图形操作将不可行。@dportas,对。您谈论的是关系和约束,而不是关系或关系数据库。然而,如果说图形数据库以外的NOSQL数据库不支持关系或约束,那就错了。只是图形数据库也支持某些导航结构——它们实际上是网络数据库。术语关系数据不是描述图形的正确方式。