暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

NoSQL 数据库及其用例

原创 小小亮 2023-03-23
421

了解 NoSQL 数据库及其类型,如键值、文档、图形和列族及其用例。

1970年代,Edgar F. Codd提出了关系数据库模型,俗称SQL数据库。这些数据库主要设计用于处理具有关系模型的结构化数据。他们可以处理交易数据,这涉及在具有预定义模式的表中存储和操作数据。SQL 数据库的著名示例是 MySQL、PostgreSQL 和 Oracle Server。

在 1980 年代,它们获得了巨大的普及,但在那之后,数据的需求和数量增加了,对不同数据类型的需求变得更加多样化,以至于 SQL 数据库举步维艰。除此之外,它们的水平缩放很复杂,这使得它们不适合处理大量数据。

为了迎合 SQL 数据库的这些局限性,在 2000 年代初期,NoSQL 数据库应运而生。它们是面向文档的数据库,使用快速键值对来存储数据。与 SQL 数据库不同,它们能够解析文档中的数据并将该数据存储在密钥下,而不是定义严格的信息表。


NoSQL 数据库现已成为主流,并提供了优于 SQL 数据库的各种优势。但这并不一定意味着 NoSQL 数据库就比 SQL 好。SQL 和 NoSQL 数据库都有不同的用途,并使用不同的数据管理方法。一个用于关系数据,另一个用于非关系数据。SQL 数据库仍在需要运行复杂查询的地方使用,并且数据库模式定义明确。著名的例子有 MongoDB、Cassandra、Neo4J 和 Redis。

但在下面讨论的某些领域,NoSQL 数据库优于 SQL 数据库。


NoSQL 数据库的优势

以下是 NoSQL 数据库性能优于 SQL 数据库的一些关键特性。

1. 灵活性:

这意味着可以在不改变原始数据库结构的情况下动态添加或删除数据。这意味着与 SQL 数据库不同,它们不需要严格的模式。它们旨在处理任何结构化、半结构化或非结构化数据格式。这使开发人员可以自由地专注于应用程序开发,而不必担心数据库模式。

2. 可扩展性:

NoSQL 数据库支持水平扩展,这意味着我们可以通过添加更多服务器而不是增加单个服务器的容量来扩展它。这使得它在处理大量请求时更加强大。

3. 高可用性:

由于其跨多个服务器复制数据库的特性,它为用户提供了非常低的延迟和几乎为零的停机时间。此外,它们在彼此之间划分流量以减轻单个服务器的负担。

4. 表现: 

它们旨在优化读写性能,使其适用于每天生成 TB 级数据的实时数据处理应用程序。它们具有更快的查询响应时间并支持数据库分片,从而提高了整体性能。


这些是 NoSQL 数据库比 SQL 数据库表现更好的一些点。以下部分将讨论 NoSQL 数据库的类型及其用例。

 

NoSQL 数据库的类型

 

有多种类型的 NoSQL 数据库,每种都有自己的优点和局限性。下面我们讨论了一些流行的:


Key-Value

这是最灵活的 NoSQL 数据库。它需要一个键值对来存储数据。键可以是与特定值相对应的唯一属性,如 ID。应用程序可以控制在值字段中存储任何类型的数据。这些适用于实时应用程序、缓存或会话管理。Redis 和 Riak 是键值数据库的著名示例。

用例:

该数据库最适合每天生成大量与客户相关的数据(如订单、用户配置文件和产品目录)的电子商务平台。由于其低延迟和快速处理,它适用于实时库存管理和处理高流量。

 

Document-Oriented

这些数据库将数据存储在文档中,主要以 JSON 对象的形式存在。这最适合存储半结构化或非结构化数据,不需要明确指定文档的字段。MongoDB 是面向文档的数据库的著名示例。

用例:

这最适合内容管理系统,例如博客网站。可以快速存储和检索文章、评论、类别和标签形式的数据。基于文档的数据适用于存储非结构化数据,如文本、图像、链接等。此外,其灵活的模式行为允许轻松更改数据模型。

 

图数据库

 

这种类型的 NoSQL 数据库最适用于相互关联性强的数据。它们以节点和边的形式存储数据,用于表示对象之间的复杂关系。它最适合社交媒体应用程序和创建推荐引擎。著名的例子是 Neo4J 和 InfoGrid。

用例:

它们最适合创建推荐引擎。以 Youtube 为例,它根据用户的观看历史向用户推荐视频。图数据库可以存储和处理相互关联的数据,并快速传递相关内容。

 

基于列的数据库

在这种类型的 NoSQL 数据库中,数据存储在列族中。类似类型的数据被分组到单元格中,并存储在数据列而不是行中。一列甚至可以包含多个行和列,它们有自己的唯一 ID。

在传统的 SQL 数据库中,查询是逐行执行的。但是在列式数据库中,查询只针对我们想要的特定列执行。这样可以节省时间并使其适合处理大型数据集。它们可能看起来像一个 SQL 数据库,因为它们涉及某种形式的模式管理并且以与关系表相同的方式运行。但它们比 SQL 数据库灵活和高效得多,因此属于 NoSQL 数据库类别。

列式数据库的流行示例是 Apache HBase 和 Apache Cassandra。您可以阅读Alex Williams 撰写的这篇文章(https://www.kdnuggets.com/2021/02/understanding-nosql-database-types-column-oriented-databases.html),了解有关此主题的更多信息。

用例:

列族数据库最适合数据仓库应用程序。这些应用程序需要分析大量数据以获得高写入吞吐量的商业智能,列族数据库完全负责。


结论

 

在本文中,我们了解了什么是 NoSQL 数据库以及 SQL 和 NoSQL 数据库之间的根本区别。然后,我们讨论了流行的 NoSQL 数据库类型及其用例。

总是有什么选择?在 SQL 和 NoSQL 数据库之间。要做出正确的选择,首先,您必须了解应用程序的用例、数据模型、可伸缩性和性能,然后再做出决定。


原文标题:NoSQL Databases and Their Use Cases

原文作者:Aryan Garg

原文链接:https://www.kdnuggets.com/2023/03/nosql-databases-cases.html



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论