1.3主要工作
(1)本文第一章简要介绍内存数据设计的研究背景和意义,以及当前的研究现状。
(2)介绍了内存数据库的概况,对内存数据库和磁盘数据库进行了比较。
(3)第三章介绍了常见的索引方法,本课题主要分析内存数据库的索引结构,包括数组、平衡二叉树(AVL 树)、B树、B-树与B+树、T树、T-tail树,SB树等方法的优缺点。
(4)对本课题进行总结,指出内存数据库索引研究过程中不足之处和未来的研究方向。
2.内存数据库的概况
2.1 内存数据库的定义
内存数据库(Main Memory Database,MMDB),顾名思义就是将数据放在内存中直接运行的数据库。内存数据库的最大特点是活动事务只与实时内存数据库的内存拷贝打交道,其“主拷贝”或“工作版本”常驻内存。
目前,被大家公认的内存数据库的定义如下:设有数据库系统DBS,DB为DBS中的数据库,DBM(t)为在时刻t,DB在内存的数据集, 。TS为DBS中所有可能的事务的集合,AT(t)为在时刻t处于活动状态的事务集, 。Dt(T)为事务T在时刻t所操作的数据集, 。若在任一时刻t,均有: , 成立,则称DBS为一个内存数据库系统,简写为MMDBS;DB为一个内存数据库,简记为MMDB[5]。
2.2 内存数据库与磁盘数据库的比较
传统数据库是磁盘数据库(Disk Resident Database,DRDB),即数据的主拷贝(Primary DB)在磁盘上,数据库管理系统为了向应用系统提供存取服务,将用户需要访问的数据装入主存中,即对数据的管理是“基于磁盘的缓存技术”。而内存数据库(MMDB)是将数据的主拷贝存放在内存中,可以直接的进行数据的存取,避免了管理缓冲区这一步[6]。两者的主要差异有以下几点:
(1)在数据存储形式上,内存数据库是按字节或字编址存储,磁盘数据库是按块存储。
(2)在查询代价上,内存数据库通过消耗CPU时间和内存空间来进行查询,磁盘数据库则是以I/O为代价。
(3)在缓冲管理上,内存数据库直接避免了这一环节,数据直接从内存中存取,磁盘数据库则需要把数据加载到缓冲区。
(4)存取时间上,内存数据库要比磁盘数据库快的多。
2.3 内存数据库的关键技术
为了提高数据库的实时性,在设计MMDB时,需要根据应用特点,采取一些针对性的措施。因此,设计上往往有一定的特殊性,下面对内存数据库系统的存储,索引,并发控制,恢复处理分别进行介绍。
2.3.1存储结构
数据库存储一般分为两种存储类型:行存储和列存储。其中行存储查询处理读取完整的数组,列存储将数组垂直划分并连续存放。两者相比较,列存储具有较高的存储效率[7]。内存数据库融合了这两种存储类型存储数据,而磁盘数据库一般采用行存储类型。
2.3.2索引
内存数据库一般的索引方式为T树索引和哈希索引。T树组合了AVL树和B树的特征。它既具有AVL树的二分查找特性,又具有B树的良好的更新和存储特性。哈希索引包含静态哈希索引和可扩展哈希索引,静态哈希索引耗费时间且浪费空间,可扩展哈希索引能很好地处理大量数据文件的添加与删除。
2.3.3并发控制
由于多个事务并发地存取数据库时,会产生同时读取或修改同一数据的情况,内存数据库提供并发控制来避免并发操作产生的数据不一致。内存数据库将数据存储在内存中,和磁盘数据库相比,其事务执行时间短,持锁时间短,系统中冲突少,可用于处理海量数据[8]。
2.3.4恢复处理
由于内存的脆弱性和易失性,数据更容易被破坏和丢失,所以需在磁盘等非易失性存储介质中进行备份,在对数据进行处理时,需要将日志写到非易失性存储介质中。 内存数据库索引技术研究+文献综述(2):http://www.751com.cn/jisuanji/lunwen_4371.html