• 10.06 MB
  • 59页

面向SaaS应用交付平台的多租户数据索引研究

  • 59页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
分类号:单位代码:密级:开学号:硕士学位论文论文题目:面向应用交付平台的多租户数据索引研究王学计算机科学与技术学院计算机软件与理论指导教师李庆忠教授年月日 分类号:单位代码:密级:公开学号:硕士学位论文论文题目:面向应用交付平台的多租户数据索引研究作者姓王学学院名称计算机科学与技术学院专业名称计算机软件与理论指导教师李庆忠教授合作导师年月日 原创性声明和关干论文使用授权的说明原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律责任由本人承担。论文作者签名:土学日期:地⑶关于学位论文使用授权的声明本人完全了解山东大学有关保留、使用学位论文的规定,同意学校保留或向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅,本人授权山东大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以釆用影印、缩印或其他复制手段保存论文和汇编本学位论文。保密论文在解密后应遵守此规定)论文作者签名:土导师签名: 山东大学硕士学位论文目录摘要第章绪论研究背景面临的问题研究内容主要工作及贡献本文组织结构第章相关研究引言数据管理模型多租户数据存储多租户索引本章小结第章多级索引模型架构引言多级索引架构租户节点索引模型缓存机制实验分析本章小结第章租户逻辑索引模型研究引言租户逻辑索引多稀疏表模式基于的多稀疏表模式的多租户索引模型多租户索引维护策略索引维护策略的改进实验分析本章小结第章原型系统与实验分析引言系统幵发实验分析验证多节卢效率验证多级索引的效率本章小结第章总结与展望 山东大学硕士学位论文本文工作总结本文工作展望参考文献致谢攻读学位期间发表的学术论文目录攻读学位期间参加的工作和所获奖励 山东大学硕士学位论文 山东大学硕士学位论文 山东大学硕士学位论文摘要随着互联网技术的发展和应用软件的成熟,软件即服务(作为一种新型软件服务形式逐渐兴起。模式下,服务提供商将应用软件统一部署在自己的服务器上,通过互联网为企业客户提供服务,并按客户订购服务的多少和时间长短收取费用。应用交付平台为应用幵发商提供了一个平台,该平台对幵发商屏蔽了的特性,开发商通过该平台部署应用,而在开发过程中无需考虑特性从而注重业务逻辑幵发,提高了开发效率。应用采用“单实例多租赁”的方式,即众多租户共享一个应用实例,租户的数据共享的存储在平台的数据库中,多租户数据库需要能够进行租户隔离,不同租户的个性化需求通过应用交付平台定制实现,包括数据定制、业务流程定制、页面定制等等,因此,多租户数据库还应能满足粗户的定制需求。云数据库的出现为应用交付平台的数据存储向云中发展指明了方向。应用交付模式是多租户共享的存储架构,从数据库到硬件资源等都能进行资源共享,然而单个数据节点的能力有限,无法满足日益增长的租户数量的需求,因此采用多数据节点进行存储是必然的。同时,随着企业业务全球化的发展,企业的终端用户会分布在世界各地,单个数据节点无法满足其快速响应,因此,应用模式正在从单节点往云中多数据节点转变的必然阶段。本文以应用交付平台为背景,研究多节点的多租户数据存储,为了既满足租户的按需定制和高效存储的需求,研究了应用交付平台的多节点存储的多级索引机制,本文的研究内容如下:提出适用于应用交付平台的多节点存储的多级索引架构。多级索引模型采用数据节点索引、租户逻辑索引、数据库物理索引三级索引结构,高效的响应租户的请求。研究多级索引架构中的三级索引,即租户节点索引。作为面向应用交付平台的多租户数据存储模式,多个数据节点存储是不可避免的,同时为了平台的容错能力和负载能力,同一份数据可能在多个数据节点上冗余存储多份,因此,当租户请求到来时就会涉及到将请求路由到哪个数据节点上处理的问题。三级索引即租户节点索引,能够根据请求中租户的标识将请求快速转发到数据节 山东大学硕士学位论文点进行处理,同时提供了事务的同步机制。接下来要研究的就是单数据节点上的逻辑索引问题,在单节点上采用的是稀疏表的方式,共享的存储多个租户的数据,由于稀疏表模式的特殊性,在稀疏表上建立传统的数据库索引往往是不可能的,因此当系统根据租户节点索引将请求转发到某个数据节点上时,租户逻辑索引在数据库物理索引的基础上提高了请求的处理效率。本文的主要工作如下:、提出面向应用交付平台的的多租户数据存储的多级索引架构。该多级索引包括租户节点索引、租户逻辑索引、数据库物理索引三级。、实现了租户节点索引的建立和维护机制。租户节点索引能够快速的将租户的请求路由到存储租户数据的某个数据节点上进行处理,同时提供了多数据节点的事务同步机制。、设计实现了单数据节点上的基于的租户逻辑索引,大大提高了租户的请求处理效率,并通过实验验证了租户逻辑索引的优越性。、设计实现了在多级索引架构下的缓存优化机制。该优化机制能够有效的提高多级索引架构的效率,并通过实验验证了优化机制的有效性。关键字:,多租户,索引,优化,应用交付平台 山东大学硕士学位论文,,,“,,,!,,,, 山东大学硕士学位论文,,,,,, 山东大学硕士学位论文第章绪论随着互联网技术的发展和应用软件的成熟,软件即服务(作为一种新型软件服务形式逐渐兴起。模式下,服务提供商将应用软件统一部署在自己的服务器上,通过互联网为企业客户提供服务,并按客户订购服务的多少和时间长短收取费用。研究背景是软件即服务)的简称,它是一■种通过提供软件的模式,用户不用再购买软件,而改用向提供商租用基于的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,对于许多小型企业来说,是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要,近年来,的兴起已经给传统套装软件厂商带来真实的压力。应用交付平台为应用开发商提供了一个平台,该平台对开发商屏蔽了的特性,开发商通过该平台部署应用,而在幵发过程中无需考虑特性从而注重业务逻辑开发,提高了开发效率。服务提供商为中小企业搭建信息化所需要的所有网络基础设施及软件、硬件运作平台,并负责所有前期的实施、后期的维护等一系列服务,企业无需购买软硬件、建设机房、招聘人员,只需前期支付一次性的项目实施费和定期的软件租赁服务费,即可通过互联网享用信息系统。服务提供商通过有效的技术措施,可以保证每家企业数据的安全性和保密性。企业采用服务模式在效果上与企业自建信息系统基本没有区别,但节省了大量用于购买产品、技术和维护运行的资金,且像打开自来水龙头就能用水一样,方便地利用信息化系统,从而大幅度降低了中小企业信息化的门滥与风险。我国目前拥有数量众多的中小企业,随着模式的逐步成熟,应用的覆盖面越来越广,会有越来越多的企业或个人通过交付平台租赁应用,目前知名厂商利用其平台支撑全球超过家企业客户。我国数量众多的中小企业的需求,使得国内的应用交付平台的发展提供了基础,同时也带来了很大的挑战。 山东大学硕士学位论文应用釆用“单实例多租赁”的方式,即众多租户共享一个应用实例,租户的数据共享的存储在平台的数据库中,多租户数据库需要能够进行租户隔离,不同租户的个性化需求通过应用交付平台定制实现,包括数据定制、业务流程定制、页面定制等等,因此,多租户数据库还应能满足租户的定制需求。云数据库的出现为应用交付平台的数据存储向云中发展指明了方向。应用交付模式是多租户共享的存储架构,从数据库到硬件资源等都能进行资源共享,然而单个数据节点的能力有限,无法满足日益增长的租户数量的需求,因此采用多数据节点进行存储是必然的。同时,随着企业业务全球化的发展,企业的终端用户会分布在世界各地,单个数据节点无法满足其快速响应,因此,应用模式正在从单节点往云中多数据节点转变的必然阶段。国内外的很多学者对应用的存储模式进行了大量的工作,但是大部分是针对单节点上的多租户数据存储进行研究的,目前已有的云数据库并没有考虑到多租户的因素,必须在应用中加入多租户的因素,才能用于应用模式,因此并不十分适用于应用交付平台的场景。目前世界上只有少数几个厂家提供了应用交付平台的解决方案,严重限制了的发展。理想的多租户数据库还没有出现,还面临很多问题,需要进行进一步的研究工作,目前,多租户数据库己经成为全球的研究热点。面临的问题应用交付平台的关键特征有以下几点,对于开发商来说,基于平台应能够快速构建应用而无需考虑多租户特征,提高幵发效率;对于运营商来说,应用能动态的扩展,能够满足租户数量的急剧增加和众多租户个性化的定制需求,以租户的规模来换取运营商的经济利益;对于租户来说,应用交付平台应能够高效透明的满足租户的扩展和定制需求而无需考虑云中数据管理的复杂性。基于应用交付平台的以上特征,在应用交付平台的数据管理中面临着以下几个问题:、应用种类繁多,业务领域千差万别,数据模式更是各不相同,一个应用被多个租户租赁,各个租户对于同一个应用的模式相似,但是由于租户的业务的不同从而使得数据模式也是不尽相同,即使是同一个租户,在企业不同的发展阶段,其数据模式有可能也是不同的,这就要求应用平台提供一 山东大学硕士学位论文种灵活的存储机制,保证租户数据模式的按需定制,同时要保证在复杂的数据管理下数据访问效率不会随之降低,满足租户的服务水平。多租户的数据存储模型有多种,比较流行的平台大多釆用共享数据库共享模式进行存储,为满足数据的共享模式存储与按需扩展,平台通过一些通用的存储机制支持租户的定制需求,常用的包括稀疏表存储、以及垂直存储的存储机制,通过一些通用数据列共享存储租户数据。应用交付平台通过多租户共享存储,避免了数据表数量急剧增加导致的数据库性能下降,允许租户在幵发商定义的数据模式之外,扩展租户特有属性以及新增新的数据对象,支持应用之间甚至租户之间的数据协同。为了适应租户的按需定制,众多的共享存储模型均釆用扩展传统数据库存储模式的方法,因此传统的数据库索引在“改造的数据库”之上已经无效,因此,开发适用于多租户共享存储的多租户索引显得势在必行。、当前云数据管理大多采用的是“数据即服务“的理念,租户租赁其数据服务,而在应用交付平台中租户直接租赁应用并不考虑数据服务。因此,在云数据管理中需要考虑平台的多租户的特征,才能更好的支持多租户数据的分割与迁移,保证平台的高效运转。现有的云数据管理模型并不是针对应用而设计,在数据管理时无法考虑租户的因素,不利于租户数据的分割与迁移,而为每个租户虚拟一个数据库的方式又非常消耗资源,并且难于支持应用之间的数据共享,因此,必须引入租户的数据特征,将租户与云数据服务利用平台进行分割,使得租户无感知的使用云数据管理服务从而保障平台的高效运转。租户的数据分割之后,需要考虑租户的请求定位问题,当租户的请求到来时,将租户的请求转发到哪个节点上进行数据响应,采用最简单的循环遍历方式纵然可以完成,但是效率比较低下,如果能够提供一种有效的索引机制能够快速的将租户的请求转发到存储该租户数据的节点上进行处理将是非常必要的,因次多租户节点索引是非常必要的。、应用交付平台中多租户的数据管理尚无有效的索引支持,无法精确的定位到存储租户数据的节点上;同时,在单个数据节点上,传统的数据库索引已经失效,使得租户的数据操作变的非常低效。现有的云数据管理机制不是为应用而设计的,无法意识到租户的存在, 山东大学硕士学位论文因此,在使用索引时,无法快速定位到租户所在的数据节点,同时,在单个数据节点上,多个租户的数据共享的存储在该节点上,因此,建立传统的数据库索引是没有任何意义的,因此在租户之上建立有效的逻辑索引是至关重要的,既保证了数据的共享存储,有不会影响效率。研究内容本文以应用交付平台为背景,研究多节点的多租户数据存储,为了既满足租户的按需定制和高效存储的需求,研究了应用交付平台的多节点存储的多级索引机制,本文的研究内容如下:提出适用于应用交付平台的多节点存储的多级索引架构。多级索引模型采用数据节点索引、租户逻辑索引、数据库物理索引三级索引结构,高效的响应租户的请求。研究多级索引架构中的三级索引,即租户节点索引。作为面向应用交付平台的多租户数据存储模式,多个数据节点存储是不可避免的,同时为了平台的容错能力和负载能力,同一份数据可能在多个数据节点上冗余存储多份,因此,当租户请求到来时就会涉及到将请求路由到哪个数据节点上处理的问题。三级索引即租户节点索引,能够根据请求中租户的标识将请求快速转发到数据节点进行处理,同时提供了事务的同步机制。接下来要研究的就是单数据节点上的逻辑索引问题,在单节点上采用的是稀疏表的方式,共享的存储多个租户的数据,由于稀疏表模式的特殊性,在稀疏表上建立传统的数据库索引往往是不可能的,因此当系统根据租户节点索引将请求转发到某个数据节点上时,租户逻辑索引在数据库物理索引的基础上提高了请求的处理效率。主要工作及贡献本文针对面向应用交付平台的多租户数数据存储需求,对数据存储模型进行了研究,研究重点在于多级索引的设计、维护以及实现,主要工作如下:、提出面向应用交付平台的的多租户数据存储的多级索引架构。该多级索引包括租户节点索引、租户逻辑索引、数据库物理索引三级。、实现了租户节点索引的建立和维护机制。租户节点索引能够快速的将租 山东大学硕士学位论文户的请求路由到存储租户数据的某个数据节点上进行处理,同时提供了多数据节点的事务同步机制。、设计实现了单数据节点上的基于的租户逻辑索引,大大提高了租户的请求处理效率,并通过实验验证了租户逻辑索引的优越性。、设计实现了在多级索引架构下的优化机制。该优化机制能够有效的提高多级索引架构的效率,并通过实验验证了优化机制的有效性。本文组织结构本文共分为六章。第一章是绪论部分,主要介绍了目前的应用交付平台的国内外研究现状以及面临的主要问题,给出了本文的研究内容以及主要工作,并列出了本文的整体结构。第二章是相关研究工作部分,介绍了应用交付平台的数据管理模型、多租户数据存储以及多租户索引等方面的国内外的相关研究。第三章介绍了多租户索引架构,提出了适用于应用交付平台的多级索引架构,同时设计了一级索引的设计模型,同时实现了缓存机制。第四章介绍了租户逻辑索引,提出了一种基于的多稀疏表模式的多租户索引模型,然后给出了索引的维护策略,最后通过实验验证了该索引维护策略的有效性。第五章是原型系统与实验分析,通过实验数据验证了本文提出的多级索引模型的有效性以及查询优化机制的高效性。第六章是本文的总结与展望,总结了本文的贡献与不足,同时探讨了下一步的研究内容与方向。 山东大学硕士学位论文第章相关研究引言在模式下,服务运营商将软件统一的部署在服务器上,通过网络向租户们提供服务,租户按照租赁的服务质量时间支付一定的租赁费用。应用交付平台为软件开发商和租户提供了便利,软件开发商可以参照平台的开发规范可以进行软件的快速开发,无需关注多租户的细节,重点关注核心业务逻辑,然后比较快的部署到平台上,租户通过平台的定制平台进行个性化的定制。应用交付平台的出现以及普及推动了模式的快速发展,随着租户数目和租户数据量的急剧增加,单个数据节点能够支撑的租户数目受到限制,当租户数目继续增加或者租户要求更高的服务质量时,只能通过升级硬件的方式来满足需求,难以实现动态的扩展,单个数据节点已经远远无法满足。应用交付平台的数据管理方式正在由单数据节点向云中多数据节点转化的阶段,而平台的数据管理的复杂性也会急剧增加。应用交付平台在云中的多节点的数据管理向传统的软件数据管理提出了巨大的挑战,国内外研究人员对平台中的多租户数据管理也进行了大量的研究,包括多租户数据管理模型、多租户数据存储,以及多租户索引等方面,本章将对目前关于这几个领域的研究成果进行一下总结。数据管理模型数据管理是软件的重中之重,平台应该能够提供功能可靠稳定的数据管理平台,软件开发上基于平台的数据管理接口,开发软件并将其部署在平台上。平台对数据进行集中管理可以利用的成本低、高效以及规模化的特点,实现利益最大化,因此,平台的运营商对数据管理越来越重视。平台数据管理应该具备处理海量数据的能力并且能够动态的扩展,在保证效率的同时能够保证稳定性和扩展性。目前,已有的数据管理主要侧重于云中的数据管理进行研究,很多著名的研究人员小组纷纷提出了各自的数据管理模型。介绍了的平台平台的开发人员可以使用“本地”应用程序框架,以声明的方式构建自定义的应 山东大学硕士学位论文用程序。该平台的原生的界面支持应用幵发过程的所有方面,包括应用数据模型的创建,安全和共享模式,用户界面,以及逻辑和工作流程。应用程序框架的用户接口很容易建立,因为不涉及编码工作。幕后,它们支持所有常见的数据访问操作,包括查询,插入,更新和删除。每个本地平台应用执行的数据操作一次修改一个对象,并在另一个单独的事务中自动提交每个改变。的本机集成开发环境提供了轻松访问许多内置平台功能的特性,使它易于实现通用应用的功能而不用写复杂且容易出错代码。这些特性包括声明性工作流、加密隐藏字段、验证规则、公式字段、上卷汇总字段和跨对象验证规则。提供了快速和经济的模型进行应用程序的开发交付,在该体系架构中,数据资源是多个租户共享的,开发人员可以使用基于标准的和本地平台的开发工具构建所有基于的应用,包括用户界面、数据模式、业务逻辑以及与其他应用程序集成;其提供的云数据库对租户虚拟化和集权管理等技术细节进行了封装,对外提供幵发幵发商可以通过这些开发应用程序,在平台上部署为应用。近年来许多站点向开发者幵放了,用户生成的应用数量多但是规模较小,基于成本和扩展性的考虑,没有合适的现存的存储管理方案能够处理这种场景,使用廉价的机器和免费的数据库来管理这些小型应用的数据,对、事务、吞吐量、完全满足,设计了复制策略、数据迁移策略、负载均衡技术来处理数量极大的应用。是公司为了满足本公司需求而幵发的基于的专有分布式文件系统,专门为的核心数据即页面搜索的存储进行了优化。数据使用大到若干字节的大文件持续存储,而这些文件极少被删除、覆盖或者减小;通常只是进行添加或读取操作。它也是针对的计算机集群进行的设计和优化,这些节点是由廉价的“常用”计算机组成,这就意味着必须防止单个节点的高损害率和随之带来的数据丢失。其它设计理念包括高数据吞吐率,甚至这带来了访问反应期变差。是提出的一软件架构,用于大规模数据集(大于的并行运算。概念映射)和化简),和他们的主要思想,都 山东大学硕士学位论文是从函数式编程语言借来的,还有从矢量编程语言借来的特性。提出了一种多租户应用开发框架,该框架包含一系列支持多租户的通用服务,使用这些服务可以高效的开发高质量的多租户应用,同时提供了一系列的措施保证了多租户之间在安全、性能、可用性、管理等方面的隔离性。该框架包含应用层和租户感知层。面向应用层的开发者只负责幵发和定制界面,而意识不到多租赁。而面向租户感知层的开发者必须保证应用支持多租赁等特征。提出了一个适用于系统的数据管理的参考体系架构,该参考体系架构关注为了支持共享结构化数据所需要的数据管理活动。基于这个参考体系架构,文中列出了众多的针对特定的系统数据管理而提出的技术,同时将这些技术进行了分类。基于服务的企业标准化培训平台,提出了一个基于服务的标准的企业的培训平台,培训过程标准的参照的标准,采用模式的服务,实现了一种在模式下的由服务提供商想企业提供培训培训管理的解决方案,。该平台部署在上,向多用户提供了底层统一、可定制模块的软件服务,同时结合网络数据库技术提供了公共的数据共享和企业培训数据管理服务。为了保证数据的安全性和系统的稳定性,平台采用来严格的权限控制机制,同时使用了加密和数字签名技术。】在综合分析系统特性的基础上,结合军事应用背景提出了软件服务模型,为航空装备的维修保障提供了灵活的作业支持。运作模型在降低系统风险,提高系统安全性的同时也为作业者提供了更好的互操作平台,有效保障了维修的高效能。本文分析了的功能和结构,并介绍了服务的应用过程,然后基于运作和综合服务管理提出了一个解决方案,并对模块设计和详细的模块之间的关系进行了分析。然后论述将服务整合到平台的过程中,设置一个应用服务的标准,并提供可用的选项来实现平台。分析了模型的多租赁、设置、按需定制和扩展方面的特性,结合平台技术,该平台在软件幵发中支持模型的各种特点,并提出了在一定程度上适用于模式的系统模型。为了验证模式的各种特性,通过一个单实例进行了一些实验,得到的结果:针对模式的平台能够降低开 山东大学硕士学位论文发过程中配置和按需定制的负担。因此,平台在一定的范围内能够提升模式的软件开发效率。以上介绍的平台都实现了多租户的若干技术细节,软件开发商可以利用平台提供的资源,快速高效的幵发应用、交付给平台、部署应用,但是不用考虑底层多租户的技术细节,将精力集中于核心业务逻辑。但是各个平台具有不同的规范和标准,开发人员开发应用需要学习各个平台的规范,学习过程比较困难,对软件的幵发周期造成一定的影响。同时,大多平台对用户个性化定制的支持有限,目前己有的平台覆盖的应用领域大多集中在少数几个领域,很多业务领域还需要进行大量的扩展。多租户数据存储多租户数据存储模型主要在租户按需定制和存取效率方面进行了研究,如表所示,多租户数据存储模型有几层虚拟化抽象,而目前主流的应用交付平台大都采用共享数据库共享模式架构。在大会中宣称,在共享数据库共享模式的架构下,使用个数据库,可以支撑个应用的运行,远远超出了共享机器、共享进程或共享数据库独立结构的能力。表多租户数据存储模及适合的云计算环境共享硬件共享虚拟机‘共享操作系统共享实例共享数据库共享表在共享数据库共享模式架构下,租户的数据集中存储在同一个数据模式中,实现资源的共享。为了实现租户的个性化定制,采用元数据驱动的架构,将描述租户数据的元数据信息进行集中管理,包括界面元数据、流程元数据、数据源数据等信息。在目前的国内外研究现状中,大部分的多租户数据存储集中解决租户按需定制和无限伸缩的需求。租户按需定制支持租户按照各自的业务需求,对开发商预置的数据库模式进行任意的定制和扩展,可以对已有的数据对象进行定制,或者新增新的数据对象等;无线伸缩指的是新的租户可以随时加入到平台中,在不影响已有租户的情况下,仅需通过硬件升级即可实现。 山东大学硕士学位论文旧称或是由微软为主,建构在云操作系统之上,运行云计算的关系数据库服务(是一种云存储的实现,提供网络型的应用程序数据存储的服务,该数据库支持多租户,支持对事务的管理,实现了高可用,具备良好的伸缩性,其数据模式为共享数据库独立模式。单一数据节点上只支持个独立数据库,不适合平台租户数目巨大、个体数据量小的特征。【提出了元数据驱动的多租户数据共享存储架构,基于稀疏表共享存储不同租户的业务数据,并且支持租户数据个性化定制。租户信息使用元数据表示,运行时通过运行时引擎基于元数据产生虚拟应用组件,如租户逻辑视图的表、记录等。文中使用存储多租户业务数据,核心思想是建立一个列的数据稀疏表,每一个数据列均为字符串类型存储,基于该表存储所有租户业务数据。由于租户逻辑模型差异很大,该数据表中会出现大量空值,不但浪费存储空间,而且影响存取效率。证明了在托管业务服务中,传统的处理多租户模式映射的方式存在性能方面的缺陷,并可能导致数据库系统的崩渍,为了满足多租户的模式映射需求又不会对数据库性能产生影响,文中提出了一种称为全新的多租户模式映射技术。技术将租户的逻辑表垂直化分为多个块,这些块折叠存储在不同的物理表中。文中通过大量的实验结果分析了该技术的优劣,然而,由于该技术目前仅处于理论研究阶段,且划分的影响因素随时间会不断变化,缺乏一种行之有效地垂直划分算法来获得最有效的结果。于年提出多租户数据体系架构提出了名称值对的多租户数据存储方式。该方式把租户数据共享存储在稀疏表中,租户个性化数据存放在键值对表中,并以此为基础开发了原型演示系统。作为最早的应用存储模式,名称值对存储方式既简单有效地管理各租户的数据,又支持租户数据模式任意扩展。但是,随着租户数目不断增多,共享数据越来越少,导致存取性能高的稀疏表中只有少量数据,而存取性能低的键值对表中会集中大量数据,从而系统总体吞吐量不断下降。新一代的电子商务应用的数据模式需要不断的演化并且大部分是稀疏的,而传统的水平存储方式无法满足该需求,提出了将对象采取元祖集合 山东大学硕士学位论文的方式按照垂直方式存储,每个元组包括元组标识、属性名值对等信息。该方式使得模式演化很简单,但是针对该种存储方式的查询比较繁琐,为了高效的进行查询,文中提出了在垂直表之上建立水平视图的方法。垂直存储方法有效解决了稀疏表存储方式中空值的影响。对于多租户数据存储,该解决方法存在的问题是水平视图中大量左连接的存在对于某些查询会非常费时,尤其是关系型多租户数据。讨论了使用一张大宽表来存储稀疏数据的存储方式,并且提出了几种查询组织策略,如查询、、最后提出了在一张稀疏表的基础上建立稀疏索引和物化视图(的技术来提高查询效率。为了节省存储空间,使用方式存储数据,只存储非的属性值,该方式有效的减少了空值的影响。的形式存储租户数据,存储非结构化数据,存储数据值的原始形式,不识别任何数据结构;的并非以字符串存储,而是统一经过算法转换成字节存储;采用一致哈希算法的变体解决数据存储均衡和访问压力均衡,支持数据的最终一致性。在国内,叶伟等人提出基于元数据管理的模型驱动结构思想,从可扩展性、性能、灵活性、实现复杂度和空间利用率等方面对比名称值对、定制字段和预分配字段的数据存储配置方式。但是,该文献未能提出切实可行的数据存储方案,难以指导应用的实际幵发。年会议上讨论了目前主要的多租户数据管理方式,包括稀疏表、键值对、、键值对等。该文献经过全面地论证和分析后认为,理想的多租户数据库尚未出现,还有很多的问题尚未解决。多租户数据存储管理机制作为当前领域的热点,仍然需要更多的进一步研究工作。对于稀疏表方法,租户间数据共享存储,因此不存在表数目随租户数目增加的问题,同样元组重构也较为简单。为此提出了一种稀疏表存储方式,所有租户的所有的业务数据都存储在一个稀疏表中,该表中的一行存储的是某个租户的某个逻辑表的一行数据,该稀疏表中预留了若干列,所有的预留列的数据类型均为字符串类型,系统提供如—、—等函数,这些预留列用于存储租户的定制数据,租户根据自己业务的需要,自由定制所需数据项,租户 山东大学硕士学位论文的定制信息被保存在元数据里,同时将其映射到稀疏表中预留的某一列上。租户定制的数据项经过逻辑层与存储层模式映射后,被统一保存在数据关系里。由于不同租户的定制需求不同,导致各个租户的定制后的模式的列数存在很大的差别,因此如果将将所有租户的数据都存储在一个稀疏表中,则会导致大量的空值存在,例如:若租户需要歹,租户需要列,如果将租户与租户的数据存储在同一个稀疏表的话,则存储租户的数据行中至少存在个空值,既浪费空间,又造成查询效率很低,为了解决不同租户的不同的定制需求,中提出了多稀疏表存储方式。将租户的数据按需的存储到不同宽度的稀疏表中。多租户索引多租户数据存储已经成为热点,但是基于多租户云存储管理的索引技术还比较少,目前只有单节点中稀疏表模式下的数据透视表索引,中的多分离索引,中的多维索引等相关研究。在平台中,使用通用表存储多租户数据,同时采用了一系列的透视图表来存储租户的逻辑索引,使得租户进行快速访问数据有了一定的支撑。该索引方式有效的解决了环境中索引数据列对象同质的问题,但文章中并没有深入探讨与稀疏表的数据同步问题,也无法解决数量暴涨的问题,该平台的索引维护的策略也没有公幵。同时,为每个虚拟的多租户对象维护了一套完整的优化器统计信息,用于内部查询优化。共享表存储模式下多租户数据库中的空间浪费比较严重,为了解决该问题,提出了基于位图解释的元组存储技术。针对多租户共享索引查询效率不高的问题,索引方面提出了多分离索引技术,单独建立租户索引,不仅使索引结构得到优化,还提高了检索效率。是一个分布式数据库,与非常类似且大部分特性基本一样,是一个稀疏的、多维度的、长期存储的、排序的映射表。行关键字、列关键字和时间戳是这张表的索引,值是一个不解释的字符数组,数据都是字符串,没有数据类型。同一个关系里面的每一行数据都能有截然不同的属性,提供了一种 山东大学硕士学位论文动态定制属性的手段。但是,存在以下两个问题,首先是不支持多租户的,也没有租户隔离机制;其次,是面向非结构化数据,每个值都是一个不解释的字符数组,擅长于关键字搜索,但不可能提供基于某个属性组的索弓本文中更多的讨论结构化数据的索引,而结构化数据的事务处理需要确切的解释每个属性的确切含义并对其进行维护。云数据管理的索引机制需要支持可扩展和高吞吐量,不仅要有低的维护费用,还要能够进行并行查询,提出了能够为索引建立索引,快速定位到局部索引上。每个计算节点上的数据建立本地索引,将计算机节点组织成结构覆盖网络,并将一些本地索引节点发布到覆盖网络上,根据查询模式自适应的选择发布的树节点。列存储(是一个基于列存储的数据库,面向以读操作为主的数据仓库应用。数据仓库有着特殊的背景,由事实和维度构成,通常维度数量有限,虽然维度的组合非常多,但是最终形成稀疏型的方体。以此为前提,数据库提出了的策略,在查询的时候,建立查询列的副本,采取树的基本思想基于查询动态调整元组顺序。而对于以事务为主的多租户应用,要及时的反应出每次更新,这种查询驱动的方式存在明显的缺陷。人民大学研究了数据仓库应用中云数据管理中改进的索引模式,该方法在是主节点上建立数据立方体,在运行过程中,根据节点数据的分布范围,动态的对立方体进行分裂和合并,使立方体的边界尽可能的和节点数据相吻合,以减少无效处理时间,提高命中率。】系统中采用具有超级结点的网络结构,将系统中的超级结点构造成超立方体结构,超级结点采用:来管理它的计算机结点,而超级结点之间使用超级结点路由索引。】的基本原理是:每个节点都有一个唯一节点标识符(:每个资源也有一个关键字。通过一致性哈希函数,譬如,将节点的地址进行散列,分配一个字节的标识符给每个节点。对于对等结点发布的资源对象,同样通过散列关键字作为关键字的标识。为了保证节点或关键字的标识符重复的概率小到可以忽略不计,必须足够长。 山东大学硕士学位论文本章小结本章介绍了目前国内外相关的数据管理模型,包括的以及的云计算平台等。接下来介绍了多租户的数据存储,涉及到稀疏表、基本表扩展表、基于元数据等多种存储方式。最后介绍了多租户索引方式,包括通用表、、列存储(等多种方式。 山东大学硕士学位论文第章多级索引模型架构引言目前应用交付平台的云中的数据管理面临着很多问题,由于目前已有的云数据管理解决方案不是针对应用而设计的,无法意识到租户的特性,因此,在响应租户请求时,使用的索引的粒度往往偏大,无法精确的路由到租户的数据节点。更重要的单个数据节点的索引问题,采用稀疏表方式的多租户共享存储方式的表数量不会随着租户数量的增多而增多,扩展性也比较好,但是该方式目前尚没有比较好的索引支持。各个租户根据各自的个性化需求来定制数据对象,其定制信息保存在元数据信息里,租户的业务数据根据元数据存储在稀疏表相应的数据列中,但是多个租户的数据是共享存储在稀疏表中的,因此,存储在某一个数据列中的数据是包含多种数据类型的,因此传统的数据库索引技术在稀疏表里是无效的。为租户建立独立逻辑索引是必要的,既保证了数据的共享存储,又不影响访问效率。本章在分析了现有索引技术的局限性的基础上,提出了适用于应用交付平台的多级索引架构,包括租户节点索引、单个数据节点上的逻辑索引和数据库物理索引。该多级索引架构能有效的支持多租户云存储技术、租户定制与隔离特征,并能提供较好的访问性能。本章的组织结构如下所述,第二节介绍多级索引架构,第三节介绍租户节点索引模型,第四节讨论缓存机制,第五节给出本章的实验分析,第六节是本章的小节。多级索引架构为解决应用云中大规模数据索引的问题,本章建立了租户节点索引(三级索引)、租户逻辑索引(二级索引)和关系数据库物理索引(一级索引)三级索引相结合的模型。租户节点索引能根据当前访问的租户,将租户请求均匀的路由到存储租户数据的某个数据节点上,租户的数据节点的冗余度根据租户与平台运营商制定的服务水平协议来确定;租户逻辑索引负责在单个数据节点上为 山东大学硕士学位论文租户数据提供支持共享、定制、隔离的索引技术,保证快速存取租户数据。关系数据库物理索引为快速访问租户逻辑索引提供支持,同时也为租户元数据快速访问提供支持。三者共同形成了多级索引模型。妹租户管理器数掘节点理器租户节—监事统汁器事务管理器负载均衡器路由器!租户逻,索引数掘序索引数据库图多级索引架构多级索引架构如图所示,首先给出如下几个定义:定义租户集合租户集合平台中的所有租户组成的集合。定义数据节点集合数据节点平台中的所有数据节点组成的集合,在动态的添加删除节点时,需要动态的更新。定义租户数据节点冗余度为了满足租户的,将租户的数据冗余存储在多个数据节点上是必要的,该冗余数据节点的数目成为租户数据节点的冗余度,每个租户的冗余度不同。定义租户节点环 山东大学硕士学位论文在某个数据中心的存储租户数据的数据节点组成的环。定义令牌租户的每个节点环拥有一个令牌,该令牌代表请求的处理权,只有拥有令牌的节点才能处理用户的请求,令牌在节点环上进行轮询。定义响应节点当用户的请求到来时,需要选择一个数据节点对用户的请求进行响应,该数据节点称为响应节点,该节点必须拥有令牌并且该节点的数据版本号与当前租户的数据版本号一致。任务处理器是客户端的入口,它接收来自客户端的请求,其包含租户管理器、数据节点管理器、负载均衡器、监视统计模块、事务管理器、路由器等元部件,租户管理器管理租户的信息,包括租户的元数据信息、数据节点信息、终端用户信息等,同时提供维护租户的服务;数据节点管理器管理所有的数据节点,包括节点的状态实时管理以及损坏节点的备份转移机制;载均衡器负责将多个任务均衡的分布到多个数据节点上进行处理;监视统计模块对租户请求信息、节点的负载情况等进行统计,同时为负载均衡提供参照数据;事务管理器提供在租户的冗余节点之间事务同步的能力;路由器,对到来的请求根据统计信息将请求转发到相应的数据节点进行处理。负载均衡策略采用轮询的方式进行,具体如下:将某租户的冗余数据节点组织成一个或多个环,每个环上有一个令牌在该环上轮询,定义响应节点为拥有令牌并且节点的数据版本号与租户的数据版本号一致,某一时刻,一个环上只有一个响应节点,如果某响应节点无法提供服务,则顺着该环继续查找直到找到下一个响应节点,同时找一个节点,将租户的数据迁移到新节点上,将环上损坏的节点用新节点替换。对于更新请求,需要在租户的所有冗余节点之间进行数据库事务的同步,事务同步策略采用类似主从方式进行,在响应节点(主节点事务提交之后,事务管理器会通知其它节点(从节点)进行事务同步处理,具体如下:在处理请求的节点上,记录下处理该请求过程中的所有的更新操作序列,在任务处理完毕之后,将该序列回传到任务处理器,同时将租户的数据版本号加,任务处理器中的事务管理器将该操作序列分发到该租户的所有冗余存储节点,事务提交之后,将相应节点的版本号加。 山东大学硕士学位论文来自用户的请求首先到达任务处理器,租户管理器根据请求的发起者取出相应租户的信息,将请求转到路由器,路由器根据监视统计模块提供的数据根据负载均衡策略找到一个实际的物理处理节点,将请求转到该节点处理,在某个物理节点上的处理过程在下一章给出,当该事务完成之后,租户管理器通知事务管理器进行事务同步,同时将响应返回给客户端用户,一次请求响应结束。在单个数据节点上采用多稀疏表的存储模式进行存储多租户数据,由于稀疏表中的数据列的数据类型均为通用类型,并且不同租户在稀疏表的同一列中存储的数据是不一样的,数据类型也是千差万别,因此,在稀疏表上建立传统的数据库索引己经失效,因此,本文采用了基于的租户逻辑索引,该作为稀疏表的索引,充当了租户的逻辑索引,并且该基于数据库索引提高了效率。对于租户逻辑索引的详细内容在本文第四章给出详细介绍。租户节点索引模型租户节点索引负责根据当前访问的租户,快速定位到存储该租户数据的某个节点上,提高租户的请求响应效率。下面详细介绍租户节点索引的工作原理。租广编号节点编租靈綱議据———户租户名称节节点位版本等备注等““租户节点表点编编蜜号:寺—租户节点索引哈希表图租户节点索引数据流程如图所示,在任务处理器中存储了租户表、数据节点表、租户节点对应 山东大学硕士学位论文关系表,租户表中存储了租户的基本信息,包括租户编号、租户名称、常用的登录地址等信息,数据节点表中存储了云中的数据节点的信息,包括节点编号、节点的位置、节点的使用情况等,租户节点的对应关系表中则存储了租户与数据节点的对应关系,包括租户编号、节点编号、数据版本、备注等信息。租户表、数据节点表、租户节点对应关系表为租户节点索引哈希表提供数据来源,租户节点索引通过租户节点索引哈希表来提高效率,任务处理器初始化时会初始化租户节点索引哈希表,租户节点索引哈希表如图所示。键■“:租户基本信息节点环组禾户编号——数据版本、;¢令牌■、士节点编号节点版本地理位置其它图租户节点索引哈希表如图所示,租户节点索引哈希表的结构,整个结构是一个表,其关键字是租户的唯一编号,值是该租户的信息,是一个符合对象,包括租户基本信息和节点环组信息等。租户基本信息包括租户编号、租户名称、数据版本等信息,租户编号是平台为租户分配的唯一标识,租户名称是租户开户时提供的信息,数据版本标识当前租户的业务数据的版本信息,用于事务同步。随着经济全球化的发展和科技的发展,众多企业的办公环境一般不会局限于 山东大学硕士学位论文一个地域,因此属于同一租户的不同用户会在不同的地域登录租户的系统,因此,考虑到网络延迟对用户请求的响应的影响,选择地理位置较近、网络延迟较小、网络负载较轻的线路应该对用户的响应更快,提高用户的满意度。租户租赁应用时,可以提供自己的办公地域的信息,为后续为租户选择数据节点提供依据,下面给出几个定义,定义租户用户分布信息〈,(,,租户用户分布信息表明属于某个租户的终端用户的分布情况,是租户标识,中的内容是用户分布的详细信息,里面包含若干元组,每个元组代表一个地域以及该地域用户所占的比例。定义数据节点信息〈、、…,,数据节点的分布信息,由若干个元组组成,每个元组代表某一位置的节点分布情况,标识位置信息,元组中的部分标识在位置的数据节点信息,数据节点信息包括该节点的网络类型、网络带宽、延迟等信息。租户用户分布信息由租户开户时提供,数据节点信息的提供属于平台的任务,在为租户初始化数据空间选择冗余节点时参考租户提供的数据以及平台提供的数据节点的信息,首先考虑的因素是距离因素,其次是网络接入类型(网通、电信、教育网等)因素,再考虑租户的用户分布信息为租户选择冗余节点为租户存储数据,最后需要将这些信息保存在任务管理器中,为后续的响应租户请求提供依据,其存储结构如表所示。表租户节点分布信息户标只请求源地证请求的地址节点列表举例如下:假设某租户的用户分布信息为北京,,(上海,,租户的数据节点冗余度为,则需要找两个数据节点位置,一个距离北京最近,另一个距离上海最近,假设找到的是北京和上海,则在北京找个节点,这些数据节点组成节的节点环,在上海找到个数据节点作为租户的冗余存储节点,这些数据节点组成节的节点环,如果在找到这两个地址的可用节点不足,则需要额外找出另一个位置,用于存储租户的数据,租户的数据节点分布信息如表所示。表租户的数据节点分布详细信息 山东大学硕士学位论文租户标识‘请求薄地址求目的地祉■“节点列表“““‘北北京北弄—±上海数据节点环一个节点环是在某个地域位置存储该租户数据的数据节点组成的一个环形结构,每个环拥有一个令牌,该令牌在租户的环上进行轮询,只有拥有令牌的数据节点才能对租户的请求进行响应,某次请求之后,令牌会沿着节点环向下传递,令牌就是在该环上进行轮询,每个数据节点的信息包括节点编号、节点版本、节点位置、节点服务状态等信息,节点编号是平台分配给节点的唯一标识,节点版本标识该租户在该数据节点上的数据版本,节点的位置是节点的基本信息,节点的服务状态标识当前节点是否工作正常等信息。任务处理器初始化时,会初始化租户节点索引哈希表,因此,一次用户请求的处理过程如算法所示: 山东大学硕士学位论文算法用户请求处理过程、用户请求到达任务处理器、任务处理器根据当前用户信息从租户节点索引哈希表取出租户基本信息和节点环信息,从租户基本信息中取出租户的数据版本号、取出该租户的当前令牌节点、从租户节点环信息中取出该租户的节点数组、判断版本号是否与相同,若相同,则将请求转移到节点处理,同时更新租户基本信息中的令牌信息为;否则,顺序查找,直到找到该租户的响应节点’,将请求转移到’处理,同时更新租户的令牌的内容为(’如果在该过程中遇到某个节点无法提供服务,则要通知节点管理器将该租户的一份数据冗余的存储到另一节点上,同时更新中的节点信息、在响应节点上处理用户请求,同时采用下表所示的方式记录下对于数据库的更新操作序列〈〉〈〉〈〉〈〉、将对用户的请求相应结果以及操作序列回传到任务处理器,任务处理器将响应结果返回给客户端,若该次请求返回的操作序列非空,则需要同时将租户的数据版本号加并通知事务处理器根据操作序列去同步租户的其它冗余数据服务器、事务同步完毕,该次的请求处理完毕缓存机制由于磁盘性能与的速度之间的差距越来越大,因此数据库优化的目标无非是避免磁盘瓶颈、减少利用率和减少资源竞争,尽可能的减少磁盘访问而获得所需的数据。缓存策略一直作为数据库优化的主要技术被广泛采 山东大学硕士学位论文用。在应用模式下,对所有租户的数据共享的存储和集中管理,使得物理存储的数据量较大,同时不同租户的数据混合存储在一起,使得数据的访问效率较低,因此,有效的采用缓存技术可以解决应用所面临的数据库性能的瓶颈。但是传统的缓存策略大部分是针对与单租户单数据库的情况,不能满足单实例多租赁的应用场景,不能有效的解决应用的问题。针对应用交付平台的多租户数据管理的复杂性,数据量大且租户数据混合存储的低效率,本节提出了元数据缓存模型。元数据的定义为描述数据的数据,本节的元数据包括租户的信息、数据节点的描述信息、租户的数据节点分部信息、租户的请求统计信息等。任务处理器是租户的请求入口和响应出口,需要做相当多的工作,并且所有的操作都是基于数据库中的租户的元数据信息以及一些统计信息来执行下一步的操作,因此将租户的元数据进行缓存可以减少访问数据库的次数,从而减少的次数,从而提高处理效率。缓存区的空间容量必定是有限的,当缓存区的使用率达到预定的阈值时,需要替换掉缓存区中的部分内容,到底替换哪一部分则是替换策略的问题。提高缓存的效率关键是提缓存的命中率,因此,设计良好的缓存替换算法可以提局缓存区的命中率,从而提高缓存区的效率。传统的缓存替换策略是根据访问频率和访问时间来工作的,但是传统的策略并没有考虑多租户特性,并且没有区分数据的优先级,在本文中缓存的数据对象的优先级是不同的,比如,一些统计信息使用的较少,且容易过期,故优先级较低,而租户信息和数据节点信息的优先级则较高,因此在进行缓存替换时首先删除优先级较低的,删除部分优先级较低的数据,除非数据空间仍不够用,对于优先级相同的数据,则采用下面提出的方法确定。本文釆用了改进的方法,在传统的算法基础上加入了多租户和数据优先级的因素,下面将详细介绍该实现方案。假设放入缓存区的数据对象包含一下信息:数据对象的大小数据对象的访问次数数据对象的访问频率 山东大学硕士学位论文数据对象的最后访问时间数据对象缓存访问缩减的时间替换代价函数若要替换缓存区中的某个数据对象,需要综合访问频率、最后访问时间、缓存访问缩减时间等因素,并且赋予这几个影响因子的权值、、,是的可以采用数学的方法来计算替换代价,因此,替换代价可以表示为,其中‘,,,因为数据对象的访问频率越大、最后访问时间越大、缓存访问缩减的时间越大,则该数据对象的替换代价就越大,本文给出的代价函数为:二二氺本氺其中,,,令贝丨函数的导数为》,二,因此从替换函数关于这几个影响因子的单调性可知,该函数符合要求。缓存替换算法首先定义数据对象的数据结构,用于表示存放在缓存中的数据对象,定义如图所示数据对象大小访问次数访问频率最近一次的访问时间缓存访问缩减的时间替换代价,初始值为优先级图数据对象结构然后,设计缓存替换算法,该算法基于最小堆实现,堆中的元素为数据对象,堆的排序基于数据对象的优先级和替换代价,优先按照优先级排序,优先级相同 山东大学硕士学位论文的则按照替换代价排序,作如下假设:、缓存区的总大小为、当前缓存区中可用的空间为二创建一个的最小堆,存储着所有放入缓存中的数据对象信息,::改进的算法的伪代码如图所示:二计貪数据对象的替换成本判断加入新的数据对象后,是否会出现溢出若溢出:标识数据对象是否已经加入缓存:二::;二;;按照的优先级和替换代价,将插入到中—::!:图改进的替换算法该算法的时间复杂度最好情况下,直接加入缓存,时间复杂度为,一般情况下,需要删除、插入、替换操作的总次数为,复杂度为。对于应用交付平台中的多个租户,每个租户的租赁费用以及是不同的,因此可以根据租赁费用以及相应的为租户设置不同的缓存空间,从而 山东大学硕士学位论文更好的满足租户的需求。算法中的权值可以设置为不同的值从而适应不同的应用场景。实验分析本节按照本章介绍的多级索引架构建立了原型系统,后台采用关系数据库并通过记录请求平均执行时间来验证节介绍的缓存机制的效率以及节中介绍的每个租户多节点环的效率。原型系统中,模拟了个租户和个数据节点,每个租户随机的发送请求,平均每个租户发送次请求:如图验证缓存的效率。图中上方的线条是在没有缓存的情况下执行的,记录所有租户的平均执行时间;下方的线条是在加入缓存之后,无需每次读取元数据,而是直接从缓存中读取。由于读取元数据耗费一定的时间,因此节提出的优化方案是有效的,图也验证了这一点。无缓存“!!!!!!!!:“图有无缓存租户的平均执行时间如图验证每个租户多节点环的效率。图中上方的线条是在每个租户只有一个数据节点环,随机选择响应节点的情况下执行的,记录所有租户的平均执行时间;下方的线条是在釆用每个租户多个数据节点环的响应策略之后,每次选择的节点的延迟相对较小。由于距离因素导致的网络延迟影响,导致响应时间延长,因此节提出的多节点环策略是有效的,图也验证了这一点。 山东大学硕士学位论文———————一—单节点环—多节点环—“一—‘丨—图两种节点环策略的平均执行时间本章小结本章对面向应用交付平台的多租户数据存储进行了深入的研究,提出了多级的索引架构:租户节点索引、租户逻辑索引、数据库物理索引,同时介绍了租户节点索引的实现方式。然后提出了平台的缓存机制,并通过实验验证了缓存策略的有效性和租户节点索引的有效性。租户逻辑索引的介绍在第四章。 山东大学硕士学位论文第章租户逻辑索引模型研究引言在应用中,单个应用实例被多个租户租赁,众多租户的数据属于同一个应用,但是被不同的租户进行了不同定制,稀疏表,作为一种有效的存储多租户数据的解决方法,是指将所有租户的不同数据模式的数据存储到一张稀疏表中,由于不同租户的表模式的列数不同,该稀疏表中预留了列来存储不同租户的数据,通过元数据将租户的逻辑表映射到稀疏表的预留列中存储。为了解决单稀疏表存在大量的空值问题,提出了传统的多稀疏表存储方式。本章分析了传统的多稀疏表模式的多租户数据库存在的问题,提出了一种基于多稀疏表模式的索引模型,由于稀疏表中存储的是不同租户的不同表的数据,因此无法在稀疏表中建立传统的数据库索弓,本章提出的索引表充当了稀疏表的逻辑所引,并且给出了索引表的维护策略,实验结果表明,索引表提高了租户的数据查询效率,更新效率也不会受到很大影响。本章的组织结构如下所述,第二节介绍了租户逻辑索引,第三节给出了实验分析,第四节是本章的小节。租户逻辑索引多稀疏表模式在模式下,数据库不但要提供极高的性能,还要支持租户隔离而且富于扩展性。多租户数据库要根据环境的不同,比如不同的租户、不同的工作流程、不同的服务水平协议等提供易变性。结合国内外研究现状,本章选择了稀疏存储方式来存储业务数据。稀疏表模式能够提供较好的扩展性,在单稀疏表模式下,(如图所示)所有租户的所有的业务数据都存储在一个稀疏表中,该表中的一行存储的是某个租户的某个逻辑表的一行数据,该稀疏表中预留了若干列,所有的预留列的数据类型均为字符串类型,系统提供如—、—等函数,这些预留列用于存储租户的定制数据,租户根据自己业务的需要,自由定制所需数据项,租户的定制信息被保存在元数据里,同时将其映射到稀疏表中预留的某一 山东大学硕士学位论文列上。租户定制的数据项经过逻辑层与存储层模式映射后,被统一保存在数据关系里。在多稀疏表模式中,租户数据被分散到列数不同的若干个稀疏表中(如图所示),即用若干个列数呈梯度分布的稀疏表代替原来的一个稀疏表,以满足不同租户的不同数据存储需求。其中用来存储这些稀疏表的兀数据信息,包括稀疏表的表名及列数等信息;中增加了用来标示租户数据被实际存储到哪个稀疏表中;不同的稀疏表列数分别用,表示。■图基于稀疏表模式的多租户数据库丨的—…;——图多个不同列稀疏表存储结构传统的数据库系统依赖索引迅速定位数据库表中的字段满足特定匹配条件的行。但是,为稀疏表的预留列创建本地索引是不切合实际的,因为稀疏表中可能用一个预留列来存储很多租户的不同表的不同字段的数据,且它们的数据结构类型各不相同,如果根据租户的需求在预留列上创建索引的话,索引数据空间将是非常巨大的,在如此巨大的空间里检索数据效率是非常低下的。所以,本章将“ 山东大学硕士学位论文需要索引的数据同步复制到中存储,充当了传统的数据库索引。基于的多稀疏表模式的多租户索引模型本模型对稀疏表模式的多租户数据库进行了扩展,增加了基于的映射表索引机制,索引模型包含索引元数据和索引数据,索引元数据保存在中,索引数据保存在中。(如图所示),索引表充当了数据表的索引,而索引表利用的索引以支持查询优化。—‘——…■;——叫图扩展后的稀疏表的多租户数据库模型下边给出本模型相关的定义:定义表示元数据,包括模式元数据和索引元数据,模式元数据用于保存各租户的数据模式,本模型中用关系表、、存储,索引元数据用于保存租户的索引定义,本模型中用关系表存储。元数据为模式映射提供支持,本文基于元数据把用户请求透明的转换到稀疏表模式下的操作。存储关系定义,存储关系的属性定义,存储索引的定义。 山东大学硕士学位论文二(,,,,,定义表示数据表,包含业务数据表和索引数据表,业务数据表以稀疏表方式存储租户业务数据,本模型中用关系表、、…、存储,索引数据表用于存储租户的索引数据,本模型中用关系表存储,索引数据表中的数据充当了数据表的索引,…,…’…,,,多租户索引维护策略租户定制索引时,系统将索引定义映射到索引元数据中,基于索引元数据,索引数据共享的存储在索引数据表中,所有的租户公用索引元数据表和索引数据表,这样,在租户访问数据时,如果有索引的话,可以根据索引元数据以较高的效率检索出索引数据,进而得到数据;如果没有索引,则直接检索数据表。由于传统的稀疏表模式的多租户数据库无法维护和使用租户的逻辑表的索引信息,因此数据查询和更新效率受到了限制,本章提出的基于的索引模型旨在解决此类问题,下面介绍了索引的使用和更新策略。 山东大学硕士学位论文定义:逻辑运算符集合、关系运算符集合’、、、、关系表、、、算法通用数据查询算法输入:输出:目标数据结果集取得当前,逻辑表查询表,得到存储该租户的该表的物理数据表条件条件条件中的每一项,,定义索引数据表检索条件””,未被索引列条件根据、、查询结果为空‘不为空根据查询表,找出符合条件的集合根据检索出的的集合、、以及’检索表根据、直接查询表,得到目标数据得到目标数据如算法所示,该算法首先得到该租户的该逻辑表对应的物理表,然后在条件前面添加接着逐个遍历条件中的表达式,判断表达式中设计的条件列是否被索引,若被索引则将其添加到索引数据表的检索条件中,否则将其添加到未被索引列条件’中,遍历完成之后,如果不为空,则根据检索索引数据表,进而检索数据表,得到目标数据,否则,直接查询数据表,得到目标数据。 山东大学硕士学位论文算法数据插入算法输入:输出:无得到当前,逻辑表查询表,得到存储该租户的该表的物理数据表根据、更新表检索中的表上、、列是否被索弓,若有,则更新如算法所示,该算法是在传统的更新算法基础上额外做了更新索引元数据的工作,首先更新数据表,然后判断如果存在需要更新的索引数据,则进行更新,由于索引数据上存在索引,因此更新效率也是很高的,此处付出的时间开销相对于查询请求节省的开销来说是很小的。算法数据更新算法输入:,,输出:无得到当前,逻辑表查询表,得到存储该租户的该表的物理数据表条件条件条件中的每一项,’)定义索引数据表检索条件未被索引列条件’””根据、、查询结果为空‘不为空根据查询表,找出符合条件的集合;根据检索出的的集合更新索引数据表;根据检索出的的集合、、以及’更新表;根据、直接更新表如算法所示,该算法首先得到该租户的该逻辑表对应的物理表,然后在条件前面添加,接着逐个遍历条件中的表达式,判断表达式中 山东大学硕士学位论文设计的条件列是否被索引,若被索引则将其添加到索引数据表的检索条件中,否则将其添加到未被索引列条件’中,遍历完成之后,如果不为空,则根据检索索引数据表,进而更新数据表和索引数据表,否则,直接更新数据表。索引维护策略的改进考虑到针对每次数据库操作都需要查询表,同时,表中的数据量不是很大,足以在内存中放得下,并且变化频率不大,因此,在内存中开辟一块空间用来缓存租户的索引元数据信息,这样每次直接操作内存即可,节省了操作数据库的效率开销,在实验结果与分析中也对索引表和内存缓存两种索引方式进行了对比。系统碰到时,更新的同时更新。实验分析本节基于传统关系型数据库(在传统多稀疏表模式的的基础上加入了构建了原型系统,然后实验本章提出的策略的效率。原型系统中我们建立了四个稀疏表,列数分别为、、、,每一列均为模拟了个租户,他们的数据均衡的分布在这四个稀疏表中,每个租户平均有条记录存储在每个稀疏表中,实验结果和结果分析如下所示:个租户平均发送个查询请求,查询请求的目标表以及条件中涉及的列均匀的分布在稀疏表中,图记录了传统多稀疏表模式和基于的多稀疏表模式的平均执行时间。‘“卷‘二、每二图平均查询时间 山东大学硕士学位论文图说明了基于的多稀疏表方式比传统的多稀疏表方式更有效。个租户平均发送次更新请求,更新请求的目标表和条件中涉及的列均匀的分布在稀疏表中,图记录了传统稀疏表模式和基于的多稀疏表模式的平均执行时间。—“——:‘—;、备图平均更新时间图说明了基于的多稀疏表模式比传统的多稀疏表模式额外花费了很少的时间,但是这点时间相对于查询时间的优化是值得的。本章小结多稀疏表模式改进了单稀疏表模式,节省了空间并且提高了执行效率,但是多稀疏表模式并没有考虑索引的问题,并没有充分利用关系数据库的物理索引,虽然效率提高了,但是还有改进的余地。本章提出的基于的多稀疏表模式充分的利用了多稀疏表模式和物理索引的优势,使用极少的的维护代价换来了查询效率的极大提高,同时基本不影响更新效率。实验结果表明,本章提出的模式使得多稀疏表模式更高效。 山东大学硕士学位论文第章原型系统与实验分析引言本章基于第三章、第四章的多级索引架构对应用交付平台的数据管理平台进行原型系统的开发与实验分析。首先为应用交付平台的数据管理部分实现了任务处理器中的所有模块,在数据节点上釆用了第四章介绍的基于的多稀疏表的存储方式,并实现了第三章的查询优化机制。然后在系统中模拟了若干租户,同时模拟了若干租户的请求响应过程,比较了请求在单节点的处理效率和多节点的处理效率,另外对查询优化机制加入前后的时间开销进行了比较。系统开发原型系统是基于架构构建的应用交付平台进行实现,该应用交付平台是一个元数据驱动的应用交付平台,以支持在传统开发环境下快速、便捷的实现应用的开发与交付并支持应用的灵活定制。该平台的主要特点:支持在传统开发环境中遵循特定规范进行应用的离线幵发,屏蔽了开发应用所面临的复杂底层实现细节,实现了幵发过程与平台的无关绑定;基于元数据驱动实现了传统应用与应用的映射转化,并基于元数据驱动支持租户对应用灵活定制。基于元数据描述,实现了技术展现与内容的分离,使开发商不受技术的限制,也使得应用有了更多的展现形式。本章将本文提出的多节点的存储策略与该平台的单节点的存储模式进行了对比,并且将是时间开销进行了记录,以此证明本文提出的多级索引模型的效率。应用服务器:操作系统:服务器: 山东大学硕士学位论文硬件平台:内存数据库服务器:操作系统:数据库:硬件平台:,内存客户端:操作系统:客户端工具:浏览器硬件平台:内存实验分析本节的实验主要分为两个部分,首先将面向应用交付平台的多节点存储的效率与单节点的效率进行比较,然后验证多级索引的效率。验证多节点效率本实验在应用交付平台的基础上,后台的存储节点采用了多个数据节点和单节点两种存储方式,模拟了个租户、个数据节点,每个租户平均的发起次的访问请求,通过记录两种存储方式的平均执行时间。—产■广—单节点多节点!!!!!!图单节点与多节点的平均执行时间实验结果分析:如图所示,图中上方的一条曲线是单个数据节点下,租户的平均响应时间;图中下方的一条曲线是在个数据节点的情况下,对租户 山东大学硕士学位论文的平均执行时间。可以发现,在多数据节点情况下,由于租户的请求比较均衡的分布到各个数据节点,因此,每个数据节点的负担相对较轻,因此,会有比较好的响应效率,在租户数量更多、数据量更大、访问频率更高的情况下,这种差距会更大,因此多数据节点相对于但数据节点来说具有相当的优势。验证多级索引的效率本实验在应用交付平台中加入了多级索引机制,验证加入该多级索引架构之后比未加入之前更有效。实验数据准备,个租户,个数据节点,每个租户平均发起次访问请求,在数据库中每个租户平均有条数据,租户的数据均衡的分不到个数据节点中,记录请求的平均执行时间。——普通査询—索引查询‘::!!!「了!:;实验结果分析:如图所示,图中上方一条曲线是没有加入索引架构之前的平均执行时间统计,而图中下方的曲线是加入多级索引架构之后的执行时间统计。从实验结果可以得出,多级索引架构大大提高了应用交付平台数据存储的效率。在租户数量更多、数据量更大、访问频率更高的情况下,这种差距会更大。本章小结本章基于应用交付平台实现加入多级索引架构的云中多节点数据存储模式,单个数据节点上采用基于的多稀疏表存储模式,通过实验将单节点数据存储与多节点存储的进行比较,最后验证本文提出的多级索引架构的效 山东大学硕士学位论文率。 山东大学硕士学位论文第章总结与展望本文工作总结本文以应用交付平台为背景,研究多节点的多租户数据存储,为了既满足租户的按需定制和高效存储的需求,研究了应用交付平台的多节点存储的多级索引机制,本文的研究内容如下:提出适用于应用交付平台的多节点存储的多级索引架构。多级索引模型采用数据节点索引、租户逻辑索引、数据库物理索引三级索引结构,高效的响应租户的请求。研究多级索引架构中的三级索引,即租户节点索引。作为面向应用交付平台的多租户数据存储模式,多个数据节点存储是不可避免的,同时为了平台的容错能力和负载能力,同一份数据可能在多个数据节点上冗余存储多份,因此,当租户请求到来时就会涉及到将请求路由到哪个数据节点上处理的问题。三级索引即租户节点索引,能够根据请求中租户的标识将请求快速转发到数据节点进行处理,同时提供了事务的同步机制。接下来要研究的就是单数据节点上的逻辑索引问题,在单节点上采用的是稀疏表的方式,共享的存储多个租户的数据,由于稀疏表模式的特殊性,在稀疏表上建立传统的数据库索引往往是不可能的,因此当系统根据租户节点索引将请求转发到某个数据节点上时,租户逻辑索引在数据库物理索引的基础上提高了请求的处理效率。本文的主要工作如下:、提出面向应用交付平台的的多租户数据存储的多级索引架构。该多级索引包括租户节点索引、租户逻辑索引、数据库物理索引三级。、实现了租户节点索引的建立和维护机制。租户节点索引能够快速的将租户的请求路由到存储租户数据的某个数据节点上进行处理,同时提供了多数据节点的事务同步机制。、设计实现了单数据节点上的基于的租户逻辑索引,大大提高了租户的请求处理效率,并通过实验验证了租户逻辑索引的优越性。、设计实现了在多级索引架构下的优化机制。该优化机制能够有效的提高 山东大学硕士学位论文多级索引架构的效率,并通过实验验证了优化机制的有效性。本文工作展望虽然本文提出的多级索引架构能够有效的提高的应用交付平台的效率,但是还是有很多问题需要解决的。将租户数据进行分割,而不是将租户数据作为一个整体,在需要迁移的时候,只耑要迁移其中的一部分即可。在对租户数据进行分割时,需要考虑分割粒度以及分割策略的问题,将经常需要进行连接操作的数据尽量放在一个分割中,同时需要考虑分布式事务的因素等等。目前在三级索引只能定位到租户的数据节点上,在将租户数据进行分割之后,这种索引效率已经不高,需要寻求新的高效的索引策略。数据迁移会对索引产生影响,在数据迁移之后,需要一定的策略对索引进行适当的调整,使之适应新的数据分布。 山东大学硕士学位论文参考文献,,,,,:’,。—,’,,,:,裴莹,徐俊刚基于服务的企业标准化培训平台计算机应用与软件万江川,郭建胜,任婷婷基于模式的航空装备维修保障综合平台相关技术研究航空维修与工程许元虎,余本功,沈浩杰平台对模式软件幵发的支持计算机与现代化’,—,,,’—,,—,,,, 山东大学硕士学位论文叶伟等著互联网时代的软件革命—架构设计北京:电子工业出版社年月第版,“,,,,正,,,,,,,,,,,,,,,,,,—,,; 山东大学硕士学位论文,:—:,,,:’,。:—,,丁文定基于服务集成管理的解决方案计算机与现代化⑴,, 山东大学硕士学位论文致谢衷心的感谢我的导师李庆忠老教授,在三年的硕士研究生生活学习中,李老师在学习、生活、科研等方面给了我细心的指导和无微不至的关怀。本文是在李老师悉心指导下完成的,在研究过程中,李老师耐心指导,指出研究中的研究方向,在本文的撰写过程中,李老师不厌其烦的给我悉心指导,并帮我审阅批改。李老师以他敏锐的洞察力、渊博的知识、严谨的治学态度、精益求精的工作作风和对科学的献身精神给我留下了刻骨铭心的印象,这些使我受益匪浅,并将成为我终身献身科学和献身事业的动力。真诚的感谢孔兰菊老师在科研、工作、学习生活中给予我的知道和帮助,使我受益匪浅,必将在我今后的工作生活中有很大帮助。同时还要感谢软件与数据工程中心的各位老师、师兄师姐和同学。感谢张世栋教授、洪晓光教授、王新军教授,彭朝晖教授、史玉良教授、崔立真教授、闫中敏老师在生活学习中给我的指导和帮助。感谢张坤、陈维良、董晋利、郑旭旭等师兄师姐们,感谢桑乘良、吕冰彩、李金钗等师弟师妹们,感谢软件与数据工程中心级的同学们,他们对我的工作给予很大的支持和帮助,学习中耐心解答遇到的各种难题,研究中给予我建议和指导。衷心的感谢山东地炜计算机软件有限公司技术总监徐铭,工作中徐总给予我很大的帮助,使我的工作能力有了很大的提升。由衷感谢我的室友同学,他们开创性的研究拓展了我的学术视野,无数次的争论和探讨使我的研究工作有了长足的进展。衷心的感谢我的父母和其他亲朋好友对我的关心、支持和理解,没有他们对我的关心、鼓励和支持,我无法完成现在的硕士学业。最后,感谢曾经教育和帮助过我的所有老师。衷心地感谢为评阅本论文而付出宝贵时间和辛勤劳动的专家和教授们! 山东大学硕士学位论文攻读学位期间发表的学术论文目录,,“面向应用基于键值对模式的多租户索引研究”,计算机学报,孔兰菊,李庆忠史玉良,王学, 山东大学硕士学位论文攻读学位期间参加旳工作和所获奖励职业资格服务体系公共基础支撑平台研发项目编号,国家科技支撑计划 学位论文评阅及答辩情况表姓名是所在单位总体职务(硕导论车邕級衅達展成卑毛夂拿收秀阅人专业技术是否博异姓名职务所在单位主席耷盎霞,氣後糸途氛尺擎瘃唆久敢後山尜欢荦效;蜈镘委明系嫩枚盃山朱成员员良终好答辩秘书勤魚畔答辩曰期义备注※仗秀为“”;良好为“”;合格为“”;不合格为“”。