数据库引擎开发以及常见数据库内部原理学习(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. 文档型数据库是一种半结构化的数据库

来自为知笔记(Wiz)

时间: 2024-10-08 09:30:19

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

数据库引擎开发以及常见数据库内部原理学习(3):网络编程基础

康奈尔笔记 线索 网络理论                                                                                 程序流程 1.记录: 网络原理 计算机网路是一种允许计算机进行即时通讯的工具 计算机物理连接可能是电缆也可能是无线介质 生成.转发以及销毁数据的网络设备称之为网络节点 OSI模型 国际标准协议OSI模型是一种字面模型,而且跟IP协议没关系 第一层:物理层:bit流传输,主要是物理介质 第二层:数据链路层:提供介

SqlServer 数据库引擎优化顾问优化数据库

现在一直在做的项目,数据量相对也不小,开始的时候没有觉得,因为是刚开始,数据量还很小,在程序使用过程中速度还挺快,但是随着数据量的不停的增长,发现程序越来越慢,甚至出现了超时的问题,因此要对程序和数据库进行优化,前期项目比较紧,没有针对大数据量业务进行分析设计,所以索引等相关优化没有做到位,通过后期的大数据量导致的错误使用了下面的方法. 这里简单的讲一下:如何使用数据库引擎优化顾问优化数据库 简单的优化一下数据库. 一.启动 microsoft sql server management stu

Storm集群上的开发 ,Storm的内部原理,storm集群间的通信机制(九)

storm间的worker会互相通信,上一个worker的结果会交给下一个worker进行计算.看图

Storm集群上的开发 ,Storm的内部原理,storm提交任务的过程 (八)

storm提交任务的过程: 1.客户端通过storm提交topology 2.nimbus主节点创建本地topology任务目录.tmp 3.nimbus监控zookeeper心跳,计算工作量. 4.nimbus向zookeeper分配任务. 5.从节点监控zk的数据,一旦有新任务分配,启动任务topology.. 6.从zk上获取分配给自己的task任务,启动对应的worker进程.

Storm集群上的开发 ,Storm的内部原理(七)

1.Storm在zookeeper保存的数据结构 2.storm提交任务的过程

数据库引擎

数据库引擎是用于存储.处理和保护数据的核心服务.利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求. 数据库应用项目是通过数据库引擎与数据库链接的.何为数据库引擎呢?简而言之,数据库引擎就是驱动各种数据库的程序,它负责处理数据库相关工作的整个核心部份.同样的,数据库应用项目的操作指令,均会通过数据库引擎的处理作用到数据库上. 数据库引擎在数据库中的作用和位置,如下图所示. Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了

Mysql数据库引擎分析

先来一篇博文:http://www.jb51.net/article/38004.htm 这篇自我感觉写的还不错.大家可以看看. 1.什么是数据库引擎 简单来说就是数据库用于存储.处理和保护数据的核心服务.利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求.使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库,这包括创建用于存储数据的表和用于查看.管理和保护数据安全的数据库对象. 2.mysql数据库引擎类型(百度百科) 2.1 ISAM

常用mysql数据库引擎——MyISAM和InnoDB区别

背景: 昨天做项目时,发现使用事务后回滚不了,后来把数据库引擎从MyISAM换成InnoDB后果断好了,如下图: 正文: MyISAM和InnoDB是mysql常用的数据库引擎,他们的区别如下: 数据库引擎 适用范围 性能 事务 外键 数据受损恢复 MyISAM 适合频繁查询 高 × × × InnoDB 适合频繁修改 中 √ √ √ 注:MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎 参考资料: MySQL数据库引擎介绍.区别.创建和性能测试的深入分析 http://www.jb

c++后台开发面试常见知识点总结(四)数据库

数据库的索引类型 聚集索引和非聚集索引的区别(叶节点存储内容) 唯一性索引和主码索引的区别 索引的优缺点,什么时候使用索引,什么时候不能使用索引(重点) 索引最左前缀问题 数据库中事务的ACID 数据库隔离性设置不同会出现的问题(脏读.不可重复读.丢失修改.幻读) Mysql有四个隔离级别:未提交读,提交读,可重复读,可串行化. Mysql的优化(高频,索引优化,性能优化) 数据库引擎介绍,innodb和myisam的特点与区别 数据库连接池的作用 讲讲你用过的所有锁,除了互斥锁与读写锁比如自旋