论文部分内容阅读
多租户数据存储是软件及服务(SaaS, Software as a Service)中一个重要的研究内容。针对SaaS应用“单实例多租赁”这一特点,人们提出了很多解决多租户数据存储问题的方法,其中基于关系数据库的模式映射技术最流行,具体又细分为私有表方法、宽表方法、扩展表方法、面向列的存储、透视表存储等方法,各种存储方法都有自己的优缺点和适用场景。宽表方法指将不同租户的数据统一共享存储,大大降低了数据存储的成本,特别适合节省运营成本要求下的面向事务处理的应用。但是由于宽表往往列数众多,因而表现为数据稀疏的特点,同时模式映射较为复杂,查询重写较为困难。宽表方法作为一种有效的SaaS多租户数据存储方案,需要进行一定的改进,在节省存储成本同时获得更好的存储空间利用率及更高的数据查询效率。本文主要针对SaaS多租户数据宽表存储方法的上述问题,从提高存储空间利用率和提高查询效率两个方面入手,提出了改进的多宽表数据存储机制,包括多宽表存储结构、多宽表模式下的模式映射机制、及基于视图定义替换的查询重写方式等。本文的主要工作及成果包括:(1)提出了多宽表数据存储结构。作为对宽表方法的改进,多宽表方法采用多个不同列数的宽表代替原有的单一宽表,从而可以根据不同租户的数据定制需求,将租户的数据分配到适合的宽表中,这样就大大减少了空值的存在,提高了数据密集程度,从而提高了数据存储空间利用率,减少了数据稀疏对数据查询带来的影响。(2)提出了多宽表方法下的模式映射机制。形式化地描述了租户定制信息及如何将租户的定制信息持久化成为对应的元数据描述。提出了参照业务需求的正态分布多宽表划分方法和基于预留列的多宽表选择方法,合理的选择宽表进行数据存储,建立了租户虚拟私有表到物理存储位置的映射。(3)提出了基于视图定义替换的查询重写方式。通过建立视图定义生成器及缓存器,对元数据进行封装保护,简化了元数据访问接口,实现了基于视图定义替换的查询重写方式,降低了模式映射的难度,提高了查询重写效率从而给提高整体查询性能。多宽表数据存储机制对宽表方法进行了有效的改进,能够实现按租户定制所需选择合适的宽表进行数据存储,提高了数据密集程度,降低了数据稀疏对存储空间和查询效率的影响,视图定义、缓存及基于视图定义替换的查询重写方式,对元数据进行了有效地封装和保护,降低了查询重写难度,提高了查询重写效率,从而在保持存储成本较低的同时提高了整体空间利用率和查询效率。