2

我最近使用 MongoDB 并了解了它的无模式设计。但是,我对 NoSQL 一词感到困惑?为什么这么叫?它不使用 SQL 或类似 SQL 的查询吗?

我还从一篇文章中读到,主要区别在于数据的存储方式。这是真的?对于 MongoDB,它像 JSON 文档一样存储。

另外,我很困惑为什么我总是看到“NoSQL 与关系数据库”。NoSQL 数据库不是关系型的吗?我相信 MongoDB 中的文档仍然通过一些键相关/链接(如果我错了,请纠正我)。那么为什么它被标记为非关系型呢?

提前致谢!

4

3 回答 3

5

“NoSQL”这个名称实际上是 Carlo Strozzi 在 1998 年首次用作他正在开发的基于文件的数据库的名称。具有讽刺意味的是,它是关系数据库。维基

以下是名人对“nosql”的评价:

Eric Evans(机架空间):

“我在 nosqleast 度过了最后几天,这里的热门话题之一是“nosql”这个名字。可以理解的是,有很多人担心这个名字不好,它会发送不恰当或不准确的信息. 虽然我没有对这个想法提出任何要求,但我确实不得不为它现在的名称承担一些责任。怎么样?约翰·奥斯卡森正在组织第一次聚会,并在 IRC 上提出了“什么是好名字?”这个问题;它是我在 45 秒内不假思索地提出的 3 或 4 个建议之一。

然而,我的遗憾不是关于名字所说的,而是关于它没有的。当 Johan 最初有第一次见面的想法时,他似乎在考虑大数据和线性可扩展的分布式系统,但这个名字太模糊了,以至于它打开了讨论提交任何存储数据的大门的大门,而不是关系数据库管理系统。”

马丁·福勒

“事实上,名称本身经常有一个转折点:许多 NoSQL 的拥护者说它并不意味着对 SQL 说“不”,而不仅仅是指 SQL。在这一点上,我认为将单个数据库与同类数据库区分开来是很有用的NoSQL 倡导者将其视为未来的生态系统。当我们说“x 是 NoSQL 数据库”时,我认为将 NoSQL 解释为“不仅”是愚蠢的,因为这会使该术语变得毫无意义。(然后您可以合理地争辩说 SQL Server(说)是 NoSQL 数据库。)所以我认为最好说“NoSQL 数据库”是“no-sql”数据库。”

于 2012-10-16T08:05:13.330 回答
4

它不使用 SQL 或类似 SQL 的查询吗?

虽然“非关系数据库”可能是一个更准确的名称,但它们中的大多数实际上并不使用 SQL 或类似的东西。

NoSQL 数据库不是关系型的吗?我相信 MongoDB 中的文档仍然通过一些键相关/链接(如果我错了,请纠正我)。那么为什么它被标记为非关系型呢?

NoSQL 数据库是非关系型数据库。

它们有多种形式(主要是“文档数据库”、“键值存储”和“图形数据库”),但您通常不会获得以下任何或所有“关系”特性:

  • 使用模式定义表(命名的并且通常是类型化的列)

  • 能够在单个查询中连接多个表

  • 任意范围的长时间运行的隔离事务

  • 可能需要很长时间的临时查询,以及许多索引数据以加快速度的方法(而不是必须更改整个数据库布局)

(放弃其中一些方便的特性,您会得到性能、可用​​性和可扩展性的改进)。

于 2012-10-16T05:04:53.250 回答
1

正如维基百科所说:

[NoSQL] 是一类广泛的数据库管理系统,它不遵守广泛使用的关系数据库管理系统模型。

这意味着它是一个不遵循关系模型(Codd 的模型)的数据库,因此它不使用 SQL。

于 2012-10-16T05:05:50.160 回答