为什么Google的BigTable被称为NoSQL数据库?
解决方案
NoSQL 是所有不同于“标准”SQL 数据库的数据库的总称,例如 MySQL、Microsoft SQL Server 和 PostgreSQL。
这些“标准”SQL 数据库都是关系数据库,具有 SQL 查询语言并遵循 酸性特性. 。这些属性基本上可以归结为 一致性.
NoSQL 数据库有所不同,因为它不支持所谓的“SQL 数据库”的以下一个或多个关键功能:
- 一致性
- 关系数据
- SQL语言
大多数这些功能都是齐头并进的。
一致性
一致性是大多数 NoSQL 数据库与 SQL 数据库的不同之处。您可以从 SQL 数据库中拔出插头,它将确保您的数据仍然一致且未损坏。NoSQL 数据库往往会牺牲这种一致性来获得更好的可扩展性。Google 的 Bigtable 也做到了这一点。
关系数据
SQL 数据库以规范化的关系数据为中心。无论您添加什么内容,数据库都会确保这些关系保持有效和一致。NoSQL 数据库通常不支持关系,因为它们不支持强制执行这些关系的一致性。此外,当数据分布在多个服务器上时,关系数据也会降低性能。
一个例外是 图数据库. 。这些被视为 NoSQL 数据库,但确实具有关系数据。事实上,这就是他们的全部目的!
SQL语言
SQL 语言是专门为关系数据库(即所谓的“SQL 数据库”)而设计的。由于大多数 NoSQL 数据库与关系数据库有很大不同,因此它们不需要 SQL。此外,某些 NoSQL 数据库具有无法用 SQL 表达的功能,因此需要不同的查询语言。
最后但并非最不重要的一点是,NoSQL 只是一个 流行语. 。它基本上意味着“除了阁楼里旧的、值得信赖的 MySQL 服务器之外的任何东西”,其中包括 很多 替代存储机制。即使是简单的文本文件也可以被视为 NoSQL 解决方案:)
其他提示
当人们说“的NoSQL”他们通常是指是什么“非关系”。据我所知BigTable的不配备主/外键,连接,或任何类型的关系演算。
这BigTable的特征在于包括词语“SELECT”的查询的语法的事实和“WHERE”并不意味着它粘附到关系数据库的原理。它的更便利,或一个“钩”,以使单一实体型的匹配更熟悉的程序员从关系数据库来。
谷歌的BigTable确实有一些SQL变种,称为GQL
嗯,这是整点。他们确实有语言,无(t)的SQL。只要被开的分类足够的理由。
这是你应该看看在通用于人NoSQL数据库(图形,文档,大表......)的唯一的事情是,他们不回答SQL查询。
支持SQL对数据内部是如何组织和算法,你可以使用一个巨大的限制。 NoSQL的拒绝那些限制实施替代算法来改进是一个完整的SQL遵守受害者的重要功能。