像我五岁一样解释:sql(关系型)和nosql(非关系型)数据库

2admgd59  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(565)

如果我必须在1分钟内向大学生解释sql和nosql:
你熟悉excel电子表格,对吗?这就是sql:

id, name, age, weight
1, Adam, 20, 150
2, Bob, 30, 160
...

现在想象一下,如果您不知道前面的列名,并且希望在以后灵活地添加新列名。这就是nosql:

id, column, value
1, name, Adam
1, age, 20
1, weight, 150
2, name, Bob
2, age, 30,
2, weight, 160
2, gender, Male
...

用专业术语来说,它们是彼此的支点。
对于以下查询:
从年龄>20岁的人中选择*
sql通常只运行一台服务器,将所有数据放在一个数据库中,并使用年龄列索引来过滤数据。
nosql通常在一个集群中并行运行,数据分布在多个服务器上,每个服务器过滤其本地年龄数据(map),然后一个中央服务器合并结果(reduce)
这是一个很好的高层解释吗?

pzfprimi

pzfprimi1#

如果要我像你五岁那样解释这个主题,我会这样说:我会让你坐在table上,得到一个形状分类玩具。
sql:这个玩具已经定义了只有特定形状才能穿过和进入的形状孔。这也意味着只有适合形状孔的形状可以插入,因此我们可以确保只有我们认为应该插入的形状被插入。当我们想把形状弄出来的时候,我们必须把它们从同样的洞里弄出来,这可能需要更多的工作。在sql中,表已经被定义,只有与表定义一致的数据才能被插入,而在sql中,我们可能会在表之间进行大量的连接,以获得我们想要的结果,这可能需要更多的时间和性能。
然后我会去掉表面的形状孔,这样它将只是一个塑料盒与一个大开口(塑料与形状孔消失)。
nosql这个玩具没有一个表面有孔,形状必须适合通过,而是有一个大开口。这意味着你可以把所有的东西都放进去,而不必在意它是否与某个已经定义好的形状对齐。这意味着我们可以把我们想要的东西放进去,因为没有已经定义好的形状只能插入。另外,当我们想把所有的形状都拿出来的时候,我们可以把盒子倒过来,所有的形状都会掉出来。在nosql数据库中,插入数据时不遵循定义,也不执行连接,因此不需要太多时间和性能。

相关问题