首页 > 代码库 > 数据库引擎开发以及常见数据库内部原理学习(1)

数据库引擎开发以及常见数据库内部原理学习(1)

数据库引擎开发

        学习王涛老师的数据库引擎课程已经是很久之前的事情了,限于当时自身的能力,特别是对数据库的理解方面的欠缺,当时可以说是囫囵吞般的学习,尽管如此,当时学习的收获依旧非常之大,而时至今日,自认为自身对数据库的理解更上一层楼,也因为相对复杂多变的现代数据库,这个数据库模型相对于其他数据库来说简单得多,所以重新翻出来,再次学习,试图在源码层面理清楚各种数据库的架构!

        因为是笔记类型的博文,所以会不断更新。

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

 



数据库引擎开发以及常见数据库内部原理学习(1)