如何向你的祖母解释 SQL 和 NoSQL 之间的区别

如何向你的祖母解释 SQL 和 NoSQL 之间的区别

开发人员做出的最重要的决定之一是使用哪个数据库。 多年来,选项仅限于支持结构化查询语言 (SQL) 的各种关系数据库选项。 其中包括 MS SQL Server、Oracle、MySQL、PostgreSQL、DB2 等。

在过去的 15 年里,市场上出现了许多新的 No-SQL 数据库。 其中包括 Redis 和 Amazon DynamoDB 等键值存储、Cassandra 和 HBase 等广泛的列式数据库、MongoDB 和 Couchbase 等文档存储以及 Elasticsearch 和 Solr 等图形数据库和搜索引擎。

在本文中,我们将尝试了解 SQL 和 NoSQL,但不深入了解它们的功能。
另外,我们会在这个过程中获得一些乐趣。

给奶奶解释SQL

奶奶,想象一下我不是您唯一的孙子。 相反,爸爸妈妈像兔子一样相爱,生了 100 个孩子,然后又收养了 50 个。

所以,你爱我们所有人,不想忘记我们的任何名字、生日、最喜欢的冰淇淋口味、衣服尺码、爱好、配偶的名字、后代的名字和其他超级重要的事实。 然而,让我们面对现实吧。 你已经 85 岁了,再好的记忆力也应付不了。

幸运的是,作为你的孙子中最聪明的一个,我可以提供帮助。 所以我来到你家,拿出几张纸,请你在我们开始之前烤一些饼干。

在一张纸上,我们列出了一个名为“孙子” 每一个 孙子 记录了一些有关它的基本信息,包括一个唯一的编号,该编号现在将指示哪个 孙子 他是。 另外,为了便于组织,我们将命名属性写在列表顶部,以便我们始终知道列表包含哪些信息。

id
姓名
生日
上次访问
服装尺码
最喜欢的冰淇淋
采用

1
吉米
09-22-1992
09-01-2019
L
薄荷巧克力
false

2
Jessica
07-21-1992
02-22-2018
M
石板路
true

...继续清单!

孙辈名单

过了一会儿,你就明白了,我们的清单就快完成了! 然而,你转向我说:“我们忘记为配偶、爱好、孙子们增加空间!” 但不,我们没有忘记! 这进一步需要一张新纸。

所以我拿出另一张纸,在上面我们称之为清单 配偶。 我们再次将对我们重要的属性添加到列表的开头,并开始添加行。

id
孙子id
姓名
生日

1
2
John
06-01-1988

2
9
费尔南达
03-05-1985

...更多配偶!

配偶名单

在这个阶段,我向祖母解释说,如果她想知道谁和谁结婚了,那么她只需要比较 id 在列表中 孙子 с 孙子id 在配偶名单中。

吃了几十块饼干后,我需要小睡一下。 “奶奶,你还能继续吗?” 我要去睡午觉了。

几个小时后我就回来。 你真棒,奶奶! 除了列表之外,一切看起来都很棒 爱好。 清单上大约有1000个爱好。 其中大部分都是重复的; 发生了什么事?

孙子id
爱好

1
自行车

4
自行车

3
自行车

7
运行

11
自行车

……我们继续吧!

对不起,我完全忘了说! 使用一个列表,您只能跟踪 爱好。 然后在另一个列表中我们需要跟踪 孙子谁在做这个 爱好。 我们将称之为 《共同清单》。 看到你不喜欢,我开始担心并回到列表模式。

id
爱好

1
自行车

2
运行

3
游泳的

...更多的爱好!

兴趣爱好清单

一旦我们有了爱好列表,我们就创建第二个列表并将其命名为“孙辈的爱好“。

孙子id
爱好id

4
1

3
1

7
2

…更多的!

孙辈的爱好总表

经过所有这些工作,奶奶现在拥有了一个很酷的记忆系统来记录她惊人的大家庭。 然后,为了让我停留得更久,她问了一个神奇的问题:“你从哪里学会做这一切的?”

关系数据库

关系数据库是一组正式描述的表(在我们的示例中这些是工作表),您可以从中访问 数据 或者以不同的方式收集它们,而无需重新组织表格 数据库。 有许多不同类型的关系数据库,但不幸的是,一张纸上的列表并不是其中之一。

最流行的关系数据库的一个显着特征是查询语言 SQL(结构化查询语言)。 多亏了它,如果奶奶把她的记忆系统转移到电脑上,她就能很快得到诸如“去年谁没有来看我,结婚了,没有爱好?”之类的问题的答案。

最流行的 SQL 数据库管理系统之一是开源 MySQL。 它主要作为基于 Web 的软件应用程序的关系数据库管理系统 (RDBMS) 来实现。

MySQL 的一些关键特性:

  • 它是众所周知的、广泛使用的并且经过彻底测试。
  • 有许多合格的开发人员拥有使用 SQL 和关系数据库的经验。
  • 数据存储在各种表中,这使得使用主键和外键(标识符)可以轻松建立关系。
  • 它易于使用且有效,非常适合大大小小的企业。
  • 源代码遵循 GNU 通用公共许可证的条款。

现在忘记它了 所有.

向奶奶解释NoSQL

奶奶,我们有一个大家庭。 里面有150个孙子! 他们中的许多人已婚、有孩子、对某事感兴趣等等。 在你这个年纪,不可能记住我们所有人的一切。 你需要的是一个记忆系统!

幸运的是,我 没有 希望你忘记我的生日和最喜欢的冰淇淋口味,我可以帮忙。 所以我跑到最近的商店,拿了一个笔记本,然后回到你家。

我采取的第一步是在笔记本封面上用粗体大字写下“孙子”。 然后我翻到第一页,开始写下你需要记住的关于我的一切。 几分钟后,页面看起来像这样。

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я:“看来一切都准备好了!”
Бабушка:“等等,其他孙子呢?”
Я: “对,就是这样。 然后我们为每个人分配一个页面。”
Бабушка:“我是否必须像为你那样为每个人写下所有相同的信息?”
Я:“不,只要你愿意。 让我展示。”
我拿起祖母的笔,翻过一页,飞快地写下了我最不喜欢的表弟的信息。

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

每当奶奶需要记住有关她的孙子的事情时,她只需要转到孙子笔记本中的正确页面即可。 有关他们的所有信息都将存储在他们的页面上,她可以快速更改和更新。

当一切都完成后,她问了一个神奇的问题:“你从哪里学会做这一切的?”

NoSQL 数据库

有许多 NoSQL 数据库 (“不仅仅是 SQL”)。 在我们的例子中我们展示了 文档数据库。 NoSQL 数据库以消除关系数据库中使用的表关系的方式对数据进行建模。 这些数据库在 2000 年代初在由于其巨大的扩展需求而需要基于云的数据库集群的公司中变得流行(例如 Facebook)。 在此类应用程序中,数据一致性远没有性能和可扩展性那么重要。

最初,NoSQL 数据库通常用于利基数据管理任务。 基本上,当涉及到 Web 和云应用程序时,NoSQL 数据库处理和分发大量数据。 NoSQL 工程师还喜欢数据模式的灵活性(或缺乏灵活性),以便在可升级的应用程序中进行快速更改。

NoSQL 的主要特点:

  • 一种非常灵活的数据存储方式
  • 水平扩展至集群
  • 持久性/传播的可能顺序
  • 使用唯一键标识的文档

详细对比

MySQL 需要一个定义好的结构化模式。
NoSQL 允许您将任何数据存储在“文档”中。

MySQL 得到了庞大社区的支持。
NoSQL 拥有一个规模虽小但增长迅速的社区。

NoSQL 易于扩展。
MySQL 需要更多的可管理性。

MySQL 使用 SQL,它被用于许多类型的数据库中。
NoSQL 是一种采用流行实现设计的数据库。

MySQL 使用标准查询语言(SQL)。
NoSQL 不使用标准查询语言。

MySQL 有许多出色的报告工具。
NoSQL 有多种难以标准化的报告工具。

MySQL 对于大数据可能存在性能问题。
NoSQL 在大数据上提供了出色的性能。

想法8base

该公司 8基地在我工作的地方,我们使用 AWS 上托管的 Aurora MySQL 关系数据库为每个项目的工作区提供支持。 虽然当您的应用程序要求高性能和可扩展性时,NoSQL 是一个合理的选择,但我们相信,在构建 SaaS 应用程序和其他业务软件时,DBMS 提供的强大数据一致性至关重要。

我们认为,对于构建需要报告、事务完整性和定义明确的数据模型的业务应用程序的初创公司和开发人员来说,投资关系数据库是正确的选择。

通过 8base.com 了解有关使用 Aurora、Serverless 和 GraphQL 进行开发的更多信息 这里.

来源: habr.com

添加评论