论文部分内容阅读
多租户数据存储是软件及服务(SaaS,Software as a Service)中一个重要的研究内容。针对SaaS应用“单实例多租赁”的特点,人们提出了很多解决多租户数据存储问题的方法,其中基于关系型数据库模式映射的宽表存储是一种常用、有效的SaaS多租户数据存储的解决方法。但为了保证租户的定制需求,宽表存储往往需要预留足够的列,导致数据具有很大的稀疏性,同时模式映射较为复杂,影响数据空间利用率和查询效率。本文针对多租户数据宽表存储方法在数据空间利用率和查询效率方面的不足,提出一种基于宽表的多扩展表数据存储机制,并且在此基础上提出一种通用的多租户数据存储模式的数据查询效率评估方法,以此评估多扩展表数据存储模式与其他存储模式的数据查询效率。本文的主要工作如下:(1)提出多扩展表数据存储结构。在宽表数据存储模式的基础之上加以改进,采用基本表与扩展表结合方式代替原有的单一宽表解决多租户数据存储问题。扩展表采用多个列数不同的表满足租户不同的定制需求,将租户的定制数据分配到合适的扩展表中,以最大限度的减少空值,提高数据存储的空间利用率。通过计算数据稀疏度,该模式有效的降低了数据的稀疏性。(2)提出多扩展表方法中的模式映射机制。该机制包括基于业务数据的正态分布多扩展表划分方法和基于预留列的多扩展表选择方法,对多租户的数据进行合理的存储,以及租户逻辑数据到物理存储位置的映射。(3)提出一种基于关系代数的多租户存储模式查询性能评估方法。通过建立租户私有表数据与物理存储数据的SQL定义,将SQL转换为关系代数,利用关系代数估计查询操作的I/O代价。将多租户存储模式的查询性能转化为I/O查询代价的比较,从而评估多租户数据存储模式的查询性能。该方法将多租户数据模式的查询性能评估从实验设计和硬件环境中分离,从本质上比较存储模式的优劣。实验表明,该方法虽然不能精确计算数据模式的查询成本,但是对于数据模式之间的查询性能对比有着显著的效果。