内存数据库技术及其应用研究(4)
时间:2017-06-08 21:37 来源:毕业论文 作者:毕业论文 点击:次
存取操作;在主存数据库系统中,数据长期驻留于主存,作为主拷贝,而磁盘上 的备份只用于转存和恢复。[2] 当然,在以上两种情形下,一个给定的对象可以同 时存在于主存和磁盘两处,但两者具有根本性差别:在内存数据库中,主存中的 数据是作为主拷贝的,这也就意着在对数据的组织和存取上,两者有着根本的 不同。[3] 需要指出的是,传统的磁盘数据库即使缓冲区足够大,以致可以容纳所有数 据也不能算是一个主存数据库。因为它是针对磁盘特性、在数据库常驻磁盘的假 定下设计的。[4] 例如,索引结构还是针对磁盘存取的,数据的存取仍必须经过缓 冲区管理等。 内存数据库的组织与管理要求新的适于内存特点的数据结构和算法, 对于数据的组织与安置、数据库存取、内外存数据交换、查询处理及优化、并发 控制及数据库恢复都需要研究新的策略与机制。 2.2 内存数据库的关键技术 内存数据库与磁盘数据库(Disk-Resident Database,DRDB)最主要的区别就 是数据主版本的驻留位置不同,前者驻留在内存,后者驻留在磁盘。因此,在访 问速度上,内存数据库与磁盘数据库相比有着很大的提高。[5] 然而,两者的差别 不仅在于此,更在于其体系结构的不同。由于内存与磁盘在访问速度、易失性、 访问模式等方面存在很大的差异, 传统的以磁盘读写最优的磁盘数据库的设计已 经不再适用于内存数据库,两者从数据存储、索引结构到并发控制、查询优化都 有着质的不同,详细比较如下表: 索引结构 T树索引、hash索引 B 树索引、hash索引 并发控制 采用封锁机制、多版本等方式,采用 较大粒度的锁,如库级锁、表级锁 采用封锁机制、时间戳、多版本等方 式,支持多粒度和多种类型的锁 恢复机制 备份、日志和检查点技术。采用预提 交、组提交等提交方式;用稳定内存 来存储日志记录 采用备份、日志、检查点、保存点等 技术 查询优化 基于处理器代价以及 cache代价,优 化简单 基于 I/O 代价、磁盘访问代价,优化 复杂 2.2.1 存储方式 数据库存储一般采用的存储模型有两种:行存储模型 (N-ary Storage Model, NSM)和列存储模型(Decomposition Storage Model,DSM) 。前者查询处理读取 完整的元组,后者垂直划分并连续存放,具有较高效率。随着查询属性的增加, 需要连接多个划分, 会导致性能的下降。 [6] 磁盘数据库一般采用NSM 存储数据, 内存数据库系统一般会同时采用这两种存储模型。 主存数据库中的存储通常采用分级结构, 同时强调元数据与数据应区分组织, 以保证数据的安全。以 IBM 的内存数据库系统 Starburst 为例,存储模型分为经 典的两层结构:段(Segment)和分区(Partition) 。[7] 段是可变长的,每段由一 个或多个长度固定的分区组成,但并不要求这些分区在空间上的连续。分区时内 存基本的分配回收单元, 长度固定。一个分区主要由两部分组成, 其中Free space 存放记录插槽,Heap space 存放分区控制信息和记录本身。[8] 其概念图如下图所 示: 图 2.1 在主存数据库系统中,广泛使用了现代操作系统的共享内存机制。数据库系 统初始化时先将整个工作数据库装入一片空白共享内存区,运行时,应用进程可 以将整个数据库或一部分映射到自己的虚地址空间进行直接访问。 因为关系和索 (责任编辑:qin) |