我最近使用 MongoDB 并了解了它的无模式设计。但是,我对 NoSQL 一词感到困惑?为什么这么叫?它不使用 SQL 或类似 SQL 的查询吗?
我还从一篇文章中读到,主要区别在于数据的存储方式。这是真的?对于 MongoDB,它像 JSON 文档一样存储。
另外,我很困惑为什么我总是看到“NoSQL 与关系数据库”。NoSQL 数据库不是关系型的吗?我相信 MongoDB 中的文档仍然通过一些键相关/链接(如果我错了,请纠正我)。那么为什么它被标记为非关系型呢?
提前致谢!
我最近使用 MongoDB 并了解了它的无模式设计。但是,我对 NoSQL 一词感到困惑?为什么这么叫?它不使用 SQL 或类似 SQL 的查询吗?
我还从一篇文章中读到,主要区别在于数据的存储方式。这是真的?对于 MongoDB,它像 JSON 文档一样存储。
另外,我很困惑为什么我总是看到“NoSQL 与关系数据库”。NoSQL 数据库不是关系型的吗?我相信 MongoDB 中的文档仍然通过一些键相关/链接(如果我错了,请纠正我)。那么为什么它被标记为非关系型呢?
提前致谢!
“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”数据库。”
它不使用 SQL 或类似 SQL 的查询吗?
虽然“非关系数据库”可能是一个更准确的名称,但它们中的大多数实际上并不使用 SQL 或类似的东西。
NoSQL 数据库不是关系型的吗?我相信 MongoDB 中的文档仍然通过一些键相关/链接(如果我错了,请纠正我)。那么为什么它被标记为非关系型呢?
NoSQL 数据库是非关系型数据库。
它们有多种形式(主要是“文档数据库”、“键值存储”和“图形数据库”),但您通常不会获得以下任何或所有“关系”特性:
使用模式定义表(命名的并且通常是类型化的列)
能够在单个查询中连接多个表
任意范围的长时间运行的隔离事务
可能需要很长时间的临时查询,以及许多索引数据以加快速度的方法(而不是必须更改整个数据库布局)
(放弃其中一些方便的特性,您会得到性能、可用性和可扩展性的改进)。
正如维基百科所说:
[NoSQL] 是一类广泛的数据库管理系统,它不遵守广泛使用的关系数据库管理系统模型。
这意味着它是一个不遵循关系模型(Codd 的模型)的数据库,因此它不使用 SQL。