高级数据库典型技术

            数据库作为计算机学科中一个比较重要的分支,也是一个对于程序员来说非常好的学习方向。平时我们用的最多的,同时也是接触最多的一定是增删改查语句,select,

update,delete等,当然,我不会拿这些再说一遍,这些都是老的掉渣的东西了。所以我们可以学习高级数据库中所以涉及的技术。换句话,其实就是抛开业务层的逻辑,从更加深层次的角度理解数据库。今天我主要提交3个技术点,

1.数据索引技术,典型的B+树索引系列

2.数据库故障恢复技术,我这里只提的是基于日志的恢复技术

3.数据库系统结构,讲讲时下流行的分布式数据库系统

          数据库索引技术关系着数据的查询速度,当数据量比较小的时候,响应是没有问题,当数据库中拥有百万,千万级数据量的数据时,建立索引是必须的。传统的数据查询操作时在海量数据中一条条的查询,在磁盘块中逐个寻找效率当然不高,如果是连续存储的还算运气好,如果是物理上不连续的,那结果可想而知。所以在这里我们引入了一个名叫“index”索引概念的东西,他不保存真实的数据,索引其实是一个指向真实数据记录的地址指针,要查询的数据的时候,先找到此索引值,然后根据此索引值,找到真实记录地址,因为不保存真实数据,索引查询的速度比较快。首先我们说说顺序索引,顺序索引的定义是当数据文件的存储顺序是按某个索引键值的顺序排列时,称该文件为顺序文件,为顺序文件建立索引的时候,一般此索引的建立以某个索引键一致,比如说某ID建立的索引为顺序索引,顺序文件的索引可以采用二分查找方法能够很快定位到相应的索引记录。B+树索引是以平衡树的结构构建的索引,B+树凭借其特殊的结构设计,一直保持着一种比较高的查询效率,在我之前的文章中也都提到过了。最后说的是散列索引,散列索引是利用哈希函数将搜索键值,分别映射到M个记录搜索键值存储地址的桶中,这样可以利用哈希算法直接检索,我们都知道哈希算法,的速度是相当快的哦,但是同时此时的一个好的哈希算法就显得至关重要了,最好能将索引记录均匀地分布到各个桶中。

        基于日志的恢复技术也是数据库容灾处理的一部分,这里的日志主要有3个,undo,redo,undo/redo三种。undo,从这个英文中我们也可大概知道他的意思是不要做,就是撤销操作的意思了,一般我们在操作未完全完成的情况下才会执行撤销动作,这样可以避免脏数据的诞生。undo的日志就是为了防止出现这个情况的。undo的日志记录结构为:

<T, X, V>

其中:T是更新数据的事务,X是T更新的数据元素,V是更新前的旧值,数据出错了就是拿这个值更新回去的,一个完整的undo日志记录如下:

<start T> //开启事务

<T, A, 10 >  //对数据A 进行了数据更改,把他的旧值记录下来

<T,B,10>  //对数据B进行了数据操作,把B的旧值也记录下来

<COMMIT T>  //事务执行成功,也记录

如果在commit 操作之前系统故障了,也就是<COMMIT T>没有写入记录中,也不知道数据操作到底对不对,日志统一从后往前逆序读取,首先遇到<T,B,10> ,将B更新到旧值10,然后又遇到<T,A,10> ,将A还原回到10,直到遇到<start T> ,说明事物恢复成功,又回到了事物的出发点日志恢复结束。undo日志的事务执行顺序为:

(1).写更新数据量元素的日志

(2).再写更新的数据元素

(3).最后写COMMIT,表明事务已经成功提交

但是在这里其实会暴露一个潜在的问题,此要求事务必须将所做的修改写到磁盘后才能提交事务,这无疑增加了I/O开销,实际上,我们可以将数据的修改操作暂缓写到磁盘上,等到缓冲区满时再写入磁盘,就可以节省很多I/O操作了,于是就有了redo日志的出现,redo日志的格式与undo日志略有区别:

(1).写更新数据量元素的日志

(2).再写COMMIT,表明事务已经成功提交

(3).最后写更新的数据元素

所以如果在2,3步骤直接出错,系统也当时值已经更新成功了,会重做操作的,<T, A, V>这里的V保存的就是新的值,用于重做操作时使用的,说明A,B的值可能延迟更长的时间才能写到磁盘中,如果这段时间系统出异常了,就redo操作,还有一种是undo/redo,模式相结合的,灵活性最强。所有的日志记录都要检查点的一个机制,检查点之前的记录都可以忽略不计了,每次都从新的检查点开始,检查点的2个标记为:

<START CKPT>

<END CKPT>

每次寻找到END CKPT,可以将上一个前的<START CKPT>的日志丢弃。

         最后来看看近年来随着分布式系统的出现,也出现了分布式数据库的概念,分布式数据库数据库系统可以看做一系列的集中式数据库的联合,在逻辑上属于同一系统,物理上是分布式,不连续的。他们之间的唯一联系就是----网络。一个数据库的查询可以涉及多地的分布式数据查询,与之相应的还有分布式事务管理,这个比分布式查询更为复杂,网络因素将成为影响分布式查询时间的最大的影响因素,在传统的本地数据库中,计算机的CPU处理速度会是影响查询速度的最主要因素,与现在的分布式数据库是截然不同的,所以分布式数据库的设计能设置成本地访问的就不要搞成分布式的查询,一般90%的查询可以用在本地查询,真到了那10%就通过分布式查询的方式,而且分布式的查询,也应该选择离自己最近的一个分布式数据库中。分布式数据的设计方法有自底向上和自顶向下2种,这个我就不展开了,比较复杂。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《数据库系统概念第六版pdf》是一本经典的数据库理论教材。本书系统地介绍了数据库系统的基本概念、SQL语言、数据模型、数据管理技术等内容。本书的特点是理论联系实践,强调数据库应用的实际场景,且涵盖了最新的数据库技术和概念。 本书主要分为八个章节,每个章节都是有机结合的,内容相互关联,从而构建一个关于数据库系统的完整知识体系。其中,第一章为引言,介绍了数据库的概念和发展历史。第二章介绍了关系模型,包括关系代数、SQL语言、实体关系图等。第三章介绍关系数据库设计的基本原则和步骤,包括ER图、范式设计等。第四章介绍了关系数据完整性和安全性的管理,包括数据约束、授权与角色等。第五章介绍了多表查询和关联查询的使用技巧。第六章介绍了SQL语言的高级特性,如嵌套查询、视图、事务等。第七章介绍了高级数据管理技术,如数据仓库、数据挖掘等。最后一章讨论了高可用性、分布式数据库、NoSQL等主题。 本书的编排清晰、内容全面,对于广大数据库从业者和学生都是一本非常优秀的教材。务实性的描述,让读者更容易理解。文字流畅且通俗易懂,例子或练习题更是帮助读者快速掌握。总体来说,这是一本被广泛认可和推荐的数据库教材。 ### 回答2: 《数据库系统概念第六版PDF》是一本深入介绍数据库系统理论和实践的学术著作,其主要内容包括数据库系统概述、关系模型、数据库语言SQL、关系数据库设计、关系数据库编程和应用等多个方面。 该书的内容涵盖了从数据库设计、实现到运行管理的全过程,对于需要从事数据库相关工作的人员具有非常实用的指导意义。同时,该书也提供了一些典型数据库设计案例,作者讲述了如何在具体业务场景下进行数据库设计,并进行的详细解释和说明。这些案例不仅适用于初学者的实践训练,也可以为专业人士提供宝贵的参考和借鉴。 总之,《数据库系统概念第六版PDF》是一本综合性、深入剖析且具有实用性的数据库相关著作。无论是想要从事数据库相关的人员,还是已经从事多年的专业人士,都可以从这本书中获取到对数据库理论和实践的增长、更新和加强。 ### 回答3: 《数据库系统概念第六版》是一本有关数据库系统概念和实现的经典教材。本书内容涵盖了数据库的基本概念,关系模型,关系代数和SQL语言,不同类型的数据模型(如面向对象、XML),事务管理和并发控制,数据仓库和数据挖掘等方面。作者以通俗易懂的方式,详细阐述了数据库系统的各个方面,使得读者能够理解数据库的基本原理和技术细节,从而能够更好地应用它们。 本书特点在于其广泛的覆盖面和深入的讲解。书中涵盖的内容包含了数据库系统的各个领域和各个方面,包括基础理论、数据库设计、SQL语言、数据仓库与数据挖掘、事务处理、并发控制等。从此,读者可以全面掌握数据库的概念、基本原理和实际应用。此外,本书还特别强调了实践操作和案例研究,通过大量的实例和练习,帮助读者获得实践经验和实际应用能力。 总之,《数据库系统概念第六版》是一本非常优秀而且值得一读的数据库相关教材。它不仅适合计算机专业的大学生和研究生使用,也适合相关工作者阅读,增进其对数据库系统的理解和掌握,从而更好地应用和发挥它们的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值