Module 04 · Data literacy for Data Science (Optional)
NoSQLNoSQL 数据库概览
NoSQL(意为 “不仅仅是 SQL” 或 “非 SQL”)是一种非关系型数据库设计,提供灵活的模式(flexible schemas)来存储和检索数据。NoSQL 的流行主要归因于云计算、大数据、高容量 Web 和移动应用时代的兴起,因其在扩展性、性能和易用性方面的优势而被选中。
1. NoSQL 的特点与类型
A. 核心特点
- 非关系型: 不使用传统的行/列/表设计和固定模式。
- 灵活模式: 允许数据以无模式(schema-less)或自由形式存储。
- 数据类型: 任何数据(结构化、半结构化或非结构化)都可以存储在任何记录中。
- 查询: 通常不使用 SQL 进行查询,尽管有些可能支持 SQL 或类 SQL 接口。
B. 四种常见 NoSQL 数据库类型
| 类型 | 数据模型 | 适用场景 | 局限性 | 示例 |
|---|---|---|---|---|
| 键值存储 (Key-value Store) | 数据存储为键值对的集合。键是唯一的标识符。 | 存储用户会话数据、用户偏好、实时推荐、内存数据缓存。 | 难以查询特定数据值,不适合需要数据值之间关系或多个唯一键的场景。 | Redis, Memcached, DynamoDB |
| 文档型 (Document-based) | 将每个记录及其相关数据存储在一个单独的文档中(通常是 JSON 格式)。 | 电子商务平台、医疗记录存储、CRM 平台、分析平台。 | 不适合运行复杂的搜索查询和多操作事务。 | MongoDB, CouchDB, Cloudant |
| 列存储 (Column-based) | 将数据存储在按列族分组的列单元格中。同一列的所有单元格连续存储在磁盘上。 | 需要重写入请求的系统、存储时间序列数据、天气数据、IoT 数据。 | 不适合复杂的查询或频繁更改查询模式。 | Cassandra, HBase |
| 图数据库 (Graph-based) | 使用图形模型(由节点和表示关系的箭头组成)存储数据。 | 社交网络、实时产品推荐、网络图、欺诈检测、访问管理。 | 不适合处理高容量事务或大规模分析查询。 | Neo4J, CosmosDB |
2. NoSQL 的优势与 RDBMS 的区别
A. NoSQL 的优势
- 大数据处理: 能够处理大容量的结构化、半结构化和非结构化数据。
- 可扩展性: 能够作为分布式系统运行,跨多个数据中心扩展。采用向外扩展架构(scale-out architecture),通过添加新节点来提高容量和性能,成本效益高。
- 灵活性与敏捷性: 设计更简单,对可用性有更好的控制,可扩展性增强,使其更灵活和敏捷,能更快地迭代。
B. RDBMS 与 NoSQL 的关键区别
| 特点 | 关系数据库 (RDBMS) | NoSQL 数据库 |
|---|---|---|
| 数据模式 | 严格定义(Rigidly defined),定义了所有数据的类型和组成。 | 模式无关(Schema-agnostic),允许存储非结构化和半结构化数据。 |
| 成本/硬件 | 维护商业 RDBMS 成本高昂。 | 专为低成本通用硬件设计。 |
| 事务可靠性 | 支持 ACID 合规性,确保事务可靠性和崩溃恢复。 | 大多数 NoSQL 不支持 ACID 合规性。 |
| 成熟度 | 技术成熟且文档完善,风险可控。 | 相对较新的技术。 |
| 数据类型 | 结构化数据的主导技术。 | 适用于处理大容量、多样性的数据。 |
尽管存在风险和不足,NoSQL 数据库已成为处理现代高并发、大数据量应用的关键技术,并将继续在任务关键型应用中发挥作用。