全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
878 0
2020-12-18
SQL与NoSQL数据库–每个数据工程师都应该知道的关键概念
您无法摆脱对数据科学数据库的了解。实际上,我们需要以数据科学专业人员的身份熟悉如何处理数据库,如何快速执行查询等。只是没有办法!
您应该了解两件事–学习有关数据库管理的所有知识,然后弄清楚如何有效地进行数据库管理。相信我,您将在数据科学领域大有帮助。
作为数据工程师,您必须使用各种数据库,尤其是SQL和NoSQL。但是,我们大多数人已经对SQL数据库具有相当的经验。老实说,当我们不得不过渡到NoSQL数据库时,坦率地说,起初可能有些吓人-开始总是最困难的。
因此,为了为您消除障碍,我们将在本文中讨论这两种数据库之间的一些关键区别。这将为您提供两者的概述,并使您更轻松地开始旅程。让我们开始!
目录
什么是SQL数据库?
什么是NoSQL数据库?
SQL和NoSQL数据库之间的区别
模式设计
数据结构
速度
缩放比例
用法
指导原则
什么是SQL数据库?
SQL是标准查询语言,可帮助查询关系数据库。因此,这些数据库通常也称为SQL数据库。
与普通文件存储系统相比,数据库的主要优势在于,它在很大程度上减少了数据冗余,促进了各种用户之间的数据共享,并确保了对组织而言极为重要的数据安全性。
每个数据库包含多个表,其中包含行和列形式的数据。每个表都与数据库中的许多其他表相关。
什么是NoSQL数据库?
NoSQL还是2000年代后期才出现SQL。这些是灵活的,可伸缩的,经济高效的,无模式的数据库。
它们之所以诞生,是因为它们需要处理我们在当今世界中生成的海量数据,这些数据种类繁多且生成速度很高。
与SQL数据库相比,它们具有多种类型:基于文档,基于键值,基于宽列,基于图。每个人都有其优点和缺点。
现在让我们深入研究一下SQL和NoSQL数据库之间的一些关键区别。
SQL和NoSQL数据库之间的区别
模式设计
SQL数据库是将数据存储在多个相关表中的关系数据库。这些表是关系。每个关系被组织成行和列。每行是一个元组并保存一条记录,每列是一个属性,每条记录通常都具有一个值。数据库中的表使用SQL键关联。
表中的列包含某种类型的数据。如果记录包含具有任何其他数据类型的数据,则数据库将引发错误。另外,一条记录需要包含与表中的列数相同数量的值,或者需要显式提供NULL值。SQL数据库最流行的示例是MySQL,PostgreSQL和Oracle。
NoSQL数据库有4种类型:基于文档,基于键值,基于宽列,基于图。
基于文档的数据库
这些数据库将数据存储在类似JSON的文档中。每个文档都有键值格式,这意味着数据是半结构化的。即使文档中的键值丢失,数据库也不会抛出错误。一个流行的例子是MongoDB。
基于文档的NoSQL数据库
键值数据库
这些数据库以键值格式存储数据。键和值都可以是任何值,从字符串到复杂值。键存储在有效的索引结构中,可以快速唯一地定位值。这使它们成为需要快速检索数据的应用程序的理想选择。Amazon DynamoDB是此类数据库的一个示例。
基于键值的数据库
基于宽列的数据库
该数据库将数据存储在类似于任何关系数据库的记录中,但是它具有存储大量动态列的能力。意思是,在这样的数据库中,行的列值的数量可以变化。它按逻辑将列分组为列族。卡桑德拉(Cassandra)是一个受欢迎的例子。
基于列的数据库
基于图的数据库
他们使用节点来存储数据实体(例如地点,产品等),并使用边来存储它们之间的关系。节点可以具有的关系的数量和种类没有限制。Neo4j是此类数据库的一个示例。
基于图的NoSQL数据库
数据结构
在添加任何数据之前确定数据库的结构或架构是SQL数据库的先决条件。这意味着这种数据库只能存储结构化数据。这使得处理以疯狂的速度流化的现实世界数据变得非常不灵活。在这里更新架构将花费大量时间和精力,并且将需要更新许多关系。
另一方面,NoSQL数据库没有固定的结构。他们可以处理任何类型的数据:结构化,半结构化或非结构化数据。这意味着即使传入的数据具有不同数量的属性,数据库也将能够毫无错误地处理它。这使得NoSQL数据库非常受欢迎,因为我们可以轻松地更改架构而不会造成太多干扰。
速度
速度方面,两者之间没有真正的区别。在大多数情况下,两者的性能均相同。但是,在处理复杂查询和大型数据集时,您会注意到一些差异。
SQL数据库要求数据以规范化形式存储,以防止数据冗余。尽管这减少了数据库所需的存储量并确保了记录的轻松更新,但它可能会对数据库的查询产生一些影响。例如,对包含多个表的数据库执行诸如联接之类的复杂查询可能会非常费力,尤其是在数据量变得非常大的情况下。NoSQL数据库克服了这一缺点。
NoSQL数据库不在乎是否存在重复数据,因为NoSQL数据库不存在存储问题。NoSQL数据库中的数据通常以针对查询优化的方式存储。这意味着您可以按照执行查询后所需的相同方式存储数据。这样就抛出了整个联接问题,并使查询任务变得更快。
例如,SQL数据库要求您维护用于雇员信息和部门信息的两个单独的表,并将它们与外键(可能是部门ID)链接。
SQL联接
但是,对于NoSQL数据库(例如MongoDB),您可以将有关雇员的完整信息(包括部门信息)存储在同一文档中,尽管您可以根据需要执行一些值的嵌套。
基于文档的数据库
注意:您仍然可以在NoSQL数据库中执行联接。
缩放比例
SQL数据库在传统计算机上运行。这意味着它们在单个服务器上运行。现在,如果超出了服务器的当前容量,则必须使用功能更强大的CPU,添加更多RAM,堆叠存储空间等。这是垂直扩展。事实证明,这可能会非常昂贵,尤其是当您必须处理大数据(按TB,GB,PB等的顺序)时
另一方面,NoSQL数据库提供水平扩展。这意味着,如果容量不足,您可以简单地将一台计算机添加到群集中(一堆计算机一起工作)。这些机器通常便宜得多,并被适当地称为商品硬件。NoSQL数据库的这种功能除了便宜的容量构建是数据分发之外,还有另一个主要优点。
垂直与水平缩放数据库
NoSQL数据库通常在许多相互连接的计算机上运行,??这称为集群。数据分布在集群中的机器之间。每台机器将存储部分数据。
NoSQL数据分发
现在您必须怀疑这有什么好处?
好吧,分发数据使我们能够复制数据并提供容错能力。意思是,一部分数据可能被复制并存储在多台机器上。
NoSQL复制
如果计算机发生故障,则该数据将出现在群集中的其他计算机上,并且在用户不知情的情况下可以使用它,从而提供了容错能力。对于SQL数据库,这显然是不可能的,因为所有数据的存储都在同一台计算机上。
指导原则
SQL数据库的主要优点是它们处理事务处理的能力。这些过程修改数据库的内容。SQL数据库的ACID属性控制:
原子性–事务一次执行一次,或者根本不执行。
一致性–这可以确保数据库不会处于半成品状态。如果发生错误,则可以确保进行回滚更改。
隔离–事务独立发生。没有交易有权访问任何其他交易。
持久性–完成时通过事务对数据库所做的更改将提交给数据库,并且更新不会丢失。
另一方面,NoSQL数据库不完全提供ACID属性。而是由CAP定理控制它们:
一致性–这意味着用户无论在系统/集群上连接到哪个节点/机器,都应该能够看到相同的数据。因此,如果已将数据写入一个节点,则应将其复制到其所有副本。
可用性–这意味着来自用户的每个请求都应引起系统的响应。无论用户想要读取还是写入,即使操作失败,用户也应该获得响应。
分区容限–当节点无法从系统中的另一个节点接收任何消息时,就会发生分区。可能是由于网络故障,服务器崩溃或任何其他原因。因此,分区容限将确保即使系统中存在分区,系统也仍然可以正常工作。
但是,发生分区时,NoSQL数据库必须在一致性和可用性之间进行权衡。这是因为,在实际系统中,必然会由于网络故障或其他某些原因而发生分区。因此,发生分区时,NoSQL数据库必须放弃一致性或可用性。因此,NoSQL分布式数据库的特征是CP或AP。
CAP定理
注意:关于CAP,NoSQL数据库并不那么严格。大多数确实提供了在一致性和可用性之间取得平衡的选项。因此,选择并不总是那么黑白。
用法
ACID属性使SQL数据库在事务极为重要的领域中具有举足轻重的地位。银行就是一个这样的例子,其中货币交易需要得到适当的处理,特别是在转账失败的情况下,失败的话可能会造成一笔大钱。
同样,如果您的数据将要结构化和不变,则没有理由使用NoSQL数据库。您始终可以利用SQL数据库的功能,当然也可以利用您精通的SQL知识!
但是,如果您要使用没有设置结构的大量数据,则NoSQL数据库是最佳选择!但是,即使NoSQL数据库也可以具有广泛的用例,这取决于其固有结构及其对CAP定理属性的偏好。
一方面,ElasticSearch存储日志数据,另一方面,许多社交网络网站都使用Cassandra。尽管如此,所有这些最终还是有助于处理大数据的数量,速度和种类!
题库
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群