数据库引擎开发以及常见数据库内部原理学习(1)
2014-09-02 00:00
309 查看
数据库引擎开发
学习王涛老师的数据库引擎课程已经是很久之前的事情了,限于当时自身的能力,特别是对数据库的理解方面的欠缺,当时可以说是囫囵吞般的学习,尽管如此,当时学习的收获依旧非常之大,而时至今日,自认为自身对数据库的理解更上一层楼,也因为相对复杂多变的现代数据库,这个数据库模型相对于其他数据库来说简单得多,所以重新翻出来,再次学习,试图在源码层面理清楚各种数据库的架构!
因为是笔记类型的博文,所以会不断更新。
学习王涛老师的数据库引擎课程已经是很久之前的事情了,限于当时自身的能力,特别是对数据库的理解方面的欠缺,当时可以说是囫囵吞般的学习,尽管如此,当时学习的收获依旧非常之大,而时至今日,自认为自身对数据库的理解更上一层楼,也因为相对复杂多变的现代数据库,这个数据库模型相对于其他数据库来说简单得多,所以重新翻出来,再次学习,试图在源码层面理清楚各种数据库的架构!
因为是笔记类型的博文,所以会不断更新。
[b]线索 [/b] 数据库发展 关系型数据库理论 NoSQL数据库的介绍 | [b]1.记录: [/b] 谈谈数据库的本质 数据库是一个提供存取服务的软件 提供网路服务 提供高可用 提供高性能 提供通用化的接口,减少各种各种数据库的学习成本 为什么需要数据库 数据库访问的统一标准,给各种语言接口 提供可靠的数据服务 提供高性能的数据库访问性能 数据管理历史 最开始用卡孔片把数据保存起来 磁带保存(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服务 简单易学 非固定字段,非定长数据,非固定方式访问 [b]2.简化: [/b] 数据库的本质就是一个提供数据存取服务的软件 数据库提供高可用,高性能的存取服务,提供统一化各语言平台的开发接口 关系型的数据库是一种具有非常完美数学理论的数据库,兴盛于硬件性能的大幅度提升,在硬件出现瓶颈的时候无力处理超过规模的数据。跨服务器join操作成本非常巨大。以及理论的完美性造成数据模型耦合度大,模型变更非常困难,业务变更复杂度也非常高 NoSQL类型 key-value数据库 bigTable数据库 文档型数据库 图形数据库 文档型数据库 最接近关系型数据库的NoSQL数据库,其核心为关系JOIN变成嵌套化 以半结构化的数据存储例如xml,json,能够非常便利的提供rest服务 简单易学,非常灵活多变的业务模型 非固定字段,非定长度数据,非固定方式访问 [b]3.背诵: [/b] 数据库是一个提供高可用,提供统一化各个语言平台开发接口的高性能存取服务的软件。 关系型数据库的在分布式数据库中,主要成本在于跨服务器join的网络成本非常之大,而join本身是关系型数据库最大特性之一。 文档型数据库是一种半结构化的数据库,它的核心就是关系JOIN嵌套化,而且因为其存储如xml,json这样的半结构化数据,所以能够非常便利的提供rest服务。 [b]4.思考: [/b] 任何优点都是有代价的 不存在银弹,一种方案可以解决所有问题,特别是在硬件条件限制下 关系型数据库的优缺点是一个值得深入思考的问题,只有解决了这个问题才能真正知道什么时候用NoSQL,不过我这个系列的笔记博文主要是用来学习数据库原理,这不是重点,将来也许会发各种NoSQL的笔记博文。 5.复习: |
[b]总结 [/b] 关系型数据库在大数据的情况下具有局限性 文档型数据库是一种半结构化的数据库 |
相关文章推荐
- 数据库引擎开发以及常见数据库内部原理学习(3):网络编程基础
- 数据库引擎开发以及常见数据库内部原理学习(3):网络编程基础
- 数据库引擎开发以及常见数据库内部原理学习(2)
- 数据库引擎开发以及常见数据库内部原理学习(1)
- 数据库引擎开发以及常见数据库内部原理学习(1)
- 数据库引擎开发以及常见数据库内部原理学习(3):网络编程基础
- 数据库引擎开发以及常见数据库内部原理学习(2)
- 数据库引擎开发以及常见数据库内部原理学习(2)
- Struts2框架的运行原理,以及开发流程,和数据库MylSAM引擎的简介
- 数据库内置视图以及常见的DBMS开发包
- 黑马程序员自学笔记————字符编码原理,以及开发中常见的问题的解决方法:
- Android开发学习笔记(12):Android读取内部以及外部资源文件(更新中...)
- 游戏开发学习路线——游戏引擎原理
- 【源码学习】ThreadLocal 实现原理以及其内部存储结构(神奇的1640531527)
- Spring实例学习第一步,创建数据库(附Spring3.0.5完整压缩包下载地址以及Spring3.0开发所需要的jar包)
- 讨论 winform 引擎以及 CancelButton,OKButton 的实现原理[转载]
- java连接常见数据库的连接字符串-Java基础-Java-编程开发
- 孙鑫VC学习笔记:第一讲 Windows程序内部运行原理
- 简单的XML结合XSL的例子,有助于学习内部的原理(内附源码)
- delphi.net开发学习笔记(2),Application、Session、ViewState、Cookies状态以及变量处理