网络知识 娱乐 系统设计:SQL VS NoSQL

系统设计:SQL VS NoSQL

一、数据库的解决方案

在数据库世界中,有两种主要的解决方案:SQL和NoSQL(或关系数据库和非关系数据库)。他们俩的构建方式、存储的信息类型以及他们使用的存储方法。

关系数据库是结构化的,并且有预定义的模式,比如phone储存电话号码和地址的书。

非关系数据库是非结构化、分布式,并具有类似于动态模式的文件夹保存从一个人的地址和电话号码到他们的Facebook的“喜好”和网上购物偏好。

1.1、SQL

关系数据库以行和列的形式存储数据。每行包含所有关于一个实体和每列的信息包含所有单独的数据点。一些最流行的关系数据库是MySQL,Oracle、MS SQL Server、SQLite、Postgres和MariaDB。

1.2、NoSQL

以下是最常见的NoSQL类型:

1.2.1、键值存储:

数据存储在键值对数组中。“钥匙”是一把钥匙链接到“值”的属性名称。著名的键值存储包括Redis、Voldemort, and Dynamo。

1.2.2、文档数据库:

在这些数据库中,数据存储在文档中(而不是表中的行和列),这些文档被分组一起收藏。每个文档可以有完全不同的格式

结构文档数据库包括CouchDB和MongoDB。

1.2.3、宽列数据库:

在列数据库中,我们使用的不是“表”列族,它们是行的容器。与关系数据库不同,我们不需要知道前面的所有列,也不需要知道每一行列数相同。柱状数据库最适合于分析大型数据集——比较出名的包括Cassandra和HBase。

1.2.4、图形数据库:

这些数据库用于存储关系最好用图表来表示。数据保存在带有节点的图形结构中(实体)、属性(关于实体的信息)和线(连接)实体之间。图形数据库的例子包括Neo4J和无限图形。

二、SQL和NoSQL之间的高度差异

2.1、存储:

SQL将数据存储在表中,每一行代表一个实体和每列代表一个关于该实体的数据点;例如,如果我们是在表中存储一个car实体时,不同的列可以是“Color”、“Make”,“模特”等等。NoSQL数据库有不同的数据存储模型。主要是键值、文档、图表和专栏。我们将讨论分歧在下面这些数据库之间。

2.2、模式:

在SQL中,每条记录都符合一个固定的模式,这意味着在输入数据之前,必须确定和选择列,并且每行必须

每列都有数据。模式可以在以后更改,但它涉及修改整个数据库并脱机。在NoSQL中,模式是动态的。可以动态添加列,并且每个列“行”(或等效行)不必包含每个“列”的数据查询:SQL数据库使用SQL(结构化查询语言)来定义以及操纵数据,这是非常强大的。在NoSQL数据库中,查询集中在一组文档上。有时它也被称为UnQL(非结构化查询语言)。不同的数据库有不同的功能

使用UnQL的语法。

2.2.1、可伸缩性:

在大多数情况下,SQL数据库是垂直可伸缩的,i、 例如,通过增加处理器的马力(更高的内存、CPU等)

硬件,可能会变得非常昂贵。可以扩展关系数据库。数据库跨多个服务器,但这是一个具有挑战性且耗时的过程。

另一方面,NoSQL数据库是水平可伸缩的,这意味着我们可以在我们的NoSQL数据库基础设施中轻松添加更多服务器来处理

交通堵塞。任何廉价的商品硬件或云实例都可以托管NoSQL数据库,从而使其比垂直数据库更具成本效益缩放比例。许多NoSQL技术还跨服务器分发数据自动地

2.2.2、可靠性或耐酸性(原子性、一致性、隔离性、耐久性):

绝大多数关系数据库都是ACID兼容的。所以在数据可靠性和执行安全保证方面事务、SQL数据库仍然是更好的选择。大多数NoSQL解决方案都牺牲了ACID合规性来提高性能和性能和伸缩性。

三、SQL和NoSQL——使用哪一种?

说到数据库技术,没有一种一刀切的解决方案。这就是为什么许多企业同时依赖关系型和非关系型

满足不同需求的数据库。尽管NoSQL数据库正在增长由于其速度和可扩展性广受欢迎,仍有一些情况下

高度结构化的SQL数据库可能表现更好;选择正确的技术取决于用例。

3.1、使用SQL数据库的原因

以下是选择SQL数据库的几个原因:

1.我们需要确保符合ACID要求。

通过事务来保护数据库的完整性,事务与数据库的交互方式。一般来说,NoSQL数据库为了可扩展性和处理而牺牲了ACID

标准,但对于许多电子商务和金融应用程序来说,符合ACID标准的数据库仍然是首选。

2.你的数据是结构化的、不变的。

如果你的生意正在经历巨大的增长,这将需要更多的服务器,如果您只处理一致的数据,那么可能没有使用旨在支持多种数据类型和数据类型的系统的原因。

3.2、使用NoSQL数据库的原因

当我们应用程序的所有其他组件都快速无缝时,NoSQL数据库防止数据成为瓶颈。大数据是NoSQL数据库取得了巨大成功,主要是因为处理数据的方式不同于传统的关系数据库。少许NoSQL数据库的常见例子有MongoDB、CouchDB、Cassandra、还有HBase。

1.存储大量数据,这些数据通常几乎没有结构。

A.NoSQL数据库对我们可以存储的数据类型没有限制,并允许我们根据需要添加新类型。具有

基于文档的数据库,您可以将数据存储在一个位置,而无需必须事先定义这些数据的“类型”。

2.充分利用云计算和存储。基于云的存储是一个很好的成本节约解决方案,但要求数据易于传播

跨多个服务器进行扩展。使用商品(价格合理,小型)现场或云中的硬件为您节省了还设计了其他软件和NoSQL数据库,如Cassandra能够在多个数据中心之间进行开箱即用的扩展,而无需大量思考。

3.快速发展。NoSQL对于快速开发非常有用因为它不需要提前准备。如果你在工作需要频繁更新的系统快速迭代

对于数据结构,在版本之间没有太多停机时间关系数据库会让你慢下来。