NoSQL 简介学习笔记

1. 什么是 NoSQL?

NoSQL(Not only SQL) 是指非关系型数据库,它不使用传统的关系型数据表结构,而是采用一种更为灵活的数据存储模式。与关系型数据库相比,NoSQL 更适合处理分布式、大规模、高并发的海量数据。

2. NoSQL 数据库的分类

NoSQL 数据库主要分为四类:

2.1 键值(Key-Value)存储数据库

键值存储数据库是以 key-value 的形式存储数据,每个 key 对应一个 value,类似于字典。例如 Redis 就是一种常用的键值存储数据库,可以用来缓存和持久化数据。

2.2 列族(Column-Family)存储数据库

列族存储数据库将数据组织成列族的形式,每个列族又包含多个列,每个列包含一个或多个版本的值。HBase 就是一种典型的列族存储数据库,广泛应用于海量数据存储和实时查询场景。

2.3 文档(Document)存储数据库

文档存储数据库以 JSON、XML 或 BSON 等格式存储数据,每个文档对应一个唯一的标识符,可以包含嵌套的子文档。MongoDB 就是一种常见的文档存储数据库,广泛应用于 Web 应用、大数据、云计算等领域。

2.4 图形(Graph)存储数据库

图形存储数据库以图形的形式存储数据,每个节点对应一个实体,每条边对应两个节点之间的关系。Neo4j 就是一种典型的图形存储数据库,广泛应用于社交网络、知识图谱等领域。

3. 如何选择合适的 NoSQL 数据库?

选择合适的 NoSQL 数据库需要考虑以下几个方面:

  • 数据类型和结构
  • 数据规模和性能要求
  • 数据一致性和可靠性
  • 数据操作和查询需求

4. NoSQL 实例

以 MongoDB 为例,展示其基本使用的 CRUD 操作:

4.1 创建数据库和集合

Copy Code
// 创建名为 "mydb" 的数据库 > use mydb // 创建名为 "mycollection" 的集合(相当于关系型数据库中的表) > db.createCollection("mycollection")

4.2 插入数据

Copy Code
// 向名为 "mycollection" 的集合中插入一条记录 > db.mycollection.insert({"name": "binjie09", "age": 18})

4.3 查询数据

Copy Code
// 查询名为 "mycollection" 的集合中所有记录 > db.mycollection.find() // 查询名为 "mycollection" 的集合中年龄为 18 的记录 > db.mycollection.find({"age": 18})

4.4 更新数据

Copy Code
// 修改名为 "mycollection" 的集合中名字为 binjie09 的记录的年龄为 20 > db.mycollection.update({"name": "binjie09"}, {"$set": {"age": 20}})

4.5 删除数据

Copy Code
// 删除名为 "mycollection" 的集合中名字为 binjie09 的记录 > db.mycollection.remove({"name": "binjie09"})