您应该了解的有关NoSQL数据库的所有信息-系统设计

数据库 其他数据库
在设计系统时,很难在关系(RDBS)和非关系数据库(NoSQL)之间进行选择。 正确理解这两个局限性将使决策变得更加容易。

在设计系统时,很难在关系(RDBS)和非关系数据库(NoSQL)之间进行选择。 正确理解这两个局限性将使决策变得更加容易。

您应该了解的有关NoSQL数据库的所有信息-系统设计

在深入研究NoSQL数据库之前,了解关系数据库的局限性很重要。 关系数据库已经存在了近40年,并且运行良好。 数据结构合理,记录保存在表中。 表由行,主键,唯一键组成,并且表可以相互连接。 它支持的另一个重要功能是事务,它的属性称为ACID。 ACID属性包含4个不同的属性,如下所述:

  • 原子性:它保证了如果发生多步骤交易,则需要完成所有步骤才能使交易成功。
  • 一致性:它确保数据库在任何事务之前和之后均应保持一致。
  • 隔离:它保证可以同时发生多个事务,而不会互相干扰。
  • 耐用性:即使服务器崩溃或断电,它也可以确保持久存储数据,而无需担心数据。

但是,随着大数据技术的发展,传统的基于SQL的数据库已不足以管理快速增长的数据量以及日益复杂的数据结构。 关系数据库的一些缺点如下:

  • 模式:关系数据库的模式是固定的,您必须事先设计它。 对于快速增长的应用程序,很难假设数据的复杂性然后进行设计。
  • 数据结构:由于关系数据库支持的数据结构有限,我们需要做更多的连接才能获得所需的数据,并且连接总是很昂贵的。
  • 扩展:由于数据增长非常迅速,因此很难扩展关系数据库。

我们对此有任何解决方法吗?

幸运的是! 我们有。

非规范化就是其中之一。 展开单个表并向其中添加更多列,以便在获取结果时避免连接。 这样可以提高读取性能,但会导致数据异常。

另一种技术是分片。 在这种技术中,可以对数据库进行分割,并将其存储在不同的服务器中。 这样可以提高读写性能,但是很难管理。

因此,总结一下。 关系数据库具有很多优点和缺点,我们可以解决它们,但是也带来了其他挑战。

NoSQL数据库自然允许对数据进行非规范化,可伸缩性和灵活的架构。 这些东西是免费提供的吗? 没有! 在这个世界上,没有什么是免费的。 放宽ACID限制。 尽管ACID对于某些应用程序是一个重要的约束,但对于所有应用程序却不是。 最后但并非最不重要的一点是,NoSQL数据库提供了一种查询大型和更复杂的数据结构的新方法,这在关系数据库中是不可能的。 这是使用NoSQL进行数据科学的关键因素之一。

您应该了解的有关NoSQL数据库的所有信息-系统设计

NoSQL数据库的优点:

  • 灵活模式:通常提供非常灵活的模式。 根据需求可以很容易地更改架构。
  • 水平扩展:允许在需要时添加更便宜的商品服务器。 SQL数据库在超出容量时需要垂直扩展(迁移到更大的服务器)。
  • 更快的查询:NoSQL数据库的一项主要原则是"应将一起访问的数据存储在一起"。 因此,查询通常无需连接即可工作,这使查询速度更快。

NoSQL数据库的一些示例是Redis,Dynamo,CouchDB,MongoDB,Cassandra,HBase和Neo4J。 很多人在关系数据库中遇到许多不同的问题,这最终不足为奇,他们最终设计了不同类型的NoSQL数据库。

您应该了解的有关NoSQL数据库的所有信息-系统设计
  • 键值存储:就像字典一样,您可以在其中了解键并可以检索其值。 它是NoSQL数据库的最简单类型之一。 这种数据库对于缓存确实很有用。 示例:Redis和Dynamo。
  • 文档数据库:数据存储在文档中,而不是行和列。 文档被分组以形成一个集合。 这种数据库的优点之一是每个文档可以具有不同的结构。 这种数据库对于内容管理和存储用户个人资料非常有用。 示例:CouchDB和MongoDB。
  • 宽列数据库:宽列数据库中的列和表的概念与关系数据库中的概念不同。 例如,在宽列数据库中,数据被非规范化,列根本没有固定,它们可以随时更改。 例如,我们可以在应用程序中动态添加列,甚至同一表中的行可以具有不同的列的情况也是如此。 与文档数据库一样,此处的值可以是复杂的结构,例如数组和列表。 这种数据库对于时间序列数据,日志记录和其他大量写入应用程序非常有用。 示例:Cassandra和HBase。
  • 图形数据库:在图形中可以更好地表示关系的应用程序,这些数据库在那里非常有用。 这些类型的数据库主要用于社交网络,知识图等。例如:Neo4J。

关系数据库和NoSQL这两个数据库在数据管理方面都很棒。 没有简单的答案哪个更好。 这完全取决于帮助人们根据上述参数及其权衡选择的要求。

 

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2018-12-24 18:35:11

NoSQLRedisMongoDB

2010-11-15 11:49:18

Oracle数据库的段

2023-01-24 16:03:43

2021-07-07 17:47:22

5G智慧城市智能

2019-09-11 15:10:01

NoSQLSQL数据库

2010-09-02 18:56:09

NoSQL数据库DBA

2020-12-17 08:09:25

计算机网络网络TCP

2010-09-03 13:40:24

SQL删除

2024-01-29 12:54:00

物联网IOT

2023-09-11 09:58:46

2023-11-13 16:58:40

数据库系统

2017-11-10 13:29:32

监控工具RiverbedIT

2010-11-29 14:06:42

Sybase数据库日志

2017-05-25 10:11:46

数据库令牌节点

2020-10-31 22:01:40

NoSQL数据库

2024-02-02 10:51:53

2010-09-27 14:15:59

SQL数据库角色

2010-09-13 15:21:17

SQL Sever数据

2018-03-02 09:00:00

数据库NoSQLSQL

2009-12-18 17:20:24

ADO数据库
点赞
收藏

51CTO技术栈公众号