NoSQL 是什么?
NoSQL 数据库(意即“不仅仅是 SQL”)存储数据的方式与关系表不同。NoSQL 数据库的类型因数据模型而异。主要类型包括文档、键值、宽列和图形。它们提供了灵活的模式,可以随大量数据和高用户负载而轻松扩展。
在本文中,您将了解什么是 NoSQL 数据库,为什么(以及何时!)应该使用它,以及如何开始使用它。
目录
- 什么是 NoSQL 数据库?
- NoSQL 数据库类型
- NoSQL 数据库简史
- NoSQL 数据库功能
- 关系型数据库与 NoSQL 数据库示例
- RDBMS 与 NoSQL 数据库之间的区别
- NoSQL 使用案例
- 何时使用 NoSQL?
- NoSQL 数据库误解
- NoSQL 查询教程
- 总结
- 常见问答
什么是 NoSQL 数据库?
人们使用“NoSQL 数据库”一词时,通常会使用它来指代任何非关系型数据库。有人说“NoSQL”代表“非 SQL”,而另一些人则说“不仅仅是 SQL”。无论哪种方式,大多数人都认为 NoSQL 数据库以更自然、更灵活的方式存储数据。NoSQL 是一种数据库管理方法,而 SQL 只是一种查询语言,与 NoSQL 数据库的查询语言类似。
数据库类型 - NoSQL
随着时间的推移,出现了四种主要的 NoSQL 数据库类型:文档数据库、键值数据库、宽列存储数据库和图形数据库如今,多模型数据库也变得相当流行。
面向文档的数据库
面向文档的数据库将数据存储在文档中,类似于 JSON (JavaScript Object Notation) 对象。每个文档包含成对的字段和值。值通常有多种类型,包括字符串、数字、布尔值、数组甚至其他对象。文档数据库提供了一种灵活的数据模型,非常适合半结构化和典型的非结构化数据集。它们还支持嵌套结构,便于表示复杂的关系或层级化数据。
文档数据库的例子有 MongoDB 和 Couchbase。典型的文档如下:
键值数据库
键值存储是一种较简单的数据库,其中每个项目都包含键和值。每个键都是唯一的,并与单个值相关联。它们用于缓存和会话管理,读写性能很高,因为它们倾向于将内容存储在内存中。例如 Amazon DynamoDB 和 Redis。键值数据库中存储的数据的简单视图如下:
宽列存储
宽列存储将数据存储在表格、行和动态列中。数据存储在表格中。不过,与传统的 SQL 数据库不同,宽列存储非常灵活,不同的行可以有不同的列集。这些数据库可采用列压缩技术来减少存储空间并提高性能。宽行宽列可高效检索稀疏和宽泛的数据。宽列存储的例子有 Apache Cassandra 和 HBase。宽列中存储数据的一个典型示例如下:
name | id | dob | city | |
---|---|---|---|---|
Foo bar | 12345 | foo@bar.com | Some city | |
Carn Yale | 34521 | bar@foo.com | 12-05-1972 |
图形数据库
图形数据库以节点和边缘的形式存储数据。节点通常会存储有关人物、地点和事物(如名词)的信息,而边缘则会存储有关各节点间关系的信息。它们对于高度关联的数据非常有效,因为这些数据的关系或模式最初可能并不十分明显。图数据库的例子有 Neo4J 和 Amazon Neptune。MongoDB 还提供图遍历功能,使用聚合管道的 $graphLookup 阶段。下面举例说明如何存储数据: