要查看该数据建模示例的更详细版本,请阅读从SQL到MongoDB的术语和概念映射.
RDBMS与NoSQL数据库之间的区别
关系型数据库管理系统和非关系型数据库之间存在许多差异。其中一个关键差异是数据库中的数据建模方式。以下列出了每个功能的一些关键差异:
数据建模
NoSQL: 数据模型根据所使用的NoSQL数据库类型而变化——例如,键值、文档、图和宽列——使模型适合半结构化和非结构化数据。
RDBMS: RDBMS使用表格数据结构,数据以行和列的集合形式表示,使模型适合结构化数据。
模式
NoSQL: 它提供了一种灵活的模式,其中每个文档/行-列/键-值对集合可以包含不同类型的数据。由于灵活性,如果需要,更容易更改模式。
RDBMS: 这是一个固定模式,其中每一行都应该包含预定义的列类型。一旦数据存储,更改模式就很困难。
查询语言
NoSQL: 它根据所使用的NoSQL数据库类型而变化。例如,MongoDB有MQL,而Neo4J使用Cypher。
RDBMS: 这使用结构化查询语言(SQL)。
可伸缩性
NoSQL: NoSQL旨在进行垂直和水平扩展。
RDBMS: RDBMS旨在进行垂直扩展。然而,它可以扩展有限的能力以进行水平扩展。
数据关系
NoSQL: 关系可以是嵌套的、显式的或隐式的。
RDBMS: 关系通过外键定义,并使用连接访问。
事务类型
NoSQL: 事务可以是ACID或BASE兼容的。
RDBMS: 事务是ACID兼容的。
NoSQL: NoSQL适合实时处理、大数据分析和分布式环境。
RDBMS: RDBMS适合读密集型和事务性工作负载。
数据一致性
NoSQL: 这提供了高数据一致性。
关系型数据库管理系统(RDBMS): 这通常提供最终一致性。
分布式计算
NoSQL: 引入NoSQL的主要原因是分布式计算,NoSQL数据库支持通过分片、复制和集群进行分布式数据存储、垂直和水平扩展。
关系型数据库管理系统(RDBMS): RDBMS通过集群和复制支持分布式计算。然而,由于其并非传统上设计为支持分布式架构,因此其可扩展性和灵活性较低。
容错性
NoSQL: 由于数据复制,NoSQL具有内置的容错性和高可用性。
关系型数据库管理系统(RDBMS): RDBMS使用复制、备份和恢复机制。然而,由于它们是为这些功能而设计的,因此在应用开发期间可能需要实施额外的措施,如灾难恢复机制。
数据分区
NoSQL: 通过分片和复制实现。
关系型数据库管理系统(RDBMS): 它支持基于表的分区和分区修剪。
了解更多关于数据分区的信息。
数据到对象的映射
NoSQL: NoSQL以各种方式存储数据,例如作为JSON文档、宽列存储或键值对。它通过ODM(对象-数据映射)框架提供抽象,以便以面向对象的方式处理NoSQL数据。
关系型数据库管理系统(RDBMS): RDBMS更依赖于数据到对象的映射,以确保数据库列和面向对象的应用程序代码之间无缝集成。
了解更多关于关系型数据库和NoSQL数据库之间差异的信息,请阅读NoSQL与SQL数据库。
NoSQL用例
NoSQL数据库系统被应用于几乎每个行业,用于实时分析、内容管理、物联网应用、推荐系统、欺诈检测、产品目录管理等等。用例范围从高度关键的应用(例如,存储金融数据和医疗记录)到更娱乐性和随意性的应用(例如,存储智能猫砂盆的物联网读数)。
何时应使用NoSQL?
在决定使用哪个数据库时,决策者通常会找到以下一个或多个因素,这些因素促使他们选择NoSQL数据库
- 敏捷开发
- 存储结构化和半结构化数据
- 大量数据
- 对扩展架构的要求
- 现代应用程序范式,如微服务和实时流
请参阅何时使用NoSQL数据库和探索NoSQL数据库示例,了解更多关于上述原因的详细信息。
NoSQL数据库的误区
多年来,许多关于NoSQL数据库的误区在开发者社区中广泛传播。在本节中,我们将讨论其中两种最常见误区。
误区:关系数据最适合关系型数据库
一个常见的误区是,NoSQL数据库或非关系型数据库不擅长存储关系数据。NoSQL数据库可以存储关系数据——它们只是存储方式与关系型数据库不同。
事实上,与关系型数据库相比,许多人发现模型化关系数据在NoSQL数据库中比在关系型数据库中更容易,因为相关数据不需要在表之间分割。NoSQL数据模型允许相关数据嵌套在单一的数据结构中。
误区:NoSQL数据库不支持ACID事务
另一个常见的误区是NoSQL数据库不支持ACID事务。一些NoSQL数据库,如MongoDB,实际上支持ACID事务。
请注意,在NoSQL数据库中数据建模的方式可以消除许多用例中多记录事务的需求。考虑早期的例子,我们在关系型模型和文档存储中存储了有关用户及其爱好信息。为了确保在关系型数据库中用户及其爱好信息一起更新,我们需要使用事务来更新两个表中的记录。要在文档存储中做到同样的事情,我们可以更新一个文档——无需多记录事务。
要了解更多关于常见误区的信息,请阅读关于MongoDB,你所知道的一切都是错误的。
NoSQL查询教程
您可以以MongoDB为例开始,根据DB-Engines,它是世界上最受欢迎的NoSQL数据库。开始使用MongoDB的最简单方法是MongoDB Atlas。Atlas是MongoDB的完全托管数据库服务。Atlas有一个永久免费的级别,您可以用它来尝试。查看MongoDB Atlas教程以开始。
您可以通过使用Atlas数据探索器来插入新文档、编辑现有文档和删除文档来继续与您的数据进行交互。
当您准备好尝试更高级的查询来聚合您的数据时,请创建聚合管道。聚合框架是分析数据的一个极其强大的工具。要了解更多,请参加免费的MongoDB University课程M121 MongoDB聚合框架。
当您想要可视化数据时,请查看MongoDB图表。图表允许您创建包含数据可视化仪表板的仪表板。
总结
NoSQL数据库提供了多种好处,包括灵活的数据模型、横向扩展、闪电般的查询速度以及开发者使用上的便捷。NoSQL数据库类型众多,包括文档存储、键值数据库、宽列存储、图数据库和多模型数据库。
MongoDB是全球最受欢迎的NoSQL数据库。了解更多关于MongoDB Atlas的信息,并尝试免费的层级。
现在你已经拥有了自己的Atlas账户,想了解更多吗?请访问MongoDB大学,在那里你可以从MongoDB工程师那里获得免费的在线培训,并获得MongoDB认证。《快速入门》也是开始的好地方;它们将帮助你快速入门你最喜欢的编程语言。