欧易

欧易(OKX)

国内用户最喜爱的合约交易所

火币

火币(HTX )

全球知名的比特币交易所

币安

币安(Binance)

全球用户最多的交易所

程序员该如何向奶奶解释SQL和NoSQL?

时间:2022-10-10 18:05:38 | 浏览:527

@程序员,如果你的奶奶问你什么是 SQL 和 NoSQL,你会如何浅显易懂地向她解释清楚呢?作者 | SebastianScholl译者 | 刘静,责编 | 郭芮出品 | CSDN(ID:CSDNnews)以下为译文:开发人员必须做出的最重

@程序员,如果你的奶奶问你什么是 SQL 和 NoSQL,你会如何浅显易懂地向她解释清楚呢?

作者 | SebastianScholl

译者 | 刘静,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

开发人员必须做出的最重要的选择之一是使用什么数据库技术。多年来,这些选项仅限于支持结构化查询语言(SQL)的不同风格的关系数据库,包括MS SQL Server、Oracle、MySQL、PostgreSQL和DB2等。

在过去的15年中,许多新数据库作为NoSQL的一部分进入市场,包括键值存储(如Redis和Amazon DynamoDB)、宽列存储(如Cassandra和HBase)、文档存储(如MongoDB和Couchbase)、图形数据库和搜索引擎(如Elasticsearch和Solr)。

在本文中,我们将趣味性地专注于对SQL和NoSQL的深入解读。

向奶奶解释SQL

奶奶,想象我不是你唯一的孙子。相反,妈妈和爸爸像兔子一样彼此相爱,有100个孩子,然后又收养了50个孩子。现在,你爱我们所有人,永远不会忘记我们的任何名字、生日、最喜欢的冰淇淋口味、服装尺寸、爱好、配偶的名字、后代的名字以及其他超级重要的事。

但是,让我们面对现实吧!你已经85岁了,对旧时尚的美好记忆是不够的。

幸运的是,我——你孙子中最聪明的人——可以提供帮助。所以我来到你的房子,拿出几张纸,并要求你在我们开始前烤一些饼干。

在一张纸上,我们列出了一个名为Grandchildren的列表。每个孙辈都会被记录下来一些关于他们的基本信息,包括一个唯一的号码。从现在开始,这个数字将表示他们是哪个孙辈。此外,为了有条理,我们在列表顶部写出命名属性,以便我们始终知道此列表包含的信息。

孙子名单

过了一段时间,你就熟悉了它,并且几乎完成了列表!但是,你转向我并说:“我们忘了为配偶、爱好、孙子们等信息预留空间!”所以接下来需要一张全新的纸。

所以我拿出另一张纸,在这一张纸上,我们列出了配偶名单。同样,我们在列表顶部添加我们关注的属性并开始添加行。

配偶名单

在这一点上,我对奶奶解释说,如果她想知道谁娶了谁,她只需要将孙辈列表中的id与配偶列表中的孙辈id匹配即可。

但是,在我打了个小盹回来后却发现,这张纸上只剩下了爱好列表,其他都被“杀”掉了!

爱好列表

对不起,我忘了告诉你......使用一个列表,我们只需跟踪爱好,然后在另一个清单上,我们需要追踪那些有这些爱好的孙辈!我们将其称为“加入列表”。看到你明显感到沮丧,我感觉很糟糕并且跳回列表模式。

一旦得到了我们的爱好列表,我们就会制作第二个列表并称之为孙辈的爱好。

孙辈的爱好名单

在完成所有这些工作之后,奶奶现在就拥有了一个大象级的记忆系统,用于跟踪她那个荒谬的大家庭。然后,她问了一个神奇的问题:“你从哪里学会做这一切的?”

关系数据库

关系数据库是一组正式描述的表(在我们的示例中是列表),从这些表中可以以许多不同的方式访问或重新组装数据,而无需重新组织数据库表。有许多不同类型的关系数据库——可惜我们上面所列的纸,并不是其中之一!

最流行的关系数据库的是称为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":,
"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":,
"remember":"Born on same day as Cody but not as important"
}

很简单吧!每当奶奶需要记住关于其中一个孙辈的事情时,她只需要在孙辈笔记本中翻到他们的页面。所有关于它们的信息都将存储在他们的页面上,她可以快速更改和更新。

然后,她又问了一个神奇的问题,“你在哪里学的这个?”

NoSQL数据库

存在许多NoSQL (“不仅仅是”SQL)数据库。在我们的示例中,我们举例说明了文档数据库NoSQL数据库以排除关系数据库中提供的表格关系的方式建模数据。这些数据库在21世纪初由于其庞大的扩展要求(即Facebook)而需要基于云的数据库集群的公司中变得流行。在这些应用程序中,拥有数据一致性远不如性能和可伸缩性重要。

在早期,NoSQL数据库经常被用于超级集中的数据管理任务。主要是在Web和云应用程序方面,NoSQL DB已被证明可以处理和分发大量数据。使用NoSQL构建的工程师也喜欢灵活的数据模式(或完全缺乏),因此可以快速更改正在更新的应用程序。

NoSQL的主要功能包括:

  • 一种高度灵活的持久化数据方式;

  • 水平扩展到群集;

  • 持久性/传播的最终一致性;

  • 使用唯一键标识的文档。

面对面比较

MySQL需要定义的结构化架构。

NoSQL允许“ 文档” 中任何数据的持久性。

MySQL有一个庞大的社区支持它。

NoSQL有一个小而快速增长的社区。

NoSQL具有易于扩展的特点。

MySQL需要更多托管可伸缩性。

MySQL利用SQL,它被用于多种数据库类型。

NoSQL是一个基于设计的数据库,具有流行的实现。

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

NoSQL不使用标准查询语言。

MySQL有许多出色的报告工具。

NoSQL很少提供难以标准化的报告工具。

MySQL可以为大数据提供性能问题。

NoSQL在大数据方面表现出色。

在我的公司内,我们为每个项目的工作区配置了一个在AWS上托管的Aurora MySQL关系数据库。虽然当应用程序需求需要大数据级性能和可伸缩性时,NoSQL是一个合理的选择,但我们认为,在构建SaaS应用程序(软件即服务)和其他商业软件时,RDBMS强制执行的严格数据一致性是必要的。

在我们看来,对于构建业务应用程序的初创企业和开发人员(需要报告、事务完整性和定义良好的数据模型)来说,将时间投入到关系数据库是正确的选择。

原文:https://medium.com
/swlh/explaining-sql-and-nosql-to-grandma-9d7a69378be8

本文为 CSDN 翻译,转载请注明来源出处。

【END】

相关资讯

程序员的日常丨你眼中的“程序员”是什么样子?别再被谣言误导了

在很多人眼里,程序员是一类高薪、“高危” 的职业。 他们穿着格子衫、顶着一碗超帅的光头,能修电脑、能黑网站、简直无所不能。 。 。但直到我自己当上程序员,才发现其实很多人都是对程序员的误解。除了外行的误解外,还有很多来自于程序员同行的误解。

程序员的日常:当一名程序员到底有多难?

多少次熬夜加班, 直至见到凌晨四点的太阳;多少个早晨洗漱的时候, 看到洗脸盆掉的全是头发;整天coding, debugging, 设计, 画图, 文档, 会议, 演示......看似充实饱和的工作, 又夹杂了多少苦涩与无奈; 程序员其实很

普通程序员与高级程序员的差别在哪?

同样都是敲代码,为什么别人一个月工资五万,你一个月却只拿五千?是单纯在找工作的时候运气不佳?还是因为技术水平有差别?那些被大众膜拜信仰的技术大神到底牛在哪里,现状已定,普通程序员是否还有机会逆袭?看完这篇文章,或许你能从中找到答案。从思维和

程序员是否可以作为终身从事的职业,以及程序员该何时考虑转岗

首先,当前程序员职业确实存在职业生命周期偏短的问题,原因是多方面的,包括工作量大、工作周期长、技术迭代速度快、岗位竞争压力大等因素,但是当前不少技术团队中,也有很多70后、80后的程序员,而且随着人工智能等技术的发展,以及IT互联网行业产业

“程序员图鉴”刷屏真实的程序员生活是怎样的?

中国码农千千万,北上深杭一大半。虽然所有的程序员都有着相似的气质,几乎每个人衣橱里都有差不多款式的牛仔裤、旅游鞋、格子衬衫,无论男女都有至少一个双肩包,但一方水土养一方人,每个地方的程序员都可以从茫茫人海中找到"老乡"。比如,北京的程序员大

程序员是吃青春饭的?一张图道尽程序员的发展方向

进入一个行业,开始一份工作,不论在最初的时候,你是因为喜欢还是被动接受,或多或少的都会成为你一段时间内为之奋斗的事业。边工作边迷茫也许是大多数人的常态,觉得这份工作不适合自己,可又不知道应该去做什么;喜欢着自己的工作,却又不知道怎么进一步提

程序员平均年薪70万、40岁后收入下滑?尽在2019程序员薪资报告

整理 | 刘静出品 | CSDN(ID:CSDNnews)学位高就能够拿高薪?我们的薪资与全球其他国家或地区的同行相比中间有多大的差距?Hired 近日发布的 《2019 年度薪酬状况报告》 解答了技术者们的诸多疑问。该报告聚焦于全球 13

程序员在21世纪如此吃香,那么怎么才能成为一名程序员呢?

程序员是21世纪比较吃香的工作。程序员工资高还不需要和复杂的社会打交道。那么怎么成为一名程序员?当程序员需要学什么?怎么成为一名程序员?【有明确的职场定位】怎么成为一名程序员?程序员也分为很多种,使用的软件和工作范围也不同。想当程序员,就要

程序员因工资低拒绝offer,HR:估计你一辈子就是个程序员

在职场中,我们应该追寻一种平等关系,也就是说公司看中求职者的能力,求职者希望公司给予自己满意的薪资和发展空间。因此,面试是选择和被选择的关系,拒绝和接受都是很正常的事情,而非一方的强人所难或是“王婆卖瓜”行为。近日,一名程序员在求职过程中由

程序员月入好几万?7年老程序员告诉你真实的情况

从业一开始,加班就是常态很多人都说这个程序员的工资比较高,其实这种背后的心酸,其实很少人知道。就拿我来说吧其实我工作了有七八年,记得刚工作那个时候,天天加班的话,就是白天睡觉,晚上加班,当时其实也没什么经验,就是只是凑人数嘛。当时我们项目经

学什么专业才能成为程序员?其实成为程序员,远不止计科和软工

在目前互联网行业,计算机领域都离不开编程,程序员也受市场的大量需求,而且目前程序员的薪酬普遍很可观,在北上广深等一线城市,程序员的薪酬基本都是上万,两三万一月的都有的是,甚至很多都直接讲年薪,程序员在目前还是比较吃香的职的业。那么我们学怎样

程序员分成五类,你是否是“完美型”程序员?不是但想是

程序有问题时不要担心。如果所有东西都没问题,你就失业了在我的编程生涯中,我碰到过很多奇奇怪怪的对手和同盟。我把这些编码战士们分成五类,有些人是你队伍中的好伙伴,有些人则是捣蛋者,让你的每一个计划都完不成。不管怎么说,他们在软件开发的诸神殿上

程序员必看:程序员到底可以分为几种?你又是哪一种呢?

不是每一个写代码的都是程序员。这里,我把程序员定义为以编程为生的人。我认为世界上存在四类程序员:科学家、码农、专家和工匠。下面我一一介绍自己的观点。科学家,与其说他们是程序员,不如说他们是数学家。他们发明了各种理论、算法和术语,教科书上那深

程序员年薪高达40万,为什么还有很多程序员单身,你知道原因吗?

网友一:我曾经招过的学生,后来进入了BAT的,各电商平台的,创业公司技术总监等等,现在很大部分都年薪都在30~40万,而且单身不少。因为我对他们比较熟悉,这里说说我的看法。单身的主要原因:1.工作忙碌,没时间谈恋爱。达到40万年薪的程序员工

为什么很多人不喜欢做程序员?甚至讨厌程序员?

要想成长为一名优秀的程序员,其过程是艰巨的,其道路是漫长的。不经过悉心栽培,花儿开不出鲜艳的花朵;不经过时间的历练,幼苗长不成参天大树。在软件行业更是如此。程序员必须具备的性格特点最基本的要求是能自主地编程。只有在经过多年的学习实践之后,我

友情链接

网址导航 SEO域名抢注宝宝起名网妈妈知道币圈岳阳新闻头条网崀山景区资讯网小米手机股票丽家宝贝母婴平遥古城旅游攻略围棋培训网家电维修论坛祁门红茶官网今日宿州迪士尼乐园攻略网比利时旅游潮州新闻头条网都江堰旅游攻略薛之谦歌迷网会展活动网
Java编程学习网-java零基础自学、java新手入门菜鸟必学、电脑编程入门自学、java安装教程详细、java新手编程入门、前端刷题网站、java开发工程师、前端刷题小程序、java入门基础知识、java新手代码大全、编程题库网站、java程序员刷题软件、编程入门自学网站、java题库网站、java新手刷题网站。
Java编程学习网 yaliandai.cn ©2022-2028版权所有