存取操作;在主存数据库系统中,数据长期驻留于主存,作为主拷贝,而磁盘上
的备份只用于转存和恢复。[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
在主存数据库系统中,广泛使用了现代操作系统的共享内存机制。数据库系
统初始化时先将整个工作数据库装入一片空白共享内存区,运行时,应用进程可
以将整个数据库或一部分映射到自己的虚地址空间进行直接访问。 因为关系和索 内存数据库技术及其应用研究(4):http://www.751com.cn/jisuanji/lunwen_8776.html