发表于:2006-06-22 15:48:00
楼主
实时内存
数据库的数据管理
舒良才--刘云生--李国徽--卢炎生
实时数据安置
----1.实时应用对数据安置的要求
----在实时应用中,事务在运行前的操作逻辑(操作类型、顺序等)、数据集及其结构、行为以及时间的相关性等都是可预分析的。然而,对磁盘数据库而言,数据的I/O是造成事务执行时间不确定、预报不准确的关键因素。为此,要求以大内存作为实时数据库的主要存储介质,使一个事务在活动期间没有I/O,以达到较准确的预报,从而满足实时事务的定时限制。但这要解决两个问题,就是适当的数据安置和适时的内外存交换。
----2.影响实时数据安置的因素及数据安置策略
----数据在不同存储层上,其读、改、写所需的时间不同,影响数据安置策略的主要因素是数据和事务的特征。
----(1)数据特征及其影响
----实时性在实时应用环境中,与每一数据相联的有一"外部有效期",数据的安置必须考虑这种实时特性。实时数据又可分为"长时限"和"短时限",短时限实时数据必须保存在内存中。
----存取频率高频数据应常驻内存。
----永久性永久数据是长期反复使用和长期有效的数据,临时或短暂的数据只存于内存直至过期。
----关键性关键性是指数据对事务处理的重要性。为了确保其事务的高性能要求(尤其是像实时事务的截止期这样的要求),关键数据最好安置于内存。
----(2)事务特征及其影响
----事务类型的影响"只写"事务就是现代过程控制或工程型应用中的"数据接收"事务,这种事务是很短的、周期的和紧急的(不可阻塞和等待),因而它们的数据应置于内存中。"只读"事务在现代应用中一般就是"控制"事务,这种事务在提交以前就可能已物理地改变了外部环境状态,因而不能进行传统意义下的Undo恢复,而通过运行其"补偿"事务抵消它的影响,故其数据暂不能交换到外存。更新事务与一般事务无异。
----事务优先级的影响事务优先级代表了事务的紧迫度,所以,高优先级事务的数据要常驻内存且不能交换出去。
----事务恢复的考虑与数据类似,日志的特征及其安置策略是影响事务夭折-重启动进而影响其截止期满足的主要因素,对于实时数据库,必须设计"内存式"日志。
实时内存数据库技术
----关于什么是内存数据库,说法不一,但我们认为,内存数据库的定义不应涉及内存的大小、存取数据所需I/O的多少、数据何时进入及怎样才能留驻内存等这些具体的实现技术,而只包含数据库常驻内存(而不是磁盘)、事务(不是系统)的数据存取只涉及内存的意思。内存数据库是支持实时事务的最佳技术,其本质特征是其"主拷贝"或"工作版本"常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。显然,它要求较大的内存量,但并不要求任何时刻整个数据库都能存放在内存,即内存数据库系统还是要处理I/O。虽然如此,但它已不是传统磁盘数据库的概念,传统数据库适用的数据结构、事务处理算法与优化、并发控制及恢复等技术对内存数据库不一定合适。
----所以,实时内存数据库的设计应该打破传统磁盘数据库的设计观念,考虑内存直接快速存取的特点,以CPU和内存空间的高效利用为目标来重新设计开发各种策略与算法、技术、方法及机制。
----实时事务要求系统能较准确地预报事务的运行时间,但对磁盘数据库而言,由于磁盘存取、内外存的数据传递、缓冲区管理、排队等待及锁的延迟等使得事务实际平均执行时间与估算的最坏情况执行时间相差很大,如果将整个数据库或其主要的"工作"部分放入内存,使每个事务在执行过程中没有I/O,则为系统较准确估算和安排事务的运行时间,使之具有较好的动态可预报性提供了有力的支持,同时也为实现事务的定时限制打下了基础。
实时数据库的数据组织
----1.数据库空间结构
----采用内存数据库技术,数据库的存储空间是一个四层结构:易失的内存M1、不易失内存M2(Non-VolatileRAM)、磁盘存储器M3和档案式磁带存储器M4。
----M1存放支持各事务的工作数据,故称为实时数据库的"工作版本"O-DB。它由事务直接存取,一般事务也只与它打交道。
----M2是M1的拓延,用以存储一些活动的临时性数据,称为"临时版本"T-DB。O-DB和T-DB统称为实时数据库的"内存版本"(M-DB)。
----M3用来存放不在内存的数据库部分,当然还要存放用作恢复的数据库备份。这部分数据库统称为实时数据库的"外存版本"(S-DB)。
----M4一般是脱机磁带,用来存储以前数据库某时刻完整状态的映像,称为实时数据库的"后援版本"A-DB,仅是为了安全保护的目的和作为档案长期保存。
----这种实时数据库存储体系结构基于内存数据库技术,考虑了各种数据的应用语义与特征和系统功能实现,是合理可行的。
----2.物理数据组织
----实时内存数据库的物理组织是其总体设计目标实现的基础,其存储结构、索引结构、中间数据存储结构都必须考虑内存直接存取这一特征,这里介绍两种物理组织方法。
----(1)区-段式
----区-段式组织基于关系数据模型,它将存储空间逻辑地划分为"分区",每一分区存储一个关系,物理上由若干"段"组成。一个段是内存中一固定长度的连续区域,它相当于"页",是内外存I/O的单位,也是内存空间分配及内存数据库恢复的单位。
----(2)影子内存式
----它将内存数据库空间划分成实时内存数据库的主拷贝PDB与"影子"拷贝SM两部分。在事务操作期间,每次查询总是先对SM试探,若不成功,再对PDB操作。所有的更新操作都在SM中进行,且都记录在活动日志中。每当一个事务提交时,由它所产生的在SM中的"后映像"就拷贝到PDB中。
----3.索引结构
----磁盘数据库有多种有效的索引结构,最有代表性的是AVL树、B-树和B+-树。
----对实时内存数据库而言,它们都具有一个共同的关键的缺点,就是存储的有效使用和利用率很低,而查找性能已不像在磁盘中那样优越。为此,我们开发出一种兼有AVL树和B-树的优点且克服了不足的内存索引结构SB-树。它的查找类似于二叉树,其不同之处主要在于每一结点的比较不是针对其中的各个元素值,而是对其最大(即最右)者和最小(即最左)者。SB-树的维护操作类似于AVL树,但由于其独特的结点结构,故在具体的结点插入与删除时有所不同。
实时内存数据库的数据装入与交换
----1.影响数据装入与交换策略的主要因素
----有两方面的因素影响M-DB数据的装入与交换策略,即数据本身及其事务的特征。
----数据易变性指其变更速率。不同数据有不同的变化速率,易变数据要频繁更新。
----数据活跃性指存取频率。应该保证活跃数据具有更大的可存取性。
----数据流行性指更新的及时性。流行数据必须保持与现实世界当前真实状态一致。
----数据相关性指多个数据经常被一起使用的程度。当装入或交换数据时,相关性强的数据应同时装入或交换。
----事务的特征这里只考虑影响数据装入与交换的那些事务特征。首先是在嵌套事务中,父子事务的数据是共享的,故在进行内存装入和与外存交换时,必须注意到这一点。其次是实时事务,其数据装入的次序及时机必须有利于保证满足其定时限制。再有,高优先级事务的数据显然应留驻内存,且不能交换出去。
----2.初始装入
----内存数据库初装时,首先考虑的是事务的优先级。优先级高的事务先装入内存,或者不分优先级而按调度策略,将先执行的事务先装入内存;其次是数据的流行性,流行数据对应的事务往往也是高优先事务;再次就是活跃性,存取频率高的数据一般还是先要被存取的数据;紧密相关的数据则随时要考虑被使用。
----初装的基本思想是将数据库的全部属性的集合按其存取频率及相亲度划分成子集,然后求出每一子集的加权最高存取优先级,最后依内存容量,将相对加权存取优先级高的那些子集装入内存。
个人BLOG:http://blog.sina.com.cn/u/1239831253