论文部分内容阅读
2006年微软公司提出基表加扩展表SaaS多租户数据存储模式,在该模式中使用基表存储租户的公共数据字段,数据处理效率较高;使用扩展表(键-值对)存储租户的扩展数据,由于在扩展数据访问过程中需要涉及元组重组操作,处理效率相对较低。在实际业务中,如果租户需要频繁的访问扩展数据而很少访问基表中的数据,那么基表效率高的优势将得不到利用。为充分使用基表效率高的优点,我们希望能将租户访问频率高的扩展数据存储到基表中。但是由于基表是在应用部署阶段创建,其模式在运行过程中是不可修改的,因此面临着基表中如何支持对不同租户扩展数据的存储的问题。针对此问题本文提出了一种支持数据迁移的基表加扩展表多租户数据存储模式,来实现基表对租户扩展数据的存储。随着云计算的发展,SaaS平台数据正在由单节点存储往云中多节点存储的转变。对于一个租户的数据可能需要分片存储到不同的数据节点上,所有的数据节点共享同一份元数据。在基于数据迁移的基表加扩展表数据存储模式的运行过程中需要进行数据迁移操作,为了维持数据迁移过程中数据的可持续性访问和一致性我们需要维持源存储模式和目标存储模式,这会对数据节点的存取性能产生一定的负面影响。如果在所有的数据节点上同步进行数据迁移操作,由于不同数据节点的负载不同,有的数据节点当前可能处于重负载状态,若强行进行数据迁移操作会使数据节点进入超负载状态,可能会影响租户的存取效率。此外所有数据节点共享同一份元数据,只有当所有的数据节点上数据迁移完成之后才可以修改元数据,即使有些数据节点上已经完成了数据迁移操作,也需要维持两个数据存储模式等待其他数据节点迁移的完成。我们应该避免在这段等待时间中产生的负面影响或避免这样的无效等待时间。针对此问题本文提出了支持数据迁移的多版本元数据技术。本文主要工作如下:(1)捉出了支持数据迁移的基表加扩展表多租户数据存储模式。通过在基表中添加一些预留字段,来实现基表对扩展数据的存储。针对不同租户的扩展数据建立统计模型和评估函数来识别哪些扩展数据是高频率访问的扩展数据以及这些数据中哪些可以迁移到基表中存储。并在该数据存储模式基础上定义动态数据迁移算法,实现数据迁移的过程,在迁移过程中通过维持源存储模式和目标存储模式来维持数据的可持续访问,通过对更新操作采用补偿策略维持两个数据存储模式中数据的一致性。(2)提出了在云中多数据节点上支持数据迁移的多版本元数据技术。设计并实现了支持多版本元数据技术的云中多租户数据存储框架和访问流程,使不同数据节点上同一租户的数据可以根据数据节点的负载状态独立异步的进行数据迁移操作,从而最小化同步数据迁移过程中的代价和负面影响,每个数据节点根据数据迁移的状态建立与其对应的元数据版本信息。在新的存储框架基础上提出了新的数据引擎来支撑多版本元数据技术的实现。