什么是NoSQL?有人能简单地解释一下吗?

14
在这篇Stack Overflow Architecture文章中,我看到了一个叫做NoSQL的东西,但我不明白它是什么,我试着在谷歌上搜索,但好像没有找到确切的答案。
请有人用简单易懂的语言解释一下NoSQL是什么?

请查看这个问题 - Cal Jacobson
7个回答

28
如果你曾经处理过数据库,那么你可能使用过一种叫做“关系型”的数据库。这些数据库的例子包括Access数据库、SQL Server或MySQL。当你想到这些数据库中的表格时,一般会想到一个网格,就像Excel中的表格一样。你需要为数据库表格中的每一列命名,并且你需要指定该列中所有值是整数、字符串等类型。最后,当你想要在该表中查找信息时,你需要使用一种称为SQL的语言。
现在出现了一种新趋势,即非关系型数据库,也就是不以网格形式排列的数据库。你不需要指定哪些事物是整数、字符串和布尔值等。这些类型的数据库更加灵活,但它们不使用SQL,因为它们的结构并非如此规则。
简而言之,这就是为什么它们被称为“NoSQL”数据库。
使用NoSQL数据库的优点是你不需要提前知道数据长什么样子。也许你有一个联系人表格,但你不知道想要存储每个联系人的哪些信息。在关系型数据库中,你需要创建像“姓名”和“地址”这样的列。如果你后来发现需要电话号码,你就必须添加一个列。但在NoSQL数据库中,不需要进行这种计划和结构化。此外,还存在潜在的扩展优势,但这有点有争议,所以我不会做任何声称。
NoSQL数据库的缺点就是缺乏SQL语言。SQL语言简单且普遍使用。SQL允许你更轻松地切分数据并获得聚合结果,而在NoSQL数据库中则稍微复杂一些(你可能需要使用MapReduce等技术,其存在一定的学习曲线)。

2
是的,我相信任何提到NoSQL的人都是在谈论概念而不是具体的工具。 - Artem Russakovskii
1
是的,我在读了David的回答之前并没有意识到有一个特定的NoSQL工具。我总是想到这个概念。谢谢,Artem。 - Jon Smock
好的解释,带有列。 - fastcodejava

7
NoSQL主页
NoSQL是一种快速、可移植的关系型数据库管理系统,没有任何任意限制(除了内存和处理器速度),在UNIX操作系统下运行并与之交互。它使用“运算符流范例”,该范例在1991年3月的“Unix Review”杂志上被描述为“4GL语言”。有许多“运算符”对数据执行不同的功能。流由UNIX输入/输出重定向机制提供。因此,每个运算符处理一些数据,然后通过UNIX管道函数将其传递给下一个运算符。这非常高效,因为UNIX管道是在内存中实现的。NoSQL符合“关系模型”。
我还看到了Stackoverflow上的这个答案

4
以前从未听说过NoSQL是一种实际存在的产品,但现在大家谈论NoSQL时通常指非关系型数据库(例如参见Jon的回答)。 - Artem Russakovskii
1
看了这篇文章(非常好的一篇文章),我认为他指的是 NoSQL 运动而不是具体的工具。 - Jon Smock

3

3
NoSql是一种新的数据库哲学,讨论关系型数据库设计的所有缺点,特别是它们在满足当今要求严苛的Web环境中扩展性方面存在的问题。
NoSql正在迅速发展成为一种运动,出现了新的工具、软件和格式作为SQL的替代品。
RDBMS像OOP一样普遍存在,虽然这两种设计方法都能很好地解决一些问题,但并不能解决所有问题。
因此,将NoSql视为数据库世界的函数式编程。
这个解释够简单吗?

3

1

所有考虑采用“nosql”方法的人都应该考虑以下事项:

(我不想冒险在这篇文章中放置图像,因为它包含一个咒骂词语,我不想引起冒犯。所以点击者要小心——里面有一个f-word。只有当你有幽默感时才点击。)

http://browsertoolkit.com/fault-tolerance.png


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接