26

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

 3 years ago
source link: http://database.51cto.com/art/202007/620259.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

2E7ZFbm.jpg!web

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

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

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

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

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

幸运的是! 我们有。

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

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

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

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

e2MZfiM.jpg!web

NoSQL数据库的优点:

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

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

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

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

【责任编辑:赵宁宁 TEL:(010)68476606】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK