论文部分内容阅读
手机、平板电脑、智能手表等移动终端已成为人们生活中必不可缺的设备,当前,移动终端存储的数据类型越来越丰富,数据量级越来越庞大,传统的文件系统已无法满足移动终端数据管理的需求,适用于移动端的轻量级嵌入式数据库成为当今研究热点。移动终端具有内外存容量有限,计算性能有限的特性,此外,移动终端存储介质为NAND闪存,此硬件具有读写效率不平衡与擦除代价大的特点,面向移动终端的数据库设计理念需兼容上述特性。当前移动端数据库主要为关系数据库、Key-Value数据库以及图数据库,三种数据库基于不同应用场景发挥优秀的性能,但存在以下不足:(1)关系数据库实现分组聚集查询与实体关联查询效率低下;(2)Key-Value数据库在保证查询效率的情况下将导致大量数据冗余;(3)图数据库针对实体本身的筛选需遍历整张图,性能表现不理想。对象代理模型将客观实体看作对象,并将具有相同属性的对象抽象为类,并提出两个概念:代理类与代理对象。代理对象可继承对象若干个属性,通过双向指针记录代理对象与源对象间的关系,双向指针存储类号与对象号,仅占用少量存储空间。对象代理数据库可通过双向指针高效地实现分组聚集查询与实体关联查询。双向指针将各对象联结成网,对象代理数据库可以从一个对象出发得到其相关对象的数据此操作被称为跨类查询。为了解决当前嵌入式数据库管理移动终端本地数据面临的以上问题,本文提出基于移动终端计算性能有限、内外存容量有限以及存储硬件为NAND闪存的特性,优化移动端对象代理数据库存储与查询方案,以此满足移动终端应用多种查询需求。本文的研究内容和创新工作主要包括以下几个方面:(1)基于移动终端计算性能有限特性,介绍移动端对象代理数据库整体架构与功能;(2)对象代理数据库存储大量双向指针,双向指针的存储容量与读取效率对对象代理数据库查询性能产生重要影响,基于移动终端内外存容量有限的特性,本文提出对双向指针聚簇进行压缩,精简冗余类号的存储,以此减少查询时读取双向指针导致的I/O开销,并优化JOIN代理类聚簇方式避免查询JOIN代理对象时读入多个双向指针页面;(3)提出移动端对象代理数据库查询优化策略,主要包括:基于当前双向指针聚簇策略代理类虚属性查询流程,提出对跨类查询数据扫描方式进行改进,提高扫描数据页面的缓存命中率,对跨类查询路径表达式进行重写,进一步减少冗余数据页面的读取;(4)基于移动终端存储硬件NAND闪存读写不平衡的特性,提出移动端对象代理数据库新的查询代价模型,并将其与关系型查询代价进行对比。最后,本文对基于开源嵌入式数据库SQLite实现的移动端对象代理数据库存储与查询方法进行上述优化,通过模拟一个移动终端应用单词App建模,测试三种数据库存储开销、虚属性查询性能、跨类查询性能与缓存大小对数据库查询性能的影响,验证了本文优化方案的有效性。