知识卡片
关系数据库与NoSQL三代技术演进各自要解决的问题
内容
数据库技术的三代演进,每一代都是为了解决上一代无法覆盖的具体场景,而不是 简单的技术升级换代。第一代(层次/网状模型)解决的是”如何用计算机结构化地 存储有层级或交叉关联的数据”,但层次模型无法表示多对多关联,网状模型虽能 表示却结构复杂、难以规范化。第二代(关系模型)用集合论重新定义数据结构, 换来了严格的数学基础和简洁的表结构,这也是它能发展出SQL、事务管理、用户 权限管理这套完整技术体系、长期成为主流的原因——不是表格形式本身多先进, 而是它的数学基础支撑起了一整套可靠的工程规范。第三代(NoSQL)要解决的是 关系数据库应对海量、异构数据时的伸缩性和可扩展性瓶颈:物联网、视频监测等 场景产生的数据量和数据结构复杂度已经超出关系模型”先定义严格模式再存数据” 这套方式的承受范围,NoSQL索性放弃SQL解析和关系模型本身,换取更直接的存取 效率——文档数据库(如MongoDB)用无固定模式的树形文档换取存储灵活性和 写入速度,但牺牲了事务一致性保障;KV数据库(如Redis)用最简结构换取 极致的存取效率,代价是几乎不支持复杂查询。这条主线说明:每种数据库技术 的”优点”和”缺点”其实是同一个设计选择的两面,不存在全面最优的方案,只有 针对具体数据规模和一致性要求的取舍。
参考来源
- 位置:《数据库原理(微课版)》第1章《绪论》1.5.1节"数据库技术的发展"
(源文件:_epub-src/index_split_001.html)
- 结论依据:原文说明"于是,人们提出NoSQL的概念,即抛弃SQL这种简单直接的
数据访问方式,同时抛弃关系数据库中SQL解析与处理等运行效率较低的部分,
直接使用底层的数据存取接口来访问数据",并对MongoDB"没有关系数据库中
一致性维护、事务等机制,对数据的一致性、并发控制的正确性保障不强"的
取舍做了说明,因此可以推出各代技术是针对具体问题的取舍而非单纯升级
的结论。
- 原始内容:于是,人们提出NoSQL的概念,即抛弃SQL这种简单直接的数据访问
方式……MongoDB……没有关系数据库中一致性维护、事务等机制,对数据的
一致性、并发控制的正确性保障不强。