当前位置: 首页 > 科技观察

关于NoSQL数据库你应该知道的一切-系统设计

时间:2023-03-14 11:10:03 科技观察

在设计系统时,可能很难在关系数据库(RDBS)和非关系数据库(NoSQL)之间做出选择。正确理解这两个限制将使决策变得容易得多。在深入研究NoSQL数据库之前,了解关系数据库的局限性很重要。关系数据库已经存在了将近40年,并且做得很好。数据结构良好,记录保存在表格中。一个表由行、主键、唯一键组成,表之间可以连接。它支持的另一个重要特性是事务,它的一个属性称为ACID。ACID属性由4个不同的属性组成,如下所述:原子性:它保证如果发生多步事务,则需要完成所有步骤才能使事务成功。一致性:它确保数据库在任何事务前后应该是一致的。隔离性:保证多个事务可以同时发生,互不干扰。持久性:即使服务器宕机或掉电,也能保证数据的持久存储,不用担心数据丢失。然而,随着大数据技术的发展,传统的基于SQL的数据库已经不足以管理快速增长的数据量和日益复杂的数据结构。关系数据库的一些缺点如下:模式:关系数据库的模式是固定的,你必须提前设计它。对于快速增长的应用程序,很难假设数据的复杂性然后进行设计。数据结构:由于关系数据库支持有限的数据结构,我们需要做更多的连接来获取所需的数据,而连接总是很昂贵的。扩展:关系数据库很难扩展,因为数据增长非常快。我们对此有任何解决方法吗?幸运的是!我们有。非规范化就是其中之一。展开单个表并向其添加更多列以避免在获取结果时进行连接。这会提高读取性能,但会导致数据异常。另一种技术是分片。在这种技术中,数据库可以被分区并存储在不同的服务器上。这提高了读写性能,但难以管理。所以,总结一下。关系数据库有许多我们可以解决的优点和缺点,但它们也带来了其他挑战。NoSQL数据库自然允许数据的非规范化、可伸缩性和灵活的模式。这些东西是免费提供的吗?不!这个世界上没有什么是免费的。放宽ACID限制。尽管ACID是某些应用程序的重要约束,但它并非适用于所有应用程序。最后但同样重要的是,NoSQL数据库提供了一种查询大型和更复杂数据结构的新方法,这在关系数据库中是不可能的。这是使用NoSQL进行数据科学的关键因素之一。NoSQL数据库的优点:灵活的模式:通常提供非常灵活的模式。模式可以根据需要轻松更改。水平扩展:允许在需要时添加更便宜的商品服务器。SQL数据库在超出容量时需要垂直扩展(迁移到更大的服务器)。更快的查询:NoSQL数据库的主要原则之一是“一起访问的数据应该存储在一起”。因此,查询通常在没有连接的情况下工作,这使得它们更快。NoSQL数据库的一些示例包括Redis、Dynamo、CouchDB、MongoDB、Cassandra、HBase和Neo4J。毫不奇怪,很多人在使用关系数据库时遇到许多不同的问题,他们最终设计了不同类型的NoSQL数据库。键值存储:就像字典一样,您知道其中的键并可以检索它的值。它是最简单的NoSQL数据库类型之一。这种数据库对于缓存非常有用。示例:Redis和Dynamo。文档数据库:数据存储在文档中,而不是行和列中。文档被分组以形成一个集合。这种数据库的优点之一是每个文档都可以有不同的结构。这种类型的数据库对于内容管理和存储用户配置文件很有用。示例:CouchDB和MongoDB。宽列数据库:宽列数据库中的列和表的概念与关系数据库中的列和表的概念不同。例如,在宽列数据库中,数据是非规范化的,列根本不是固定的,它们可以随时更改。例如,我们可以在应用程序中动态添加列,甚至同一张表中的行也可以有不同的列。与文档数据库一样,这里的值可以是数组、列表等复杂结构。这种数据库对于时间序列数据、日志记录和其他写入密集型应用程序很有用。示例:Cassandra和HBase。图形数据库:可以在图形中更好地表示关系的应用程序,这些数据库在那里非常有用。这些类型的数据库多用于社交网络、知识图谱等。例如:Neo4J。在数据管理方面,关系数据库和NoSQL数据库都很棒。没有简单的答案,哪个更好。这一切都取决于帮助人们根据上述参数和他们的权衡进行选择的要求。