内存数据库内存数据库的原理及应用

上传人:yh****1 文档编号:139357873 上传时间:2020-07-21 格式:DOC 页数:9 大小:163KB
返回 下载 相关 举报
内存数据库内存数据库的原理及应用_第1页
第1页 / 共9页
内存数据库内存数据库的原理及应用_第2页
第2页 / 共9页
内存数据库内存数据库的原理及应用_第3页
第3页 / 共9页
内存数据库内存数据库的原理及应用_第4页
第4页 / 共9页
内存数据库内存数据库的原理及应用_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《内存数据库内存数据库的原理及应用》由会员分享,可在线阅读,更多相关《内存数据库内存数据库的原理及应用(9页珍藏版)》请在金锄头文库上搜索。

1、.存数据库的原理及应用摘要近年来,数据库系统在各种领域中扮演了关键角色,但传统的基于磁盘的关系数据库系统却不能满足上述应用高性能、 实时/近实时数据访问的要求,存数据库系统则可以很好地满足各种应用系统的实时数据管理需求,本文主要阐述了存数据库的基本概念,并对其和传统基于磁盘的数据库进行了比较,此外对其在存中的数据管理方式有一定的介绍。1. 存数据库概述以及存数据库技术的发展存数据库,也称主存数据库,是一个较新的研究领域,目前对存数据库尚无一定义。 存数据库的本质特征是其主拷贝或“工作版本”常驻存。相对于磁盘,存的数据读写速度要高出几个数量级,将数据保存在存中相比从磁盘上访问能够极提高应用的性能

2、。同时,存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在存中重新设计了体系结构,并且在数据缓存、快速算法、 并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多。存数据库与磁盘数据库之间主要区别在于:存数据库主数据库常驻存,体系结构设计的优化目标是提高存和 CPU使用效率由于事务处理无需进行磁盘访问,使用存数据库的应用系统性能得到极大提高。随着电子技术的快速发展,计算机存已越来越便宜,这使得计算机上配置的存容量变得越来越大。现在一些商用的系统已配置几GB甚至更多的主存,另外,随着计算机及操作系统从32位向64位的发展,使理论上计算机可配置存总数达B。从前,利

3、用虚拟存或存交换技术来使大于地址空间或大于物理存的程序可以运行,这些技术在当时乃至现在都具有重要的意义,然而,现在的问题是如何充分利用大存,使程序运行更快。随着计算机应用领域不断扩大和应用程度不断加深,人们对数据库技术提出了新的更高的要求。主存数据库技术,是随着存储技术的发展和现代应用的高性能需求产生和发展起来的数据库技术分支。主存数据库管理系统把数据全部或部分驻留在主存中,消除了传统的磁盘数据库系统中事务运行的I/O瓶颈,获得直接访问数据的极高存取速度,大提高了系统的性能,为需要快速响应和高吞吐量的应用提供了强有力的支持。 从上个世纪60年代末到80年代初。在这个时期中,出现了主存数据库的雏

4、形。1969年IBM公司研制了世界上最早的数据库管理系统-基于层次模型的数据库管理系统IMS,并作为商品化软件投入市场。在设计IMS时,IBM考虑到基于存的数据管理方法,相应推出了IMS/VS Fast Path。Fast Path是一个支持存驻留数据的商业化数据库,但它同时也可以很好地支持磁盘驻留数据。在这个产品中体现了主存数据库的主要设计思想,也就是将需要频繁访问,要求高响应速度的数据直接存放在物理存中访问和管理。在这个阶段中,包括网状数据库、关系数据库等其他各种数据库技术也都逐渐成型。 1984年,D J DeWitt等人发表了主存数据库系统的实现技术一文。第一次提出了Main Memo

5、ry Database(主存数据库)的概念。预言当时异常昂贵的计算机主存价格一定会下降,用户有可能将大容量的数据库全部保存在主存中,提出了AVL树、哈希算法、主存数据库恢复机制等主存数据库技术的关键理论,为主存数据库的发展指出了明确的方向 。 1987年,ACM SIGMOD会议中提出了以堆文件(HEAP FILE)作为主存数据库的数据存储结构。Southern Methodist大学设计出MARS主存数据库模型。随着互联网的发展,越来越多的网络应用系统需要能够支持大用户量并发访问、高响应速度的的数据库系统,主存数据库市场成熟半导体技术快速发展,半导体存大规模生产,动态随机存取存储器(DRAM

6、)的容量越来越大,而价格越来越低,这无疑为计算机存的不断扩大提供了硬件基础,使得主存数据库的技术可行性逐步成熟 1994年美国OSE公司推出了第一个商业化的,开始实际应用的主存数据库产品Polyhedra 2001年美国McObject推出eXtremeDB。加拿大Empress公司推出EmpressDB。2. 存数据库的特点 存系统和磁盘系统具有不同的特性,这是引起MMDBS(main memory database system )和DRDBS(disk resident database system)之间的差别的根本所在,主要表现在下列方面:(1)存和磁盘在存取时间上有若干数量级的差别

7、,存数据库“工作版本 ”常驻存,数据直接被访问,因而其系统“瓶颈”主要是存空间和处理机的有效利用 。据报道,ORACLE发布存型数据库TimesTen速度比传统产品快10倍。(2)存是易失性的,而磁盘是永久性的存储器,即当系统断电时,前者所存信息立即消失,通电也不会恢复;而后者反之,断电时信息不会消失,再通电时即原样可使用。(3)存储格式不同。存是字节或字编址的,而磁盘是块存储设备。(4)数据的存储组织方法对性能影响不同。不同的组织方式对磁盘而言的性能影响远比对存影响大,如顺序存取与随机存取的时间对存没有什么变化,而对磁盘则几乎有数量级的差别。(5)存取方式不同。存可由处理机直接存取,磁盘则不

8、能;但存比磁盘更易于受来自程序错误的直接数据破坏。这些差异几乎要影响数据库管理的每一方面,进而形成MMDBS自己的技术特征。3. 存数据库原理 传统的磁盘数据库都是 Disk-based 的,即预先假定数据主要是放在磁盘中的,所以它的所有优化、查询算法都是以磁盘存储为主的。举个简单的例子,比如说要查找一行记录,传统的数据库要先查找索引,通过索引查找该记录所在的页面,然后通过查找该页是已经在存中,还是要从磁盘的数据文件中读取出来。而存数据库是预先就把所有的数据Load到存中,它知道所有的数据一定在存里面,不会再通过其它的调用去决定数据在哪儿,这其中就少走了很多的弯路,基本没有磁盘的IO,而且都在

9、存中,效率也就高了很多。存数据库在物理数据组织上抛弃了磁盘数据管理的传统方式,基于全部数据都在存中重新设计了体系结构,体系结构的设计优化目标是提高存和CPU使用效率所以处理数据速度要比传统的处理速度快的多。而从逻辑角度上,存数据库相当于是磁盘数据库的映射,所以需要有一定的数据换入换出策略。3.1 存数据库的数据组织方式在传统的DRDBS中,数据以文件形式组织于磁盘上,其系统瓶颈是外存的数据 I/O,因而其物理数据库组织应尽可能地有利于减少对磁盘的存取次数。而在MMDBS中,“工作版本”常驻存,数据直接被CPU访问,因而其系统“瓶颈”主要是存空间和处理机的有效利用。因此,必须开发全新的适合存特性

10、的数据组织方法,由于存中顺序存取和随机存取同样高效,数据不必簇聚存放,甚至可以将每个元组的各属性值分散存放在存中,而在元组中仅保留指向各属性值的指针,从而大大提高空间的利用率。这里介绍其数据物理组织方式:(1) 区段式组织 一个MMDB的数据由两部分组成:MMDB = M_DB+S_DB.其中,M_DB是数据库的“存版本”,亦即数据库的“工作版本”,S_DB是数据库的“外存版本,存放在某一时刻整个数据库的一个完整的快照,它一方面是存放未调入存的那一部分数据库数据的场所,一方面用作数据库恢复的备份,存版本与外存版本构成整个的统一整体,当要访问的数据不在M_DB而在S_DB 中时,须事先将其交换到

11、M_DB中,然后才能进行存取 。数据在存上的组织是区段式组织。区段式组织基于关系数据模型,它将存储空间逻辑划分为“分区”,每一个分区存储一个关系的数据,每个分区又物理地由若干段组成,属于同一分区的各数据段相互,并且对应于S_DB中的一个物理文件,一个段是一块固定长度的连续区域,它是外存信息交换的基本单位,也是外存分配和回收以及对MMDB进行恢复的单位。(2) 影子存式在事务的正常操作期间,每次查询都产生一个分别对应于影子存(SM)和主拷贝 ( PDB)的双地址,且总是先对S M试探,若不成功,再对PDB操作所有的更新操作都在SM中进行,且都记录在活动日志中. 每当一个事务提交时,由它所产生的S

12、 M中的“后映像” 便拷贝到PDB中。使用影子存具有以下优点:1. 省去事务失败或系统故障时的撤销操作,只需消除相应的影子存即可;2. 减少对 MMDB ( PDB)的存取,各事务可并行地对各S M区操作;3.2 数据库记录与存的映射关系 因为存数据库自己维持着大块ram空间作为磁盘中数据的cache,那么其中就会涉及到存单元和磁盘数据的映射。假定磁盘DBMS管理的所有数据主要的存在于磁盘中,记录的访问是通过RID(record identifier)实现的。在区段式组织方式中,每个段中的一个数据记录路就是一个关系元组,每个记录都有一个唯一的标识RID。RID有3部分组成,分区号,段号,以及段

13、记录槽号,记录槽包含了对应记录的长度和记录的首地址。这样通过RID找到相对应的记录槽,按槽中的地址和长度便可直接存取所要的记录。因此要访问一个记录,需要地址映射将RID转换为存的物理地址。其实,对于存数据库,存取方法返回的不必是所需的记录数据的副本,只需将其RID返回即可。3.3 存受限时存数据库装入策略从某种角度上来看,MMDB也是一种 Cache 机制,是磁盘数据库的 Cache,通过物理 存中的数据存储区的直接操作,减少了到磁盘间的 I/O 交互。因为存的容量限制,无法数据库所有的数据都装入,所以,在初始化数据装入时必须要有一定的规则来保证装入的数据必须是最重要的,首先先介绍数据的初始化

14、策略:(1) 初始化数据装入 存数据库初装时,首先考虑的是事务的优先级。优先级高的事务先装入存,其次是数据的流行性,流行数据对应的事务往往也是高优先事务;再次就是活跃性,存取频率高的数据一般还是先要被存取的数据;紧密相关的数据则随时要考虑被使用。 由于存数据库并不能容纳全部的外存数据库,因此存数据库初始化的时候,需要选择装入最应该被装入的数据。但是在存数据库初始化的时候,存到底能容纳多少事务的数据还是个未知数,事务类型、开始时间、结束时间等标准的相互冲突,都给事务的选择带来了难度。首先我们把全部分析好的事务排成一个队列。存数据库初始化的时候从队列的第一个事务开始装入,无论存有多大,装入的数据都

15、是最应该装入的数据。队列的形成策略如下:a) 队列的开始是随机发生的硬实时事务。所谓硬事实事物是指任务必须在一定的时间,或者某个时间点前完成。由于硬实时事务如果超过了截止期会给系统带来毁灭性的后果,因此随机发生的硬实时事务的数据应该最先被调入存。b) 其次是周期事务的数据。由于实时数据库的周期事务频繁地执行,如果不能保证数据在存,就会发生“抖动”,严重影响系统的效率,因此周期事务的数据也应该被调入存。c) 然后是存数据库初始化时就应该把数据调入存,否则会超过截止期的硬事实事务的数据。设一个硬实时事务的开始时间Ts与当前时间Tn的差为N,事务数据装入时间的最坏静态估计为M(最坏情况下所有涉及到的

16、关系的外存块数和读取一块的平均时间),如果N远远大于M,则该事务的数据现在可以不在存,相反,则硬事实事务的数据就应该装入存。d) 然后装入软实时事务的数据。如果在以上两类事务的装入过程中,存耗尽,则存数据库虽然初始化成功,但是性能堪忧。以上的装入顺序保证无论存有多大,装入的数据从事务类型来看都是最应该装入的数据。而且也给后来的数据换出及如何方便地换出最应该换的数据打下了基础。初始化完后,和cache一样,还需要有数据的替换策略:(2) 存数据库运行时的数据装入(数据的替换策略)存数据库初始化成功以后,系统开始运行。如果接纳一个事务后发现其数据不在存。仍然要进行数据装入。数据交换策略必须考虑各种因素:1. 高易变的实时数据必须常驻存M_DB中且不能被交换出去

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号