@程序员,假如你的奶奶问你什么是 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个孙子孙女!其间许多人已婚,有自己的孩子,喜爱各种不同的喜好和其他东西。在你这个年岁,简直不可能记住咱们一切人的全部,所以你需求一个记忆体系!
走运的是,我能够供给协助——不期望你忘掉我的生日,最喜爱的冰淇淋口味这些。所以我跑到角落的商铺,拿起一本作文笔记本,然后回到你家。
我做的第一步是在笔记本前面用粗体字母写“孙子”。接下来,我翻到第一页,开端写下你应该记住的关于我的全部。几分钟后,页面看起来像这样。
我:“看起来咱们在这里完结了!”
奶奶:“等等,其他一切的孙子们呢?”
我:“哦,对,他们。只需将合成书的单页专门用于每一页。“
奶奶:“我是否需求为每个人写下一切相同的信息,就像我为你做的那样?”
我:“不需求!在这里,让我告知你怎么做。”
我将笔从奶奶手中拿出来,你翻到一个新的页面,然后快速写下你最不喜爱的堂兄的记载。
很简单吧!每逢奶奶需求记住关于其间一个孙辈的作业时,她只需求在孙辈笔记本中翻到他们的页面。一切关于它们的信息都将存储在他们的页面上,她能够快速更改和更新。
然后,她又问了一个奇特的问题,“你在哪里学的这个?”
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】
热 文推 荐