什么是NoSQL?
NoSQL数据库(又称“非SQL”)以不同于关系表的方式存储数据。根据其数据模型,NoSQL数据库有多种类型。主要类型包括文档型、键值、宽列和图。它们提供灵活的模式,并易于扩展以适应大量大数据和高用户负载。
在这篇文章中,你将了解什么是NoSQL数据库,为什么(以及何时!)你应该使用它,以及如何开始使用。
目录
- 什么是NoSQL数据库?
- NoSQL数据库类型
- NoSQL数据库简史
- NoSQL数据库功能
- 关系型数据库与NoSQL数据库示例
- 关系数据库管理系统(RDBMS)与NoSQL数据库之间的区别
- NoSQL用例
- 何时应该使用NoSQL?
- NoSQL数据库的误解
- NoSQL查询教程
- 总结
- 常见问题解答
什么是NoSQL数据库?
当人们使用“NoSQL数据库”这个术语时,他们通常指的是任何非关系型数据库。有人说“NoSQL”代表“非SQL”,而另一些人说它代表“不仅限于SQL”。无论如何,大多数人同意NoSQL数据库以更自然和灵活的方式存储数据。与SQL相比,NoSQL是一种数据库管理方法,而SQL只是一种查询语言,类似于NoSQL数据库的查询语言。
数据库类型 — NoSQL
随着时间的推移,已出现四种主要的NoSQL数据库类型:文档数据库、键值数据库、宽列存储和图数据库。如今,多模型数据库也变得越来越受欢迎。
面向文档的数据库
面向文档的数据库存储数据的方式类似于JSON(JavaScript对象表示法)对象。每个文档包含字段和值的对。值通常可以是多种类型,包括字符串、数字、布尔值、数组,甚至是其他对象。文档数据库提供灵活的数据模型,非常适合半结构化和通常非结构化的数据集。它们还支持嵌套结构,这使得表示复杂关系或层次数据变得容易。
文档数据库的例子有 MongoDB 和 Couchbase。一个典型的文档可能看起来像以下这样
键值数据库
键值存储是一种更简单的数据库类型,其中每个项目包含键和值。每个键都是唯一的,并关联一个单一值。它们用于缓存和会话管理,由于它们通常存储在内存中,因此在读写方面提供高性能。例如,Amazon DynamoDB 和 Redis。以下是一个键值数据库中存储数据的简单视图
宽列存储
宽列存储在表格、行和动态列中存储数据。数据存储在表中。然而,与传统SQL数据库不同,宽列存储是灵活的,不同的行可以有不同的列集。这些数据库可以采用列压缩技术来减少存储空间并提高性能。宽行和列可以有效地检索稀疏和宽数据。宽列存储的例子有 Apache Cassandra 和 HBase。以下是如何在宽列中存储数据的典型例子
姓名 | id | 电子邮件 | 出生日期 | 城市 |
---|---|---|---|---|
Foo bar | 12345 | [email protected] | 某个城市 | |
Carn Yale | 34521 | [email protected] | 12-05-1972 |
图数据库
图数据库以节点和边的形式存储数据。节点通常存储有关人物、地点和事物(如名词)的信息,而边存储节点之间的关系信息。它们适用于高度连接的数据,其中关系或模式可能一开始并不明显。图数据库的例子有 Neo4J 和 Amazon Neptune。MongoDB 也使用聚合管道的 $graphLookup 阶段提供图形遍历功能。以下是如何存储数据的例子