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"})