数据库引擎开发
学习王涛老师的数据库引擎课程已经是很久之前的事情了,限于当时自身的能力,特别是对数据库的理解方面的欠缺,当时可以说是囫囵吞般的学习,尽管如此,当时学习的收获依旧非常之大,而时至今日,自认为自身对数据库的理解更上一层楼,也因为相对复杂多变的现代数据库,这个数据库模型相对于其他数据库来说简单得多,所以重新翻出来,再次学习,试图在源码层面理清楚各种数据库的架构!
因为是笔记类型的博文,所以会不断更新。
线索
|
1.记录:
- 谈谈数据库的本质
- 数据库是一个提供存取服务的软件
- 提供网路服务
- 提供高可用
- 提供高性能
- 提供通用化的接口,减少各种各种数据库的学习成本
- 为什么需要数据库
- 数据库访问的统一标准,给各种语言接口
- 提供可靠的数据服务
- 提供高性能的数据库访问性能
- 数据管理历史
- 最开始用卡孔片把数据保存起来
- 磁带保存(1951)
- 磁盘保存(1956 IBM 5MB)
- 数据库管理系统
- 网状数据库(IDS)
- 层次数据库(IBM的IMS)
- 关系数据库(Oracle,DB2,MySQL)(1970提出关系型数据库理论基础模型,1974辩论关系型数据库,1979 Oracle V2发布,世界上第一个被商用的数据库,1983支持事务,db2 1981年才发布商用,1991年才移植到通用平台)
- 非关系型数据库(对象模型,XML存储,图存储)
- 关系型数据库理论过于苛刻,它兴盛于硬件性能的提升,无力处理大数据,nosql开始兴盛。
- 数据库依赖的技术
- 操作系统
- 存储
- 网络
- 数据库的应用场景
- 处于应用的底层的底层
- 关系模型的理论基础
-
所有信息都表示为关系中的
数据值。所以,关系变量在设计时刻是相互无关联的;反而,
设计者在多个关系变量中使用相同的域,如果一个属性依赖于
另一个属性,则通过参照完整性来强制这种依赖性。
- NoSQL类型
- key-value键值对
- 通过简化数据的操作,达到数据的飞跃提升
- Big-Table
- Document文档
- 最靠近关系型的NoSQL
- 核心在于关系嵌套化
- Graph图形
- SNS类型的系统
- 文档型数据库模型
- 解决关系模型过于理想化
- 关系型模型难以维护
- 半结构化适合xml,json,rest服务
- 简单易学
- 非固定字段,非定长数据,非固定方式访问
2.简化:
- 数据库的本质就是一个提供数据存取服务的软件
- 数据库提供高可用,高性能的存取服务,提供统一化各语言平台的开发接口
- 关系型的数据库是一种具有非常完美数学理论的数据库,兴盛于硬件性能的大幅度提升,在硬件出现瓶颈的时候无力处理超过规模的数据。跨服务器join操作成本非常巨大。以及理论的完美性造成数据模型耦合度大,模型变更非常困难,业务变更复杂度也非常高
- NoSQL类型
- key-value数据库
- bigTable数据库
- 文档型数据库
- 图形数据库
- 文档型数据库
- 最接近关系型数据库的NoSQL数据库,其核心为关系JOIN变成嵌套化
- 以半结构化的数据存储例如xml,json,能够非常便利的提供rest服务
- 简单易学,非常灵活多变的业务模型
- 非固定字段,非定长度数据,非固定方式访问
3.背诵:
- 数据库是一个提供高可用,提供统一化各个语言平台开发接口的高性能存取服务的软件。
- 关系型数据库的在分布式数据库中,主要成本在于跨服务器join的网络成本非常之大,而join本身是关系型数据库最大特性之一。
- 文档型数据库是一种半结构化的数据库,它的核心就是关系JOIN嵌套化,而且因为其存储如xml,json这样的半结构化数据,所以能够非常便利的提供rest服务。
4.思考:
- 任何优点都是有代价的
- 不存在银弹,一种方案可以解决所有问题,特别是在硬件条件限制下
- 关系型数据库的优缺点是一个值得深入思考的问题,只有解决了这个问题才能真正知道什么时候用NoSQL,不过我这个系列的笔记博文主要是用来学习数据库原理,这不是重点,将来也许会发各种NoSQL的笔记博文。
5.复习:
|
总结
- 关系型数据库在大数据的情况下具有局限性
- 文档型数据库是一种半结构化的数据库
|
数据库引擎开发以及常见数据库内部原理学习(1)